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

📄 main.asm

📁 一个点阵LED屏动态扫描显示的控制程序
💻 ASM
字号:
INCLUDE "SUBDEF.ASM"


ORG  0000H
AJMP MAIN
ORG  0003H
AJMP NULINIT
;
ORG  000BH           ; 定时 器T0 中断
AJMP TIMINIT
;
ORG  0013H
AJMP NULINIT
ORG  001BH           ; 定时器T1 中断
AJMP NULINIT
ORG  0023H           ; 串行口 中断
AJMP COMINIT


ORG  0100H

MAIN:     MOV    SP,#068H
          MOV    P0,#00H
          MOV    P1,#0FFH
          MOV    P2,#00H
          SETB   P3.5
          SETB   P3.2
          SETB   P3.3
;
          MOV    SCON,#0D8H   ; 串行口 工作方式3
          MOV    PCON,#080H   ;        SMOD=1
          MOV    TMOD,#21H    ; 定时器T0 工作方式1   定时器T1工作方式2
;
          MOV    TL0,#018H    ; 定时器1ms 中断
          MOV    TH0,#0FCH
;
          MOV    TH1,#0FEH    ;
          MOV    TL1,#0FEH
;

          MOV    IE,#012H      ; 定时器T0   串行口 开中断
;
          MOV    PSW,#00H     ; 使用0组寄存器
;
          SETB   P3.0
          MOV    A,SBUF
;
          SETB   EA
          SETB   TR0                  ; 启动定时器T0
          SETB   TR1                  ; 启动定时器T1
          CLR    TXDCTR               ;  485接收允许
;
;
          LCALL  INIT_PRO
;
          LCALL  CLR_VIS        ; 清显示

          CLR    biFRMFS        ; 清闪烁
          MOV    yMSECH,#00H
          MOV    yMSECL,#00H
;
          MOV    50H,#05H
          MOV    51H,#00H
          MOV    52H,#000H
          MOV    53H,#24H
          MOV    54H,#080H
          MOV    55H,#081H
          CLR    C
          MOV    A,yCOMADR
          RRC    A
          INC    A
          MOV    B,#10
          DIV    AB
          MOV    56H,A
          MOV    57H,B
          LCALL  VIS_BUF    ; 显示50H~5AH字符



          CLR    LEDCLK
          LCALL  VIS_PLAY
;
;
PROSTR:   CLR    C
;
          LCALL  VIS_PLAY

;
          JNB    biCOMPRO,PROSTR1
          LCALL  COM_PRO
;
PROSTR1: 
          LJMP   PROSTR
;
;
;
;
;
;*************************************************
;     冗余中断
;*************************************************
NULINIT:  RETI
;
;
;
;*************************************************
;    TIMINIT  定时器T0  1ms中断
;  使用3组寄存器
;*************************************************
TIMINIT:  PUSH  ACC
          PUSH  PSW
          PUSH  DPL
          PUSH  DPH
;
          MOV    TL0,#018H    ; 定时器1ms 中断
          MOV    TH0,#0FCH
          CLR    C
;
;  1MS计时器+1
          INC    yMSECL
          MOV    A,yMSECL
          JNZ    TIMEND
          INC    yMSECH
TIMINIT0: 
;
TIMINIT1: JNB    biFRMFS,TIMEND
          MOV    A,yMSECH
          JNB    ACC.1,TIMINIT2
          JB     biFRMBK,TIMEND
          SETB   biFRMBK
          SJMP   TIMEND
TIMINIT2: JNB    biFRMBK,TIMEND
          CLR    biFRMBK
;
          CLR    C
          MOV    A,yFLSHDEL
          JZ     TIMINIT3
          DEC    A
          MOV    yFLSHDEL,A
          SJMP   TIMEND
;
TIMINIT3: CLR    biFRMFS
;
;
;
;
TIMEND:   POP    DPH
          POP    DPL
          POP    PSW
          POP    ACC
          RETI
;
;

;
;
;
;
;****************************************************************
;    INIT_PRO    初始化
;****************************************************************
INIT_PRO: CLR   C
;
          CLR   biFRMFS       ; 闪烁标志
          CLR   biFRMBK       ; 亮灭标志
;
          CLR   biEPROM       ; 读写E2PROM的A8地址位
          CLR   biRXDFLG      ; 485接收状态           =1 接收到帧头状态     =0 空
          CLR   biCOMPRO      ; 485接收等待处理状态   =1 接收等待处理停止接收 =0 可以接收
          CLR   biTXDFLG      ; 485数据帧发送状态     =1 数据帧发送状态  =0 空
          CLR   biINFFLG      ; 485发送状态           =1 有信息需发送    =0 无
          CLR   biWR2864      ; 写2864状态            =1 写2864等待状态 =0 空
          CLR   biF8FLG       ; 下传帧标志
          CLR   biVISFLG      ; 显示状态改变
          CLR   biSTOP
          CLR   biRXDDA       ; 接收数据标志

          CLR   biDYNA
          MOV   yDYNA,#00H
;
;
          MOV   yCOMADR,#01   ; 485通讯 本机地址
;
          MOV   yWR2864,#00H  ; 写2864的延时计数器
;
          MOV   yMSECH,#00H
          MOV   yMSECL,#00H
;
;
          MOV   yVALH,#00H    ; 显示分值高2位(BCD码)
          MOV   yVALL,#00H    ; 显示分值高2位(BCD码)
;
          MOV   yVISFLG,#00H  ; 显示状态
;
          MOV   yWRTBGH,#02H  ; 写2864起始高字
          MOV   yWRTBGL,#00H  ; 写2864起始低字

;
          CLR   C
          MOV   DPTR,#D_KEYRD
          MOVX  A,@DPTR
          ANL   A,#0FH
          JNZ   INIT_ADR1
          MOV   A,#49
INIT_ADR1:DEC   A
          RL    A
          INC   A
          MOV   yCOMADR,A
;
          RET
;
;
;
;
;
;****************************************************************
;  INTDELAY     ; 上电延时
;****************************************************************
INTDELAY:MOV    R7,#00H
INTDELA0:MOV    R6,#00H
INTDELA1:NOP
         DJNZ   R6,INTDELA1
         DJNZ   R7,INTDELA0
         RET
;
;****************************************************************
;  WRROM_DLY     ; 写2864延时
;****************************************************************
WRROM_DLY: MOV    R7,#010H
WRROM_DLY0:MOV    R6,#00H
WRROM_DLY1:NOP
           DJNZ   R6,WRROM_DLY1
           DJNZ   R7,WRROM_DLY0
           RET

;
INCLUDE "COMOK.ASM"
INCLUDE "TAB.ASM"

⌨️ 快捷键说明

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