51单片机单只数码管循环显示0-9
C语言如下怎么改才能加入按K1暂停再次继续K2复位的功能#include<reg51.h>#defineucharunsignedchar;ucharLED1,LED2;...
C语言如下 怎么改才能加入按K1暂停再次继续 K2复位的功能
#include<reg51.h>#define uchar unsigned char;uchar LED1,LED2;uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar num=0;sec,key;void delay(unsigned int a){unsigned int i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);}void display()(){LED1=sec/10;LED2=sec%10;P2=0x01;P0=distab[LED1];delay(3);P2=0x02;P0=distab[LED2];delay(3);}void t0isr() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;if(num>=20) { num=0; sec++; }}main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;LED1=0;LED2=0;while(1){key=P1;if((key&0x0f)!=0x0f) { delay(10); key=P1&0x0f; if(key!=0x0f) { switch(key) { case 0x0e:TR0=0;break; case 0x0d:sec++;break; case 0x0b:sec--;break; case 0x07:TR0=1;break; default:break; } } })display()();}} 展开
#include<reg51.h>#define uchar unsigned char;uchar LED1,LED2;uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar num=0;sec,key;void delay(unsigned int a){unsigned int i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);}void display()(){LED1=sec/10;LED2=sec%10;P2=0x01;P0=distab[LED1];delay(3);P2=0x02;P0=distab[LED2];delay(3);}void t0isr() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;if(num>=20) { num=0; sec++; }}main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;LED1=0;LED2=0;while(1){key=P1;if((key&0x0f)!=0x0f) { delay(10); key=P1&0x0f; if(key!=0x0f) { switch(key) { case 0x0e:TR0=0;break; case 0x0d:sec++;break; case 0x0b:sec--;break; case 0x07:TR0=1;break; default:break; } } })display()();}} 展开
3个回答
东莞市友贸实业有限公司_
2023-11-22 广告
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据...
点击进入详情页
本回答由东莞市友贸实业有限公司_提供
展开全部
太乱了,怎么看。 K1暂停可以将TR0=0关闭定时器(检测K1按下的次数如keyK1=1时关闭定时器,keyk1=2时打开定时器,且必须重装TH0和TL0的值以保障精准) K2复位将num值清零。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
……
while(1) {
key=P1;
if((key&0x0f)!=0x0f) {
delay(10);
key=P1&0x0f;
if(key!=0x0f) {
switch(key) {
case 0x0e:TR0 = ~TR0;break; //暂停、继续
case 0x0d:sec++;break;
case 0x0b:sec--;break;
case 0x07:sec = 0;break; //清零
default:break;
}
……
while(1) {
key=P1;
if((key&0x0f)!=0x0f) {
delay(10);
key=P1&0x0f;
if(key!=0x0f) {
switch(key) {
case 0x0e:TR0 = ~TR0;break; //暂停、继续
case 0x0d:sec++;break;
case 0x0b:sec--;break;
case 0x07:sec = 0;break; //清零
default:break;
}
……
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询