標題:
51單片機定時器不進中斷
[打印本頁]
作者:
qsj00000
時間:
2024-9-29 20:30
標題:
51單片機定時器不進中斷
void Time_Init(unsigned char register_Position,unsigned char register_Mode,unsigned char use_Mode,
unsigned char THx,unsigned char TLx,
unsigned char interrupt_Enable,unsigned char interrupt_Grade)
{
TMOD=0x00;
TCON=0x00;
if(register_Position==1) //Time1
{
if(register_Mode==0){TMOD = TMOD||0x00;}
else if(register_Mode==1){TMOD = TMOD||0x04;}
if(use_Mode==0){TMOD = TMOD||0x00;TH0=THx;TL0=TLx;}
else if(use_Mode==1){TMOD = TMOD||0x01;TH0=THx;TL0=TLx;}
else if(use_Mode==2){TMOD = TMOD||0x02;TH0=THx;TL0=TLx;}
else if(use_Mode==3){TMOD = TMOD||0x03;TH0=THx;TL0=TLx;}
if(interrupt_Enable==0){ET1==0;}
else if(interrupt_Enable==1){ET1==1;}
TR1=1;
}
else if(register_Position==0) //Time0
{
if(register_Mode==0){TMOD = TMOD||0x00;}
else if(register_Mode==1){TMOD = TMOD||0x40;}
if(use_Mode==0){TMOD = TMOD||0x00;0x01;TH1=THx;TL1=TLx;}
else if(use_Mode==1){TMOD = TMOD||0x01;TH1=THx;TL1=TLx;}
else if(use_Mode==2){TMOD = TMOD||0x02;TH1=THx;TL1=TLx;}
else if(use_Mode==3){TMOD = TMOD||0x03;TH1=THx;TL1=TLx;}
if(interrupt_Enable==0){ET0==0;}
else if(interrupt_Enable==1){ET0==1;}
TR0=1;
}
else
{
TMOD=0x00;
}
EA=1;
}
/*
外部中斷0:中斷號為0;
定時器0:中斷號為1;
外部中斷1:中斷號為2;
定時器1:中斷號為3;
void Timex_Suspend() interrupt 3
{
}
*/
void main()
{
Time_Init(0,0,1,(65535-1000)/256,(65535-1000)%256,1,0);
//此函數(shù)結果TMOD=00000001 TCON=00110000
while(1)
{
P2=TMOD;
P1=TCON;
}
}
void Timex_Suspend() interrupt 1
{
P0=~P0;
P3=0x00;
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
}
作者:
wpppmlah
時間:
2024-9-30 10:48
請問你是怎么判斷沒有進入 中斷的?
作者:
飛云居士
時間:
2024-9-30 12:48
Timex_Suspend() interrupt 3 函數(shù)的中斷號應該是interrupt 3,而不是interrupt 1。
在Time_Init函數(shù)中,TMOD = TMOD||0x00;0x01; 這一行代碼是錯誤的,應該是 TMOD = TMOD | 0x01;。
代碼中沒有定義ET1和ET0,它們應該是ET1 = 1;和ET0 = 1;。
Timex_Suspend函數(shù)的中斷號應該與聲明的中斷號一致,即interrupt 3用于定時器1,interrupt 1用于定時器0。
作者:
lkc8210
時間:
2024-10-4 09:50
2024-10-04_094838.png
(60.73 KB, 下載次數(shù): 2)
下載附件
2024-10-4 09:50 上傳
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1