完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
检测到一个按键后LED灯亮下,现在无法实现,求助怎么解决!!!
#include #include ***it led_dr=P2^0; ***it hc165_si_dr=P1^1; ***it hc165_clk_dr=P1^3; ***it hc165_qh_sr=P1^0; #define cnt_key_delay 40 #define cnt_led_time 150 void key_scan(); void key_service(); unsigned char key_lock1=0; unsigned char key_lock2=0; unsigned char key_lock3=0; unsigned char key_lock4=0; unsigned int key_delay_cnt=0; unsigned int led_time_cnt=0; unsigned char key_sec=0; unsigned char key_status=0; void main() { hc165_qh_sr=1; hc165_clk_dr=1; hc165_qh_sr=1; led_dr=1; TMOD=0X00; TH0=(8192-1000)/32; TL0=(8192-1000)%32; EA=1; ET0=1; TR0=1; while(1) { key_service(); } } void key_scan() { unsigned char i; key_status=0x00; hc165_si_dr=0; _nop_(); _nop_(); hc165_si_dr=1; _nop_(); _nop_(); for(i=0;i<8;i++) { hc165_clk_dr=0; _nop_(); _nop_(); key_status=key_status<<1; key_status=key_status|hc165_qh_sr; hc165_clk_dr=1; _nop_(); _nop_(); } if((key_status&&0x01)==0x01) { key_lock1=0; key_delay_cnt=0; } else if(key_lock1==0) { ++key_delay_cnt; if(key_delay_cnt>cnt_key_delay) { key_delay_cnt=0; key_lock1=1; key_sec=1; } } if((key_status&&0x02)==0x02) { key_lock2=0; key_delay_cnt=0; } else if(key_lock2==0) { ++key_delay_cnt; if(key_delay_cnt>cnt_key_delay) { key_delay_cnt=0; key_lock2=1; key_sec=2; } } if((key_status&&0x04)==0x04) { key_lock3=0; key_delay_cnt=0; } else if(key_lock3==0) { ++key_delay_cnt; if(key_delay_cnt>cnt_key_delay) { key_delay_cnt=0; key_lock3=1; key_sec=3; } } if((key_status&&0x08)==0x08) { key_lock4=0; key_delay_cnt=0; } else if(key_lock4==0) { ++key_delay_cnt; if(key_delay_cnt>cnt_key_delay) { key_delay_cnt=0; key_lock4=1; key_sec=4; } } } void key_service() { switch(key_sec) { case 1: led_time_cnt=cnt_led_time; key_sec=0; break; case 2: led_time_cnt=cnt_led_time; key_sec=0; break; case 3: led_time_cnt=cnt_led_time; key_sec=0; break; case 4: led_time_cnt=cnt_led_time; key_sec=0; break; } } void time0() interrupt 1 { TR0=0; key_scan(); if(led_time_cnt) { led_dr=0; --led_time_cnt; } else { led_dr=1; } TH0=(8192-1000)/32; TL0=(8192-1000)%32; TR0=1; }
|
|
相关推荐
2个回答
|
|
自己顶下,别沉了
|
|
|
|
没人帮帮忙吗?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 07:11 , Processed in 0.588040 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号