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

📄 hkbus16.asm

📁 多数位分频器.............................................可直接编译
💻 ASM
📖 第 1 页 / 共 5 页
字号:
      MOV SBUF,A
      clr c
      mov a,dpl
      subb a,#02
      mov dpl,a
      mov a,dph
      subb a,#0
      mov dph,a
      JNB TI,$
      CLR TI
   CLR P3.4
      DJNZ R4,RIGVn                   ;接收3个字节

      mov a,#01               ;所有数据接收完毕,返回LIST0开始显示
      lcall px                ;断开主板2,接通主板1显示
      NOP
      LCALL CDX

      LCALL W29C040      ;写628128的1区数据到29C040的1区

      mov 20h,#00h
      mov SCON,#0f0h
      SETB ES
      pop DPH
      pop DPL
      mov dptr,#list0
      push dpl
      push dph
      RETI

;------------------------------------------------------

RKEYPAD:LCALL REC
     MOV A,SBUF
     MOV @R0,A
     INC R0
     CJNE A,#0DH,RKEYPAD
     RET

;------------------------------------------------------

SENDOK:MOV R0,#30H
     MOV A,#'%'
     MOV @R0,A         ;IF OK 发送acknowledge to KEYPAD
     INC R0
     MOV B,A
     MOV A,#'0'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'0'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'F'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'E'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'A'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'E'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     LJMP CSUS

;------------------------------------------------------

SENDER:MOV R0,#30H
     MOV A,#'%'
     MOV @R0,A         ;IF error 发送acknowledge to KEYPAD
     INC R0
     MOV B,A
     MOV A,#'0'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'0'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'F'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'E'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'e'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     LJMP CSUS

;------------------------------------------------------

SENDTE:MOV R0,#30H     ;TEST ACK
     MOV A,#'%'
     MOV @R0,A
     INC R0
     MOV B,A
     MOV A,#'0'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'0'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'F'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'E'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'A'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,#'S'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A
     MOV A,R4      ;#'1'OR#'2'
     MOV @R0,A
     INC R0
     ADD A,B
     MOV B,A

CSUS:ANL A,#0F0H       ;CHECK SUM
     SWAP A
     CJNE A,#10,CSUS1
CSUS1:JC CSUS2
     ADD A,#07H
CSUS2:ADD A,#30H
     MOV @R0,A
     INC R0
     MOV A,B
     ANL A,#0FH
     CJNE A,#10,CSUS3
CSUS3:JC CSUS4
     ADD A,#07H
CSUS4:ADD A,#30H
     MOV @R0,A
     INC R0
     MOV A,#0DH
     MOV @R0,A

     MOV R1,#0FFH        ;延时
     DJNZ R1,$
     DJNZ R1,$

     SETB P3.4             ;发控制端置为发送

     MOV R1,#0FFH        ;延时
     DJNZ R1,$

     MOV R0,#30H
OUTES:MOV A,@R0
     INC R0
     MOV SBUF,A
     JNB TI,$
     CLR TI
     CJNE A,#0DH,OUTES
     CLR P3.4
     RET

;------------------------------------------------------

TEST:MOV A,#01
     LCALL PX
     MOV DPTR,#0F000H
     MOV R5,#VER
TEST1:MOV R4,#HOR
TEST2:MOV A,R1
     MOVX @DPTR,A
     INC DPTR
     DJNZ R4,TEST2
     DJNZ R5,TEST1

     MOV R7,#01
     MOV 40H,#00H       ;某幕的起始地址41H,40H
     MOV 41H,#0F0H
     LCALL CDX1

     MOV 73H,#01          ;亮度等级参数73H
     LCALL ZHUZ71         ;HOR-HOR/10*73H==>74H

     MOV R4,#01
TEST3:MOV R5,#0FFH
TEST4:LCALL DISS
     DJNZ R5,TEST4
     DJNZ R4,TEST3
     RET

;------------------------------------------------------

TESV:MOV A,#01
     LCALL PX
     MOV DPTR,#0F000H
     MOV R5,#VER
TESV1:MOV R4,#HOR
     CPL 0FH
     MOV A,#0
     JB 0FH,TESV2
     MOV A,#0FFH
TESV2:MOVX @DPTR,A
     INC DPTR
     DJNZ R4,TESV2
     DJNZ R5,TESV1

     MOV R7,#01
     MOV 40H,#00H       ;某幕的起始地址41H,40H
     MOV 41H,#0F0H
     LCALL CDX1

     MOV 73H,#01          ;亮度等级参数73H
     LCALL ZHUZ71         ;HOR-HOR/10*73H==>74H

     MOV R4,#01
TESV3:MOV R5,#0FFH
TESV4:LCALL DISS
     DJNZ R5,TESV4
     DJNZ R4,TESV3
     RET

;------------------------------------------------------

CHECKA:CLR C
      CJNE A,#10,CHECK1      ;限制A为0-9
CHECK1:JC CHECK2
      MOV A,#0
CHECK2:RET

;--------------------------

CDX:                 ;入口参数:R7总幕数
      MOV 40H,#00H       ;某幕的起始地址41H,40H
      MOV 41H,#00H
CDX1: LCALL RESORT
      LCALL CHANGD      ;转换数据为1/8扫描方式
      MOV 40H,44H
      MOV 41H,45H
      DJNZ R7,CDX1
      RET

;--------

RESORT:
      MOV 45H,#0C0H         ;整理后放的缓冲区的起始地址45H,44H=C000H
      MOV 44H,#00H
      MOV R5,#VER                  ;R5中存放图文屏共有几行
RESORT1:
      MOV A,R5
      DEC A
      MOV B,#HOR
      MUL AB
      ADD A,40H
      MOV 42H,A
      MOV A,B
      ADDC A,41H
      MOV 43H,A

      MOV R4,#HOR                  ;R4中存放图文屏一行有几字节
RESORT2:MOV A,#01H
      LCALL PX
      MOV DPL,42H
      MOV DPH,43H
      MOVX A,@DPTR
      MOV B,A
      INC DPTR
      MOV 42H,DPL
      MOV 43H,DPH
      MOV A,#0
      LCALL PX
      MOV DPL,44H
      MOV DPH,45H
      MOV A,B
      MOVX @DPTR,A
      INC DPTR
      MOV 44H,DPL
      MOV 45H,DPH
      DJNZ R4,RESORT2
      DJNZ R5,RESORT1
      RET

;------------

CHANGD:           ;转换数据为1/8扫描方式
      MOV A,#TIAO
      RL A
      DEC A
      MOV R5,A

      MOV A,#HOR
      MOV B,#08
      MUL AB
      MOV 3EH,A
      MOV 3FH,B           ;1/8扫描块的总字节数3FH,3EH

      MOV 30H,#00H        ;起始地址C000HH放31H,30H
      MOV 31H,#0C0H
      MOV R0,#30H
      MOV R1,#32H

CHANG1:MOV A,@R0          ;从30H,31H开始放每个1/8扫描块的起始地址
      ADD A,3EH
      MOV @R1,A
      INC R0
      INC R1
      MOV A,@R0
      ADDC A,3FH
      MOV @R1,A
      INC R0
      INC R1
      DJNZ R5,CHANG1


      MOV 43H,41H         ;整理后放的显示缓冲区的起始地址43H,42H
      MOV 42H,40H
      MOV A,42H
      ADD A,#SUM1           ;一幕的最终地址45H,44H
      MOV 44H,A
      MOV A,43H
      ADDC A,#SUM2
      MOV 45H,A

CHANG2:MOV A,#TIAO
      RL A
      MOV R5,A
      MOV R0,#30H

CHANG3:MOV A,#0
      LCALL PX
      MOV A,@R0
      MOV DPL,A
      INC R0
      MOV A,@R0
      MOV DPH,A
      MOVX A,@DPTR
      MOV B,A          ;取出数据暂放B
      INC DPTR         ;指针加1,保存
      DEC R0
      MOV A,DPL
      MOV @R0,A
      INC R0
      MOV A,DPH
      MOV @R0,A
      INC R0
      MOV A,#01
      LCALL PX
      MOV DPL,42H
      MOV DPH,43H
      MOV A,B
      MOVX @DPTR,A
      INC DPTR
      MOV 42H,DPL
      MOV 43H,DPH
      DJNZ R5,CHANG3
      MOV A,DPL
      CJNE A,44H,CHANG2
      MOV A,DPH
      CJNE A,45H,CHANG2
      RET

;--------------------------

DELAY: mov r2,#15        ;延时一段时间
delay0:mov r0,#0ffh
delay1:mov r1,#0ffh
       djnz r1,$
       djnz r0,delay1
       djnz r2,delay0
       RET

;- - - - - - - - - - - - - - - - - - - - - - - - - - -
;以下为时间显示子程序

;********************************

DATE:MOV A,#00H
     LCALL PX

XIAN: LCALL AMP

      MOV 6AH,#00H
      MOV 6BH,#00H

;------------------------------------------------------------

DDEL:NOP                 ;立即显示方式
    CLR P1.4
    CLR P1.5
    CLR P1.6
    CLR P1.7

    MOV 68H,6AH                ;(69H,68H)中存放第一个条屏显示内容的起始地址
    MOV 69H,6BH
    MOV 72H,#00H            ;72H中存放显示一个条屏的第几行
    MOV 73H,#00H            ;73H中存放要显示的时间.
    MOV 74H,#00H
LLOPZZ:
    MOV DPL,69H        ;把要显示的条屏的内容的首址送DPTR.
    MOV DPH,68H

LOOPZ:
      CLR P1.0               ;P1.1,P1.0两端口选择4个条屏.
      CLR P1.1
     MOV A,#HOR
     RR A                   ;把一行有几字送R2.
     MOV R2,a
ULOOP:MOVX A,@DPTR
     MOV SBUF,A
     INC DPTR
     MOVX A,@DPTR          ;显示内容的数据和时钟由P3.0和P3.1送出.
     JNB TI,$
     CLR TI
     MOV SBUF,A
     INC DPTR
     JNB TI,$
     CLR TI
     DJNZ R2,ULOOP

     CLR P1.0
     SETB P1.1
     MOV R2,#HOR
     MOV A,#0
CRQ1:MOV SBUF,A
     JNB TI,$
     CLR TI
     DJNZ R2,CRQ1

     CLR P1.1
     SETB P1.0
     MOV R2,#HOR
     MOV A,#0
CRQ2:MOV SBUF,A
     JNB TI,$
     CLR TI
     DJNZ R2,CRQ2

     SETB P1.0
     SETB P1.1
     MOV R2,#HOR
     MOV A,#0
CRQ3:MOV SBUF,A
     JNB TI,$
     CLR TI
     DJNZ R2,CRQ3

mov r2,#30
DJNZ R2,$

SETB P3.3            ;关显示
MOV A,P1
CLR C
SUBB A,#10H
mov c,acc.7
mov p1.7,c
mov c,acc.6
mov p1.6,c
mov c,acc.5
mov p1.5,c
mov c,acc.4
mov p1.4,c            ;行选
mov r2,#30
DJNZ R2,$
CLR P3.3              ;开显示
INC 72H
MOV A,72H
CJNE A,#10H,BDA9      ;判是否一屏显示完成
MOV 72H,#0H

INC 73H
MOV A,73H
CJNE A,#200,BDA99      ;判显示时间到否?到则该子程序完成,返回.否则,继续显示.
mov 73h,#00h
INC 74H
MOV A,74H
CJNE A,#04,BDA99
MOV A,#01
LCALL PX
RET

BDA99:LJMP LLOPZZ
BDA9:LJMP LOOPZ

;------------------------------------------------------------

R1287:MOV A,#04H
     LCALL PX
     MOV DPTR,#7F0AH
     MOVX A,@DPTR
     JBC ACC.7,R1287
MOV DPTR,#7F80H
MOVX A,@DPTR
MOV 78H,A               ;秒
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV 7FH,A               ;分
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV 7EH,A              ;时
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV 7DH,A             ;星期
INC DPTR
MOVX A,@DPTR
MOV 7CH,A              ;日
INC DPTR
MOVX A,@DPTR
MOV 7BH,A             ;月
INC DPTR
MOVX A,@DPTR
MOV 7AH,A             ;年低
CLR C
CJNE A,#98H,R12K
R12K:JC R12L
MOV 79H,#19H
LJMP R122
R12L:MOV 79H,#20H          ;年高
R122:MOV DPTR,#7F0CH

⌨️ 快捷键说明

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