单片机数组高手请进!!!!!!!一个很简单的小程序

[复制链接]
6787|38
 楼主| hellozgm 发表于 2011-3-14 21:09 | 显示全部楼层 |阅读模式
#include<reg52.h>
sbit IR=P0^0;
void main()
{
unsigned char a[2]={0,2};
unsigned char b[2]={1,2};

if((a[1]-b[1])==0)
IR=0;
}
问题是无论if语句的条件是0或1,好像都一样,下载到开发板上P0口接的二极管一直不停闪烁,是数组原因呢,还是if语句的原因呢?
请各路高手指点迷津!!!感激涕零……:handshake
谈的元 发表于 2011-3-14 21:11 | 显示全部楼层
看门狗是否关闭?
zjswuyunbo 发表于 2011-3-14 22:24 | 显示全部楼层
这程序,俺无语了…
xianghou 发表于 2011-3-14 22:42 | 显示全部楼层
这也能闪?
 楼主| hellozgm 发表于 2011-3-14 23:55 | 显示全部楼层
到底是哪里出问题了?大侠能指出来吗?我刚接触单片机没多久,还有很多不懂啊 3# zjswuyunbo
 楼主| hellozgm 发表于 2011-3-14 23:56 | 显示全部楼层
那是出了什么问题呢?请大侠指教,本人刚学习单片机没多久 4# xianghou
ayb_ice 发表于 2011-3-15 08:30 | 显示全部楼层
程序连个无限循环都没有
zjswuyunbo 发表于 2011-3-15 08:53 | 显示全部楼层
#include<reg52.h>
sbit IR=P0^0;
void main()
{
unsigned char a[2]={0,2};
unsigned char b[2]={1,2};

if((a[1]-b[1])==0)
    IR=0;
else
  IR=1;
while(1);

}
zjswuyunbo 发表于 2011-3-15 08:53 | 显示全部楼层
试试这个
tcc8073 发表于 2011-3-15 12:23 | 显示全部楼层
#include<reg52.h>
sbit IR=P0^0;
void main()
{
unsigned char a[2]={0,2};
unsigned char b[2]={1,2};

if((a[1]-b[1])==0)
    IR=0;
else
  IR=1;
while(1);
}
上面这个程序如果显示的只是LED的一个固定的状态,最后的结果和LZ的显示情况是一样的.如果LZ的LED是一直闪烁的话,只能要不就是没有关看门狗,要不就是P0.0口没有接上拉电阻,最好上个图看看
lelee007 发表于 2011-3-15 12:32 | 显示全部楼层
养狗不喂的后果
zjswuyunbo 发表于 2011-3-15 12:41 | 显示全部楼层
程序里根本就没开看门狗的代码,所以应该不是看门狗的问题
sdpz 发表于 2011-3-15 12:55 | 显示全部楼层
楼主,祖国的未来需要你,加油吧
lb0577 发表于 2011-3-15 13:58 | 显示全部楼层
楼主,祖国的未来需要你,加油吧
sdpz 发表于 2011-3-15 12:55

:D ;P
大道至简 发表于 2011-3-15 16:59 | 显示全部楼层
数组高手
俺第一次听说这个单词组合,长见识了。。。。。。。。。
johnwjl 发表于 2011-3-15 17:15 | 显示全部楼层
以下高手也可以进来讨论一下:
指针高手、结构体高手、联合体高手等。
lelee007 发表于 2011-3-15 17:37 | 显示全部楼层
程序里根本就没开看门狗的代码,所以应该不是看门狗的问题
zjswuyunbo 发表于 2011-3-15 12:41


哈哈,有些机器看门狗默认是被允许滴,不用的话需要再初始化代码里关闭掉
LDTEST 发表于 2011-3-15 19:29 | 显示全部楼层
楼主,祖国的未来需要你,加油吧
sdpz 发表于 2011-3-15 12:55

:D ;P
airwill 发表于 2011-3-15 20:21 | 显示全部楼层
代码执行到非法区域, 造成复位. 然后又重新开始
25503305 发表于 2011-3-15 21:02 | 显示全部楼层
好像没有停住,就是一个大的死循环,单片机一直在复位,执行程序,复位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

32

帖子

1

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