📄 872.asm
字号:
.include "8535def.inc"
.org $000
rjmp RESET
rjmp EXT_INT0
RESET: ldi r16,low(ramend) ;栈指针置初值
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi r16,$ff ;定义C口为输出
out ddrc,r16
ldi r16,$01 ;定义PD0为输出,PD2为输入
out ddrd,r16
sbi portd,0 ;先使PD0输出为高
ldi r16,$02 ;定义INT0下降沿申请中断
out mcucr,r16
clr r16 ;清中断标志寄存器
out gifr,r16
ldi xh,$01 ;X指向打印缓冲区首址
ldi xl,$00
ldi r25,17 ;要打印的字符数
ld r24,x+ ;向打印机数据口送第一个字符
out portc,r24
cbi portd,0 ;发选通脉冲( )
rcall t1us
sbi portd,0
ldi r24,$40 ;使能INT0中断
out gimsk,r24
sei ;开中断
here: rjmp here
EXT_INT0:in r1,sreg ;保护标志寄存器
ld r24,x+ ;向打印机数据口送字符
out portc,r24
cbi portd,0 ;发选通脉冲( )
rcall t1us
sbi portd,0
dec r25 ;是否发完
brne ext_int01
ldi r24,$00 ;发完则关INT0中断
out gimsk,r24
ext_int01:
out sreg,r1 ;恢复标志寄存器
reti
t1us: nop
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -