本帖最后由 冷漠 于 2010-9-26 15:45 编辑
25楼highgear 抄书抄的太过时了,不知哪个年代的书内容,所长今年53岁,多少年前的51资料,那时的51还没有T2吧?莫名其妙:
singleywy 是对的。
从中断发生到执行用户程序的时间是固定的(+7或者 +8, whatever), 可以精确计算。但是正如 14 楼所说, 中断发生的时刻不完全确定, 取决于当时的指令,这会造成一两个周期的误差。解决方法:
1) 自动重装可以解决, 但周期太短;
2) 让定时器自由运行, 中断里不重置定时器, 即timer = 65536, 不过中断时间不一定是 1s 的整数倍。
3) 设置 timer 前, 读定时器, 做出修正。
1) 自动重装可以解决, 但周期太短;
HotPower和所长同岁,但是Hot不断在学习,Hot写了一篇T2定时器的应用研究。那才叫研究。所长光知道抄书: 自动重装可以解决, 但周期太短;也跟Hot学学玩T2,什么叫周期太短? 仔细看看T2自动重装的最大周期是多少?现在玩自动重载谁还用T0 / T1 ? highgear 感情连T2都不会用?那还在这装个什么劲高手?
“5年了,昆仑派一点长进都没有。”
冷漠说过6楼singleywyw的程序有错吗?在这论坛上,恐怕只有2个人(除了singleywy)知道6楼的程序是参考了Intel 蓝本的,不是完全他自己写的!——冷漠会说Intel写错了吗?只有highgear或者所长这种人才会经常闹这样的笑话,说冷漠这个无知那个错,结果万没想到:冷漠是摘抄的Intel、Keil 使用手册资料或者国家引进的世界著名大学教材上的内容!——尴尬之极,只好硬着头皮说书上的内容也有错误。当然当然,highgerar比清华外籍教授高明多了。600元一小时授课费是看不上的。现代阿Q 。“拿起皮鞭将你打……”只能自我解嘲而已。
2个人是:
第一个人:ayb_ice;
第二个人:冷漠;
且比较下面2段程序内容:
1、6楼singleywy:
#pragma ASM
PUSH ACC
PUSH PSW ;
MOV A,#(60536 MOD 256) ;default worth is 5ms
CLR TR0
ADD A,TL0
ADDC A,#08H
MOV TL0,A MOV A,TH0
ADDC A,#(60536 /256) MOV TH0,A
SETB TR0
POP PSW
POP ACC #pragma ENDASM
2 、Intel 蓝本内容:
……
; ACC required by some Cygnal devices ; Update 8051 Interrupt Timer
CLR TR0
MOV A , TL0
ADD A , #LOW (?RTX_CLOCK + 7)
MOV TL0 , A
MOV A , TH0
ADDC A , #HIGH (?RTX_CLOCK + 7)
MOV TH0,A
SETB TR0
…… |