小程序proutes仿真通过,可是下载到单片机就异常(已解决
本帖最后由 gprs_new 于 2014-3-23 11:51 编辑//通过用定时器T1模式2计数 ,每计满10个脉冲,将P1.4取反一次,外部信号输入为T1的P3.5
//计数次数=256-10=246=0F6H TH1=TH1=0F6H
//单片机是STC11F02 (是按键的问题,)
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP ZD1
P3.5脚和GND之间有一个按键,(用来模拟脉冲信号,低电平触发) 下载到单片机的时候按理说应该是要按键按10次才会取反一次。。。可是按键一按就会取反,百思不得其解。。。。。
MAIN:
MOV TMOD,#60H
MOV TH1,#0F6H
MOV TL1,#0F6H
SETB ET1
SETB EA
SETB TR1
SJMP $
ZD1:CPL P1.4
RETI
END
请知道的兄弟帮分析一下,是哪里出问题了。{:smile:} 不知是否按键没有去抖动处理造成的?加延时去抖动试试? 按键没去抖造成的,硬件和仿真不一样,仿真是按一下就闭合一次,硬件按钮按下时有毛刺抖动的 仿真你也好行?仿真只能简单测试下, 仿真就是太监的玩意,你也相信,哈哈哈 four_zhg 发表于 2014-3-23 09:59
按键没去抖造成的,硬件和仿真不一样,仿真是按一下就闭合一次,硬件按钮按下时有毛刺抖动的 ...
该开始也为是按键未消抖动造成的,可是问题是我修改为每计满100个在取反也是一样啊!按键只是按一下就取反(不可能按一下松开能能有100个脉冲啊),这不合理啊? skynet 发表于 2014-3-23 11:19
仿真就是太监的玩意,你也相信,哈哈哈
{:funk:}。。。。。。。不是吧。仿真起码也可以验证一下程序吧。再说这个小程序,没那么复杂啊。就是计满脉冲就取反。 还在用汇编 ,楼主跑歪了 gprs_new 发表于 2014-3-23 11:19
该开始也为是按键未消抖动造成的,可是问题是我修改为每计满100个在取反也是一样啊!按键只是按一下就取 ...
100个脉冲很正常,这要看你的检测速度了,更何况你按下和松开都会有抖动 靠,还真是按键的问题,,,,,{:lol:}。。。我又写了个小程序,另外一个单片机的一个引脚定时输出1HZ的脉冲。然后接到,,,,计数的这个单片机上的P3.5脚,就正常了。 那个仿真是很理想化的。 有时和现实区别比较大。
页:
[1]