
 
 
 
 
 #include <p18cxxx.h>/*18F系列单片机头文件*/
void PIC18F_High_isr(void);/*中断服务函数声明*/
 void PIC18F_Low_isr(void);
#pragma code high_vector_section=0x8
 void high_vector (void)
 {
     _asm goto PIC18F_High_isr _endasm/*通过一条跳转指令(汇编指令),跳转到中断服务函数(中断服务程序)处*/
 }
#pragma code low_vector_section=0x18
 /*低优先级中断响应时,会自动跳转到0x18处*/
 void low_vector (void)
 {
     _asm goto PIC18F_Low_isr _endasm
 }
#pragma code
  
/*---高优先级中断服务程序---*/
 #pragma interrupt PIC18F_High_isr
 void PIC18F_High_isr (void)
 {
     TMR0L=20;/*TMR0重新置初值*/
     PORTBbits.RB4=~PORTBbits.RB4;
     INTCONbits.TMR0IF=0;    /*TMR0溢出标志清零*/
 }
/*---低优先级中断服务程序---*/
 #pragma interruptlow PIC18F_Low_isr
 void PIC18F_Low_isr (void)
 {
}
 void main(void)/*主函数*/
 {
     TRISBbits.TRISB4=0;//B4输出
     PORTBbits.RB4=1;   //B4输出高电平
    INTCONbits.GIE=0;/*关全局中断*/
     RCONbits.IPEN=1; /*使能中断优先级*/
    T0CON=0b01001000;/*TMR0设置:停止运行、8位定时,F=FOSC,无预分频*/
     //T0CONbits.TMR0ON=0/*禁止Timer0*/
     //T0CONbits.T08BIT=1/*Timer0 被配置为8位定时计数器*/
     //T0CONbits.T0CS=0/*内部指令周期时钟(CLKO)作为时钟源*/
     //T0CONbits.PSA=0/*未分配Timer0预分频器*/
     
     TMR0L=20;/*TMR0置初值*/
         
     INTCONbits.TMR0IF=0;/*Timer0溢出标志清零*/
     INTCONbits.TMR0IE=1;/*允许Timer0溢出中断*/
     INTCON2bits.TMR0IP=1;/*Timer0中断为高优先级*/
     
     T0CONbits.TMR0ON=1;/*启动TMR0*/
     INTCONbits.GIE=1;/*开全局中断*/
     
     while(1)
     {
                 
     }
 }
    
     



















