⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dip40变速.asm

📁 单片机开发资料光盘-双龙-686M.zip
💻 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 + -