① 通过加入若干语句,对mg及ms变量进行控制,实现每当一秒钟到来时mg自动加1;当mg=10(即经历10秒钟)时mg自动清零,同时ms自动加1;当ms=2(即经历20秒)时ms自动清零,最终实现标准时间的秒信息显示(mg及ms变量通过串行口送出,经串并转换后至数码管显示)。
② 当秒钟为“20”时清零的同时控制P1.0上的LED点亮3秒钟。
当这个题目时 编程为
#include
//********数码管段代码表(共阴且高位接a,低位接h笔段)**********//
unsigned char code Tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,
0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};
unsigned char mg=0,ms=0,bittime=0;
//串口发送子程序//
void display(void)
{
TI=0; SBUF=Tab[ms]; while(!TI);
TI=0; SBUF=Tab[mg]; while(!TI);
}
//定时中断服务程序
void timer0 (void) interrupt 1 using 0
{
TH0=0x3c; TL0=0xb0; bittime++;
while(bittime==40)
{
bittime=0;
mg++;
if(mg==10)
{mg=0;
ms=ms+1;}
if(ms==2)
{mg=0;ms=0;P1_0=0;}
if(mg==3)
{P1_0=1;}
display();
//每经一秒调用一次显示程序(Fosc=24MHz)
}
}
//主程序
void main(void)
{
TMOD=0x01;SCON=0X00;
TH0=0x3c;TL0=0xb0;
EA=1; ET0=1; TR0=1;
while(1);
}
如果我想在上面题目下 加上 当它20秒时(也就是P1_0灯亮时)停止计数,直到3秒后(也就是灯又亮时) 再继续计数 要怎么改(加)上面的程序