;加1子程序
;======================================================================
ADD1:
MOV A,@R0 ;取当前计时单元数据到A
DEC R0 ;指向前一地址
SWAP A ;A中数据高四位与低四位交换
ORL A,@R0 ;前一地址中数据放入A中低四位
ADD A,#01H ;A加1操作
DA A ;十进制调整
MOV R3,A ;移入R3寄存器
ANL A,#0FH ;高四位变0
MOV @R0,A ;放回前一地址单元
MOV A,R3 ;取回R3中暂存数据
INC R0 ;指向当前地址单元
SWAP A ;A中数据高四位与低四位交换
ANL A,#0FH ;高四位变0
MOV @R0,A ;数据放入当前地址单元中
RET
;======================================================================
;显示程序
;======================================================================
DISP:
;-----------------------------------------------------------
MOV A,DISPBUF ;取第一个待显示数
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR ;取字形码
CPL A ;
MOV P0,A ;将字形码送P0位(段口)
CLR LED1 ;开第一位显示器位口
LCALL DELAY ;延时5毫秒
SETB LED1 ;关闭第一位显示器(开始准备第二位的数据)
;-----------------------------------------------------------
MOV A,DISPBUF+1 ;取显示缓冲区的第二位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
CPL A ;
MOV P0,A ;将第二个字形码送P0口
CLR LED2 ;开第二位显示器
LCALL DELAY ;延时5毫秒
SETB LED2 ;关第二位显示
;-----------------------------------------------------------
MOV A,DISPBUF+2 ;取显示缓冲区的第三位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR ;取字形码
CPL A ;
MOV P0,A ;将第三个字形码送P0位(段口)
CLR LED3 ;开第三位显示器位口
LCALL DELAY ;延时5毫秒
SETB LED3 ;关闭第三位显示器
;-----------------------------------------------------------
MOV A,DISPBUF+3 ;取显示缓冲区的第四位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR ;取字形码
CPL A ;
MOV P0,A ;将第四个字形码送P0位(段口)
CLR LED4 ;开第四位显示器位口
LCALL DELAY ;延时5毫秒
SETB LED4 ;关闭第四位显示器
;-----------------------------------------------------------
MOV A,DISPBUF+4 ;取显示缓冲区的第五位
MOV DPTR ,#DISPTAB
MOVC A,@A+DPTR ;取字形码
CPL A
MOV P0,A ;将第五个字形码送P0位(段口)
CLR LED5 ;开第五位显示器位口
LCALL DELAY ;延时5毫秒
SETB LED5 ;关闭第五位显示器
;-----------------------------------------------------------
MOV A,DISPBUF+5 ;取显示缓冲区的第六位
MOV DPTR ,#DISPTAB
MOVC A,@A+DPTR ;取字形码
CPL A
MOV P0,A ;将第六个字形码送P0位(段口)
CLR LED6 ;开第六位显示器位口
LCALL DELAY ;延时5毫秒
SETB LED6 ;关闭第六位显示器
上一页 [1] [2] [3] 下一页
本文关键字:LED数码管 51单片机,单片机-工控设备 - 51单片机