📄 zh11.lst
字号:
AVRASM ver. 1.30 zh11.ASM Mon Feb 25 11:24:14 2008
.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
000000 c000 rjmp reset
000001 e002 reset: ldi r16,$02 ;栈指针置初值
000002 bf0e out sph,r16
000003 e50f ldi r16,$5f
000004 bf0d out spl,r16
000005 e000 ldi r16,$00
000006 bb0a out DDRA,r16
000007 ef0f ldi r16,$ff
000008 bb01 out DDRD,r16
000009 bb0b out PORTA,r16
00000a e013 ldi r17,$03
00000b e020 ldi r18,$00
;**********************************************************
00000c bb12 wait: out PORTD,r17 ;初始角度,0度
00000d b309 in r16,PINA
00000e fd00 sbrc r16,0
00000f c001 rjmp a0
000010 c003 rjmp pos
000011 fd01 a0: sbrc r16,1
000012 cff9 rjmp wait
000013 c008 rjmp neg
;**********************************************************
000014 e0f0 pos: ldi ZH,high(tab*2)
000015 e9ee ldi ZL,low(tab*2)
000016 95e3 inc ZL,r18
error : Garbage at end of line
000017 95c8 lpm
000018 ba02 out PORTD,r0
000019 d027 rcall delay
00001a 9523 inc r18
00001b c008 rjmp key
;**********************************************************
00001c e0f0 neg: ldi ZH,high(tab*2)
00001d e9ee ldi ZL,low(tab*2)
00001e e026 ldi r18,$06 ;反转9度
00001f 0fe2 add ZL,r18
000020 95c8 lpm
000021 ba02 out PORTD,r0
000022 d01e rcall delay
000023 c000 rjmp key
;**********************************************************
000024 b309 key: in r16,PINA ;读键盘情况
000025 ff00 sbrs r16,0
000026 c001 rjmp a1
000027 c00b rjmp fz1
000028 3028 a1: cpi r18,$08
000029 f409 brne loopz ;是结束标志
00002a e020 ldi r18,$00
;**********************************************************
00002b e0f0 loopz: ldi ZH,high(tab*2)
00002c e9ee ldi ZL,low(tab*2)
00002d 0fe2 add ZL,r18
00002e 95c8 lpm
00002f ba02 out PORTD,r0 ;输出控制脉冲
000030 d010 rcall delay ;程序延时
000031 9523 inc r18 ;地址加1
000032 cff1 rjmp key
;**********************************************************
000033 ff01 fz1: sbrs r16,1
000034 c001 rjmp a2
000035 cfee rjmp key
000036 952a a2: dec r18
000037 3f2f cpi r18,$ff
000038 f409 brne loopf
000039 e027 ldi r18,$07
;**********************************************************
00003a e0f0 loopf: ldi ZH,high(tab*2)
00003b e9ee ldi ZL,low(tab*2)
00003c 0fe2 add ZL,r18
00003d 95c8 lpm
00003e ba02 out PORTD,r0 ;输出控制脉冲
00003f d001 rcall delay ;程序延时
000040 cfe3 rjmp key
;**********************************************************
;延时100ms
000041 e702 delay: ldi r16,114
000042 930f push r16 ;进栈需2t
000043 930f de0: push r16 ;进栈需2t
000044 930f de1: push r16 ;进栈需2t
000045 950a de2: dec r16 ;-1需1t
000046 f7f1 brne de2 ;不为0转,为0顺序执行,需1t/2t
000047 910f pop r16 ;出栈需2t
000048 950a dec r16 ;-1需1t
000049 f7d1 brne de1 ;不为0转,为0顺序执行,需1t/2t
00004a 910f pop r16 ;出栈需2t
00004b 950a dec r16 ;-1需1t
00004c f7b1 brne de0 ;不为0转,为0顺序执行,需1t/2t
00004d 910f pop r16 ;出栈需2t
00004e 9508 ret
;**********************************************************
;正转模型
00004f tab: .db $02,$06,$04,$0C,$08,$09,$01,$03
00004f 0602
000050 0c04
000051 0908
000052 0301
Assembly complete with no errors.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -