最近再学单片机编译软件,如题如何编译C语言程序用计时器检测P1端口脉冲并用次来控制继电器啊?

硕士/研究生
&&&&&&DOC文档下载
游客快捷下载
会员登录下载
下载资源需要10元
邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。
支付方式:
已注册用户请登录:
当日自动登录&&
&&合作网站一键登录:
1、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器);
2、文档下载后都不会有金锄头文库的水印,预览文档经过压缩,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、所有文档都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的,可以点击右侧栏的客服对话;
下载须知 | 常见问题汇总
51单片机c语言总结
更多资料视频下载,学习梦想家园HTTP//MXROOMCOM入门有针对性的解决一些简单的实际问题,边理论边实践学一样会一样基本实验LED流水灯,数码管显示,键盘控制,音乐播放,继电器控制I2C通信实验,串口通信实验,红外线遥控信号解码实验等单片机的定义分类和内部组成1单片机就是中央处理器CPU,随机存储器RAM。只读存储器ROM。定时、计数器和各种输入输出接口I/O接口电路等部件集成在一块电路芯片上的微型计算机。2,1分类按制造工艺分HMOS和CHMOSCHMOS包括80C51等中间加了C功耗要小适合便携式手提式和野外作业。2分类按不同容量的存储器配置分51子系列和52子系列51表示单片机最后一位数字为1作为标志。片内带有4KBROM或EPROM(ERASABLEPROGRAMMABLEROM,可擦除可编程ROM,128BRAM,两个16位定时器/计数器和5个中段器52系列是增强型各项指标都高。AT89S51是AT89C51的升级版支持ISP在线更新程序ISPINTERNETSERVICEPROVIDER内部集成看门狗计时器等。31串行接口就是接口数据传送32中断控制系统接收中断请求如定时时间到,需要鸣笛报警类似STOPTODO停下来去执行ROM中特定的每段程序,执行完后再继续执行先前中断的程序时钟电路控制节拍工作。一个典型的单片机应用系统包括输入电路,单片机,输出电路把他想象成电脑。单片机的应用P5十六进制A10B11C12D13E14F15记A10和D13点得13点F15不是F16十六进制加H逻辑数据的运算逻辑与。。。两个输入一个输出中间加一个恒定5V电压有0为0,全1出1逻辑或有1为1,全0出0;字长通常与计算机内部的寄存器和运算器数据总线的宽度一致实例1功能感受PROTUES仿真单片机播放渴望主题曲运用PROTUES打开仿真原理图。对单片机进行处理编辑EDITCOMPONENT,选取目标文件HEXCLOCKFREQUENCY时钟频率OK原理图编辑窗口没有滚动条,可通过预览窗口该表原理图的可视范围。PROTUES双击右键删除先单击鼠标右键,可通过鼠标左键可以编辑元器件的属性鼠标右键来删除画错的连线中键缩放原理图更多资料视频下载,学习梦想家园HTTP//MXROOMCOM新建即保存新建设计文件JUNCTIONDOTMODE连接点SUBCIRCUITMODE子电路LAB用总线时会用到TERMINALSMODE终端接口,有VCC地输出输入等接口DEVICEPINSMODE器件引脚用于绘制各种引脚。GRAPHMODE仿真图表,用于各种分析,如NOISEANALYSISTAPERECORDERMODE录音机GENERATORMODE信号发生器VOLTAGEPROBEMODE电压探针仿真图表用CURRENTPROBEMODE电流探针仿真图表用VIRTUALINSTRUMENTSMODE虚拟仪表有示波器可显示工作波形RESISTORS电阻CAPACITORS电容CRYSTAL晶振RADIANLELECTROLYTIC圆柱形电解电容KEYWORDS输入RESISTORS470R或功率先选择元器件后放元器件LEDYELLOWDRAGOBJECT拖动对象EDITIPROPERTIES编辑属性ROTATECLOCKWISE顺时针旋转90ROTATEANTICLOCKWISE逆时针旋转90XMIRROR水平翻转YMIRROR垂直翻转删可以右键双击双击鼠标左键编辑LABEL放置电源和地必须编辑正确的LABEL如VCC地GND各元器件引脚通过总线的连接并不表示真正意义上的电气连接,需要添加网络标号。要运行双击单片机基本电源5V振荡电路单片机是一种时序电路,必须施加脉冲信号才能工作。在它的内部有一个时钟产生电路,只要接上两个电容和一个晶振即可正常工作。P30复位电路启动后让单片机从初始状态开始执行程序。EA一横接正电源端,表示使用内部程序存储器。注意观察仿真效果时,晶振电路,复位电路和EA引脚和电路的连接可以省略。KEIL软件源程序后缀。C必须手工输入,表示为C语言程序,让KEILC51采用对应的C语言的方式来编译源程序。INCLUDE包含51单片机寄存器定义的头文件将新建的源程序文件加载到项目管理器右击SOURCEGROUP文件ADDC文件单片机不能处理C,必须将C转换成二进制或十六进制代码,汇编或编译。用鼠标右键点击TARGET进入OPTIONSFORTARGET确认OUTPUT选项中CREATEHEX重新构造所有目标更多资料视频下载,学习梦想家园HTTP//MXROOMCOM程序烧录器及烧录软件的使用单片机软硬件系统仿真成功后,要真正投入实际应用,必须将程序烧写入单片机芯片,A51程序烧录器和先将COM接口(用作数据通信)与计算机的COM接口RS232连接好,然后将单片机安插在烧录器的插座中,再用一根USB线将USB接口与计算机的USB接口连接,让计算机通过这根USB线向烧录器提供5V电源使用烧录器前,手动设置一些,参数标签页,根据COM口,设置好串口,波特率设置为28800;点击自动擦除器件命令,点击打开文件命令选择单片机文件十六进制文件HEX再点击打开点击自动写器件。实例4用单片机控制一个灯闪烁LED灯亮存在电压差和正向偏置延迟函数VOIDMAINVOID//两个VOID分别表示无须返回值和没有参数传递{UNSIGNEDINTI//定义无符号整数,最大65535FOR(I0I虚拟仪表示波器OSCILLOSCOPEPROTUES示波器面板及使用单片机需要一个时钟信号送给内部个电路,才能使他们有节拍的工作,时钟信号的频率由外部振荡电路的晶振频率决定,51系列单片机的机器周期是由12个振荡周期组成。指令周期单片机执行一条指令的时间。时钟频率越低,延时的时间就越长,灯闪烁的速度就越慢。实例5将P1口状态送入P0口P2口P3口利用单片机工作速度快的特点,无限循环可以让单片机不停地把P1口的电平状态送到P0口P2口和P3口。引脚接地低电平被输入到P口实例6使用P3口流水点亮8位LED记忆,0XFEXFDXFBXFXEFXDFXBFF实例7通过对P3口地址的操作流水点亮8位LED单片机都有固定的地址,记忆张三在教室的第2排第5列老师可以说清张三回答问题也可以说请第2排第5列的同学答题。SFRX0XB0;通过关键字SFR将X定义为P2的地址0XB0定义后,程序中对X的操作就相当于对地址0XB0即P3的操作更多资料视频下载,学习梦想家园HTTP//MXROOMCOM类似于指针P3口的固定地址是BOHMCS51单片机存储器的基本结构它有两种1即程序存储器和2数据存储器从物理MSC51有4个存储地址空间,即片内程序存储器和片外程序存储器程序存储器受EA一横外接电平的控制。1当EA一横接地时,单片机只能使用外部程序存储器2当EA一横接5V是单片机先使用内部程序存储器,容量不够时自动使用外部程序存储器。特殊功能寄存器ACC累加器标识符名称地址ACC累加器E0HBB寄存器F0HPSW程序状态字D0HSP堆栈指针81HDRTR数据指针83H82HP080HP190HP2A0HP3B0HIP中断优先级控制B8HIE允许中断控制A8HTMOD定计方式控制89HTCON定计控制88HTH0定计0高位字节8CHTL0定计0低位字节8AHTH1定计1高位字节8DHTL1定计1低位字节8BHSCON串行控制98HSBUF串行数据缓冲器99HPCON电源控制87H单片机的复位电路P54页单片机C语言开发基础INCLUDEC注释1种采用/。。。/可以注释多行内容更多资料视频下载,学习梦想家园HTTP//MXROOMCOM2种采用//但只能注释一行ANSI标准定义的关键字P57记忆思考P58跳过数据类型表P59页指针型数据位类型数据空类型数据延时函数不需要返回值。X先用X的值,再让X加1逻辑与逻辑或||逻辑非按位与25779按位或|25|7793按位异或相异为1,相同出0按位取反有0出1,有1出0左移运算符低位丢弃,高位补0赋值运算符逗号运算符条件运算符强制转换运算符实例8用不同数据类型的数据控制LED的闪烁使用无符号整型数据和无符号字符数据来设计延时函数。由于整型数据占两个字节,而无符号字符型数据仅占一个字节,因此对无符号整型数据进行操作花费的时间就要长一些,整型数据要实现100次循环,消耗的时间约800个机器周期。无符号100占300个。为了提高运行效率,尽可能用无符号字符型数据。实例9用P0口和P1口分别显示加法和减法运算结果其实就是利用二进制的单位数值进行亮1不亮0的表示乘法除法就是利用二进制转化
本文(51单片机c语言总结)为本站会员(ninuo1992)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“”【网址:】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
分享当前资源【51单片机c语言总结】到朋友圈,您即可以免费下载此资源!
微信扫一扫分享到朋友圈
操作提示:任选上面一个二维码,打开微信,点击“发现”使用“扫一扫”,即可将选择的网页分享到朋友圈
您可能感兴趣的------------------------------------------------------------------------------------------------------
元price_share
&|&川公网安备 12号&|&经营许可证(蜀ICP备号-1)(C) by Sichuan Goldhoe Inc. All Rights Reserved.
&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>一、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>本站提供全自助服务,购买后点击下载按钮可以下载到你电脑或手机(系统不会发送文档到您的邮箱),请注意查看下载存放位置;&/span>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>二、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>本站具有防盗链功能,所以不要使用迅雷、旋风、网际快车等第三方辅助下载工具(不支持&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>QQ浏览器&/span>),否则下载下来的文件只是网页或乱码;&/span>&br/>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>三、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>由于网络原因、下载知识欠缺、本地电脑&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>或&/span>手机阻止下载等问题无法解决时,需要提供以下&/span>&span style=&font-family: 微软雅黑, &Microsoft YaHei&; color: rgb(255, 0, 0);&>任意一条信息&/span>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>给我们,我们才能更及时地为你服务:&/span>&br/>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.1、如果是注册的会员,请告诉我们你的会员账号;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.2、如果是游客下载的,请告诉我们你下载时填写的手机或者邮箱;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.3、如果是微信或QQ快捷登陆的,请告诉我们你的微信或QQ昵称;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.4、如果这些你仍然无法确定,请告诉我们你的付款单号(我们可以通过单号反过来查询你的账号和下载记录)&/span>&a href=&http://www.jinchutou.com/i-93.html& target=&_blank& style=&text-decoration: color: rgb(255, 192, 0); font-family: 微软雅黑, &Microsoft YaHei&;&>&span style=&color: rgb(255, 192, 0); font-family: 微软雅黑, &Microsoft YaHei&;&>看看什么是单号?&/span>&/a>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>;&/span>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>四、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>需要下载哪份文档,请发送文档网址,而不是截图,更不要直接把标题给我们;&/span>&br/>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>五、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>其它下载常见问题详见:&/span>&a href=&http://www.jinchutou.com/info-0-23-1.html& target=&_blank& style=&font-family: 微软雅黑, &Microsoft YaHei&;&>http://www.jinchutou.com/info-0-23-1.html&/a>&br/>&/p>&p>&br/>&/p>" />
?&/span>&span id=&_baidu_bookmark_start_4& style=&display: line-height: 0&>?&/span>&p>&span style=&font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>& & 鉴于本网发布稿件来源广泛、数量较多, 系统审核过程只针对存在明显违法有害内容(如色情、暴力、反动、危害社会治安及公共安全等公安部门明文规定的违法内容)进行处理,难以逐一核准作者身份及核验所发布的内容是否存在侵权事宜, 如果著作权人发现本网已转载或摘编了其拥有著作权的作品或对稿酬有疑议, 请及时与本网联系删除。&/span>&/p>&p>&strong style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 white-space: background-color: rgb(255, 255, 255);&>& & 侵权处理办法参考版权提示一文:&/strong>&a href=&http://www.jinchutou.com/h-59.html& target=&_blank& textvalue=&http://www.jinchutou.com/h-59.html&>http://www.jinchutou.com/h-59.html&/a>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>&&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>1、如涉及内容过多,需要发送邮箱,请电子邮箱到,我们会及时处理;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>2、系统一旦删除后,文档肯定是不能下载了的,但展示页面缓存需要一段时间才能清空,请耐心等待2-6小时;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>3、请版权所有人(单位)提供最起码的证明(证明版权所有人),以便我们尽快查处上传人;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>4、请文明对话,友好处理;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>5、为了杜绝以前再有类似的侵权事情,可以为我们提供相应的关键字,便于管理人员添加到系统后能有效排除和抵制与您(贵单位)相关版权作品上传;&/span>&/p>&span id=&_baidu_bookmark_end_5& style=&display: line-height: 0&>?&/span>&span id=&_baidu_bookmark_end_3& style=&display: line-height: 0&>?&/span>" />
&span style=&color: rgb(85, 85, 85); font-family: 微软雅黑; background-color: rgb(255, 255, 255);&>& & 为了维护合法,安定的网络环境,本着开放包容的心态共建共享金锄头文库平台,请各位上传人本着自律和责任心共享发布有价值的文档;本站客服对于上传人服务前,有以下几点可提前参阅:&/span>&/p>&p>&span style=&color: rgb(85, 85, 85); font-family: 微软雅黑; background-color: rgb(255, 255, 255);&>1、本站上传会员收益见:&a href=&http://www.jinchutou.com/h-36.html& target=&_blank&>http://www.jinchutou.com/h-36.html&/a> &/span>&/p>&p>2、本站不会为任何刚注册的上传会员特批解除上传限制,普通会员每天可以上传50份,值班经值会审核其上传内容,请自行观察自己上传的文档哪些在“临时转换中”(审核通过),哪些在审核拒绝中,连续坚持几天都没有任何文档被拒的情况下,根据文档质量和发布分类是否正常等考量合格后值班经理会特批升级会员等级,相应的权益也同时上升。&/p>&p>3、上传人本着友好、合作、共建、共享的原则,请耐心仔细的查看《&a href=&http://www.jinchutou.com/i-143.html& target=&_blank&>违禁作品内容处理规则》;&/a>&a href=&http://www.jinchutou.com/i-143.html& target=&_blank&>http://www.jinchutou.com/i-143.html&/a>&/p>&p>4、上传人可以观注本站公告,查看其它被公示永久封禁的原因&a href=&http://www.jinchutou.com/news-1.html& target=&_blank&>http://www.jinchutou.com/news-1.html&/a>&/p>&p>5、其它问题可以参阅上传常见问题指引:&a href=&http://www.jinchutou.com/info-0-25-1.html& target=&_blank&>http://www.jinchutou.com/info-0-25-1.html&/a>&/p>" />AT89C52记脉冲个数(C语言) - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
AT89C52记脉冲个数(C语言)
17:48:15  
P1.4采集信号,信号0,1,0,1,0,1,时P2.4输出1,下一个0,1,0,1,0,1时P2.4输出0,然后循环往复。
我本来计P1.4的脉冲个数,将个数模除12以此来决定输出,不过脉冲计数会溢出,这个长时间工作就会不准确,不知道能不能将记P1.4的个数,然后这个个数以12循环,这样就应该可以实现我的功能。如果可以,这个程序该怎么写?
本帖最后由 wulinwl 于
14:44 编辑
谢谢你的建议,下面是我编的程序,编译后不出错,不过有警告,位置是主函数里,调用子函数后,对于flag的判断哪里,显示方向控制.C(29): warning C276: constant in condition expression,然后就无法生成hex文件,麻烦看一下,不好意思,谢谢了。
sbit IN3=P1^4;
/*已经实验验证通过*/
#include&reg52.h&
sbit IN3=P1^4;
sbit OUT2=P2^4;
bit flag=0;& && && && && && && && && && && && && && && && &//自锁标志
unsigned char count=0,count1=0;//计数变量
void io_rest()
& && &&&if(IN3==0)& && && && && && && && && && && && && & //IN3低电平有效
& && &&&{& && &&&
& && && && && & count++;& && && && && && && && && && && && && & //消抖、消扰
& && && && && & if(count&=250)& && && && && && && && &//根据环境干扰强度10到250
& && && && && & {
& && && && && && && && &count=250;& && && && && && && && &//防止溢出
& && && && && && && && &if(flag==0)& && && && && && && && &//如果自锁标志为0
& && && && && && && && &{
& && && && && && && && && && &&&flag=1;& && && && && && && && &//自锁标志置1、不会在持续低电平期间重复计数
& && && && && && && && && && &&&count1++;& && && && && & //脉冲计数变量
& && && && && && && && && && &&&if(count1&=3)& && &&&//脉冲计数变量&=3
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & count1=0;& && &&&//脉冲计数变量清0
& && && && && && && && && && && && && & OUT2=~OUT2;& && &&&//输出电平取反
& && && && && && && && && && &&&}
& && && && && && && && &}
& && && && && & }
& && &&&else& && && && && && && && && && && && && && && && && && &&&//IN3高电平
& && && && && & flag=0;& && && && && && && && && && && && && & //自锁标志清0
& && && && && & count=0;& && && && && && && && && && && && && & //消抖、消扰计数变量清0
void main()
& && &&&while(1)
& && && && && & io_rest();
17:48:16  
本帖最后由 wulinwl 于
14:44 编辑
谢谢你的建议,下面是我编的程序,编译后不出错,不过有警告,位置是主函数里,调用子函数后,对于flag的判断哪里,显示方向控制.C(29): warning C276: constant in condition expression,然后就无法生成hex文件,麻烦看一下,不好意思,谢谢了。
sbit IN3=P1^4;
/*已经实验验证通过*/
#include&reg52.h&
sbit IN3=P1^4;
sbit OUT2=P2^4;
bit flag=0;& && && && && && && && && && && && && && && && &//自锁标志
unsigned char count=0,count1=0;//计数变量
void io_rest()
& && &&&if(IN3==0)& && && && && && && && && && && && && & //IN3低电平有效
& && &&&{& && &&&
& && && && && & count++;& && && && && && && && && && && && && & //消抖、消扰
& && && && && & if(count&=250)& && && && && && && && &//根据环境干扰强度10到250
& && && && && & {
& && && && && && && && &count=250;& && && && && && && && &//防止溢出
& && && && && && && && &if(flag==0)& && && && && && && && &//如果自锁标志为0
& && && && && && && && &{
& && && && && && && && && && &&&flag=1;& && && && && && && && &//自锁标志置1、不会在持续低电平期间重复计数
& && && && && && && && && && &&&count1++;& && && && && & //脉冲计数变量
& && && && && && && && && && &&&if(count1&=3)& && &&&//脉冲计数变量&=3
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & count1=0;& && &&&//脉冲计数变量清0
& && && && && && && && && && && && && & OUT2=~OUT2;& && &&&//输出电平取反
& && && && && && && && && && &&&}
& && && && && && && && &}
& && && && && & }
& && &&&else& && && && && && && && && && && && && && && && && && &&&//IN3高电平
& && && && && & flag=0;& && && && && && && && && && && && && & //自锁标志清0
& && && && && & count=0;& && && && && && && && && && && && && & //消抖、消扰计数变量清0
void main()
& && &&&while(1)
& && && && && & io_rest();
20:05:08  
6分频,循环计数清0这么会溢出?
20:19:23  
6分频,循环计数清0这么会溢出?
谢谢你的帮助,由于外部输入端口0和1持续时间都在十几二十秒左右,所以我现在想记外部输入端口下降沿个数,然后这个个数6循环,不过参考了网上的下降沿判断大多用计时器对于我的不适用,我想就端口的值判断,不过具体的不知道怎么写,刚学单片机,不是很懂。
21:27:54  
谢谢你的帮助,由于外部输入端口0和1持续时间都在十几二十秒左右,所以我现在想记外部输入端口下降沿个数,然后这个个数6循环,不过参考了网上的下降沿判断大多用计时器对于我的不适用,我想就端口的值判断,不过具体的不知道怎么写,刚学单片机,不是很懂。 ...
你就把输入信号当做按键或开关信号接I/O口,程序不断扫描此I/O口,对高或低电平计数,计满6次令输出端口置高或低电平并清0计数变量,如此循环。
高级工程师
21:44:17  
如果可以改电路的话,可以把输入接到外部中断引脚,这样有变化了就产生一个中断,也不容易漏数
09:19:20  
你就把输入信号当做按键或开关信号接I/O口,程序不断扫描此I/O口,对高或低电平计数,计满6次令输出端口置高或低电平并清0计数变量,如此循环。
谢谢你的建议,下面是我编的程序,编译后不出错,不过有警告,位置是主函数里,调用子函数后,对于flag的判断哪里,显示方向控制.C(29): warning C276: constant in condition expression,然后就无法生成hex文件,麻烦看一下,不好意思,谢谢了。
#include&reg52.h&
sbit IN3=P1^4;
sbit OUT2=P2^4;
void io_rest()
&&if(old_bit!=IN3)
& & old_bit=IN3;
& & & & if(IN3!=1)
& & & && &flag=1;
& & & & else
& & & && & flag=2;
void main()
&&old_bit=IN3;
&&while(1)
& & int num=0;
& & & &&&flag=0;
& & & & io_rest();
& & & & if(flag=1)
& & & & num++;
& & & & if(num==6)
& & & & num=0;
& & & & if(0&num&=3)
& &&&OUT2=1;
& & & &&&else
& & & &&&OUT2=0;
09:45:54  
谢谢你的建议,下面是我编的程序,编译后不出错,不过有警告,位置是主函数里,调用子函数后,对于flag的判断哪里,显示方向控制.C(29): warning C276: constant in condition expression,然后就无法生成hex文件,麻烦看一下,不好意思,谢谢了。
sbit IN3=P1^4;
警告是由于少打了一个=,不过仿真并没有出现预期结果,输出端一直只会输出高电平,不知道程序哪里写错了?
15:51:20  
/*已经实验验证通过*/
sbit IN3=P1^4;
非常感谢你的帮助,我刚刚试着操作并看了一下代码,那输入信号为时钟信号来说,250这个数字的选取确定了判断输入端口的最大频率,由于我外部0,1都持续十几二十几秒所以不会影响我的使用,但外部信号如果变化比较快这个就不适用了,请问我这样理解对不对,真的很谢谢你。
16:57:25  
本帖最后由 wulinwl 于
17:01 编辑
非常感谢你的帮助,我刚刚试着操作并看了一下代码,那输入信号为时钟信号来说,250这个数字的选取确定了判断输入端口的最大频率,由于我外部0,1都持续十几二十几秒所以不会影响我的使用,但外部信号如果变化比较快这个就不适用了,请问我这样理解对不对,真的很谢谢你。 ...
这样理解是可以的,250这个数字是以主循环速度设定的,对于12T单片机也就是大约2ms,大于一般干扰持续时间,如果用1T单片机,这个数字还要扩大10倍,如果主循环任务多就要减小这个数字,如果输入是TTL信号,这一部分代码可以不要。总之由具体需求确定,不是一成不变的。
17:36:48  
这样理解是可以的,250这个数字是以主循环速度设定的,对于12T单片机也就是大约2ms,大于一般干扰持续时间,如果用1T单片机,这个数字还要扩大10倍,如果主循环任务多就要减小这个数字,如果输入是TTL信号,这一部分代码可以不要。总之由具体需求确定,不是一成不变的。 ...
刚刚调试发现一个问题就是如果一开始就输入的低电平的话,0,1,0,1输出信号就会变,这之后的会变为正常的6循环
18:04:48  
刚刚调试发现一个问题就是如果一开始就输入的低电平的话,0,1,0,1输出信号就会变,这之后的会变为正常的6循环
把初始sum+=-1就行了,不好意思啊。
18:06:33  
把初始sum+=-1就行了,不好意思啊。
错了,是count1=-1
18:28:00  
错了,是count1=-1
这样改一下就可以解决初始计数问题
void io_rest()
& & & & if(IN3==0)& & & &
& & & & {& & & &
& & & & & & & & count++;& & & &
& & & & & & & & if(count&=250)& & & &
& & & & & & & & {
& & & & & & & & & & & & count=250;
& & & & & & & & & & & & if(flag==0)& & & & & & & &
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & flag=1;& & & &
& & & & & & & & & & & & & & & & count1++;& & & & & & & &
& & & & & & & & & & & & & & & & if(count1&=4)& & & &
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & count1=1;& & & &
& & & & & & & & & & & & & & & & & & & & OUT2=~OUT2;& & & &
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & }
& & & & else& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & flag=0;& & & & & & & & & & & & & & & &
& & & & & & & & count=0;& & & & & & & & & & & & & & & &
22:23:41  
这样改一下就可以解决初始计数问题
void io_rest()
谢谢,不好意思麻烦你了,我现在在这个基础上再加一个功能,就是p2.3端口输出,p2.3一直输出脉冲,当p1.4口为低电平时,延时20s,然后继续输出脉冲,单个的我会写,就是一直输出脉冲,判断p1.4的值,如果为0,延时程序使用,不过在两个叠加后发现往往只能实现一个功能
这是单个p2.3端口程序
#include&reg52.h&
sbit IN3=P1^4;
sbit OUT1=P2^3;
void delay_ms(unsigned int ms)
&&unsigned int a,b;
&&for(a=a&0;a--)
&&for(b=124;b&0;b--);
void delayms(void)
& & & & unsigned char a,b;
& & for(b=71;b&0;b--)
& &&&for(a=2;a&0;a--);
void io_mc()
& &while(1)
& & & && & OUT1=1;
& & & && & delayms();
& & & && & OUT1=0;
& & & && & delayms();
& & & && & if(IN3==0)
& &delay_ms(20000);
& & & &&&}
void main()
& &&&io_mc();
这是我尝试两个共同作用的程序
&&while(1)& & & &
& & & && &{
& & & && & OUT1=1;
& & & && & delayms();
& & & && & OUT1=0;
& & & && & delayms();
& & & && & if(IN3==0)
& & & & & & & &&&count++;& && && && && && && && && && && && && &
& && && &&&if(count&=250)& && && && && && && && &
& && && && && & {
& && && && && && && && &count=250;& && && && && && && &&&
& && && && && && && && &if(flag==0)& && && && && && && && &
& && && && && && && && &{
& && && && && && && && && && &&&flag=1;& && && && && && && && &
& && && && && && && && && && &&&count1++;& && && && && &
& && && && && && && && && && &&&if(count1&=3)& && &
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & count1=0;& && &&&
& && && && && && && && && && && && && & OUT2=~OUT2;& && &&&
& && && && && && && && && && &&&}
& && && && && && && && &}
& && && && && & }
& & & & & & & && &delay_ms(20000);
& && &&&else& && && && && && && && && && && && && && && && && && &
& && && && && & flag=0;& && && && && && && && && && && && && &
& && && && && & count=0;& && && && && && && && && && && && && &
& & & && && &
& & & &&&}
& & & && &
09:47:48  
谢谢,不好意思麻烦你了,我现在在这个基础上再加一个功能,就是p2.3端口输出,p2.3一直输出脉冲,当p1.4口为低电平时,延时20s,然后继续输出脉冲,单个的我会写,就是一直输出脉冲,判断p1.4的值,如果为0,延时程序使用,不过在两个叠加后发现往往只能实现一个功能
这是单个p2.3端口程序
我已经想出来,不好意思打扰了。
高级工程师
09:50:57  
好帖,必须支持一下!
13:43:17  
楼主是做项目还是学习?
计算脉冲有专门寄存器,或者用中断引脚也可以。
13:05:43  
51单片机计脉冲个数,最好使用外部中断来做。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司

我要回帖

更多关于 单片机程序反编译 的文章

 

随机推荐