本帖最后由 LZB 于 2013-4-29 11:52 编辑
本人用B端口做通用IO 碰到如下问题 无法解决
1. B.7做输出口 外部有上拉电阻
2. 只在中断中做位取反输出,输出波形正常
3. 在主程序中 只要对B端口其它位操作 B.7就会出现异常(脉冲周期混乱,有时低电平延长一个周期有时高电平延长一个周期)
4.看编译后的汇编语言 发现端口输出指令为 ST ---- 而不是OUT 命令
请各位高手指点以下是GCCAVR编译后的代码
596: PORTB&=0XBF;
+000002FC: EB9F LDI R25,0xBF Load immediate
+000002FD: 91800038 LDS R24,0x0038 Load direct from data space
+000002FF: 2389 AND R24,R25 Logical AND
+00000300: 93800038 STS 0x0038,R24 Store direct to data space
597: PORTB|=0X40;
+00000302: 91800038 LDS R24,0x0038 Load direct from data space
+00000304: 6480 ORI R24,0x40 Logical OR with immediate
+00000305: 93800038 STS 0x0038,R24 Store direct to data space
我个人认为是用STS命令造成的输出偶尔出错,但不知道怎么写C代码,才能使编译代码为OUT命令 |