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

📄 zh11.asm

📁 基于PROTERUS仿真的AVR例子
💻 ASM
字号:
.device AT90S8535
.equ    sph    	=$3E
.equ    spl    	=$3D
.equ	PORTA	=$1B
.equ	DDRA	=$1A
.equ    PINA    =$19
.equ	PORTD	=$12
.equ	DDRD	=$11
.equ    PIND    =$10
.def 	ZH     	=r31
.def 	ZL     	=r30

	.org	$0000
	rjmp	reset
	
						
reset:	ldi	r16,$02			;栈指针置初值
	out	sph,r16
	ldi	r16,$5f
	out	spl,r16
	ldi	r16,$00
	out	DDRA,r16
	ldi	r16,$ff
	out	DDRD,r16
	out	PORTA,r16
	ldi	r17,$03
	ldi	r18,$00
;**********************************************************
wait:	out	PORTD,r17		;初始角度,0度
	in	r16,PINA
	sbrc	r16,0
	rjmp	a0
	rjmp	pos
a0:	sbrc	r16,1
	rjmp	wait
	rjmp	neg
;**********************************************************
pos:	ldi	ZH,high(tab*2)
	ldi	ZL,low(tab*2)
	inc	ZL,r18
	lpm
	out	PORTD,r0
	rcall	delay
	inc	r18
	rjmp	key
;**********************************************************
neg:	ldi	ZH,high(tab*2)
	ldi	ZL,low(tab*2)
	ldi	r18,$06			;反转9度
	add	ZL,r18
	lpm
	out	PORTD,r0
	rcall	delay
	rjmp	key
;**********************************************************
key:	in	r16,PINA		;读键盘情况
	sbrs	r16,0
	rjmp	a1
	rjmp	fz1
a1:	cpi	r18,$08
	brne	loopz			;是结束标志
	ldi	r18,$00
;**********************************************************
loopz:	ldi	ZH,high(tab*2)
	ldi	ZL,low(tab*2)
	add	ZL,r18
	lpm
	out	PORTD,r0		;输出控制脉冲
	rcall	delay			;程序延时
	inc	r18			;地址加1
	rjmp	key
;**********************************************************
fz1:	sbrs	r16,1
	rjmp	a2
	rjmp	key
a2:	dec	r18
	cpi	r18,$ff
	brne	loopf
	ldi	r18,$07
;**********************************************************
loopf:	ldi	ZH,high(tab*2)
	ldi	ZL,low(tab*2)
	add	ZL,r18
	lpm
	out	PORTD,r0		;输出控制脉冲
	rcall	delay			;程序延时
	rjmp	key
;**********************************************************
					;延时100ms
delay:	ldi	r16,114
        push	r16			;进栈需2t
de0:	push	r16			;进栈需2t
de1:	push	r16			;进栈需2t
de2:	dec	r16			;-1需1t
	brne	de2			;不为0转,为0顺序执行,需1t/2t
	pop	r16			;出栈需2t
	dec	r16			;-1需1t
	brne	de1			;不为0转,为0顺序执行,需1t/2t
	pop	r16			;出栈需2t
	dec	r16			;-1需1t
	brne	de0			;不为0转,为0顺序执行,需1t/2t
	pop	r16			;出栈需2t
	ret
;**********************************************************
					;正转模型
tab:	.db	$02,$06,$04,$0C,$08,$09,$01,$03

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -