/**************************************************
实验名称:独立按键实验一
实验目的:数码管前三位显示一个跑表,从000到999之间
以1%秒速度运行,当按下一个独立键盘时跑表
停止,松开手后跑表继续。用定时器设计表。
实验备注:按下按键时跑表是停止了,但只显示最后一位
数字,因为执行按键程序的while了,display
就没有继续动态显示前两位数码管的数字,能
否改善这个问题咧?
**************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key_01 = P3^4;
sbit DUAN = P2^6;
sbit WEI = P2^7;
uchar flag;
uint num;
uchar bai, shi, ge;
uchar code duan_table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code wei_table[]=
{0xfe,0xfd,0xfb,
0xf7,0xef,0xdf};
void delay_1ms(uchar);
void display(uchar,uchar,uchar);
void main()
{
num = 0;
flag = 0;
TMOD = 0x01;
TH0 = (65536-9216)/256;
TL0 = (65536-9216)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
while(key_01 == 0)//等待按键释放
{
delay_1ms(5);
if(key_01 == 0)
{
ET0 = 0;
}
}
ET0 = 1;
if(flag == 10)