- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T0控制
6
四、实验步骤
P1.0~P1.7分别接发光二极管L1~L8。
注:
1、编程前先在E盘目录下建一个文件夹,并取一个英名名 字,即名字中不能有汉字和数字。编完程序将其存于该目录 下。 2、做完实验将实验箱右上角的CPU板卸下,再关实验箱。 3、因用户实验程序区位于4000H-----5FFFH,在编写实验 程序时要注意,程序的起始地址应为4000H。
2
2、初始化程序
包括定时器初始化和中断系统初始化,主要是对IP、IE、 TCON、TMOD的相应位进行正确的设置,并将时间常数送 入定时器中。由于只有定时器中断,IP便不必设置。
3、设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常 数重新送入定时器中,为下一次中断做准备。主程序则用来 控制发光二极管循环点亮。
;将A的值送入P1口
INT:
;中断服务程序关闭定时器 ;判1s到否? ;1s到,重置软件延时时间常数 ;将累加器A中的值循环左移 ;重置时间常数初值 ;重新启动定时器T1 ;中断返回
CZ:
*
9
;设置堆栈指针 ;设置计数器方式1 ;CPU中断开放标志位和定时器 ;1溢出中断允许位均置位 ;软件延时时间1s=10×0.1s ;将0FEH送入累加器A ;装入时间常数 ; 启动定时器T1
*
8
LOOP:
MOV P1, A LJMP LOOP CLR TR1 DJNZ R2, CZ MOV R2 , #10 RL A MOV TL1,#0B0H MOV TH1,#3CH SETB TR1 RETI END
1
三、实验原理
1、定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率 的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来 实现1秒延时,要在定时器1中设置一个时间常数,使其每隔 0.1秒产生一次中断,CPU响应中断后将R2中计数值减一,令 R2=10,即可实现1秒延时。 时间常数可按下述方法确定: 机器周期=12÷晶振频率=12/(6×10⁶)=2us 设 计 数 初 值 为 X , 则 ( 216-X ) ×2×10-6=0.1 , 可 求 得 X=15536,化为十六进制则X=3CB0H,故初始值为TH1=3CH, TL1=0B0H
实验三
一、实验目的
定时器实验
——循环彩灯实验
1、学习8051内部定时器的使用和编程方法。 2、进一步掌握中断处理程序的编写方法。
二、实验内容
由8051内部定时器1按方式1工作,即作为16位定 时器使用,每0.1秒钟T1溢出中断一次,软件延时1S。 P1口的P1.0~P1.7分别接发光二极管的L1~L8。要 求编写程序模拟一循环彩灯,使其循环点亮。
3
中断允许控制寄存器IE
D7 EA
D6
D5
D4 ES
D3 ET1
D2 EX1
D1 ET0
D0 EX0
0 禁止,1允许
4
定时/计百度文库器控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 中断请求标志 启动定时/计数器
0 停止 1 启动
*
7
五、程序
ORG 0000H LJMP MAIN ORG 401BH LJMP INT ORG 4100H MOV SP, #70H MOV TMOD, #10H MOV IE, #88H ;定时器/计数器1中断程序入口地址
MAIN:
MOV MOV MOV MOV SETB
R2 , #10 A, #0FEH TH1, #3CH TL1, #0B0H TR1
触发方式选择
0 低电平 1 下降沿
5
模式控制寄存器TMOD TMOD用于控制T0、T1的工作方式和4种工作模式。 其中低4位用于控制T0,高4位用于控制T1。其格式 如下: D7 D6 GATE C/T D5 M1 D4 M0 D3 D2 GATE C/T D1 M1 D0 M0
T1控制 GATE—门控位 C/T—计数/定时选择 M1 M0—工作方式选择