我开了定时器中断,在中断里面去清一个口为0,平时为高!为什么低电平的间隔不一样啊? 代码如下: #include <p18f2431.h> #pragma config OSC = HS //新的配置字设置方法 #pragma config PWRTEN = OFF #pragma config BOREN = OFF #pragma config WDTEN = OFF #pragma config LVP = OFF #pragma config HPOL=LOW #pragma config LPOL=LOW
//-------------------------------------------------------------------------------------- void intiio(void); void intit0(void); void T0_int(void); void high_isr (); void T0_int(); //--------------------------------------------------------------------- //void T0_int(void) //{ // } void intiio(void) { ANSEL0=0X01; TRISA=0XFF; TRISB=0X00; TRISC=0XFF; PORTB=0XFF; } void inti_interrupt(void) { RCONbits.IPEN=1; IPR3=0X0E; PIR3=0; PIR2=0; PIR1=0; PIE3=0X1F; INTCON=0XC0; } void intit0(void) { T0CON=0X44; INTCON2bits.TMR0IP=1;//设置为高优先级 INTCONbits.TMR0IE=1;//使能中断 INTCONbits.TMR0IF=0;//清除标志位 TMR0L=0X00; T0CONbits.TMR0ON=1; } #pragma code high_vector=0x08 //save=PROD,TBLPTR,TABLAT void high_interrupt (void) { _asm GOTO high_isr _endasm }
#pragma code
#pragma interrupt high_isr //save=PROD,TBLPTR,TABLAT void high_isr (void) { // T0_int(); PORTBbits.RB6=0; INTCONbits.TMR0IF=0;//清除标志位 //TMR0L=0X7f; TMR0L=0X00; }
void event(void) {
PORTBbits.RB6=1; }
void main(void) { intiio();//初始化I/O的函数 inti_interrupt();//初始化中断 intit0(); while(1) { event(); } } |