求AT89C51单片机汇编语言程序,有关蜂鸣器控制,晶振8MHz(与前一问不同)

控制蜂鸣器发出“嘀、嘀。。。。”报警声,报警声从P1.3口输出,频率2.5KHz,响1.1秒,间隔1秒。
本人对之前程序(晶振12MHz)在计时器和周期方面存在理解障碍,无法自行修改,故再次求助,感激不尽!

输出频率,要求是 2.5KHz,必须定时 200us。

上次,用的是 12MHz 的晶振,采用定时方式2,初值就是 56。

现在,采用了 8MHz 的晶振,初值,就应该是:123。

把上次的程序中,有 56 的地方,改成 123,即可。
其它的,都不用改动。追问

改变了晶振的频率,也就改变了时钟周期和机器周期,为什么定时部分不需要修改呢?

追答

12MHz 的晶振,机器周期是 1us,定时 200us 时,初值就是 256 - 200 = 56。

8MHz 的晶振,机器周期是 1.5us,定时 200us 时,

初值就是 256 - 200/1.5 = 256 - 133 = 123。

这么修改,已经是考虑了“”晶振频率、时钟周期和机器周期“”的变化。

这么改动之后,在 8MHz 的频率下,仍然是每隔 200us 中断一次。

所以,其它的部分,都不用改动。

追问

明白

追答

在 12MHz 的频率下,全部程序,可见:

http://hi.baidu.com/do_sermon/item/085f99f63ab1eec50cd1c867

稍做改动,就可以适用于 8MHz 的频率。

温馨提示:答案为网友推荐,仅供参考
相似回答