📄 14-2.asm
字号:
;***********************************************************************
; 功能 :定时器延时程序
; 作者 :LIHJ
; 创建日期 :04-1-2
; 版本 :V1.0
; 修改日期 :
;************************************************************************
;变量定义
Count50 ms DATA 50H
;程序
ORG 0000H ;定义程序入口
JMP MAIN ;复位后,跳转到主程序
ORG 000BH ;定时器0的中断入口
JMP T0INT ;跳转到定时器0的中断服务程序
;主程序
ORG 0050H ;定义主程序保存地址(可以不指定)
MAIN:
;定时器赋初值
MOV TMOD, #01H ;选择方式1,16位定时器方式
MOV TH0, #3CH ;定时器0设置为50 ms
MOV TL0, #0B0H
MOV Count50 ms, #00H ;初始化50 ms计数器
SETB EA ;开中断总开关
SETB ET0 ;运行定时器0中断
SETB TR0 ;启动定时器0
;主循环程序
LOOP:
;****************************
;其他程序
;****************************
;延时判断
MOV A, Count50 ms ;将50 ms计数值赋给累加器A
CJNE A, #100, PROCESS1 ;判断延时世界有没有到
PROCESS1:
JC CONTINUE1 ;根据C标志判断延时时间是否到
MOV A, Count50 ms ;Count50 ms = Count50 ms - 100
SUBB A, #100
MOV Count50 ms, A
;************************ ;延时时间到,运行被延时的程序
;被延时的程序
;************************
CONTINUE1: ;延时时间没有到,继续运行其他程序
;****************************
;其他程序
;****************************
JMP LOOP ;开始下一个主循环
;结束主循环
;子程序
;定时器0中断服务子程序
T0INT:
PUSH PSW ;保护中断现场
PUSH ACC
MOV TH0, #3CH ;重新载入定时器0的初始值
MOV TL0, #0BAH
INC Count50 ms ;50 ms计数器自加1
POP ACC ;恢复中断现场
POP PSW
RETI ;中断返回
END ;结束程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -