完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
***it led_A=P0^0; //数码管位 ***it led_B=P0^1; //数码管位 //***************led指示灯引脚定义*****************// ***it dx_R=P0^2; ***it dx_Y=P0^3; ***it dx_G=P0^4; ***it nb_R=P0^7; ***it nb_Y=P0^6; ***it nb_G=P0^5; bit flag=0; ***it key_stop=P3^3; char N=25; //初始时间是25 char tab_disp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极码表 /*延时子函数*/ void delay(int t ){while(t--);} /*显示子函数*/ void display(char dat) { led_A=led_B=0; //先位灭显 P2=0XFF; //再段灭显 P2=tab_disp[dat/10]; //赋显示的数 if(dat/10)led_A=1; delay(1000); //延时 P2=0XFF;led_A=led_B=0; //段灭显 位灭显 P2=tab_disp[dat%10]; //赋显示的数 led_B=1; delay(1000); //延时 } //这个是循环显示60遍显示的函数 void deal(char m) { int t=60; while(t--)display(m); //循环显示60遍显示的函数 } void KEY() //按键函数 { unsigned char save; //定义保存灯状态的变量 if(key_stop==0) //按键是否按下 { delay(20); //延时去抖 if(key_stop==0) //再次判断按键是否按下 { flag=1; //紧急状态标志位置1,进入紧急通行状态 save=P0; //保存灯的状态 P0=0x84; //全部亮红灯 while(key_stop==0); //按键释放,当按键一直按下的时候,程序就会一直执行这里,直到按键按下 while(flag==1) //如果是紧急状态就一直执行下面的程序 { if(key_stop==0) //在紧急状态时判断按键是否按下 { delay(50); //延时去抖 if(key_stop==0) //再次判断按键是否按下 { flag=0; //紧急状态标志位清零,退出紧急状态 P0=save; //LED灯恢复到之前状态 while(key_stop==0); //按键释放 } } } } } } /*主函数*/ void main(void) { char i; EA=1; //全局中断开关 IT1=1; //外部中断下降沿有效 EX1=1; while(1) { N=25; //初始时间是25 dx_R=1;dx_Y=0;dx_G=0; //指示灯0是亮,1是灭 nb_R=0;nb_Y=0;nb_G=1; //指示灯0是亮,1是灭 for(i=N;i>0;i--) //一秒一秒的减 { deal(i); KEY(); } dx_R=1;dx_Y=0;dx_G=0; //指示灯0是亮,1是灭 nb_R=0;nb_Y=1;nb_G=0; //指示灯0是亮,1是灭 N=5; //时间变成5 for(i=N;i>0;i--) //一秒一秒的减 { deal(i); KEY(); } dx_R=0;dx_Y=0;dx_G=1; //指示灯0是亮,1是灭 nb_R=1;nb_Y=0;nb_G=0; //指示灯0是亮,1是灭 N=25; //时间变成25 for(i=N;i>0;i--) //一秒一秒的减 { deal(i); KEY(); } dx_R=0;dx_Y=1;dx_G=0; //指示灯0是亮,1是灭 nb_R=1;nb_Y=0;nb_G=0; //指示灯0是亮,1是灭 N=5; //时间变成5 for(i=N;i>0;i--) //一秒一秒的减 { deal(i); KEY(); } } } |
|
相关推荐 |
|
27926 浏览 1 评论
【RISC-V开放架构设计之道|阅读体验】+ 个人心得并祝福
2154 浏览 1 评论
10026 浏览 6 评论
7064 浏览 19 评论
【大赛报名】V853芯片免费体验!华秋电子X全志在线开源硬件设计大赛
24328 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 05:21 , Processed in 0.514733 second(s), Total 48, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号