LED数码管汇编程序
DISPBUF EQU 50H ;50H,51H,52H,53H是显示缓冲区
LED1 EQU P2.0 ;第一位数码管的位控制
LED2 EQU P2.1 ;第二位数码管的位控制
LED3 EQU P2.2 ;第三位数码管的位控制
LED4 EQU P2.3 ;第四位数码管的位控制
LED5 EQU P2.4
LED6 EQU P2.5
LED7 EQU P2.6
LED8 EQU P2.7
;==============================================================
org 0000h
LJMP MAIN
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
MAIN:
MOV R0,#50H
MOV 65H, #2
MOV 64H, #3
MOV 63H, #5
MOV 62H, #9
MOV 61H, #5
MOV 60H, #9
MOV 59H, #1
MOV 58H, #2
ACALL OUT
LOOP1:ACALL DISP ;调用显示程序
JNB P3.2,K1
JNB P3.3,K2
ACALL TIME
AJMP LOOP1
K1: LJMP CLEAR
K2: LJMP PAUSE
TIME:
MOV R0,#59H ;指向毫秒计时单元
ACALL ADD1 ;调用加1程序(加1毫秒操作)
MOV A,R3 ;毫秒数据放入A(R3为2位十进制数组合)
CLR C ;清进位标志
CJNE A,#60H,ADDS
ADDS: JC OUT ;小于60毫秒时中断退出
ACALL CLR0 ;大于或等于60毫秒时对秒计时单元清0
MOV R0,#61H ;指向秒计时单元
ACALL ADD1 ;调用加1程序(加1秒操作)
MOV A, R3 ;秒数据放入A(R3为2位十进制数组合)
CLR C ;清进位标志
CJNE A, #60H,ADDM
ADDM: JC OUT ;小于60秒时中断退出
ACALL CLR0 ;大于或等于60秒时对秒计时单元清0
MOV R0,#63H ;指向分计时单元
ACALL ADD1 ;分计时单元加1分钟
MOV A,R3 ;分数据放入A
CLR C ;清进位标志
CJNE A,#60H,ADDH
ADDH: JC OUT ;小于60分时中断退出
ACALL CLR0 ;大于或等于60分时分计时单元清0
MOV R0,#65H ;指向小时计时单元
ACALL ADD1 ;小时计时单元加1小时
MOV A,R3 ;时数据放入A
CLR C ;清进位标志
CJNE A,#24H,HOUR
HOUR: JC OUT ;小于24小时中断退出
ACALL CLR0 ;大于或等于24小时计时单元清零
OUT:
MOV DISPBUF, 65H
MOV DISPBUF+1, 64H
MOV DISPBUF+2, 63H
MOV DISPBUF+3, 62H
MOV DISPBUF+4,61H
MOV DISPBUF+5, 60H
MOV DISPBUF+6,59H
MOV DISPBUF+7,58H
RETI
;======================================================================
;清零程序
;======================================================================
CLR0:
CLR A ;清累加器
MOV @R0,A ;清当前地址单元
DEC R0 ;指向前一地址
MOV @R0,A ;前一地址单元清零
RET
;======================================================================
本文关键字:LED数码管 51单片机,单片机-工控设备 - 51单片机
上一篇:两单片机机串口通讯程序