?? dip40變速.asm
字號:
;************* 應用筆記 DIP40B.asm ************************
;*
;* 標題: 測試DIP40封裝器件I/O口功能
;* 版本: 1.0
;*最后更新日期: 2000.08.08
;*
;* 支援 E-mail: gzsl@sl.com.cn
;*
;* 描述
;* 用實驗器測試A口、B口、C口、D口LED循環(huán)移位
;* 作者: 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 ;循環(huán)次數(shù)
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 ;通過進位左循環(huán)
mov r29,r28 ;移位(延時)次數(shù)
rcall delay ;調用延時子程序
dec r17 ;
brne loopb ;R17不為0轉,為0順執(zhí)
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 ;通過進位左循環(huán)
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 ;通過進位右循環(huán)
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 ;通過進位左循環(huán)
mov r29,r28
rcall delay
dec r17
brne loopa
out porta,r16 ;關a口
dec r28
breq st ;r28為0轉
rjmp startb ;循環(huán)
delay: ldi r31,0x23 ;延時子程序,可修改時間常數(shù)
delay1: dec r30
brne delay1
dec r31
brne delay1
dec r29 ;移位速度次數(shù)
brne delay
ret ;子程序返回
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -