利用定时器/计数器 T0 的工作方式1,产生10ms的定时,使 P1.1引/脚上输出周期为20MS 的方波,采用中断方式,设系 统的时钟频率为 12mhz(写出初值计算过程,并写出每条指 今的作用)汇编语言
时间: 2024-03-17 08:47:04 浏览: 153
初值计算过程:
由于系统时钟频率为 12MHz,所以计数器 T0 的计数速率为 12MHz/12 = 1MHz。
要产生 10ms 的定时,则计数器 T0 需要计数的次数为:
10ms × 1MHz = 10000
因为计数器 T0 是 16 位的,所以初值为:
65536 - 10000 = 55536 = D8D0H
每条指令的作用:
首先,需要设置计数器 T0 的工作方式为方式 1,即使用时钟源 T0 源,计数器 T0 的计数值从 TH0 和 TL0 组成的 16 位初值开始计数。
```
MOV TMOD, #01H ; 设置计数器 T0 的工作方式为方式 1
```
然后,设置初值 TH0 和 TL0,使计数器 T0 在计数到 10000 后溢出,并触发中断。
```
MOV TH0, #D8H ; 设置计数器 T0 初始值的高 8 位为 D8H
MOV TL0, #D0H ; 设置计数器 T0 初始值的低 8 位为 D0H
```
接着,打开总中断开关,使中断能够被响应。
```
SETB EA ; 打开总中断开关
```
在中断服务程序中,需要将 P1.1 引脚取反,从而输出周期为 20ms 的方波。
```
TIMER0_ISR:
CPL P1.1 ; 将 P1.1 引脚取反
RETI ; 退出中断服务程序
```
最后,启动计数器 T0,开始定时器的工作。
```
SETB TR0 ; 启动计数器 T0
```
相关问题
利用定时器/计数器 T0 的工作方式1,产生10ms的定时,使 P1.1引/脚上输出周期为20MS 的方波,采用中断方式,设系 统的时钟频率为 12mhz写出初值计算过程
初值计算过程和之前的回答一样,由于系统时钟频率为 12MHz,而要产生 10ms 的定时,因此初值应为:
初值 = 定时时间 / 时钟周期 - 1
= 10ms / (1 / 12MHz) - 1
= 11999
因此,在程序中需要将定时器/计数器 T0 的初值设置为 11999。
利用定时器/计数器 T 的工作方式1,产生10uS 的定时,使 P1.1引/脚上输出周期为20MS 的方波,采用中断方式,设系 统的时钟频率为 12Whz(写出初值计算过程,并写出每条指 今的作用) T
首先,我们需要计算定时器/计数器 T 的初值。由于系统时钟频率为 12MHz,而要产生 10us 的定时,因此初值应为:
初值 = 定时时间 / 时钟周期 - 1
= 10us / (1 / 12MHz) - 1
= 119
接下来,我们需要编写初始化定时器/计数器 T 的代码,将其工作在方式1下,并设置初值为 119:
```c
TMOD &= 0xF0; // 清零 T0/T1 工作方式
TMOD |= 0x01; // 设定 T0 工作在方式1
TH0 = 0x00; // 设定 T0 初值高字节
TL0 = 0x77; // 设定 T0 初值低字节,即 119
```
然后,我们需要编写中断服务程序,以产生每 20ms 的方波。具体来说,当定时器/计数器 T 溢出时,中断服务程序会将 P1.1 引脚的值翻转一次,从而产生方波。以下是中断服务程序的代码:
```c
void Timer0_ISR() interrupt 1
{
static unsigned int count = 0; // 定义静态变量 count,用于计数
count++; // 计数器加 1
if (count == 20000 / 20) // 当计数器达到 1000 时,即 20ms
{
count = 0; // 计数器清零
P1_1 = !P1_1; // 翻转 P1.1 引脚的值
}
}
```
最后,我们需要在主函数中开启定时器/计数器 T,并启用中断:
```c
EA = 1; // 开启总中断
ET0 = 1; // 开启定时器/计数器 T0 中断
TR0 = 1; // 启动定时器/计数器 T0
```
这样,当定时器/计数器 T 溢出时,就会触发中断服务程序,产生每 20ms 的方波。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)