以下为《单片机实验报告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》的无排版文字预览,完整内容请下载
单片机实验报告2由用户“slj280142904”分享发布,转载请注明出处