搜索
bottom↓
回复: 6

诡异的51程序运行郊果

[复制链接]

出0入0汤圆

发表于 2012-5-12 21:47:27 | 显示全部楼层 |阅读模式
一朋友(初学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--);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-5-12 22:06:28 | 显示全部楼层
首先,你的主函数名写错了  应该是main

出0入0汤圆

发表于 2012-5-12 22:09:59 | 显示全部楼层
其次,我修改函数名后,仿真了一下没有问题了

出0入0汤圆

发表于 2012-5-12 22:48:38 | 显示全部楼层
同楼上 ~~~~~~

出0入0汤圆

发表于 2012-5-12 23:26:53 | 显示全部楼层
2楼强!
呵呵,实际项目中,编译警告应该清零。

出0入4汤圆

发表于 2012-5-13 00:42:49 | 显示全部楼层
以前用汇编的时候忘记更改堆栈地址,结果执行的结果莫名其妙。非常低级的错误。

出0入0汤圆

发表于 2012-5-13 06:37:43 来自手机 | 显示全部楼层
我是新手,请问 a=_crol_(a,1);  是什么意思。让大家见笑了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 01:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表