zhangchaoying 发表于 2014-6-22 22:13:42

马老师教材错误提交审核

在“简易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-25 20:07:24

新手求回复

binaimei2007 发表于 2014-6-25 20:21:46

没有看过马老师的书,帮你顶下

zhangchaoying 发表于 2014-6-27 09:45:57

顶一下我自己

zhangchaoying 发表于 2014-6-29 19:41:10

没人看见我,我自己顶一下吧

zhangchaoying 发表于 2014-6-29 19:44:51

汇编党的同学可以试一下么!

sbk100 发表于 2014-6-30 08:50:21

zhangchaoying 发表于 2014-6-29 19:44
汇编党的同学可以试一下么!

这个是在书中多少页?

zhangchaoying 发表于 2014-6-30 12:51:45

第二版 167页倒数第十四行

zhangchaoying 发表于 2014-6-30 23:31:03

有试出来的么?求认同。

sibtck 发表于 2014-6-30 23:49:22

不懂帮顶.顺便赚莫元.楼主太细心了.

sbk100 发表于 2014-7-2 16:07:13

本帖最后由 sbk100 于 2014-7-2 19:38 编辑

zhangchaoying 发表于 2014-6-29 19:44
汇编党的同学可以试一下么!

最后两位数码管变化的非常快 一个是以0.01s递增 一个是以0.1s递增 根本看不清从99变到00的过程 你是怎么看到的呢?我觉得程序没有错 加到99后下一次就应该变成00啊

zhangchaoying 发表于 2014-7-3 20:28:09

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。

sbk100 发表于 2014-7-4 08:49:02

试过了 确实是 不过这里为什么不是改成9A 而是改成A0呢?

zhangchaoying 发表于 2014-7-4 10:43:15

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”这个数。也就没法比较了。


sbk100 发表于 2014-7-4 11:05:15

zhangchaoying 发表于 2014-7-4 10:43
-----------后面的BCD调整程序dhm中,有一句cpi temp,0x0A;目的是测试毫秒中 “个位”是否等于10(也就 ...

谢谢解答 希望马老师能注意到这个错误 楼主能否留个联系方式?想和你私下交流

zhangchaoying 发表于 2014-7-4 11:26:22

445880150@qq.com   我是菜鸟   请多多指教!

machao 发表于 2014-7-7 15:55:47

赞一个,楼主是对的。原代码每秒少计0.01ms。

将time_add子函数中的,
cpi temp,0x99 改为   cpi temp,0xA0 也正确。

楼主应不是新手,现在的新手会去看汇编吗?楼主能将0x99改成0xA0,说明整个汇编都看懂了。凭着这个认真和仔细的精神,应该是,或者很快会成为高手。

zhangchaoying 发表于 2014-7-7 22:55:57

machao 发表于 2014-7-7 15:55
赞一个,楼主是对的。原代码每秒少计0.01ms。

将time_add子函数中的,


马老师的肯定是我继续学习的动力。^_^
我会按您的教材一步步认真学习,希望将来能成为马老师期望的高手。
谢谢马老师的话,谢谢马老师的书,谢谢马老师的板子!

zhangchaoying 发表于 2014-7-25 17:24:07

有网友问马老师的板子哪里买,因为没权限发消息,在这里说一下:“阿莫电子邮购” 有散件,对着图纸和图片自己焊接就可以。

zhangchaoying 发表于 2014-8-24 08:45:10

这么长时间没来,顶一下我自己。

vampire0733 发表于 2014-8-24 09:03:38

汇编!学校老师就是教汇编的,=。=不喜欢

zhangchaoying 发表于 2014-8-26 18:37:01

vampire0733 发表于 2014-8-24 09:03
汇编!学校老师就是教汇编的,=。=不喜欢

         如果有这门课的话,劝你还是学汇编吧。

         没学过汇编,对你灵活应用C还是有一定影响的。

         踏踏实实,日拱一卒.

vampire0733 发表于 2014-8-29 11:02:56

zhangchaoying 发表于 2014-8-26 18:37
如果有这门课的话,劝你还是学汇编吧。

         没学过汇编,对你灵活应用C还是有一定影响的 ...

汇编强调基层,对C的理解是有帮助。汇编感觉只是略懂皮毛,C最近在看现代方法想要规范自己的程序结构。
页: [1]
查看完整版本: 马老师教材错误提交审核