完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
目的: 做一个可调的脉冲发射器,在一个固定的周期T内,每个一段时间(t1)出现一次高电平,持续时间(t2)后再变成低电平。整个周期不断循环,循环次数为N。其中t1的值随着N的变化每次增加(d1),高电平持续时间同样会随着N的变化每次增加(d2)。当按下开始按键后,开始输出脉冲;按下停止键停止输出。 现在主要问题:在开始输出脉冲时,按停止键没有作用,所有的按键都无作用 程序如下: short keycheckdown() //按键函数 { short temp1,temp2,temp,a=0xff; KEY=0xf0; Delay(20); temp1=KEY; KEY=0xff; Delay(10); KEY=0x0f; Delay(20); temp2=KEY; KEY=0xff; temp=(temp1&0xf0)|(temp2&0xf); switch(temp) { case 0xee :a=7; break; case 0xed :a=8; break; case 0xeb :a=9; break; case 0xe7 :a=0x0a; break; case 0xde :a=4; break; case 0xdd :a=5; break; case 0xdb :a=6; break; case 0xd7 :a=0x0b; break; case 0xbe :a=1; break; case 0xbd :a=2; break; case 0xbb :a=3; break; case 0xb7 :a=0x0c; break; case 0x7e :a=0x0e; //开始 break; case 0x7d :a=0; break; case 0x7b :a=0x0f; //停止 break; case 0x77 :a=0x0d; break; default :a=0xff; } return a; } /*脉冲时间计算函数*/ void Start( int t1, int t2, int d1, int d2) { unsigned int Low_time1,High_time,Low_time2; unsigned int n,N; unsigned int T=3000; N=(T-t1-t2)/(d2+d2); for(n=0;n<=N;n++) { Low_time1=t1+n*d1; High_time=t2+n*d2; Low_time2=T-Low_time1-High_time; pulse =0; Delay(Low_time1); pulse =1; Delay(High_time); pulse =0; Delay(Low_time2); } } /*开始输出脉冲*/ void SetStart() { Start(data_1, data_2, data_3, data_4); } /*停止输出*/ void SetStop() { pulse =0; } /*按键动作函数*/ void keyaction(unsigned char key) { if(key == 0x0e) { SetStart(); } else if(key == 0x0f) { SetStop(); } } void main() { while(1) { key=keycheckdown(); if(key!=0xff) { keyaction(key); } } } |
|
相关推荐
2个回答
|
|
把按键扫描程序放在中断里试试
|
|
|
|
第一,应如楼上所说,要提高停止效率,停止触发应用外部中断,防止程序在脉冲执行中不能及时回到键盘扫描程序
第二,还需设定启动停止标记位,然后在脉冲程序中进行标记,让中断发生后及时return子程序执行退出 你仅仅设置pulse =0;并不能使脉冲程序停止吧 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
852 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
592 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
705 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
926 浏览 2 评论
657 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11991 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 19:25 , Processed in 0.577686 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号