IAR AVR 中斷應(yīng)用
在配置文件后面加入以下代碼,便可輸出HEX文件,A90文件與HEX文件一樣,SLISP都能識別.
// Output File
-Ointel-extended,(XDATA)=.eep //產(chǎn)生eeprom文件
-Ointel-extended,(CODE)=.A90 //產(chǎn)生燒寫文件
-Ointel-extended,(CODE)=.hex //產(chǎn)生燒寫文件
中斷向量的使用
IAR中定義中斷函數(shù)的格式是
/////////////////////////////////
#pragma vector=中斷向量
__interrupt void 中斷服務(wù)程序(void)
{
//中斷處理程序
}
/////////////////////////////////////
中斷的初始化要另外加入代碼,可在主程序內(nèi)加入。如下是各個中斷函數(shù)的定義。
//中斷定義
#include
#pragma vector=INT0_vect
__interrupt void INT0_Server(void)
{
}
#pragma vector=INT1_vect
__interrupt void INT1_Server(void)
{
}
#pragma vector=TIMER2_COMP_vect
__interrupt void TIMER2_COMP_Server(void)
{
}
#pragma vector=TIMER2_OVF_vect
__interrupt void TIMER2_OVF_Server(void)
{
}
#pragma vector=TIMER1_CAPT_vect
__interrupt void TIMER1_CAPT_Server(void)
{
}
#pragma vector=TIMER1_COMPA_vect
__interrupt void TIMER1_COMPA_Server(void)
{
}
#pragma vector=TIMER1_COMPB_vect
__interrupt void TIMER1_COMPB_Server(void)
{
}
#pragma vector=TIMER1_OVF_vect
__interrupt void TIMER1_OVF_Server(void)
{
}
#pragma vector=TIMER0_OVF_vect
__interrupt void TIMER0_OVF_Server(void)
{
}
#pragma vector=SPI_STC_vect
__interrupt void SPI_STC_Server(void)
{
}
#pragma vector=USART_RXC_vect
__interrupt void USART_RXC_Server(void)
{
}
#pragma vector=USART_UDRE_vect
__interrupt void USART_UDRE_Server(void)
{
}
#pragma vector=USART_TXC_vect
__interrupt void USART_TXC_Server(void)
{
}
#pragma vector=ADC_vect
__interrupt void ADC_Server(void)
{
}
#pragma vector=EE_RDY_vect
__interrupt void EE_RDY_Server(void)
{
}
#pragma vector=ANA_COMP_vect
__interrupt void ANA_COMP_Server(void)
{
}
#pragma vector=TWI_vect
__interrupt void TWI_Server(void)
{
}
#pragma vector=INT2_vect
__interrupt void INT2_Server(void)
{
}
#pragma vector=TIMER0_COMP_vect
__interrupt void TIMER0_COMP_Server(void)
{
}
#pragma vector=SPM_RDY_vect
__interrupt void SPM_RDY_Server(void)
{
}
如何把常數(shù)字符串定義在flash 空間?
法一:unsigned char __flash temptab[] = {1,2,3,4,5};
法二:__flash unsigned char temptab[] = {1,2,3,4,5};
法三:#pragma type_attribute=__flash
unsigned char temptab[]={1,2,3,4,5};
法四:const unsigned char temptab[]={1,2,3,4,5};
注:第三種方式用#pragma說明后,下面的定義的變量將都在FLASH空間了,用于定義一批FLASH變量,但實際上一般只能作為常量使用了.
評論