標題:
stc52單片機定時器1,運行不了是什么問題?
[打印本頁]
作者:
sr861126
時間:
2023-7-10 14:22
標題:
stc52單片機定時器1,運行不了是什么問題?
/*-----------------------------------------------
名稱:定時器1
修改:無
內(nèi)容:通過定時讓LED燈閃爍
------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
sbit LED=P1^0; //定義LED端口
char n;
/*------------------------------------------------
定時器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x10; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH1=65535-10000/256;
TL1=65535-10000%6; //定時器0的,寫入數(shù)值寄存器的低8位
EA=1; //總中斷打開
ET1=1; //定時器中斷打開
TR1=1; //定時器開關(guān)打開
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer1();
while(1);
}
/*------------------------------------------------
定時器中斷子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1
{
TH1=65535-10000/256;
TL1=65535-10000%6; //定時器0的,寫入數(shù)值寄存器的低8位
if(n>=20)
{
n=0;
LED=~LED; //LED閃爍
}
}
作者:
13534874028
時間:
2023-7-10 15:28
不是你定時器沒有運行,是你的中斷函數(shù)里的變量n沒有自加操作呀,你的n就不可能大于20
作者:
13534874028
時間:
2023-7-10 15:29
你中斷函數(shù)里的變量n沒有自加操作,就一直是0
作者:
sbskywalker
時間:
2023-7-10 15:33
這不是定時器沒有運行,而是中斷服務(wù)函數(shù)寫錯了,應(yīng)加上n++;
作者:
wulin
時間:
2023-7-10 16:00
TH1、TL1賦值錯誤
TH1=65535-10000/256;
TL1=65535-10000%6;
void Init_Timer1(void)
{
TMOD |= 0x10; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH1=(65535-10000)/256;
TL1=(65535-10000)%256; //定時器0的,寫入數(shù)值寄存器的低8位
EA=1; //總中斷打開
ET1=1; //定時器中斷打開
TR1=1; //定時器開關(guān)打開
}
void Timer1_isr(void) interrupt 3 using 1
{
TH1=(65535-10000)/256;
TL1=(65535-10000)%256; //定時器0的,寫入數(shù)值寄存器的低8位
if(n>=20)
{
n=0;
LED=~LED; //LED閃爍
}
}
作者:
man1234567
時間:
2023-7-10 17:01
1、TH1、TL1賦值錯誤,樓上正解;
2、對于TH1、TL1賦值方式有多種樣式,具體可百度。
作者:
sr861126
時間:
2023-7-11 09:15
13534874028 發(fā)表于 2023-7-10 15:29
你中斷函數(shù)里的變量n沒有自加操作,就一直是0
++了,也是一樣的
作者:
coody_sz
時間:
2023-7-11 13:39
在中斷里取反一個IO,示波器看看。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1