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

📄 print.asm

📁 在单片机89C196下通过扩展并口进行普通打印机打印的子程序
💻 ASM
字号:
;print.asm
;程序模快功能介绍:打印程序
;print_osdata:   打印标准资料
;print_stat:     打印统计数据
;************************************************
;打印断短路资料
print_osdata:
        LDB MXL,#35
        LD DX,#PRINT_OSTAB
print_osdata1:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_osdata1

        CALL print_filename

        CALL print_equ

        LDB MXL,#15
        LD DX,#PRINT_NETTAB
print_osdata2:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_osdata2

        CALL print_dec

        LDB NXL,CABLE_MEMORY[0]        ;内存容量
        LDB NXH,#0                     ;用于指示当前已打印到的位置
        LD TAB_ADD,#CABLEDATA_ADD      ;打印数据的首地址
        LDB MXL,#01H                   ;用于指示当前网络数
        LDB MXH,#0                     ;用于指示当前所在X坐标,最大值为34,0-34

        CMPB NXL,#00H
        JNE print_osdata3

        LDB MXL,#6
        LD DX,#PRINT_EMPTYTAB
print_osdata5:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_osdata5
        JMP print_osdata_end

print_osdata3:
        LDB DXL,MXL
        CALL HEXB_TO_DEC
        LD DX,#PRINT_NUMTAB            ;存放数字的首地址
        ;wr net num
        LDB AXH,#00H
        LDB AXL,FXL
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
        LDB AXL,EXH
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
        LDB AXL,EXL
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print

        LDB AXL,#20H
        CALL wr_print

        LDB MXH,#03H                   ;X=3
        ;
print_osdata3_5:
        LDB DXL,[TAB_ADD]+
        INCB NXH
        JBS DXL,7,print_osdata3_1
        LDB AXL,#41H;A
        CALL wr_print
        JMP print_osdata3_2
print_osdata3_1:
        LDB AXL,#42H;B
        CALL wr_print
        ANDB DXL,#7FH
print_osdata3_2:
        INCB MXH
        CALL HEXB_TO_DEC
        LD DX,#PRINT_NUMTAB            ;存放数字的首地址

        LDB AXH,#0
        LDB AXL,EXH
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
        LDB AXL,EXL
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
        ADDB MXH,#2
        CMPB MXH,#34
        JE print_osdata3_3
        LDB AXL,[TAB_ADD]
        CMPB AXL,#00H
        JE print_osdata3_4
        LDB AXL,#2DH
        CALL wr_print;WR -
        INCB MXH
        JMP print_osdata3_5
print_osdata3_4:
        CMPB NXL,NXH
        JE print_osdata3_6
        INC TAB_ADD
        INCB NXH
        LDB AXL,#0AH
        CALL wr_print
        INCB MXL
        JMP print_osdata3
print_osdata3_6:
        LDB AXL,#0AH
        CALL wr_print
        JMP print_osdata_end
        ;
print_osdata3_3:
        LDB AXL,[TAB_ADD]
        CMPB AXL,#00H
        JNE print_osdata3_7
        CMPB NXL,NXH
        JE print_osdata3_6
        INC TAB_ADD
        LDB AXL,#0AH
        CALL wr_print
        INCB MXL
        JMP print_osdata3
        ;
print_osdata3_7:
        LDB MXH,#03H
        LDB AXL,#0AH
        CALL wr_print
        LDB AXL,#20H
        CALL wr_print
        CALL wr_print
        CALL wr_print
        CALL wr_print
        JMP print_osdata3_5
        ;---------------------
print_osdata_end:
        CALL print_equ
        ;LDB AXL,#0AH
        ;CALL wr_print
        LDB AXL,#45H ;E
        CALL wr_print
        LDB AXL,#4EH ;N
        CALL wr_print
        LDB AXL,#44H ;D
        CALL wr_print
        LDB AXL,#0AH
        CALL wr_print
        RET
;-------------------统计打印----------------
print_stat:
        LDB MXL,#34
        LD DX,#PRINT_STATTAB
print_stat1:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat1

        CALL print_filename

        CALL print_equ

        LDB MXL,#7
        LD DX,#PRINT_TOTAL      ;wr total
print_stat2:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat2
        LD DX,TOTAL_NUM[0]
        CALL print_data

        LDB MXL,#7
        LD DX,#PRINT_PASS       ;wr pass
print_stat3:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat3
        LD DX,PASS_NUM[0]
        CALL print_data

        LDB MXL,#7
        LD DX,#PRINT_FAIL       ;wr fail
print_stat4:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat4
        LD DX,FAIL_NUM[0]
        CALL print_data

        CALL print_dec

        LDB MXL,#14
        LD DX,#PRINT_STATFAILTAB
print_stat5:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat5

        CALL print_dec

        LDB MXL,#7
        LD DX,#PRINT_OS           ;wr os
print_stat6:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat6
        LD DX,OSERROR_NUM[0]
        CALL print_data

        LDB MXL,#7
        LD DX,#PRINT_COND         ;wr COND.
print_stat7:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat7
        LD DX,CONDERROR_NUM[0]
        CALL print_data

        LDB MXL,#7
        LD DX,#PRINT_INS         ;wr INS.
print_stat8:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat8
        LD DX,INSERROR_NUM[0]
        CALL print_data

        LDB MXL,#7
        LD DX,#PRINT_INTE        ;wr INTE.
print_stat9:
        LDB AXL,[DX]+
        CALL wr_print
        DJNZ MXL,print_stat9
        LD DX,INSTAERROR_NUM[0]
        CALL print_data

        CALL print_equ
        ;LDB AXL,#0AH
        ;CALL wr_print
        LDB AXL,#45H ;E
        CALL wr_print
        LDB AXL,#4EH ;N
        CALL wr_print
        LDB AXL,#44H ;D
        CALL wr_print
        LDB AXL,#0AH
        CALL wr_print
        RET

;--------------------------------------打印从DX输入的数据
;输入参数:DX
print_data:
        CALL HEXW_TO_DEC
        LD DX,#PRINT_NUMTAB            ;存放数字的首地址
        LDB AXH,#0

        CMPB GXL,#0AH
        JNE print_data1
        CMPB FXH,#0AH
        JNE print_data2
        CMPB FXL,#0AH
        JNE print_data3
        CMPB EXH,#0AH
        JNE print_data4
        JMP print_data5
print_data1:
        LDB AXL,GXL
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
print_data2:
        LDB AXL,FXH
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
print_data3:
        LDB AXL,FXL
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
print_data4:
        LDB AXL,EXH
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
print_data5:
        LDB AXL,EXL
        ADD BX,AX,DX
        LDB AXL,[BX]
        CALL wr_print
        ;
        LDB AXL,#0AH
        CALL wr_print
        RET



;--------------------------------------打印文件名
print_filename:
        LDB DXL,FILE_NUM[0]
        CALL HEXB_TO_DEC
        LD DX,#PRINT_NUMTAB
        LDB AXH,#0
        LDB AXL,EXH
        ADD BX,DX,AX
        LDB AXL,[BX]
        CALL wr_print
        LDB AXL,EXL
        ADD BX,DX,AX
        LDB AXL,[BX]
        CALL wr_print
        LDB AXL,#0AH
        CALL wr_print
        RET
;--------------------------------------写等于符号和减符号
print_equ:
        LDB AXL,#3DH
        JMP print_equ1

print_dec:
        LDB AXL,#2DH
print_equ1:
        LDB MXL,#36
print_equ2:
        CALL wr_print
        DJNZ MXL,print_equ2
        LDB AXL,#0AH
        CALL wr_print

        RET
;--------------------------------------写数据到打印机中
;输入参数:AXL
wr_print:
        STB AXL,D8155_PA_ADD[0]
        ANDB PORT1_DA,#11101111B
        LDB PORT1,PORT1_DA
        NOP
        NOP
        NOP
        ORB PORT1_DA,#00010000B
        LDB PORT1,PORT1_DA
        LDB HXL,#0FFH
wr_print1:
        LDB WR_DA,PORT2
        DJNZ HXL,wr_print1_1
        RET
wr_print1_1:
        JBS WR_DA,6,wr_print1
        RET


⌨️ 快捷键说明

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