📄 h20.asm
字号:
; printer
; ASM for MCS51
mode equ 082h
dport equ 08000h ; PA口,数据口
status equ 08001h ; PB.0 忙状态
ctl equ 08002h ; PC.0 选通控制
contrl equ 08003h ; 8255 控制口
stb equ 0 ; 选通位
busy equ 0 ; 忙状态位
org 0h
jmp start
delay:
mov r6,#0
mov r7,#0
dd: nop
djnz r7,dd
djnz r6,dd
ret
print:
push dph
push dpl
mov b,a
mov dptr, #status
rd_status:
movx a,@dptr ; 读打印机状态
jb acc.busy, rd_status ; 若忙,等待
mov dptr,#dport ; 数据送出
mov a,b
movx @dptr,a
mov dptr,#ctl ; 输出选通脉冲
mov a,#1
movx @dptr,a
mov a,#0
movx @dptr,a
pop dpl
pop dph
ret
start:
mov dptr, #contrl
mov a, #mode
movx @dptr,a
mov dptr, #string ; 被打印字串
nextchar:
clr a
movc a,@a+dptr
jnz prtchar ; 字串结束
jmp $
prtchar:
call print
inc dptr ; 下一字符
jmp nextchar
nop
string:
db 'Hello World!',0dh,0ah
db 'I can print now',0dh,0ah,0ch,0,0
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -