找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 914|回復: 3
打印 上一主題 下一主題
收起左側(cè)

51單片機定時器不進中斷

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1020154 發(fā)表于 2024-9-29 20:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
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ù)結(jié)果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;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:68189 發(fā)表于 2024-9-30 10:48 | 只看該作者
請問你是怎么判斷沒有進入 中斷的?
回復

使用道具 舉報

板凳
ID:404160 發(fā)表于 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。
回復

使用道具 舉報

地板
ID:161164 發(fā)表于 2024-10-4 09:50 | 只看該作者

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表