标题: 大佬们看看这里,我刚刚初学,定时器在数码管上显示有点问题 [打印本页]

作者: gaoky    时间: 2020-2-10 14:33
标题: 大佬们看看这里,我刚刚初学,定时器在数码管上显示有点问题
我想用定时器设置间隔1ms累加,在数码管上显示,这个程序检查了好长时间也没有什么问题,可一下载下来就变成10位十位的累加,然后间隔也不是1ms,它到255就清零了,不知道怎么回事

#include <all.h>
u16 xdata asdfgh=0;
u8 xdata mun;
void Timer0_Init(void)                //1毫秒@30.000MHz
{
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x3C;                //设置定时初值
        TH0 = 0xF6;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
    ET0=1;
        EA=1;
}


       

void main()
{
        P0M0=0;
        P0M1=0;
        P2M0=0;
        P2M1=0;
        P4M0=0;
        P4M1=0;
        P5M1&=~0x02;//强推挽
        P5M0|=0x02;       
        HC595_Init();
        ROTARY_Init();
        Timer0_Init();
       
       
       
        //IT0=1;//外部中中断0,下降沿触发
        //EX0=1;//允许外部IO口输入中断
        //EA=1;//总中断允许
       
        while(1)//开始执行程序
        {
                SMG_Write_Buffer[0]=Rotary_Read_Byte_Key;
                SMG_Write_Buffer[1]=0;
                SMG_Write_Buffer[2]=0;
                SMG_Write_Buffer[3]=0;
                SMG_Write_Buffer[4]=0;
                SMG_Write_Buffer[5]=mun/100;
                SMG_Write_Buffer[6]=mun%100/10;
                SMG_Write_Buffer[7]=mun%100/10;
                SMG_Display_ser();       
                ROTARY_Key_Scan_Drive();
               
        }
}




void Timer0_Routine(void) interrupt 1//中断服务函数
{
        TL0 = 0x3c;                //设置定时初值
        TH0 = 0xf6;
        //P51=~P51;
        asdfgh++;

       
        if(asdfgh>=1000)
        {
                asdfgh=0;
                mun++;
        }
       
       
}



作者: lyxing    时间: 2020-2-10 21:45
u8 xdata mun;       //  字符型数据 取值范围0-255,再大改为 u16
SMG_Write_Buffer[7]=mun%100/10;   改为SMG_Write_Buffer[7]=mun%100%10;
作者: my-cy    时间: 2020-2-11 04:58
SMG_Write_Buffer[7]=mun%100%10;
作者: wulin    时间: 2020-2-11 06:56
                SMG_Write_Buffer[5]=mun/100%10;
                SMG_Write_Buffer[6]=mun/10%10;
                SMG_Write_Buffer[7]=mun%10;
作者: haierzaifei11    时间: 2020-2-11 09:37
SMG_Write_Buffer[7]=mun%100%10;
作者: Yuanfangsheng    时间: 2020-2-11 12:54
MG_Write_Buffer[7]=mun%100/10;把/整除换成%取余




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1