📄 t0_1.asm
字号:
;=====================================================================
;第三部分:MCS-51内T0、T1、T2可编程定时/计数器82C53实验
;实验一、T0(定时/计数器0)
;档案名称:T0_1.ASM
;====================================================================
TIMER0 EQU 30H
TIMER1 EQU 31H
ORG 00H
JMP START
ORG 000BH
JMP TIME0
ORG 0030H
START: MOV SP,#60H ;设定堆叠区
MOV IE,#10000010B ;中断致能,EA=ET0=1
MOV IP,#00000000B
MOV TMOD,#01H ;设定定时器0 为 mode 1
MOV TH0,#3CH ; 50MS后产生中断(12MHZ晶体)
MOV TL0,#0B0H
SETB TR0 ;计数器 0 开始定时
MOV R4,#00H
LOOP: MOV A,#11110000B
MOV P1,A ;从 P1 输出到LED
CALL DELAY500 ;延迟约 0.4 秒
MOV A,#00001111B
MOV P1,A ;从 P1 输出
CALL DELAY ;延迟约 0.4 秒
JMP LOOP
;====================================================================
TIME0: CLR TR0 ;计数器 0 停止定时
PUSH ACC
PUSH B
INC R4
CJNE R4,#14H, LOP1
MOV R4,#00H
MOV B,#08H ;移动 8 次
MOV A,#11111110B ;单一灯向左移
LOOP1: MOV P1,A ;从 P1 输出到 LCD
RL A
LCALL DELAY250
DJNZ B,LOOP1 ;移动 8 次了吗?
LOP1: POP B
POP ACC
MOV TH0,#3CH ;
MOV TL0,#0B0H
SETB TR0 ;定时数 0 开始定时
RETI
;====================================================================
;延时子程序
DELAY: PUSH TIMER1; 延时TIMER1*1 ms for 12MHz
PUSH TIMER0
DELAY1: MOV TIMER0,#250 ;循环一次需要4个机器周期,时间为4*1μS
DELAY2: NOP ; 1个周期
NOP ; 1个周期
DJNZ TIMER0,DELAY2 ;2个周期
DJNZ TIMER1,DELAY1
POP TIMER0
POP TIMER1
RET
NOP;--------------------
DELAY01: NOP; 延时 1 ms
PUSH TIMER1
MOV TIMER1,#01H
LCALL DELAY
POP TIMER1
RET
NOP;--------------------
DELAY10: NOP; 延时 10 ms
PUSH TIMER1
MOV TIMER1,#10
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY100: NOP; 延时100 ms
PUSH TIMER1
MOV TIMER1,#100
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY250: NOP; 延时 250 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY500: NOP; 延时 500 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY1S: NOP; 延时 1 sec
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
;------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -