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

📄 zh11.sdi

📁 基于PROTERUS仿真的AVR例子
💻 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 + -