七段数码管动态显示程序

  • 格式:doc
  • 大小:34.50 KB
  • 文档页数:6

七段数码管动态显示程序
2009-04-20 19:20:06| 分类:计算机阅读1288 评论1 字号:大中小订阅
; 七段数码管动态显示程序
; 四位数码管固定显示"1234"
;************************************************* ACC EQU [05H] ;定义专用寄存器ACC
TBLP EQU [07H] ;定义专用寄存器TBLP
PCL EQU [06H] ;定义专用寄存器PCL
PA EQU [12H] ;定义专用寄存器PA
PAC EQU [13H] ;定义专用寄存器PAC
PB EQU [14H] ;定义专用寄存器PB
PBC EQU [15H] ;定义专用寄存器PBC
PC EQU [16H] ;定义专用寄存器PC
PCC EQU [17H] ;定义专用寄存器PCC
DISP_RAM EQU [78H] ;查表得到显示代码DISP_RAM1 EQU [79H] ;数码管1显示内容寄存器DISP_RAM2 EQU [7AH] ;数码管2显示内容寄存器DISP_RAM3 EQU [7BH] ;数码管3显示内容寄存器DISP_RAM4 EQU [7CH] ;数码管4显示内容寄存器DISP_NUM1 EQU [7DH] ;每个数码管显示时延时寄存器DISP_NUM2 EQU [7EH] ;一次调用显示时延时寄存器
NUM1 EQU 20H ;每个LED显示时延时参数NUM2 EQU 30H ;一次调用显示时延时参数;----------------------------------------
ORG 000H
JMP START ;芯片上电,程序开始执行地址
ORG 004H
RETI ;外中断子程序开始地址
ORG 008H
RETI ;定时器0中断子程序开始地址
ORG 00CH
RETI ;定时器1中断子程序开始地址
ORG 020H
START:
MOV A,00H
MOV PAC,A ;设置PA口为输出口
MOV PCC,A ;设置PC口为输出口
SET PA ;PA口为高,关LED数码管
CLR PC ;PC口为低,关四个三极管
MAIN:
MOV A,01H
MOV DISP_RAM1,A ;数码管1显示"1"
MOV A,02H
MOV DISP_RAM2,A ;数码管2显示"2"
MOV A,03H
MOV DISP_RAM3,A ;数码管3显示"3"
MOV A,04H
MOV DISP_RAM4,A ;数码管4显示"4"
MAIN1:
CALL DISPLAY ;调显示子程序
JMP MAIN1 ;反复循环.
;*****************************************
; DISPLAY [DISP_RAM1]==> LED1 [DISP_RAM2]==> LED2 ; [DISP_RAM3]==> LED3 [DISP_RAM4]==> LED4
;*****************************************
DISPLAY PROC ;显示子程序
MOV A,NUM2
MOV DISP_NUM2,A ;四个数码管循环显示的次数.
LOOP:
MOV A,NUM1
MOV DISP_NUM1,A ;数码管1 显示的延时时间设置.
MOV A,04H
MOV PC,A ;PC.2=1,数码管1的VDD接通
MOV A,DISP_RAM1
MOV TBLP,A ;取显示值,放入查表的偏移量寄存器
TABRDL DISP_RAM ;查表,取显示代码
MOV A,DISP_RAM
MOV PA,A ;将显示代码输出到PA口
LOOP1:
DEC DISP_NUM1
SZ DISP_NUM1
JMP LOOP1 ;延时功能
SET PA ;关显示
CLR PC.2 ;PC.2=0,数码管1的VDD断开
MOV A,NUM1
MOV DISP_NUM1,A ;数码管2 显示的延时时间设置
MOV A,08H
MOV PC,A ;PC.3=1,数码管2的VDD接通
MOV A,DISP_RAM2
MOV TBLP,A ;取显示值,放入查表的偏移量寄存器TABRDL DISP_RAM ;查表,取显示代码
MOV A,DISP_RAM
MOV PA,A ;将显示代码输出到PA口
LOOP2:
DEC DISP_NUM1
SZ DISP_NUM1
JMP LOOP2 ;延时功能
SET PA ;关显示
CLR PC.3 ;PC.3=0,数码管2的VDD断开
MOV A,NUM1
MOV DISP_NUM1,A ;数码管3 显示的延时时间设置.
MOV A,10H
MOV PC,A ;PC.4=1,数码管3的VDD接通
MOV A,DISP_RAM3
MOV TBLP,A ;取显示值,放入查表的偏移量寄存器TABRDL DISP_RAM ;查表,取显示代码
MOV A,DISP_RAM
MOV PA,A ;将显示代码输出到PA口
LOOP3:
DEC DISP_NUM1
SZ DISP_NUM1
JMP LOOP3 ;延时功能
SET PA ;关显示
CLR PC.4 ;PC.4=0,数码管3的VDD断开
MOV A,NUM1
MOV DISP_NUM1,A ;数码管4 显示的延时时间设置.
MOV A,20H
MOV PC,A ;PC.5=1,数码管4的VDD接通
MOV A,DISP_RAM4
MOV TBLP,A ;取显示值,放入查表的偏移量寄存器
TABRDL DISP_RAM ;查表,取显示代码
MOV A,DISP_RAM
MOV PA,A ;将显示代码输出到PA口
LOOP4:
DEC DISP_NUM1
SZ DISP_NUM1
JMP LOOP4 ;延时功能
SET PA ;关显示
CLR PC.5 ;PC.5=0,数码管4的VDD断开
DEC DISP_NUM2 ;循环显示次数-1
SZ DISP_NUM2 ;判断循环结束否?
JMP LOOP ;没结束,跳去LOOP,继续循环
RET ;循环结束,子程序返回.
DISPLAY ENDP
;****************************************
; WORK1
;****************************************
WORK1 PROC ;WORK1功能模块,留给学习者自己加
RET
WORK1 ENDP
;****************************************
; WORK2
;****************************************
WORK2 PROC ;WORK2功能模块,留给学习者自己加
RET
WORK2 ENDP
;****************************************************************
; 表格区,0~9对应的显示代码.
;****************************************************************
ORG 0F00H
; 0 1 2 3 4 5 6 7 8 9 TABLE: DW 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;****************************************************************
END。