完善资料让更多小伙伴认识你,还能领取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次,所以得到的结果最后连你自己都不知道。在做按键的时候注意避免这种情况的发生
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
1075 浏览 0 评论
1129 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
499 浏览 0 评论
stm32f407+ksz8863rlli概率性ping不通
1211 浏览 1 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
586 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11382 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-3 03:52 , Processed in 0.688846 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号