📄 int_counter_led.asm
字号:
;******************************Copyright (c)**********************************
;** 广州周立功单片机发展有限公司研究所
;** http://www.zlgmcu.com
;******************************文件信息************************************
;文件名:INT_T0_Led.asm
;功能:学习定时/计数器当作计数器使用
;说明:
;1.学习定时/计数器当计数器使用的程序设计方法与技巧
;2.LED发光管和LED数码管共用同一地址2000H~3FFFH,在此选取2000H。
;3.正确设置跳线JP1使P1.6与KBIT7相连,即把跳线置于下端
;4.正确设置跳线JP3使P3.4与KEY2相连,即把跳线置于上端
;最后修改时间: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 800BH ;中断入口向量地址
AJMP COUNTER0
ORG 8100H ;伪指令,定义以下程序从8100H开始存放
MAIN: MOV SP,#60H ;给堆栈指针赋初值
MOV TMOD,#06H ;置T0方式1、计数
MOV TH0,#0FFH ;给计数寄存器高8位赋初值
MOV TL0,#0FFH ;给计数寄存器低8位赋初值
MOV DBUFFER,#0FFH ;送输出初始数据
CLR LEDCS ;置P1.6为低电平,使能二极管显示
SETB ET0 ;允许计数溢出中断
SETB EA ;开放总中断
SETB TR0 ;计时开始
CNTUP: MOV A,DBUFFER ;更新数据
MOV DPTR,#LED_ADDR
MOVX @DPTR,A ;输出显示
AJMP CNTUP ;继续
;************************
;计数器中断服务子程序
;************************
COUNTER0: ;计数中断服务子程序
PUSH PSW ;保护现场
PUSH ACC
CLR TR0 ;停止计数
MOV A,DBUFFER ;取原始输出状态
CPL A ;取反原始状态
MOV DBUFFER,A ;更新输出状态值
SETB TR0 ;开始计数
POP ACC ;出栈
POP PSW
RETI ;中断返回
;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -