在80C51 系统中,已知振荡频率为 12 MHz,用定时/计数器T0,实现从P1.0产生 周期为2ms 的方波。要求用c语言进行编程。
时间: 2024-03-17 08:41:43 浏览: 105
单片机第四章答案PPT课件.ppt
好的,我来回答你的问题。
在80C51系统中,可以使用定时/计数器T0来产生方波。根据题目要求,需要产生周期为2ms的方波,因此需要计算出T0的计数值。
首先,计算每个计数值代表的时间:
每个计数值所代表的时间 = 定时器的时钟周期 x 预分频系数
在本题中,定时/计数器T0的时钟周期为 1/12MHz = 0.083us,预分频系数为 12(即每12个时钟周期计数一次),因此每个计数值所代表的时间为:
每个计数值所代表的时间 = 0.083us x 12 = 1us
因此,周期为2ms的方波需要计数的次数为:
计数次数 = 周期时间 / 每个计数值所代表的时间
计数次数 = 2ms / 1us = 2000
接下来,我们可以使用C语言编写程序来实现这个功能:
```c
#include <reg51.h>
void main()
{
TMOD = 0x01; // 设置T0为模式1
TH0 = 0xFC; // 设置计数初值为 65536 - 2000 = 0xFC18
TL0 = 0x18;
TR0 = 1; // 启动计时器
while(1)
{
P1_0 = !P1_0; // 切换P1.0的电平,产生方波
}
}
```
在程序中,我们首先设置定时/计数器T0为模式1(16位自动重装载计数器),然后设置计数初值为 65536 - 2000 = 0xFC18,最后启动计时器。
在主循环中,我们使用P1.0来输出方波。每次循环通过取反来切换P1.0的电平,从而产生方波。
注意:在编译程序时需要选择与80C51兼容的编译器,并将程序下载到相应的芯片中运行。
阅读全文