大学生电子设计
直播中

月光下你的面庞

8年用户 57经验值
擅长:11540
私信 关注
[求助]

89c52单片机中断初值寄存器重装的问题?

本帖最后由 月光下你的面庞 于 2017-4-17 13:47 编辑

中断程序中要重新赋值th0 tl0,但是今天做了个实验发现没重装也可以。是程序错了吗?请教后来调试了一下,果然th0tl0到那个地方重装了,搞得我很蒙圈了。


这是代码

#include
#include
***it wela=P2^7;
***it dula=P2^6;
#define uint unsigned int
#define uchar unsigned char
uint num,tt;
uchar aa;

//void delayms(uint xms);
void main()
{
        tt=0;

        wela=1;
        P0=0xea;
        wela=0;
        dula=1;
        P0=0x3f;
        dula=0;     //这是不用管

        TMOD=0x01;  //set the timer0 as the work-way1
        TH0=(65536-50000)/256;  //senior 8bit setting
        TL0=(65536-50000)%256;  //junior 8bit setting
        EA=1;  // superior inter on
        ET0=1;  //interrupt timer0 on
        TR0=1;  //timer0 start up
        
        aa=0xfe;
        while(1)
        {
               
                if(tt==10)
                {
                        tt=0;
                        P1=aa;
                        aa=_crol_(aa,1);

                }
               
               
        }
        
}


void exter0() interrupt 1  //timer inter 0
{
        //TH0=(65536-50000)/256;
        //TL0=(65536-50000)%256;     //(为什么我没有重装,实验效果相同?)
        tt++;
}

/*void delayms(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}
*/



附件: 您需要登录才可以下载或查看附件。没有帐号?注册
已退回5积分

更多回帖

发帖
×
20
完善资料,
赚取积分