#1楼主:请问:如何写外部中断程序,谢谢!
文章发表于:2008-05-09 09:52
我查看了有的单片机的头文件这样写:
IOM48.H
/////////////////////////////////////////////////////
#define RESET_vect (0x00) /* External Pin, Power-on Reset, Brownout
Reset and Watchdog Reset */
#define INT0_vect (0x02) /* External Interrupt Request 0 */
#define INT1_vect (0x04) /* External Interrupt Request 1 */
#define PCINT0_vect (0x06) /* Pin Change Interrupt Request 0 */
#define PCINT1_vect (0x08) /* Pin Change Interrupt Request 1 */
#define PCINT2_vect (0x0A) /* Pin Change Interrupt Request 2 */
#define WDT_vect (0x0C) /* Watchdog Time-out Interrupt */
#define TIMER2_COMPA_vect (0x0E) /* Timer/Counter2 Compare Match A */
#define TIMER2_COMPB_vect (0x10) /* Timer/Counter2 Compare Match B */
#define TIMER2_OVF_vect (0x12) /* Timer/Counter2 Overflow */
#define TIMER1_CAPT_vect (0x14) /* Timer/Counter1 Capture Event */
#define TIMER1_COMPA_vect (0x16) /* Timer/Counter1 Compare Match A */
#define TIMER1_COMPB_vect (0x18) /* Timer/Coutner1 Compare Match B */
#define TIMER1_OVF_vect (0x1A) /* Timer/Counter1 Overflow */
#define TIMER0_COMPA_vect (0x1C) /* Timer/Counter0 Compare Match A */
#define TIMER0_COMPB_vect (0x1E) /* Timer/Counter0 Compare Match B */
#define TIMER0_OVF_vect (0x20) /* Timer/Counter0 Overflow */
#define SPI_STC_vect (0x22) /* SPI Serial Transfer Complete */
#define USART_RX_vect (0x24) /* USART Rx Complete */
#define USART_UDRE_vect (0x26) /* USART, Data Register Empty */
#define USART_TX_vect (0x28) /* USART, Tx Complete */
#define ADC_vect (0x2A) /* ADC Conversion Complete */
#define EE_RDY_vect (0x2C) /* EEPROM Ready */
#define ANA_COMP_vect (0x2E) /* Analog Comparator */
#define TWI_vect (0x30) /* 2-wire Serial Interface */
#define SPM_READY_vect (0x32) /* Store Program Memory Ready */
///////////////////////////////////////////////////////////////////////
INT0_vect,为外部中断,可是为什么CC2430没有这个外部中断呢?今天做了一个实验,输入信号为信号发生器产生的标准矩形脉冲,希望在下降沿触发外部中断,可是,没成功。我写的代码如下:
#pragma vector="P0INT"_VECTOR
__interrupt void P0INT_Server(void)
{
P1_0=0 ;
}
系统初始化时, P1_0=0 =1,当有下降沿时,置0,灯灭,可是实验没成功,请高手指教:
1、是不是使用外部中断时需要初始化?
2、使用外部中断时,应该接在CC2430的哪个引脚?
现将2430的头文件中关于中断的内容列出:
/* ------------------------------------------------------------------------------------------------
* Interrupt Vectors
* ------------------------------------------------------------------------------------------------
*/
#define RFERR_VECTOR VECT( 0, 0x03 ) /* RF TX FIFO Underflow and RX FIFO Overflow */
#define ADC_VECTOR VECT( 1, 0x0B ) /* ADC End of Conversion */
#define URX0_VECTOR VECT( 2, 0x13 ) /* USART0 RX Complete */
#define URX1_VECTOR VECT( 3, 0x1B ) /* USART1 RX Complete */
#define ENC_VECTOR VECT( 4, 0x23 ) /* AES Encryption/Decryption Complete */
#define ST_VECTOR VECT( 5, 0x2B ) /* Sleep Timer Compare */
#define P2INT_VECTOR VECT( 6, 0x33 ) /* Port 2 Inputs */
#define UTX0_VECTOR VECT( 7, 0x3B ) /* USART0 TX Complete */
#define DMA_VECTOR VECT( 8, 0x43 ) /* DMA Transfer Complete */
#define T1_VECTOR VECT( 9, 0x4B ) /* Timer 1 (16-bit) Capture/Compare/Overflow */
#define T2_VECTOR VECT( 10, 0x53 ) /* Timer 2 (MAC Timer) */
#define T3_VECTOR VECT( 11, 0x5B ) /* Timer 3 (8-bit) Capture/Compare/Overflow */
#define T4_VECTOR VECT( 12, 0x63 ) /* Timer 4 (8-bit) Capture/Compare/Overflow */
#define P0INT_VECTOR VECT( 13, 0x6B ) /* Port 0 Inputs */
#define UTX1_VECTOR VECT( 14, 0x73 ) /* USART1 TX Complete */
#define P1INT_VECTOR VECT( 15, 0x7B ) /* Port 1 Inputs */
#define RF_VECTOR VECT( 16, 0x83 ) /* RF General Interrupts */
#define WDT_VECTOR VECT( 17, 0x8B ) /* Watchdog Overflow in Timer Mode */