完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
独立按键控制直流电动机正反转
这篇程序是引用开发板资源里面的代码,我只是稍加修改 这篇代码中我添加了我的理解,若有错误,希望大佬指出! 另外还有些疑问:kerpros函数应该不是一个关键字吧?我在代码中把他改成其他单词后,代码依旧能够运行。 对数据类型声明的时候,用typedef unsigned int u16,是对int的重命名,此声明过后,对变量的定义就可以写u16 i,相当于unsigned int i。 #include “reg52.h” //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义; typedef unsigned char u8; //tepedef unsigend 是对int char之类的数据类型进行重命名, ***it K1 = P3^1; //定义P31口是k1 ***it IN1 = P2^0; //定义P20口是led ***it IN2 = P2^1; ***it AA = P2^2; ***it BB = P2^3; /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函 数 名 : keypros; keypros应该是人为定义的,只要在引用的时候保持一直即可 * 函数功能 : 按键处理函数,判断按键K1是否按下 *******************************************************************************/ void keypros() { if(k1==0) //检测按键K1是否按下 //第一次检测,如果k1=0,则开始执行下面的程序; //消抖的delay子函数的输入量不宜过大,否则会按下按键一次的时间可能小于消抖的时 间,此时需要按两次按键才能执行取反的命令; //执行完取反指令后,程序开始检测按键是否松开,若魏松凯,则程序停止在while位置,松开后,则函数回到消抖的位置继续执行。。。。。。 { delay(1000); //消除抖动 一般大约10ms if(k1==0) //再次判断按键是否按下 { IN1 = ~IN1; IN2 = ~IN2; //电动机状态取反 } while(~k1); //检测按键是否松开 } } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { IN1 = 0; IN2 = 1; while(1) { keypros(); //按键处理函数 } } |
|
|
|
只有小组成员才能发言,加入小组>>
2433 浏览 0 评论
9089 浏览 4 评论
36751 浏览 19 评论
5021 浏览 0 评论
24724 浏览 34 评论
1517浏览 2评论
1734浏览 1评论
2182浏览 1评论
1543浏览 0评论
515浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 01:05 , Processed in 1.258723 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号