单片机实验报告2

本文由用户“slj280142904”分享发布 更新时间:2021-09-07 12:25:39 举报文档

以下为《单片机实验报告2》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

实验报告

盛某某 ***E0225

实验二 定时器/计数器实验

(实验过程中遇到的问题以及分析解决在“三、程序运行现象与分析” 中)

实验原理及步骤

1.实验原理

Ⅰ.MCS-51单片机内部定时器/计数器的功能

MCS-51内部有两个16位定时器/计数器T0、T1,通过对控制寄存器TMOD的软件设置,可以程控为8位、13位、16位定时器或计数器。无论定时还是计数,其工作原理基本相同,前者对系统机器周期计数,后者对引脚信号计数。若引脚信号是一个标准时钟,计数方式其实也可以看作是一种定时。当定时器启动后开始加l计数,计满溢出时自动设置标志位TF0或TF1为“l”,重新计数。

Ⅱ.计数初值的计算

定时器/计数器的初始化需要设置计数初值,再依工作方式计算定时时间或计数次数。

(1)定时方式



其中,——定时时间(s)。

——与工作模式有关,模式0,,模式1,;模式2,。

——时钟频率(Hz)。

(2)计数方式



其中,——与工作模式有关,模式0,,模式1,;模式2,。

2.实验步骤

(1)按下图连接电路。P1.1接有一个发光二极管。

/

(2)编写程序,利用定时器控制二极管每隔1秒交替地亮、灭,系统时钟频率6MHz。

(3)按要求修改时间常数,再次观察运行结果。

程序清单

程序流程图

/

2.汇编语言源程序

; 程序功能:利用定时器控制二极管每隔1秒交替地亮、灭,系统时钟频率6MHz。

;参数:T1、T0的初值

;占用资源:P1.1、P1.0、TMOD、T1、T0

ORG 0000H

AJMP MAIN ;跳转至主程序

ORG 0030H ;主程序开始地址

MAIN: CLR P1.1 ;亮灯

SETB P1.0

MOV TMOD, #61H ;设置T1为计数,方式2,T0为定时方式,方式1

MOV TH1, #0FBH ;设置T1高位自动赋初值的值

MOV TL1, #0FBH ;设置计数器初值,计数5次

SETB TR1 ;计数器开始计数

LOOP1: CPL P1.1 ;亮、灭灯交替,周期(一亮一灭)为1S

LOOP2: MOV TH0, #3CH

MOV TL0, #0B0H ;赋定时初值,定时0.1S

SETB TR0 ;定时器开始定时

LOOP3: JBC TF0, LOOP4 ;查看定时器是否溢出

SJMP LOOP3 ;没有溢出则继续计时

LOOP4: CPL P1.0 ;传递计数信号

JBC TF1, LOOP1 ;查看计数器是否溢出

AJMP LOOP2

END

程序运行的现象与分析

/

/

在正确连接实验箱中元件与调试程序后,运行程序,则P1.1所连接的二极管交替闪灭,周期约为1S。

修改时间常数,观察运行结果。

修改指令,使TH0=lEH,TL0=58H,运行程序,现象是二极管依然交替闪灭。使TH1=05H,TL1=05H,运行程序,现象是:二极管不亮。修改指令,使THl=20H,TLl=20H,运行程序,现象是二极管不亮。

去掉任某某T0、T1的启动指令,运行程序,现象是二极管不亮。

实验中遇到的问题与分析解决

Q1:最开始没有弄明白为什么要将P1.0与T1相连接

解决:忘记了定 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 4种工作方式:方式0为13位定时计数方式,最大计数值为2^13=8192,定时8192个机器周期。方式1为16位定时 /计数器模式。方式2为8位可重装载定时 /计数器模式。方式3:两个单独8位定时 /计数器模式。此时TH0占用T1的资源,T1无法产生中断申请。

T1有三种工作方式:方式0为13位定时计数方式,最大计数值为2^13=8192,定时8192个机器周期。方式1为16位定时 /计数器模式。方式2为8位可重装载定时 /计数器模式。

怎样启动定时器?

答:首先要将C/T设置为0,即定时模式,然后计算相应的初值并用“MOV”指令赋给TX,再使用指令“SETB TRX”便可以启动定时器。

[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《单片机实验报告2》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览