完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
为什么只有key3有用而key1控制数码管加一和key2减一key3清零只有在开关三打开TR0=1;的时候才有用 要他们独立操作该该怎么改进啊!谢谢
#include #define uchar unsigned char #define uint unsigned int ***it key1=P1^0; ***it key2=P1^1; ***it key3=P1^2; ***it key4=P1^3; uchar num,count,ge,shi; void keyscan( ); void delayxms(uint); void display(uchar,uchar); uchar code table[]={ 0x02/*0*/,0x9f/*1*/,0x24/*2*/, 0x0c/*3*/,0x98/*4*/,0x48/*5*/, 0xc0/*6*/,0x1e/*7*/,0x00/*8*/,0x18 };/*共阳数码管0 8编码*/ void main() { TMOD=0x01;//装初值 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; while(1) { void keyscan (); display(shi,ge); } } void T0_time() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; count++; if(count==20) { count=0; num++; if(num==60) num=0; shi=num/10; ge=num%10; } } void delayxms(uint z)//延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar shi,uchar ge)//数码管显示 { P3=0Xe0; P0=table[ge]; delayxms(5); P3=0XD0; P0=table[shi]; delayxms(5); } void keyscan () { if(key1==0) { delayxms(10); if(key1==0) { num++; if(num==60) num=0; while(!key1); } } if(key2==0) { delayxms(10); if(key2==0) { if(num==0) num=60; num--; while(!key2); } } if(key3==0) { delayxms(10); if(key3==0) { num=0; while(!key3); } } if(key4==0) { delayxms(10); if(key4==0) { while(!key4); TR0=~TR0; } } } |
|
相关推荐
3个回答
|
|
你问题 叙述的不够清楚。。。。。。。。。。
|
|
|
|
|
|
|
|
你好! 你说的第一种方法我试过 有用不过好像达不到我想要的结果 因为如果打开启动的话 数码管就会自动计数了 还有你说的第二种方法我也尝试了一下没有用 也不知道我是不是搞错了 麻烦你写一下好吗 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-在VSCode中进行Linux内核源码的管理
295 浏览 0 评论
695 浏览 0 评论
1250 浏览 0 评论
2075 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
1022 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
7291 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-24 07:28 , Processed in 0.377378 second(s), Total 43, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号