久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > PIC 定時器0中斷

PIC 定時器0中斷

作者: 時間:2016-11-21 來源:網絡 收藏
#include //調用頭文件,可以去PICC18軟件下去查找PIC18FXX2.H
__CONFIG(1,XT) ; //晶振為外部4M
__CONFIG(2,WDTDIS) ; //看門狗關閉
__CONFIG(4,LVPDIS) ; //禁止低電壓編程
#define uint unsigned int
#define uchar unsigned char
uint count=0;
void timer0init(void)
{
T0CS=0; //TMR0工作于定時器方式
PSA=1; //TMR0不分頻
TMR0IF=0; //TMR0IF是中斷標志,定時一段時間就會輸出1
TMR0IE=1; //允許TMR0中斷
T0CON=0x88; //16bit定時方式
TMR0=0xff13;//晶振4M,定時250us(就是先在TMR0L和TMR0H中存入一定的數,使
計時時間為計數器中剩余的空間次數*執行每次的時間)
GIE=1; //
}
void interrupt ISR(void)
{
if(TMR0IF==1) //達到了250us
{
TMR0=0xff13; //重新裝入初值
TMR0IF=0; //中斷標志位清零,方便下一次中斷產生時
判斷
count++;
if(count==4000)
{
count=0;
}
}
}
void delayms(uint x)
{
uint i,j;
for(i=0;i<=110;i++)
for(j=0;j<=x;j++);
}
void main(void)
{
ADCON1=0X06; //所有IO均為數字口,模擬量輸入禁止
TRISD=0B11111110;
timer0init();
while(1)
{
if(count==0)
{
RD0=1;
delayms(400);
}
else RD0=0;
}
}
這個效果比較單一,只能顯示一閃一閃;但定時器中斷卻能夠用在數碼管動態掃描中,如果不用定時器中斷,只用delayms()延時函數來讓數碼管閃是不可能實現的。必須用定時器中斷。


關鍵詞: PIC定時器0中

評論


技術專區

關閉