📄 dip20变速.asm
字号:
;************* 应用笔记 DIP20.asm ************************
;*
;* 标题: 测试DIP20 AVR单片机B口、D口功能
;* 版本: 1.0
;*最后更新日期: 2000.08.08
;*
;* 支援 E-mail: gzsl@sl.com.cn
;*
;* 描述
;* 测试DIP20 AVR单片机B口、D口功能,LED逐位移位,移位速度会变化
;* 作者: SL.
;*程序适用于所有单片机
;***************************************************************************
; AT90S1200引脚图 "*"表示引脚接LED发光二极管
; "↓"表示灯亮移位方向
; /RST 。1 20 。VCC
; PD0 ↑* 。 。* ↓ PB7
; PD1 ↑* 。 。* ↓ PB6
; XTAL2 。 。* ↓ PB5
; XTAL1 。 。* ↓ PB4
; PD2 ↑* 。 。* ↓ PB3
; PD3 ↑* 。 。* ↓ PB2
; PD4 ↑* 。 。* ↓ PB1
; PD5 ↑* 。 。* ↓ PB0
; GND 。10 11 。* ↓ PD6
;
.include "1200def.inc"
rjmp RESET ;Reset Handle
.org $005
RESET:
LDI r16,0XFF ;设B口、D口为输出
OUT ddrb,R16 ;设b口方向寄存器为输出
OUT DDRD,R16 ;设D口方向寄存器为输出
out portd,r16 ;关D口LED,OK-AVR实验器硬件设定高电平LED灯灭
out portb,r16 ;关B口LED,OK-AVR实验器硬件设定高电平LED灯灭
start: ldi R17,0x08 ;循环次数
ldi r18,0x7f ;0b0111 1111,OK-AVR实验器硬件设定低电平LED灯亮
loop: out portb,r18 ;B口.7位 LED灯亮
sec ;c=1
ror r18 ;通过进位右循环
rcall delay ;调用延时子程序
dec r17 ;-1
brne loop ;检测R17循环不0为转移,为0按顺序执行
out portb,r16 ;关B口
ldi r18,0xbf ; 0b1011 1111
out portd,r18 ;D口.6位 LED灯亮
rcall delay ;延时
ldi r18,0xff
out portd,r18 ;关D口
rjmp start ;循环
delay: ldi r29,0x0a ;延时子程序
delay1: dec r30 ;复位后R30=0X00
brne delay1 ;R30不为0转,为0按顺序执行
dec r31 ;复位后R31=0X00
brne delay1 ;R30不为0转,为0按顺序执行
dec r29 ;复位后R29=0X00
brne delay1 ;R29不为0转,为0按顺序执行
ret ;子程序返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -