完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
#include
#include #define uchar unsigned char #define uint unsigned int uchar C,KS,KT,KF,KM,KA,KB,KC; //C:定时/计数溢出次数;KS:K1按键初始状态;KF:K1按键按下次数;KT:K2按键初始状态;KM:K3按键初始状态 ***it K1=P1^0; //开始暂停按键 ***it K2=P1^1; //记录 ***it K3=P1^2; //上翻 ***it K4=P1^3; //下翻 ***it K5=P1^4; //倒计时 ***it K6=P1^5; //清零按键 ***it BEEP=P1^6; //扬声器口 ***it D=P0^7; //秒和毫秒之间的点 uchar code SMG4[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0--9对应的段码 uchar SD[]={0,0,0,0}; //SD[]表示4段数码管显示的数字 uchar CC[][4]={0}; //存储时间 //延时函数 void Delay(uchar x) { uint i; while(--x) for(i=0;i<120;i++); } //数码管显示0 void r() { uchar f; for(f=0;f<4;f++) SD[f]=0; } //蜂鸣器 void Beep() { uchar i,j=2; for(i=0;i<120;i++) { while(--j); BEEP=~BEEP; } BEEP=0; } //K1按键处理函数 开始暂停 void KE() { if(KS==0) { KF=(KF+1)%2; switch(KF) { case 1:EA=1;ET0=1;TR0=1;Beep();break; //数码管开始计时 case 0:EA=1;ET0=0;TR0=0;Beep();break; //数码管停止计时 } } } //K2按键处理函数,存储时间 void KW() { uchar f; uchar i=0 ; if(KT==0) { i++; Beep(); for(f=0;f<4;f++) { CC[i][f]=SD[f]; } } } /*for(f=0;f<4;f++) CC[f]=SD[f];*/ //K3按键处理函数 void KX() { uchar i=0; uchar f; if(KA==0) { i++; Beep(); for(f=0;f<4;f++) { SD[f]= CC[i][f]; } } } //K6按键处理函数,计时清零 void KZ() { if(KM==0) { Beep(); EA=1;ET0=0;TR0=0;r(); } } //主程序 void main() { uchar i,j; P0=0x00; P3=0xff; C=0; KF=0; KT=1; KM=1; KS=1; KA=1; KB=1; KC=1; TMOD=0x01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; //50ms定 while(1) { j=0x7f; for(i=0;i<=3;i++) //从低往高显示位数 { j=_crol_(j,1); P3=j; P0=SMG4[SD[i]]; //显示数字 if(i==2) D=1; Delay(2); } if(KS!=K1) //判断K1是否有按键按下 { Delay(10); KS=K1; KE(); } if(KT!=K2) //判断K2是否有按键按下 { Delay(10); KT=K2; KW(); } if(KA!=K3) //判断K3是否有按键按下 { Delay(10); KA=K3; KX(); } /*if(KB!=K4) //判断K4是否有按键按下 { Delay(10); KB=K4; KY(); } if(KC!=K5) //判断K5是否有按键按下 { Delay(10); KC=K5; KU(); } */ if(KM!=K6) //判断K6是否有按键按下 { Delay(10); KM=K6; KZ(); } } } //T0中断函数 void timer0() interrupt 1 { uchar i; TH0=(65536-1000)/256; TL0=(65536-1000)%256; //50ms定时 if(++C!=10) return; C=0; SD[0]++; //0.1s位累加 for(i=0;i<=3;i++) //进位处理 { if(SD[i]==10) { SD[i]=0; if(i!=3) SD[i+1]++; } else break; } } 仿真图在压缩包里,急用,请大神帮忙
|
|
相关推荐
1个回答
|
|
|
阿三方大苏打阿附速度
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
552 浏览 0 评论
706 浏览 0 评论
883 浏览 0 评论
839 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
775 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17069 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-15 07:04 , Processed in 0.569918 second(s), Total 37, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5201