⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 waixian.asm

📁 3位数码管费额显示屏的完整程序。(实际使用版)原理图很简单
💻 ASM
字号:
;费额显示屏程序
L_CLK1  BIT P3.2         ;金额个位
L_CLK2  BIT P3.3         ;金额十位
L_CLK3  BIT P3.4         ;金额百位
L_CLK4  BIT P3.5         ;车型
L_CLR   BIT P3.7
C_SHOW  EQU 4FH          ;定显标志
C_FLASH EQU 4EH          ;闪烁标志
C_FLA1  EQU 4DH          ;闪烁标志1
C_FLA2  EQU 4CH          ;闪烁标志2


       ORG   0000H
       LJMP  START
       ORG   000BH      ;定时中断入口
       LJMP  TISEV
       ORG   0023H      ;串口通讯中断入口
       LJMP  TXSEV
       ORG   0100H      ;主程序
START: NOP
       NOP
       MOV   SP,#50H
       LCALL TEST       ;调用自检子程序
       CLR   C_SHOW

       CLR   C_FLASH
       CLR   C_FLA1
       CLR   C_FLA2
       MOV   TMOD,#01H  ;T0工作方式一
       MOV   TH0,#0D8H  ;定时器初值(10MS)
       MOV   TL0,#0F0H
       SETB  EA         ;CPU开中断
       SETB  ET0        ;允许T0中断
       MOV   SCON,#070H ;串口工作方式1
       MOV   TMOD,#21H ;T1工作方式二
       MOV   TH1,#0F3H  ;波特率2400
       MOV   TL1,#0F3H
       MOV   A,PCON
       CLR   ACC.7
       MOV   PCON,A
       MOV   R0,#30H    ;接收缓冲区首地址
       MOV   R7,#00H    ;接收字节数
       SETB  PS         ;设置串口中断为高优先级
       CLR   PT0        ;T0中断为低优先级
       SETB  TCON.6     ;启动定时器T1
       SETB  ES         ;允许串口中断
       SETB  TR0
;
MAIN:  NOP
       AJMP  MAIN
;================自检子程序======================
TEST:  CLR   L_CLR   ;
       LCALL DL
       SETB  L_CLR
       LCALL BLACK
       RET
DL:    MOV   R6,#05H  ;延时子程序
DL1:   MOV   R5,#0FFH
DL2:   MOV   R4,#0FFH
DL3:   DJNZ  R4,DL3
       DJNZ  R5,DL2
       DJNZ  R6,DL1
       RET
;===============定时中断服务子程序===============
TISEV: PUSH  ACC
       PUSH  DPL
       PUSH  DPH
       PUSH  PSW
       MOV   TH0,#0D8H  ;定时器初值(10MS)
       MOV   TL0,#0F0H
       JB    C_FLASH,TTF ;是闪烁就跳转
       JB    C_SHOW,TTS  ;是定显就跳转
       AJMP  TT1
TTS:   DJNZ  40H,TT1
       MOV   40H,#500
       CLR   C_SHOW     ;清除定显标志
       LCALL BLACK      ;调用黑屏子程序
       AJMP  TT1
TTF:   DJNZ  41H,TT1
       MOV   41H,#100
       JB    C_FLA1,TTA
       JB    C_FLA2,TTB
       AJMP  TT1
TTB:   CLR   C_FLA2
       SETB  C_FLA1
       LCALL BLACK
       AJMP  TT1
TTA:   CLR   C_FLA1
       SETB  C_FLA2
       LCALL SHOW
TT1:   POP   PSW
       POP   DPH
       POP   DPL
       POP   ACC
       RETI
;=================黑屏子程序=====================
BLACK: CLR   L_CLK1
       CLR   L_CLK2
       CLR   L_CLK3
       CLR   L_CLK4
       MOV   A,#0FFH
       MOV   P1,A
       SETB  L_CLK1
       SETB  L_CLK2
       SETB  L_CLK3
       SETB  L_CLK4
       RET
;=============串口通讯中断服务子程序=============
TXSEV: PUSH  ACC
       PUSH  DPL
       PUSH  DPH
       PUSH  PSW
       JB    SCON.0,JIE   ;监测是否接收中断
       CLR   SCON.1       ;清除发送中断标志
       AJMP  ENDT         ;中断返回
JIE:   CLR   SCON.0       ;清除接收中断标志
       MOV   A,SBUF       ;接收数据
       CJNE  A,#0A0H,JIE1  ;不是A0则转JIE1
       MOV   R0,#30H
       AJMP  ENDT
JIE1:  CJNE  A,#0A1H,JIE2  ;不是A1则转JIE2
       SETB  C_SHOW       ;接收确认,定显5S
       CLR   C_FLASH
       CLR   C_FLA1
       CLR   C_FLA2
       LCALL SHOW
       MOV   40H,#500
       AJMP  ENDT
JIE2:  MOV   @R0,A        ;接收数据
       MOV   A,#0A2H
       MOV   SBUF,A
       INC   R0
       INC   R7
       CJNE  R7,#03H,ENDT
       MOV   R7,#00H
       MOV   R0,#30H
       SETB  C_FLASH      ;设置闪烁标志
       SETB  C_FLA1
       CLR   C_FLA2
       MOV   41H,#100
ENDT:  POP   PSW
       POP   DPH
       POP   DPL
       POP   ACC
       RETI
;=============================================
;将BCD码转换为7段码并放到35-38中
;入口:压缩BCD码在30,31,32中
BCDT:  MOV   DPTR,#TAB
       MOV   A,30H        ;BCD码转换子程序
       ANL   A,#0FH
       MOVC  A,@A+DPTR
       MOV   35H,A        ;车型LED4
       MOV   A,31H
       ANL   A,#0FH
       CJNE  A,#00H,ANO
       MOV   36H,#0FFH
       AJMP  ANO1
ANO:   MOVC  A,@A+DPTR
       MOV   36H,A        ;金额百位LED3
ANO1:  MOV   A,32H
       ANL   A,#0FH
       MOVC  A,@A+DPTR
       MOV   38H,A        ;金额个位LED1
       MOV   A,32H
       SWAP  A
       ANL   A,#0FH
       CJNE  A,#00H,ANO2
       MOV   A,36H
       CJNE  A,#0FFH,ANO4
       MOV   37H,#0FFH
       AJMP  ANO3
ANO4:  MOV   37H,#11H
       AJMP  ANO3
ANO2:  MOVC  A,@A+DPTR
       MOV   37H,A        ;金额十位LED2
ANO3:  RET
;七段码表
TAB:   DB    11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H,00H,00H,00H,00H,00H,00H
;===================显示子程序===================
SHOW:  LCALL BCDT
       MOV   A,35H
       CJNE  A,#00H,S_1
       AJMP  S_T
S_1:   MOV   A,36H
       CJNE  A,#00H,S_2
       AJMP  S_T
S_2:   MOV   A,37H
       CJNE  A,#00H,S_3
       AJMP  S_T
S_3:   MOV   A,38H
       CJNE  A,#00H,S_4
       AJMP  S_T              
S_4:   CLR   L_CLK4
       CLR   L_CLK3
       CLR   L_CLK2
       CLR   L_CLK1
       MOV   A,35H
       MOV   P1,A
       SETB  L_CLK4
       MOV   A,36H
       MOV   P1,A
       SETB  L_CLK3
       MOV   A,37H
       MOV   P1,A
       SETB  L_CLK2
       MOV   A,38H
       MOV   P1,A
       SETB  L_CLK1
S_T:   RET
       END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -