有一点郁闷,用595驱动简单的数码管,用汇编能成功,用C却不能成功。 (已解决,低级错误,不
能成功的汇编代码:http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_721135QN058V.jpg
汇编代码 (原文件名:汇编代码.jpg)
能成功的汇编结果:
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_721136EHPDHK.jpg
汇编结果 (原文件名:汇编.jpg)
不能成功的C代码:
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_721137OJILEV.jpg
C代码 (原文件名:C代码.jpg)
C仿真结果:
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_721138CSBAZ8.jpg
C结果 (原文件名:C.jpg)
工程打包:
打包ourdev_721139R336YF.rar(文件大小:66K) (原文件名:595.rar)
我应该是能理解595的时序的,不然汇编是不能成功的,大家帮我看看C的问题在哪? 编译器是KEIL UV2
仿真是PROTEUS 7.8 ds=CY;
是这句的问题吧,你在仿真里看了C的编译后的汇编代码了吗? 楼上加1,应该是c移位时不带进位标志,电脑没有keil,无法编译。楼下继续 改成这样试试
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);
} 我觉得st = 1 ;时前面应延时一会。 找到问题,谢谢各位了,我是用反汇编发现FOR语句后面多了一个分号。汗一个。
页:
[1]