标题:
求大神指导,写的一个51单片机用定时器0方式一60倒计时程序跑不了
[打印本页]
作者:
zlc哈哈哈
时间:
2017-7-14 09:34
标题:
求大神指导,写的一个51单片机用定时器0方式一60倒计时程序跑不了
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num,second;
unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
void delay1ms(uint i)
{
uchar j;
while(i--)
for(j=0;j<115;j++)
{
;
}
}
void display(uchar k)
{
P2=0xfe;
P0=Tab[k/10];
delay1ms(5);
P2=0xfd;
P0=Tab[k%10];
delay1ms(5);
P2=0xff;
P0=0xff;
delay1ms(5);
}
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=0;
TR0=0;
num=0;
second=60;
while(1)
{
display(second);
}
}
void timer0(void) interrupt 1
{
TR0=0;
num++;
if(num==20)
{
num=0;
second--;
if(second==0)
second=60;
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
作者:
MAPPLE
时间:
2017-7-14 10:16
看着没什么错误
作者:
wulin
时间:
2017-7-14 10:51
初始化定时器中 ET0=1; TR0=1;,中断程序中取消对TR0的操作
作者:
孤城之恋
时间:
2017-7-14 16:53
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,second,tab1[2],TOH = 0,TOL = 0;
bit flag = 0;
unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
void display( )
{
static uchar i = 0;
P0 = 0xff;
P2 = ~(0x01 << i);
P0 = Tab[tab1[i]];
if ( i< 1)
i++;
else
i = 0;
}
//定时函数
void Timer( uchar t)
{
unsigned long temp;
temp = 11059200 / 12;
temp = (temp * t) / 1000;
temp = 65536 - temp;
TOH = (uchar)(temp >> 8);
TOL = (uchar)temp;
TH0 = TOH;
TL0 = TOL;
TMOD &= 0XF0;
TMOD |= 0X01;
TR0 = 1;
ET0 = 1;
EA = 1;
}
void main(void)
{
Timer(1); //定时一毫秒
second=60;
tab1[0] = second / 10;
tab1[1] = second % 10;
while(1)
{
if(flag) //一秒钟就减一次
{
flag = 0;
second--;
tab1[0] = second / 10;
tab1[1] = second % 10;
if (second == 0)
second = 60;
}
}
}
void timer0(void) interrupt 1
{
static unsigned int num = 0;
TH0 = TOH;
TL0 = TOL;
display();
num++;
if(num>= 1000) //一秒钟就减一次
{
num = 0;
flag = 1;
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1