定时器实验(Proteus 与Keil uVision联合仿真)

一、

(1)设置TMOD寄存器

T0工作在方式1,应使TMOD寄存器的M1、M0=01;应设置C/T*=0,为定时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时器T1不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x01。

(2)计算定时器T0的计数初值

设定时时间5ms(即5 000µs),设T0计数初值为X,假设晶振的频率为11.059 2MHz,则定时时间为:定时时间=(216−X)×12/晶振频率

则 5 000=(216 −X) ×12/11.0592,得 X = 60928,转换成十六进制:0xee00,其中0xee装入TH0,0x00装入TL0。

(3)设置IE寄存器

本例由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置1。

(4)启动和停止定时器T0

将定时器控制寄存器TCON中的TR0=1,则启动定时器T0;TR0=0,则停止定时器T0定时。

二、设计硬件电路原理图,画出实际接线图。

三、根据实验任务设计出相应的程序。

cs 复制代码
#include <reg51.h>

char i=100; // 定义一个字符型变量i并初始化为100

void main() // 主函数开始
{
    TMOD=0x01; // 设置定时器0的工作模式为模式1(16位定时器)
    TH0=0xEC; // 设置定时器0的高8位初值,用于产生大约50ms的定时
    TL0=0x78; // 设置定时器0的低8位初值,用于产生大约50ms的定时
    P1=0x00; // 初始化P1口的状态为0,即所有引脚输出低电平
    EA=1; // 打开全局中断允许位
    ET0=1; // 允许定时器0的中断
    TR0=1; // 启动定时器0
    while(1) // 进入无限循环
    {
    }
} 

void timer0() interrupt 1 // 定时器0的中断服务函数
{
    TH0=0xEC; // 重新装载定时器0的高8位初值
    TL0=0x78; // 重新装载定时器0的低8位初值
    i--; // 计数器i减1
    if(i<=0) // 如果计数器i减到0
    {
        P1=~P1; // 翻转P1口的电平状态
        i=100; // 重置计数器i为100,准备下一轮计时
    }
} 

四、实验结果

8只发光二极管每0.5s闪亮1次;

五、思考题

1、定时器和计数器的区别是什么?

答:①定时器

定时器通常是基于单片机内部的时钟信号进行计数。这些时钟信号通常来源于晶振,是非常稳定的脉冲源。当定时器计数到预设的阈值时,它会产生一个中断信号,通知单片机执行相应的中断服务程序。定时器适用于需要精确时间控制的场合,如产生精确的延时、测量时间间隔等.

②计数器

计数器则是对来自单片机外部的脉冲信号进行计数。这些脉冲信号可以是由其他设备产生的,如传感器、开关等。计数器在每次接收到一个脉冲信号时,计数器的值就会增加。计数器适用于需要计数外部事件的场合,如计步器、转速测量等.

2、单片机定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合?

答(1)单片机定时器/计数器T1、T0的工作方式2特点:

工作方式2是8051单片机定时器/计数器的一种工作模式,它具有以下特点:

自动重装初值:在工作方式2下,定时器/计数器是一个8位的计数器,其中TL0用于计数,TH0用于备份。当TL0计数溢出时,TH0中的初值会自动加载到TL0,从而实现自动重装初值的功能.

简化编程:由于计数器可以自动重装初值,因此可以避免在程序中重复编写重装初值的指令,简化了编程过程,提高了效率.

提高定时精度:由于减少了因手动重装初值导致的延迟,工作方式2可以提高定时的精确度.

(2)适用于的应用场合:

工作方式2适用于需要循环定时或循环计数的应用场景,例如:

周期性任务调度:在嵌入式系统中,经常需要周期性地执行某些任务,如传感器数据采集、显示屏刷新等,工作方式2可以方便地实现这些周期性任务的定时控制.

事件计数:在一些需要计数外部事件的应用中,如计步器、门禁系统等,工作方式2可以用于计数外部脉冲,实现事件计数的功能.

中断服务程序:在中断服务程序中,有时需要在处理完中断后立即返回,而不是等待下一个中断周期。工作方式2可以在中断服务程序中快速重启定时器,以便尽快响应下一个中断.

相关推荐
hairenjing11236 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
模拟IC攻城狮8 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生8 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨8 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生9 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
海绵波波10711 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫11 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技12 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
stm 学习ing13 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库
w微信1501350781213 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件