完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
***it OUT=P2^2; //定义OUT输出端口 ***it key1=P3^2;//定义按键位置 独立按键模式 ***it key2=P3^3; ***it key3=P3^4; ***it key4=P3^5; void Init_timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } main() { Init_Timer0(); while(1); } void Timer0_isr(void) interrupt 1 using 1 { if(!key1) {TH0=(65536-50000)%256;TL0=(65536-50000)/256;OUT=~OUT;}// else if(!key2){TH0=(65536-20000)%256;TL0=(65536-20000)/256;OUT=~OUT;}// else if(!key3){TH0=(65536-10000)%256;TL0=(65536-10000)/256;OUT=~OUT;}// else if(!key4){TH0=(65536-5000)%256;TL0=(65536-5000)/256;OUT=~OUT;}// } 以上为频率可变的方波,但是是通过四个按键改变频率的,我想通过一个按键,来实现改变频率的功能,求助大神帮忙!!! |
|
相关推荐
3个回答
|
|
公式65536-x.把X设为变量,按一下按键x变一下,变的范围自己考虑,就行了
|
|
|
|
我试了一下,改变成了这样的程序 include ***it OUT=P2^2; //定义OUT输出端口 ***it key1=P3^2;//定义按键位置 独立按键模式 void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } main() { Init_Timer0(); while(1); } void Timer0_isr(void) interrupt 1 using 1 { unsigned int i; i=10; if(!key1) i=i+1; TH0=(65536-1000*i)%256;TL0=(65536-1000*i)/256; OUT=~OUT; } 但有一个问题是,我想实现,按一下按键,然后频率变化后稳定,然后再按键,在这个稳定的频率的基础上在进行变化,可是改进后的不能实现我想要的功能,请问您该怎么办好呢 |
|
|
|
按键有问题在里面加一个while(!key1);你的问题是按键在按下的时候一直在程序运行,导致按键功能执行了n次,所以得到的结果最后连你自己都不知道。在做按键的时候注意避免这种情况的发生
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
751 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1330 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1184 浏览 0 评论
899 浏览 0 评论
947 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11865 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 12:19 , Processed in 0.615805 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号