📄 tf0_t0_led.asm
字号:
;******************************Copyright (c)**********************************
;** 广州周立功单片机发展有限公司研究所
;** http://www.zlgmcu.com
;******************************文件信息************************************
;文件名:TF0_T0_Led.asm
;功能:使用DP-51S实验仪学习定时/计数器并实现LED发光管的流水显示
;说明:(使用查询方式实现)
;1.学习使用使用定时/计数器产生延时的程序设计方法与技巧
;2.LED发光管和LED数码管共用同一地址2000H~3FFFH,在此选取2000H。
;3.正确设置跳线JP1使P1.6与KBIT7相连,即把跳线置于下端
;最后修改时间:2003年3月21
;*************************************************************************
LED_ADDR EQU 2000H ;定义LED数码管的数据段地址
COUNTER DATA 30H ;定义计数单元
DBUFFER DATA 31H ;定义输出初始值
LEDCS EQU P1.6 ;定义LED片选信号线
ORG 8000H ;伪指令,定义程序从8000H开始存放
AJMP MAIN
ORG 8100H ;伪指令,定义以下程序从8100H开始存放
MAIN: MOV SP,#60H ;给堆栈指针赋初值
MOV TMOD,#01H ;设置定时器0为定时模式的方式1
MOV TH0,#3CH ;设置定时时间常数的高8位
MOV TL0,#0B0H ;设置定时时间常数的低8位
MOV COUNTER,#20 ;给中间变量赋初值
MOV DBUFFER,#7FH ;给输出变量赋初值
SETB TR0 ;开定时器
CLR LEDCS
LIUP: JBC TF0,LEDTF0 ;定时器0溢出则跳转到LEDTF0,同时清除TF0位
MOV A,DBUFFER ;否则,继续输出显示
MOV DPTR,#LED_ADDR
MOVX @DPTR,A
AJMP LIUP
LEDTF0: CLR TR0 ;停止计数
MOV TH0,#3CH ;重新赋初值
MOV TL0,#0B0H
DJNZ COUNTER,LEDRET ;1s时间到了吗?
MOV COUNTER,#20 ;是,则重新给中间变量赋初值
MOV A,DBUFFER ;读取输出状态到A中
RR A ;右移一位
MOV DBUFFER,A ;送变量中保存
LEDRET: SETB TR0 ;开定时器
AJMP LIUP
;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -