整点报时 单片机 c语言,单片机整点报时编程

① 通过加入若干语句,对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秒后(也就是灯又亮时) 再继续计数 要怎么改(加)上面的程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值