汇编语言里面,没有“函数”这个词汇。
定时器0只是在TR0为零的时候,才停止;在其它的任何期间,不停。
加一计数到FFFFH,再加一,将产生溢出标志TF0,计数值变成0000H。
定时器0溢出标志TF0在中断响应的时候,自动清零。(T2例外)。
中断响应,只有PC自动压栈。
调用子程序,也是只有PC自动压栈。
------------------------------------------
做高精度的时钟,可以选用外接的实时时钟器件,如DS1302。
如果一定要用单片机自身的T0,就应该把T0优先级定为唯一的高级,不让其它中断干扰它。
如果要改动下面的这个初始值,是个好办法。
TIMER0: MOV TH0,#FFH
MOV TL0,#0A0H
RETI
但是对FFA0的修改,是应该往“大”了改。
本人曾用单片机的定时器做过时钟,一个月,也差不了一秒;
呵呵,是用家里的一个电子表,摆在一起,进行比对的。
主要就是对初始值,进行了多种不同数值的测试。
--------------
自己管理一片空间,进行类似堆栈的“后进先出”,或者滑动存储的“先进先出”,都是可以的。
给出的代码没有细看,自己进行测试,就知道是否正确了。
sd