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

📄 实验1-缺联机.asm

📁 红外抄表器.rar
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        MOV     CODE,#06H       ;抄
        LCALL   CCW_PR
        MOV     O_YL,#00H
        MOV     O_XL,#38H
        MOV     CODE,#07H       ;表
        LCALL   CCW_PR
        MOV     O_YL,#00H
        MOV     O_XL,#48H
        MOV     CODE,#08H       ;系
        LCALL   CCW_PR
        MOV     O_YL,#00H
        MOV     O_XL,#58H
        MOV     CODE,#09H       ;统
        LCALL   CCW_PR
        RET



;############显示汉字"机号"子程序-DISJH ##########
;入口参数:无
;出口参数:无
;调用子程序:16乘16点阵字中文写入子程序-CNW_PR
;################################################

DISJH:  MOV O_YL,#02H
        MOV O_XL,#00H
        MOV CODE,#1DH
        LCALL CCW_PR      ;"机"
        MOV O_YL,#02H
        MOV O_XL,#10H
        MOV CODE,#18H
        LCALL CCW_PR      ;"号"
        RET







;###########8*16点阵字符写入程序-CNW_PR #################
; 程序参数选择:PARA1        PARA1   EQU 3DH  ;液晶模块参数 MGLS12232   用于判断在左半边显示还是在右半边显示
; 占用内部资源:O_XL,O_YL,CODE,COUNT1,A,DPTR
; 入口参数:列地址:O_XL,页地址的D0,D1: O_YL,字符字库偏移量:CODE
; 出口参数: 无
; 内部调用子程序:
;     1. 写指令代码子程序(左屏E1)PR1
;     2. 写显示数据子程序(左屏E1)PR2
;     3. 写指令代码子程序(右屏E2)PR4
;     4. 写显示数据子程序(右屏E2)PR5
; 连接字库:CCTAB
;###########################################################

        CCW_PR: MOV     DPTR,#CCTAB     ;确定汉字字符字模块首地址
                MOV     A,CODE          ;取代码
                MOV     B,#20H          ;字模块宽度为32个字节
                MUL     AB              ;代码x32
                ADD     A,DPL           ;字符字模块首地址
                MOV     DPL,A           ;=字模库首地址+代码x32
                MOV     A,B
                ADDC    A,DPH
                MOV     DPH,A
                PUSH    O_XL		;列地址入栈
                PUSH    O_XL		;列地址入栈
                MOV     CODE,#00H	;代码寄存器借用为间址寄存器
        CCW_1:  MOV     COUNT1,#10H	;计数器设置为16
                MOV     A,O_YL		;读页地址寄存器
                ANL     A,#03H
                ORL     A,#0B8H		;"或"页地址设置代码
                MOV     COM,A		;写页地址设置指令
                LCALL   PR1
                LCALL   PR4
                POP     O_XL		;取列地址值
                MOV     A,O_XL	        ;读列地址寄存器
                CLR     C
                SUBB    A,#PARA1        ;列地址-模块参数
                JC      CCW_2           ;〈0为左半屏显示区域(E1)
                MOV     O_XL,A          ;≥0为右半屏显示区域(E2)
                MOV     A,O_YL
                SETB    ACC.3           ;设置区域标志位.
                MOV     O_YL,A          ;"0"为E1,"1"为E2
        CCW_2:  MOV     COM,O_XL        ;设置列地址值
                MOV     A,O_YL          ;判区域标志以确定设置哪个控制器
                JNB     ACC.3,CCW_3
                LCALL   PR4		;区域E2
                LJMP    CCW_4
        CCW_3:  LCALL   PR1		;区域E1
        CCW_4:  MOV     A,CODE		;取间址寄存器值
                MOVC    A,@A+DPTR	;取汉字字模数据
                MOV     DAT1,A		;写数据
                MOV     A,O_YL
                JNB     ACC.3,CCW_5
                LCALL   PR5		;区域E2
                LJMP    CCW_6
        CCW_5:  LCALL   PR2		;区域E1
        CCW_6:  INC     CODE		;间址寄存器加1
                INC     O_XL		;列地址寄存器加1
                MOV     A,O_XL	        ;判列地址是否超出区域范围
                CJNE    A,#PARA1,CCW_7
        CCW_7:  JC      CCW_8           ;未超出则继续
                MOV     A,O_YL          ;超出则判是否在区域E2
                JB      ACC.3,CCW_8     ;在区域E2则退出
                SETB    ACC.3           ;在区域E1则修改成区域E2
                MOV     O_YL,A
                MOV     COM,#00H	;设置区域E2列地址为"0"
                LCALL   PR4
        CCW_8:  DJNZ    COUNT1,CCW_4	;当页循环
                MOV     A,O_YL          ;读页地址寄存器
                JB      ACC.7,CCW_9     ;判完成标志D7位, "1"则完成退出
                INC     A		;否则页地址加1
                SETB    ACC.7		;置完成位为"1"
                CLR     ACC.3
                MOV     O_YL,A
                MOV     CODE,#10H	;间址寄存器设置为16
                LJMP    CCW_1		;大循环
        CCW_9:  RET

;==============================================================
; 中文字符库
CCTAB:
;莱   CCFF2  00H
      DB 000H,004H,024H,0E4H,024H,03FH,024H,0F4H
      DB 024H,024H,03FH,0E4H,024H,024H,004H,000H
      DB 002H,082H,022H,012H,00BH,006H,002H,0FFH
      DB 002H,006H,00BH,012H,022H,042H,082H,082H

;芜   CD1F4  01H
      DB 004H,004H,004H,024H,02FH,0E4H,024H,024H
      DB 024H,02FH,024H,024H,004H,004H,004H,004H
      DB 000H,081H,041H,021H,011H,009H,007H,001H
      DB 03FH,041H,041H,041H,041H,079H,001H,000H

;双   CB5E7  02H
        DB 000H,012H,022H,042H,082H,002H,0FEH,000H
        DB 000H,012H,022H,0C2H,082H,002H,0FEH,000H
        DB 020H,010H,008H,004H,002H,001H,002H,004H
        DB 028H,010H,008H,004H,003H,00DH,010H,020H

;威   CD7D3  03H
      DB 000H,000H,0F8H,028H,0E8H,028H,028H,028H
      DB 008H,0FFH,00AH,00CH,008H,0C0H,000H,000H
      DB 040H,030H,00FH,041H,027H,019H,019H,027H
      DB 000H,011H,00AH,004H,00AH,011H,020H,018H

;红   CBAEC  04H
        DB 020H,030H,02CH,0A3H,060H,018H,000H,008H
        DB 008H,008H,0F8H,008H,008H,00CH,008H,000H
        DB 022H,066H,023H,012H,012H,052H,040H,040H
        DB 040H,040H,07FH,040H,040H,060H,040H,000H

;外   CCDE2  05H
        DB 080H,040H,020H,058H,087H,004H,0C4H,03CH
        DB 000H,000H,0FFH,020H,040H,080H,000H,000H
        DB 040H,020H,010H,008H,005H,003H,000H,000H
        DB 000H,000H,0FFH,000H,000H,000H,003H,000H

;抄   CB3AD  06H
        DB 008H,008H,008H,0FFH,088H,048H,080H,040H
        DB 030H,000H,0FFH,000H,010H,0A0H,060H,000H
        DB 002H,042H,081H,07FH,000H,040H,040H,020H
        DB 020H,011H,00BH,004H,002H,001H,000H,000H

;表   CB1ED  07H
        DB 000H,040H,044H,054H,054H,054H,0D4H,0FFH
        DB 054H,054H,054H,054H,054H,044H,040H,000H
        DB 008H,008H,004H,004H,0FEH,043H,021H,010H
        DB 003H,004H,008H,014H,023H,062H,020H,000H

;系   CCFB5  08H
        DB 000H,000H,002H,022H,0B2H,0AAH,066H,062H
        DB 022H,011H,04DH,081H,001H,001H,000H,000H
        DB 000H,040H,021H,013H,009H,005H,041H,081H
        DB 07FH,001H,005H,009H,013H,062H,000H,000H

;统   CCDB3  09H
        DB 020H,030H,02CH,0A3H,060H,010H,084H,0C4H
        DB 0A4H,09DH,086H,084H,0A4H,0C4H,084H,000H
        DB 020H,022H,023H,012H,012H,092H,040H,030H
        DB 00FH,000H,000H,03FH,040H,041H,070H,000H

;正   CD5FD  0AH
        DB 000H,002H,002H,0C2H,002H,002H,002H,002H
        DB 0FEH,082H,082H,082H,082H,082H,002H,000H
        DB 020H,020H,020H,03FH,020H,020H,020H,020H
        DB 03FH,020H,020H,020H,020H,020H,020H,000H

;在   CD4DA  0BH
        DB 000H,004H,004H,0C4H,064H,09CH,087H,084H
        DB 084H,0E4H,084H,084H,084H,084H,004H,000H
        DB 004H,002H,001H,07FH,000H,020H,020H,020H
        DB 020H,03FH,020H,020H,020H,020H,020H,000H

;请   CC7EB  0CH
        DB 040H,042H,04CH,0C4H,000H,022H,0AAH,0AAH
        DB 0AAH,0BFH,0AAH,0AAH,0AAH,022H,020H,000H
        DB 000H,000H,000H,07FH,020H,010H,0FFH,00AH
        DB 00AH,00AH,04AH,08AH,07FH,000H,000H,000H

;稍   CC9D4  0DH
        DB 000H,012H,092H,072H,0FFH,051H,081H,0F2H
        DB 09CH,090H,09FH,090H,098H,0F4H,002H,000H
        DB 008H,006H,001H,000H,0FFH,000H,000H,0FFH
        DB 004H,004H,004H,044H,084H,07FH,000H,000H

;侯   CBAEE  0EH
        DB 040H,020H,0F8H,007H,012H,010H,0F2H,052H
        DB 052H,0D2H,052H,05EH,050H,050H,010H,000H
        DB 000H,000H,0FFH,000H,082H,043H,022H,012H
        DB 00AH,007H,01AH,022H,062H,0C2H,042H,000H

;成   CB3C9  0FH
        DB 000H,000H,0F8H,048H,048H,048H,0C8H,008H
        DB 0FFH,008H,009H,00AH,0C8H,088H,008H,000H
        DB 040H,030H,00FH,000H,008H,050H,04FH,020H
        DB 010H,00BH,00CH,012H,021H,040H,0F0H,000H

;功   CB9A6  10H
        DB 000H,004H,004H,004H,0FCH,004H,014H,014H
        DB 010H,090H,07FH,010H,010H,0F0H,000H,000H
        DB 004H,00CH,004H,004H,003H,042H,022H,011H
        DB 00CH,023H,020H,060H,020H,01FH,000H,000H

;失   CCAA7  11H
        DB 000H,040H,020H,018H,016H,010H,010H,0FFH
        DB 010H,010H,010H,010H,010H,000H,000H,000H
        DB 000H,001H,081H,041H,021H,011H,00DH,003H
        DB 005H,009H,031H,061H,0C1H,041H,001H,000H

;败   CB0DC  12H
        DB 000H,000H,0FEH,002H,0F2H,002H,0FEH,020H
        DB 0F8H,017H,012H,010H,0F0H,010H,010H,000H
        DB 000H,040H,031H,00CH,003H,004H,0B9H,050H
        DB 020H,013H,00CH,013H,060H,0C0H,040H,000H

;设   CB4F2  13H
        DB 020H,022H,024H,028H,020H,000H,040H,020H
        DB 0DCH,044H,044H,044H,05CH,0E0H,020H,020H
        DB 000H,000H,000H,000H,07FH,020H,050H,040H
        DB 021H,016H,080H,080H,016H,021H,040H,040H

;置   CD3A1  14H
        DB 000H,020H,02FH,0A9H,0AFH,0AFH,0E9H,0B9H
        DB 0A9H,0AFH,0A9H,0A9H,02FH,020H,000H,000H
        DB 080H,080H,080H,0FFH,0AAH,0AAH,0AAH,0AAH
        DB 0AAH,0AAH,0AAH,0FFH,080H,080H,080H,000H

;完   CCDEA  15H
        DB 000H,090H,08CH,0A4H,0A4H,0A4H,0A5H,0A6H
        DB 0A4H,0A4H,0A4H,0A4H,094H,08CH,004H,000H
        DB 000H,080H,040H,020H,018H,007H,000H,000H
        DB 000H,03FH,040H,040H,040H,070H,000H,000H

;联   CC1AA  16H
        DB 002H,0FEH,092H,092H,092H,0FEH,012H,011H
        DB 012H,01CH,0F0H,018H,017H,012H,010H,000H
        DB 008H,01FH,008H,008H,004H,0FFH,005H,081H
        DB 041H,031H,00FH,011H,021H,0C1H,041H,000H

;户   CBBA7  17H
        DB 000H,000H,000H,0F8H,088H,088H,088H,089H
        DB 08AH,08EH,088H,088H,088H,0F8H,000H,000H
        DB 080H,040H,030H,00FH,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H

;号   CBAC5  18H
        DB 040H,040H,040H,05FH,0D1H,051H,051H,051H
        DB 051H,051H,051H,05FH,040H,040H,040H,000H
        DB 000H,000H,000H,002H,007H,002H,002H,022H
        DB 042H,082H,042H,03EH,000H,000H,000H,000H

;用   CD3C3  19H
        DB 000H,000H,000H,0FEH,022H,022H,022H,022H
        DB 0FEH,022H,022H,022H,022H,0FEH,000H,000H
        DB 080H,040H,030H,00FH,002H,002H,002H,002H
        DB 0FFH,002H,002H,042H,082H,07FH,000H,000H

;量   CC1BF  1AH
        DB 040H,040H,040H,0DFH,055H,055H,055H,0D5H
        DB 055H,055H,055H,0DFH,040H,040H,040H,000H
        DB 040H,040H,040H,057H,055H,055H,055H,07FH
        DB 055H,055H,055H,057H,050H,040H,040H,000H

;查   CB2E9  1BH
        DB 080H,088H,048H,0C8H,0A8H,098H,088H,0FFH
        DB 088H,098H,0A8H,0A8H,048H,0C8H,048H,000H
        DB 000H,040H,040H,05FH,052H,052H,052H,052H
        DB 052H,052H,052H,05FH,040H,040H,040H,000H

;询   CD1AF  1CH
        DB 040H,042H,0CCH,004H,000H,010H,0E8H,027H
        DB 024H,024H,0E4H,004H,004H,0FCH,000H,000H
        DB 000H,000H,07FH,020H,010H,000H,01FH,009H
        DB 009H,009H,01FH,040H,080H,07FH,000H,000H

;机          1DH
        DB 008H,008H,0C8H,0FFH,048H,088H,008H,000H
        DB 0FEH,002H,002H,002H,0FEH,000H,000H,000H
        DB 004H,003H,000H,0FFH,000H,041H,030H,00CH
        DB 003H,000H,000H,000H,03FH,040H,078H,000H

;==============================================================




;########显示机号子程序-DISJIHAO #################
;入口参数:无
;出口参数:无
;需调用子程序:8*16点阵字符写入子程序-CNW_PR
;##############################################

DISJIHAO:
        nop
		 nop
        MOV A,JIHAOH
        SWAP A
        ANL A,#0FH     	;保留高4位
        MOV KINBUF,A      ;暂存
        MOV A,JIHAOH
        ANL A,#0FH        ;保留低4位
        MOV KINBUF+1,A    ;暂存
        MOV A,JIHAOL
        SWAP A
        ANL A,#0FH			;保留高4位
        MOV KINBUF+2,A	;暂存
        MOV A,JIHAOL
        ANL A,#0FH			;保留低4位
        MOV KINBUF+3,A	;暂存
        ;LCALL CALNUM
        MOV O_YL,#02H
        MOV O_XL,#20H
        MOV CODE,KINBUF
        LCALL CNW_PR
        MOV O_YL,#02H
        MOV O_XL,#28H
        MOV CODE,KINBUF+1
        LCALL CNW_PR
        MOV O_YL,#02H
        MOV O_XL,#30H
        MOV CODE,KINBUF+2
        LCALL CNW_PR      ;显示机号
        MOV O_YL,#02H
        MOV O_XL,#38H
        MOV CODE,KINBUF+3
        LCALL CNW_PR
EDISJH: RET




;###########8*16点阵字符写入程序-CNW_PR #################
; 程序参数选择:PARA1        PARA1   EQU 3DH  ;液晶模块参数 MGLS12232   用于判断在左半边显示还是在右半边显示
; 占用内部资源:O_XL,O_YL,CODE,COUNT1,A,DPTR
; 入口参数:列地址:O_XL,页地址的D0,D1: O_YL,字符字库偏移量:CODE
; 出口参数: 无
; 内部调用子程序:
;     1. 写指令代码子程序(左屏E1)PR1
;     2. 写显示数据子程序(左屏E1)PR2
;     3. 写指令代码子程序(右屏E2)PR4
;     4. 写显示数据子程序(右屏E2)PR5
; 连接字库:CCTAB
;###########################################################

        CNW_PR: MOV     DPTR,#CNTAB     ;确定数字字符字模块首地址
                MOV     A,CODE          ;取代码
                MOV     B,#10H          ;字模块宽度为16个字节
                MUL     AB              ;代码x16        乘除指令会自动清进位C
                ADD     A,DPL           ;字符字模块首地址
                MOV     DPL,A           ;=字模库首地址+代码x16
                MOV     A,B
                ADDC    A,DPH
                MOV     DPH,A
                PUSH    O_XL		   ;列地址入栈
                PUSH    O_XL		   ;列地址入栈
                MOV     CODE,#00H	;代码寄存器借用为间址寄存器
        CNW_1:  MOV     COUNT1,#08H	;计数器设置为8
                MOV     A,O_YL		;读页地址寄存器
                ANL     A,#03H
                ORL     A,#0B8H		;"或"页地址设置代码
                MOV     COM,A		;写页地址设置指令
                LCALL   PR1
                LCALL   PR4
                POP     O_XL		    ;取列地址值
                MOV     A,O_XL	        ;读列地址寄存器
                CLR     C
                SUBB    A,#PARA1        ;列地址-模块参数
                JC      CNW_2           ;〈0为左半屏显示区域(E1)
                MOV     O_XL,A          ;≥0为右半屏显示区域(E2)
                MOV     A,O_YL
                SETB    ACC.3           ;设置区域标志位.
                MOV     O_YL,A          ;"0"为E1,"1"为E2
        CNW_2:  MOV     COM,O_XL        ;设置列地址值
                MOV     A,O_YL          ;判区域标志以确定设置哪个控制器
                JNB     ACC.3,CNW_3
                LCALL   PR4		;区域E2
                LJMP    CNW_4
        CNW_3:  LCALL   PR1		;区域E1
        CNW_4:  MOV     A,CODE		;取间址寄存器值
                MOVC    A,@A+DPTR	;取汉字字模数据
                JNB     DISMOD,CNW_41
                CPL     A               ;反白显示
        CNW_41: MOV     DAT1,A		;写数据
                MOV     A,O_YL
                JNB     ACC.3,CNW_5
                LCALL   PR5		;区域E2
                LJMP    CNW_6
        CNW_5:  LCALL   PR2		;区域E1

⌨️ 快捷键说明

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