标题:
大佬们看看这里,我刚刚初学,定时器在数码管上显示有点问题
[打印本页]
作者:
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