📄 sl02.asm
字号:
;************************************************
;*1S2-SW-DIP-1开关(PA4)控制LED灯(PB0-7)亮后右移。
;*请你修改程序,改为左移,或右移后左移,循环不断。
;*AT90S8515 8MHz
;*双龙电子 www.sl.com.cn
;* liqing 2002.05.08
;************************************************
.include "8515def.inc"
.org $000
rjmp sl02
.org $020
sl02:
ldi r17,$02 ;栈指针置初值SP=0x025F
ldi r16,$5f
out sph,r17
out spl,r16
ldi r16,$ef ;0b1110 1111
ldi r17,$ff
out ddra,r16 ;PA4输入内部上拉,接开关
out ddrb,r17 ;PB口输出,接LED灯
out porta,r17
out portb,r17
start2:
in r16,pina ;读取A口管脚状态判键是否按下
sbrs r16,4
rjmp paomd ;有键按下调用跑马灯程序
ldi r17,$ff ;无键则熄灭所有LED
out portb,r17
rjmp start2 ;循环检测
paomd:
ldi r17,$fe ;只点亮LED0
out portb,r17
rcall time ;延时
ldi r17,$fd ;只点亮LED1
out portb,r17
rcall time
ldi r17,$fb ;只点亮LED2
out portb,r17
rcall time
ldi r17,$f7 ;只点亮LED3
out portb,r17
rcall time
ldi r17,$ef ;只点亮LED4
out portb,r17
rcall time
ldi r17,$df ;只点亮LED5
out portb,r17
rcall time
ldi r17,$bf ;只点亮LED6
out portb,r17
rcall time
ldi r17,$7f ;只点亮LED7
out portb,r17
rcall time
rjmp start2 ;循环检测
time: ;延时
ldi r21,$0a
loop2: ldi r20,$ff
loop1: ldi r19,$ff
loop: dec r19
brne loop
dec r20
brne loop1
dec r21
brne loop2
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -