本方案中采用定时器
0
进行
10
毫秒定时,当进行了
100
次定时中断后 定时时
间为
1
秒,此时将定时标志位清零重新计数,并提供
1
秒信号使二极管电 平翻转,同时使
扬声器发生声音频率变化。
定时中断子程序见源代码。程序中定时器,一直处于运行状态,也就是 说定时器是理想运
作的,其中断程序每隔
0.1
秒执行一次,在理想状态下,定时 器定时是没有系统误差的,
但由于定时器中断溢出后,定时器从
0 开始计数,直
到被重新置数,才开始正确定时,这样中断溢出到中断响应到定时器被重新置数, 其间消
耗的时间就造成了定时器定时的误差。如果在前述定时器不关的情况下, 在中断程序的一
开始就给定时器置数, 此时误差最小,误差大约为:每
0.01
秒, 误差
7
—
12
个机器周期。
当然这是在定时器定时刚好为
0.01
秒时的情况,由以 上分析,在定时值设置时,可以适
当的扣除
9
个机器周期的时间值。
对于延时程序,其作用是产生
1.8KHZ
和
1.5KHZ
的脉冲,其周期分别为
556us
和
667us,
即
556
和
667
个机器周期,由于计算复杂,不可能做到完全准确, 寄存器初值必
定存在误差,考虑到人听觉的灵敏度,此误差可忽略不计。