文章目录
- 一、实验目的
- 二、实验内容
一、实验目的
熟悉单片机的定时/计数功能 掌握定时/计数初始化编程方法
二、实验内容
仿真电路图如下:
查询方式汇编语言程序如下:
代码语言:javascript复制 ORG 0000H
JMP START
ORG 0100H
START:
MOV TMOD,#00H ;工作方式0 13位定时器
MOV TH1,#8CH ;高八位
MOV TL1,#1AH ;低八位
SETB TR1 ;启动TR1定时
Loop:
JNB TF1,$ ;溢出标志TF1为0的时候,就等待溢出
MOV TH1,#8CH ;重装初值
MOV TL1,#1AH
CPL P1.0 ;取反,波形跳转一次
CLR TF1 ;置零 溢出标志位
SJMP LOOP ;继续循环 重装初值 定时
END
仿真结果如下:
T1工作于方式 0 定时,P1.0口输出周期为 8ms 的方波,由仿真结果可以看到,一格为 2 ms,输出方波一个周期占了 4 格。
仿真电路图如下:
中断方式汇编语言程序如下:
代码语言:javascript复制 ORG 0000H ;复位入口
LJMP MAIN
ORG 000BH ;定时器中断程序T0_0入口
LJMP T0_0
ORG 001BH ;计数器中断中断程序T1_1入口
LJMP TI_1
ORG 0030H ;主程序入口
MAIN:
SETB P3.0 ;启动p3.0,允许输出方波
MOV TMOD,#60H ;T1设置为计数方式2:0110,T0设置为定时方式0:0000
MOV TH0,#8CH ;T0定时初值
MOV TL0,#1AH
MOV TH1,#82H ;T1计数初值
MOV TL1,#82H
MOV IE,#8AH ;中断允许控制寄存器:10001010 EA总中断打开 ET0 ET1打开
SETB TR0 ;启动定时器T0
;SETB EA ;开中断
;SETB ET0 ;允许T0中断
SETB TR1 ;启动计数器T1
;SETB ET1 ;允许T1中断
LOOP:
MOV R0,#09H
WAIT:
MOV A, R0
MOV DPTR,#TAB
MOVC A,@A DPTR ;变址寻址 查表指令
MOV P1,A ;结果从P1口送出
CJNE R0,#0FFH,WAIT ;R0不等于0FFH,跳转到WAIT -1
LJMP LOOP ;(R0)=0FFH,跳到LOOP
T0_0:
CPL p3.0 ;求反,波形反转一次,间隔4ms
MOV TH0,#8CH ;重装T0初值
MOV TL0,#1AH
RETI ;中断返回
TI_1:
DEC R0 ;减1
RETI ;中断返回
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H ;定义字节
END
仿真结果如下:
定时器T0设置为定时,T1设置为计数,定时8ms,计数 125 个脉冲,可实现每隔1s,在七段 LED 码上显示倒计时钟: 9、8、7…0。
作者:叶庭云 CSDN:https://yetingyun.blog.csdn.net/