PIC16F877單片機定時器2使用中斷方式調試程序如下:
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
void init();
uint intnum;
void main()
{
init();
while(1)
{
/* if(intnum==5000)
{
intnum=0;
RD0=!RD0;
}*/
}
}
void init()
{
TRISD = 0x00; //設置PORTD為輸出低電平
PORTD = 0x00; //
/* INTCON=0xc0;
PIE1=0x02;
TMR2=0;
PR2=100;
T2CON=0x0D;*/
INTCON = 0xc0; //允許所有中斷、允許外設中斷
PIE1 = 0x02; //允許TMR2與PR2匹配中斷
// TMR2 = 56; //4M晶振系統,預設為(256-56=)200us
TMR2 = 0; //與PR2比較中斷
PR2 = 100;
//T2CON = 0x04; //定時器2使能
//T2CON=0x05;//4預分頻并使能定時器2
T2CON=0x0D; //4預分頻、2后頻并使能定時器2
}
void interrupt time0()
{
/* TMR2IF=0;
// TMR2=56;
// RD0=!RD0;//
intnum++;*/
TMR2IF = 0; //定時器2清除溢出中斷標志位
// TMR2 = 56; //預裝初值
intnum++;
if(++intnum >= 5000)//為1S、4S、8S
{
intnum = 0;
RD0 = !RD0; //反轉
}
}