实验三 定时器实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
点亮 L0L2 L1L3 L4L6 L5L7 L0L2L4L6 L1L3L5L7 全亮 全灭
0H 0FAH 0F5H 0AFH 05FH 0AAH 55H 0H 0FFH
用软件延时实现
LOOP: MOV A, #0FAH MOV P1, A //LOL2亮 ACALL DELAY_1s //延时1s MOV A, #0F5H MOV P1, A //L1L3亮 ACALL DELAY_1s //延时1s …………… MOV A, #0FFH MOV P1, A ACALL DELAY_1s //全灭,延时1s AJMP LOOP //循环 DELAY_1s: …………..
用计算器 进行运算
程序
MOV TH1, #4BH MOV TL1, #0FDH
开中断
SETB ET1 SETB EA // 允许T1溢出中断 // 开总中断
启动定时器
SETB TR1
实验思路:
主程序中: 中断服务子程序中:
1,定时器初始化
1,等待延时时间1s到了吗? 2,时间到后,向P1口写 入数据
2,其他初始化
程序流程图
主程序
中断服务子程序
查表指令
TAB: DB 5FH,0AFH,0F5H,0FAH,55H,0AAH,0,0FFH MOV DPTR,#TAB //DPTR指向表的首地址 MOV R1,#0 //给表指针赋初值 MOV A,R1 // 表指针值送累加器 MOVC A,@A+DPTR // 将表指针所指值查出,送累加器
实验接线
P1.0---p1.7接LO----L7
0 1 1 1 0 1 0 0 1
0 1 1 0 1 0 1 0 1
0 1 1 1 0 1 0 0 1
0 1 1 0 1 0 1 0 1
0 1 0 1 1 1 0 0 1
0 0 1 1 1 0 1 0 1
0 1 0 1 1 1 0 0 1
0 0 1 1 1 0 1 0 1
实验程序
INT_1: MOV TH1,#4BH MOV TL1,#0FDH DJNZ R0, EXIT MOV R0,#20 MOV A,R1 MOVC A,@A+DPTR MOV P1,A INC R1 CJNE R1,#8,EXIT MOV R1,#0
ORG 0000H AJMP MAIN ORG 001BH AJMP INT_1 ORG 0030H MAIN: MOV SP,#60H
THX(8位) TLX (8位)
16位定时器/计数器
计数最大值为216
设置定时器工作方式
2种工作模式
定时 计数
4种工作方式
方式0
方式1
方式2
方式3
工作方式控制寄存器TMOD(8位,字节地址89H)
D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 T1 T0
思考:
设置工作方式程序:
MOV TMOD, #10H
计算定时初值
计算延时时间为1s的定时初值:
方式一最大计数值为216 最大延时时间为71.10ms<1s 一个机器周期为T=1.085us
216
Байду номын сангаас
先用定时器定时50ms, 定时20次即为1s
X 0
定 时 器
令定时初值为X, 定时时间为t
(216-X)*T=t X=216-t/T=65536-50/1.085us=19453=4BFDH
工作模式
1 计数 0 定时
4种工作方式
设置定时器工作方式
TMOD
D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 1 1 T1 0 T0 0
定时器/计数器
THX(8位) TLX (8位)
方式0:213*1.085us=8.89ms M1M0 方式 计 数 器 配 工作方式 TMOD 置 16*1.085us=71.10ms 方式1: 2 01H T0定时 0 0 0 TLx低5位与THx的8位构成13位计数器 10H T1定时 方式2: 28*1.085us=0.2778ms 0 1 1 TLx与THx构成16位计数器 05H T0计数 1 0 2 自动重装初值(THx)的8位(TLx溢出时)计数器 方式3: 28*1.085us=0.2778ms 51H T1计数 1 1 3 仅用于T0,分成两个8位计数器,T1停止计数 在实验过程中,我们统一选择方式一定时/计数。
MOV TMOD,#10H MOV TH1,#4BH MOV TL1,#0FDH MOV R0,#20 SETB ET1 SETB EA
SETB TR1
MOV DPTR,#TAB MOV R1,#0 AJMP $ 中断返回至主程序的等待处,等待下一次的中断到来
EXIT: RETI
TAB: DB 5FH,0AFH,0F5H,0FAH,55H,0AAH,0,0FFH END
问题
1,延时程序占用CUP时间 降低了CUP利用率 2,程序繁琐
问题的解决
长时间定时或定时精度要求 较高的场合,通常选用定时 器实现定时(硬件定时); 用查表指令处理无规律事件
定时器定时
定时器 初始化
•设置工作模式
•计算定时初值 •开中断 •开定时器
定时程序 结构框架
•主程序 •中断子程序
定时器结构
拓展实验
定时时间修改为660ms(不能被50整除) 修改等点亮状态和状态个数
改用T0进行定时
实验作业中第二题
实验三 定时器实验
实验目的
掌握用定时器进行定时的方法;
学习对无规律事件的处理方法,掌握查表指令的使用
重点掌握内容
实验任务
要求P1口控制8个发光二极管按下列规律发光
L0L2 → L1L3→ L4L6 → L5L7 → L0L2L4L6 → L1L3L5L7→ 全亮 →全灭
每个状态持续
1s, 用定时器T1定时