搜索
bottom↓
回复: 6

有一点郁闷,用595驱动简单的数码管,用汇编能成功,用C却不能成功。 (已解决,低级错误,不

[复制链接]

出0入0汤圆

发表于 2012-2-22 15:43:25 | 显示全部楼层 |阅读模式
能成功的汇编代码:

汇编代码 (原文件名:汇编代码.jpg)
能成功的汇编结果:

汇编结果 (原文件名:汇编.jpg)

不能成功的C代码:

C代码 (原文件名:C代码.jpg)
C仿真结果:

C结果 (原文件名:C.jpg)

工程打包:

打包ourdev_721139R336YF.rar(文件大小:66K) (原文件名:595.rar)


我应该是能理解595的时序的,不然汇编是不能成功的,大家帮我看看C的问题在哪?

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

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

出0入0汤圆

 楼主| 发表于 2012-2-22 15:51:58 | 显示全部楼层
编译器是KEIL UV2
仿真是PROTEUS 7.8

出0入0汤圆

发表于 2012-2-22 15:56:50 | 显示全部楼层
ds=CY;

是这句的问题吧,你在仿真里看了C的编译后的汇编代码了吗?

出0入0汤圆

发表于 2012-2-22 17:03:56 | 显示全部楼层
楼上加1,应该是c移位时不带进位标志,电脑没有keil,无法编译。楼下继续

出0入0汤圆

发表于 2012-2-22 17:11:49 | 显示全部楼层
改成这样试试

main()
{
        uchar a,M=0xc0;
                for(a=0;a<8;a++);
                {
                        sh=0;
                        ds=bit(M&0x80);                ///       
                        M<<=1;
                        sh=1;
                }       
        st=0;
        st=1;
        while(1);       
}

出0入0汤圆

发表于 2012-2-22 17:48:15 | 显示全部楼层
我觉得st = 1 ;时前面应延时一会。

出0入0汤圆

 楼主| 发表于 2012-2-23 08:21:25 | 显示全部楼层
找到问题,谢谢各位了,我是用反汇编发现FOR语句后面多了一个分号。汗一个。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-10 06:44

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

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