9.7 上机实践
1.设单片机使用11.0592MHz的晶振,编写一个延时函数delay,该函数有一个参数ms,表示需要延时的毫秒,如delay(10)表示延时10ms。
提示定时器延时长短由晶振频率、工作模式、TH0和TL0的初值决定,本题设定使用定时器工作模式1,晶振为11.0592MHz,通过计算可得到初始值TH0=0XFC、TL0=0x66。
注意在调试程序时,在Keil软件中应设置晶振频率为11.0592MHz。默认状态Keil设置的晶振频率为24MHz,这样得到的延时时长是不对的。
2.设单片机的fosc=12MHz,要求在P1.0脚上输出周期为2ms的方波。
提示周期为2ms的方波要求定时间隔1ms,每次时间到后让P1.0取反,即可得到2ms的方波。
定时器计数率=fosc/12。机器周期=12/fosc=1µs
每个机器周期定时器加1,1ms=1000µs
需计数次数=1000/(12/fosc)=1000/1=1000
用定时器0的方式1编程,采用查询方式。
3.如图9.5所示是AT89C51通过P1口连接到8个发光二极管的原理图,编写一个简单的定时器程序,由一个循环组成,在点亮图9.5所示的接在P1.0口的LED之后,延时一段时间,再灭掉该LED,又延时一段时间,之后循环到前面。
4.如图9.5所示是AT89C51通过P1口连接到8个发光二极管的原理图,编写程序控制这些发光二极管从上向下逐个点亮,每个发光二极管点亮500ms,间隔500ms再点亮下一个发光二极管。
提示当设置P1口的某一接脚为低电平时,与其连接在一起的发光二级管形成电源通路。
图 9.5 发光二极管