PIC16F876A RB5的怪问题……(绝对不是菜鸟的问题)

[复制链接]
2549|8
 楼主| 小鱼儿1045 发表于 2012-3-16 16:50 | 显示全部楼层 |阅读模式
单片机RB5输出不了高点平,但是在我将RB5置高,后加一个小延时,就能输出高电平了。我用的是18.432M。配置字都对。单片机也换过,硬件电路是Rb5控制一个9013的基极。下面是简化的程序:
void Init(void)
{
TRISB5 = 0;
RB5 = 0;
}
void SetStart(void)
{
RB5 = 1;
delay(1);//程序不加这句,就不输出高电平。
……
}
搞了很久,用汇编也写过,就是不行。有18.432M是要求的晶振。
 楼主| 小鱼儿1045 发表于 2012-3-16 17:37 | 显示全部楼层
补充:代码反汇编出来8000多行,初步判定可能是代码太长了。PC指针的问题吧。将大部分的代码屏蔽掉,就可以了。但是那些代码不涉及到RB5的操作……
Ryanhsiung 发表于 2012-3-16 17:43 | 显示全部楼层
RB5 = 1;
delay(1);//程序不加这句,就不输出高电平。

应该是被优化掉了,你可以将人优化等级降低一点。
XIEYUANBIN 发表于 2012-3-17 11:37 | 显示全部楼层
读-修改-写的问题。你后面估计有其他的IO口的位操作紧随。比如 RB6 = 1 之类的语句
XIEYUANBIN 发表于 2012-3-17 11:39 | 显示全部楼层
另外9013基极与RB5之间是否有电阻?
 楼主| 小鱼儿1045 发表于 2012-3-17 15:11 | 显示全部楼层
5# XIEYUANBIN
有一个限流的电组,我也尝试过短接,也不行。现在问题是RB5不输出高电平,貌似没有执行过RB5=1的指令
大江名誉 发表于 2012-3-17 16:50 | 显示全部楼层
短接更不行,电阻多大?
在后加句
RB5 = 1;
while(1);
直接量B5口的电压看是多少。
XIEYUANBIN 发表于 2012-3-17 18:03 | 显示全部楼层
5# XIEYUANBIN  
有一个限流的电组,我也尝试过短接,也不行。现在问题是RB5不输出高电平,貌似没有执行过RB5=1的指令
小鱼儿1045 发表于 2012-3-17 15:11

菜鸟,鉴定完毕
NE5532 发表于 2012-3-17 22:12 | 显示全部楼层
绝对的菜鸟级问题,100%的低级错误,只是楼主不会找问题罢了。推荐侃单片机精华帖里的黑宝书。

再送楼主一句话——现象越奇怪的问题,原因越低级。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

1968

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部