诡异的51程序运行郊果

2020-02-05 09:24发布

一朋友(初学51)问这个有问题的流水灯程序,我费了近1个小时才找出,悲剧的很,错误原因很低级但我从没遇到过,各位看官有兴趣的话可以看看,也许高手一眼就看出,呵呵。
诡异的现象描述:下入单片机后单片机无反应,Keil软件仿真时看到第一次执行了delay(1000)后,a=0x1A,在后面的循环过程中a交替等于0x1A与0x34,这显然是不对的,问题在哪呢?
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a;
void delay(uint z);
void mian()
{   
        a=0xfe;
        P1=a;
        while(1)
        {
                a=_crol_(a,1);
                delay(1000);
                P1=a;
        }
}
void delay(uint z)
{
        uint x,y;
        for (x=z;x>0;x--)
           for(y=110;y>0;y--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
binaimei2007
1楼-- · 2020-02-05 13:29
首先,你的主函数名写错了  应该是main
binaimei2007
2楼-- · 2020-02-05 17:02
 精彩回答 2  元偷偷看……
y574924080
3楼-- · 2020-02-05 20:44
同楼上 ~~~~~~
無智
4楼-- · 2020-02-05 23:45
2楼强!
呵呵,实际项目中,编译警告应该清零。
wajlh
5楼-- · 2020-02-06 05:18
以前用汇编的时候忘记更改堆栈地址,结果执行的结果莫名其妙。非常低级的错误。
zbn2010
6楼-- · 2020-02-06 06:32
我是新手,请问 a=_crol_(a,1);  是什么意思。让大家见笑了。

一周热门 更多>