📄 dip40变速.asm
字号:
;************* 应用笔记 DIP40B.asm ************************
;*
;* 标题: 测试DIP40封装器件I/O口功能
;* 版本: 1.0
;*最后更新日期: 2000.08.08
;*
;* 支援 E-mail: gzsl@sl.com.cn
;*
;* 描述
;* 用实验器测试A口、B口、C口、D口LED循环移位
;* 作者: SL.
;*程序适用于所有单片机
;***************************************************************************
; DIP40 AT90S8515引脚排列图,"*"表示引脚上接LED灯
; "↓↑"表示LED亮灯移动方向
;
; PB0 ↓* 。1 40 。VCC
; PB1 ↓* 。 。* ↑ PA0
; PB2 ↓* 。 。* ↑ PA1
; PB3 ↓* 。 。* ↑ PA2
; PB4 ↓* 。 。* ↑ PA3
; PB5 ↓* 。 。* ↑ PA4
; PB6 ↓* 。 。* ↑ PA5
; PB7 ↓* 。 。* ↑ PA6
; /RESET 。 。* ↑ PA7
; PD0 ↓* 。 。 ICP
; PD1 ↓* 。 。 ALE
; PD2 ↓* 。 。 OC1B
; PD3 ↓* 。 。* ↑ PC7
; PD4 ↓* 。 。* ↑ PC6
; PD5 ↓* 。 。* ↑ PC5
; PD6 ↓* 。 。* ↑ PC4
; PD7 ↓* 。 。* ↑ PC3
; XTAL2 。 。* ↑ PC2
; XTAL1 。 。* ↑ PC1
; GND 。20 21 。* ↓ PC0
;
.include "8515def.inc"
rjmp RESET ;Reset Handle
.org $00d
RESET: LDI R16,$5F ;必须先设堆栈,因为复位后SPL=0X00,SPH=0X00
OUT SPL,R16 ;AVR进堆栈是-1,出栈时+1,与MCS-51进出栈方向相反
LDI R16,$02 ;
OUT SPH,R16 ;设堆栈底为$025F,为AVR AT90S8515内部SRAM($0060-$025F底
LDI r16,0XFF ;
OUT DDRB,R16 ;设方向寄存器为输出
OUT DDRD,R16
out ddra,r16
out ddrc,r16
out portd,r16 ;关D口,硬件设定高电平LED关
out portb,r16 ;关B口,硬件设定高电平LED关
out porta,r16 ;关A口,硬件设定高电平LED关
out portc,r16 ;关C口,硬件设定高电平LED关
st: ldi r28,0x08 ;循环次数
startb:
ldi R17,0x08
ldi r18,0xfe ;0b1111 1110
loopb: out portb,r18 ;开b口.0位LED灯亮,如何修改使2个或3个或1隔1等LED灯亮移位
sec ;置进位标志C=1
rol r18 ;通过进位左循环
mov r29,r28 ;移位(延时)次数
rcall delay ;调用延时子程序
dec r17 ;
brne loopb ;R17不为0转,为0顺执
out portb,r16 ;关B口
startd: ldi R17,0x08
ldi r18,0xfe ;0b1111 1110
loopd: out portd,r18 ;开d口.0位LED灯亮
sec ;C=1
rol r18 ;通过进位左循环
mov r29,r28
rcall delay
dec r17
brne loopd
out portd,r16
startc: ldi R17,0x08
ldi r18,0xfe ;0b1111 1110
loopc: out portc,r18 ;开c口.0位LED灯亮
sec
rol r18 ;通过进位右循环
mov r29,r28
rcall delay
dec r17
brne loopc
out portc,r16
starta: ldi R17,0x08
ldi r18,0x7f ;0b0111 1111
loopa: out porta,r18 ;开a口.7位LED灯亮
sec
ror r18 ;通过进位左循环
mov r29,r28
rcall delay
dec r17
brne loopa
out porta,r16 ;关a口
dec r28
breq st ;r28为0转
rjmp startb ;循环
delay: ldi r31,0x23 ;延时子程序,可修改时间常数
delay1: dec r30
brne delay1
dec r31
brne delay1
dec r29 ;移位速度次数
brne delay
ret ;子程序返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -