📄 zh11.sdi
字号:
,,,.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
,,,
,,,
000002,E002,reset,reset: ldi r16,$02 ;栈指针置初值
000004,BF0E,, out sph,r16
000006,E50F,, ldi r16,$5f
000008,BF0D,, out spl,r16
00000A,E000,, ldi r16,$00
00000C,BB0A,, out DDRA,r16
00000E,EF0F,, ldi r16,$ff
000010,BB01,, out DDRD,r16
000012,BB0B,, out PORTA,r16
000014,E013,, ldi r17,$03
000016,E020,, ldi r18,$00
,,,;**********************************************************
000018,BB12,wait,wait: out PORTD,r17 ;初始角度,0度
00001A,B309,, in r16,PINA
00001C,FD00,, sbrc r16,0
00001E,C001,, rjmp a0
000020,C003,, rjmp pos
000022,FD01,a0,a0: sbrc r16,1
000024,CFF9,, rjmp wait
000026,C008,, rjmp neg
,,,;**********************************************************
000028,E0F0,pos,pos: ldi ZH,high(tab*2)
00002A,E9EE,, ldi ZL,low(tab*2)
00002C,95E3,, inc ZL,r18
00002E,95C8,, lpm
000030,BA02,, out PORTD,r0
000032,D027,, rcall delay
000034,9523,, inc r18
000036,C008,, rjmp key
,,,;**********************************************************
000038,E0F0,neg,neg: ldi ZH,high(tab*2)
00003A,E9EE,, ldi ZL,low(tab*2)
00003C,E026,, ldi r18,$06 ;反转9度
00003E,0FE2,, add ZL,r18
000040,95C8,, lpm
000042,BA02,, out PORTD,r0
000044,D01E,, rcall delay
000046,C000,, rjmp key
,,,;**********************************************************
000048,B309,key,key: in r16,PINA ;读键盘情况
00004A,FF00,, sbrs r16,0
00004C,C001,, rjmp a1
00004E,C00B,, rjmp fz1
000050,3028,a1,a1: cpi r18,$08
000052,F409,, brne loopz ;是结束标志
000054,E020,, ldi r18,$00
,,,;**********************************************************
000056,E0F0,loopz,loopz: ldi ZH,high(tab*2)
000058,E9EE,, ldi ZL,low(tab*2)
00005A,0FE2,, add ZL,r18
00005C,95C8,, lpm
00005E,BA02,, out PORTD,r0 ;输出控制脉冲
000060,D010,, rcall delay ;程序延时
000062,9523,, inc r18 ;地址加1
000064,CFF1,, rjmp key
,,,;**********************************************************
000066,FF01,fz1,fz1: sbrs r16,1
000068,C001,, rjmp a2
00006A,CFEE,, rjmp key
00006C,952A,a2,a2: dec r18
00006E,3F2F,, cpi r18,$ff
000070,F409,, brne loopf
000072,E027,, ldi r18,$07
,,,;**********************************************************
000074,E0F0,loopf,loopf: ldi ZH,high(tab*2)
000076,E9EE,, ldi ZL,low(tab*2)
000078,0FE2,, add ZL,r18
00007A,95C8,, lpm
00007C,BA02,, out PORTD,r0 ;输出控制脉冲
00007E,D001,, rcall delay ;程序延时
000080,CFE3,, rjmp key
,,,;**********************************************************
,,, ;延时100ms
000082,E702,delay,delay: ldi r16,114
000084,930F,, push r16 ;进栈需2t
000086,930F,de0,de0: push r16 ;进栈需2t
000088,930F,de1,de1: push r16 ;进栈需2t
00008A,950A,de2,de2: dec r16 ;-1需1t
00008C,F7F1,, brne de2 ;不为0转,为0顺序执行,需1t/2t
00008E,910F,, pop r16 ;出栈需2t
000090,950A,, dec r16 ;-1需1t
000092,F7D1,, brne de1 ;不为0转,为0顺序执行,需1t/2t
000094,910F,, pop r16 ;出栈需2t
000096,950A,, dec r16 ;-1需1t
000098,F7B1,, brne de0 ;不为0转,为0顺序执行,需1t/2t
00009A,910F,, pop r16 ;出栈需2t
00009C,9508,, ret
,,,;**********************************************************
,,, ;正转模型
00009E,0000,, .db $02,$06,$04,$0C,$08,$09,$01,$03
,,,2
,,,4
,,,8
,,,1
,,,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -