马老师教材错误提交审核
在“简易1/100秒的24小时时钟”里time_add子函数中,cpi temp,0x99应改为cpi temp,0xA0。否则,1/100秒会出现在变为99时瞬间变为00的错误。
验证方法:将子函数d_10ms_ok中,cpi count_10ms,0x05改为cpi count_10ms,0xff。就可以看到错误的现象。 新手求回复 没有看过马老师的书,帮你顶下 顶一下我自己 没人看见我,我自己顶一下吧 汇编党的同学可以试一下么! zhangchaoying 发表于 2014-6-29 19:44
汇编党的同学可以试一下么!
这个是在书中多少页? 第二版 167页倒数第十四行 有试出来的么?求认同。 不懂帮顶.顺便赚莫元.楼主太细心了. 本帖最后由 sbk100 于 2014-7-2 19:38 编辑
zhangchaoying 发表于 2014-6-29 19:44
汇编党的同学可以试一下么!
最后两位数码管变化的非常快 一个是以0.01s递增 一个是以0.1s递增 根本看不清从99变到00的过程 你是怎么看到的呢?我觉得程序没有错 加到99后下一次就应该变成00啊 sbk100 发表于 2014-7-2 16:07
最后两位数码管变化的非常快 一个是以0.01s递增 一个是以0.1s递增 根本看不清从99变到00的过程 你是怎么 ...
验证方法:“将子函数d_10ms_ok中,cpi count_10ms,0x05改为cpi count_10ms,0xff。就可以看到错误的现象。”
-------- 每次中断2ms*5次=10ms,这样的话是0.01s递增。把10ms计数器count_10ms的值装大一点,改成255,那么,255*2=510ms,约以0.5s递增。相当于放慢镜头么!
--------改完以后就等着看:97、98、99(00)。你会看到,98到99,是有间隔的;99到00是几乎同时的。
--------所以少记了那么0.01s。
试过了 确实是 不过这里为什么不是改成9A 而是改成A0呢? sbk100 发表于 2014-7-4 08:49
试过了 确实是 不过这里为什么不是改成9A 而是改成A0呢?
-----------后面的BCD调整程序dhm中,有一句cpi temp,0x0A;目的是测试毫秒中 “个位”是否等于10(也就是A)。
-----------如果等于0X0A(SREG中半进位h没有置位),就通过“减法” 做二进制到十进制调整:subi temp,0xfA,把“十位”(高四位)加1,把“个位”(低四位)减成0。
-----------如果改成cpi temp,9A,因为BCD调整函数dhm在前,语句“cpi temp,0x9A”在后,之前调用dhm时会先把0x9A调整成A0。所以temp里面不会出现“0x9A”这个数。也就没法比较了。
zhangchaoying 发表于 2014-7-4 10:43
-----------后面的BCD调整程序dhm中,有一句cpi temp,0x0A;目的是测试毫秒中 “个位”是否等于10(也就 ...
谢谢解答 希望马老师能注意到这个错误 楼主能否留个联系方式?想和你私下交流 445880150@qq.com 我是菜鸟 请多多指教! 赞一个,楼主是对的。原代码每秒少计0.01ms。
将time_add子函数中的,
cpi temp,0x99 改为 cpi temp,0xA0 也正确。
楼主应不是新手,现在的新手会去看汇编吗?楼主能将0x99改成0xA0,说明整个汇编都看懂了。凭着这个认真和仔细的精神,应该是,或者很快会成为高手。 machao 发表于 2014-7-7 15:55
赞一个,楼主是对的。原代码每秒少计0.01ms。
将time_add子函数中的,
马老师的肯定是我继续学习的动力。^_^
我会按您的教材一步步认真学习,希望将来能成为马老师期望的高手。
谢谢马老师的话,谢谢马老师的书,谢谢马老师的板子!
有网友问马老师的板子哪里买,因为没权限发消息,在这里说一下:“阿莫电子邮购” 有散件,对着图纸和图片自己焊接就可以。 这么长时间没来,顶一下我自己。 汇编!学校老师就是教汇编的,=。=不喜欢 vampire0733 发表于 2014-8-24 09:03
汇编!学校老师就是教汇编的,=。=不喜欢
如果有这门课的话,劝你还是学汇编吧。
没学过汇编,对你灵活应用C还是有一定影响的。
踏踏实实,日拱一卒. zhangchaoying 发表于 2014-8-26 18:37
如果有这门课的话,劝你还是学汇编吧。
没学过汇编,对你灵活应用C还是有一定影响的 ...
汇编强调基层,对C的理解是有帮助。汇编感觉只是略懂皮毛,C最近在看现代方法想要规范自己的程序结构。
页:
[1]