as5030.asm
来自「as3050 interfacing with atmega8」· 汇编 代码 · 共 236 行
ASM
236 行
_Move_Delay:
;AS5030.c,27 :: void Move_Delay()
;AS5030.c,29 :: Delay_ms(500); // You can change the moving speed here
LDI 18, 21
LDI 17, 75
LDI 16, 191
DEC 16
BRNE $-1
DEC 17
BRNE $-3
DEC 18
BRNE $-5
NOP
;AS5030.c,30 :: }
L_endMove_Delay:
RET
; end of _Move_Delay
_main:
LDI 27, 255
OUT 93, 27
LDI 27, 0
OUT 94, 27
;AS5030.c,32 :: void main()
;AS5030.c,33 :: { LCD_RW = 0;
CBI 56, 7
;AS5030.c,34 :: LCD_RW_Direction = 1;
SBI 55, 7
;AS5030.c,35 :: Lcd_Init(); // Initialize LCD
CALL _Lcd_Init+0
;AS5030.c,36 :: Lcd_Cmd(LCD_CLEAR); // Clear display
LDI 27, 1
PUSH 27
CALL _Lcd_Cmd+0
IN 26, 93
IN 27, 94
ADIW 26, 1
OUT 93, 26
OUT 94, 27
;AS5030.c,37 :: Lcd_Cmd(LCD_CURSOR_OFF); // Cursor off
LDI 27, 12
PUSH 27
CALL _Lcd_Cmd+0
IN 26, 93
IN 27, 94
ADIW 26, 1
OUT 93, 26
OUT 94, 27
;AS5030.c,39 :: Lcd_Out(1,6,txt3); // Write text in first row
LDI 27, hi_addr(_txt3+0)
PUSH 27
LDI 27, _txt3+0
PUSH 27
LDI 27, 6
PUSH 27
LDI 27, 1
PUSH 27
CALL _Lcd_Out+0
IN 26, 93
IN 27, 94
ADIW 26, 4
OUT 93, 26
OUT 94, 27
;AS5030.c,40 :: Lcd_Out(2,6,txt4); // Write text in second row
LDI 27, hi_addr(_txt4+0)
PUSH 27
LDI 27, _txt4+0
PUSH 27
LDI 27, 6
PUSH 27
LDI 27, 2
PUSH 27
CALL _Lcd_Out+0
IN 26, 93
IN 27, 94
ADIW 26, 4
OUT 93, 26
OUT 94, 27
;AS5030.c,41 :: Delay_ms(2000);
LDI 18, 82
LDI 17, 43
LDI 16, 0
DEC 16
BRNE $-1
DEC 17
BRNE $-3
DEC 18
BRNE $-5
NOP
NOP
NOP
NOP
;AS5030.c,42 :: Lcd_Cmd(LCD_CLEAR); // Clear display
LDI 27, 1
PUSH 27
CALL _Lcd_Cmd+0
IN 26, 93
IN 27, 94
ADIW 26, 1
OUT 93, 26
OUT 94, 27
;AS5030.c,44 :: Lcd_Out(1,1,txt1); // Write text in first row
LDI 27, hi_addr(_txt1+0)
PUSH 27
LDI 27, _txt1+0
PUSH 27
LDI 27, 1
PUSH 27
LDI 27, 1
PUSH 27
CALL _Lcd_Out+0
IN 26, 93
IN 27, 94
ADIW 26, 4
OUT 93, 26
OUT 94, 27
;AS5030.c,45 :: Lcd_Out(2,4,txt2); // Write text in second row
LDI 27, hi_addr(_txt2+0)
PUSH 27
LDI 27, _txt2+0
PUSH 27
LDI 27, 4
PUSH 27
LDI 27, 2
PUSH 27
CALL _Lcd_Out+0
IN 26, 93
IN 27, 94
ADIW 26, 4
OUT 93, 26
OUT 94, 27
;AS5030.c,46 :: Delay_ms(2000);
LDI 18, 82
LDI 17, 43
LDI 16, 0
DEC 16
BRNE $-1
DEC 17
BRNE $-3
DEC 18
BRNE $-5
NOP
NOP
NOP
NOP
;AS5030.c,49 :: for(i=0; i<4; i++)
LDI 27, 0
STS _i+0, 27
L_main0:
LDS 16, _i+0
CPI 16, 4
BRLO L__main13
JMP L_main1
L__main13:
;AS5030.c,50 :: { Lcd_Cmd(LCD_SHIFT_RIGHT); // Move text to the right 4 times
LDI 27, 28
PUSH 27
CALL _Lcd_Cmd+0
IN 26, 93
IN 27, 94
ADIW 26, 1
OUT 93, 26
OUT 94, 27
;AS5030.c,51 :: Move_Delay();
CALL _Move_Delay+0
;AS5030.c,49 :: for(i=0; i<4; i++)
LDS 16, _i+0
SUBI 16, 255
STS _i+0, 16
;AS5030.c,52 :: }
JMP L_main0
L_main1:
;AS5030.c,53 :: while(1)
L_main3:
;AS5030.c,54 :: {for(i=0; i<7; i++)
LDI 27, 0
STS _i+0, 27
L_main5:
LDS 16, _i+0
CPI 16, 7
BRLO L__main14
JMP L_main6
L__main14:
;AS5030.c,55 :: { Lcd_Cmd(LCD_SHIFT_LEFT); // Endless loop
LDI 27, 24
PUSH 27
CALL _Lcd_Cmd+0
IN 26, 93
IN 27, 94
ADIW 26, 1
OUT 93, 26
OUT 94, 27
;AS5030.c,56 :: Move_Delay(); // Move text to the left 7 times
CALL _Move_Delay+0
;AS5030.c,54 :: {for(i=0; i<7; i++)
LDS 16, _i+0
SUBI 16, 255
STS _i+0, 16
;AS5030.c,57 :: }
JMP L_main5
L_main6:
;AS5030.c,58 :: for(i=0; i<7; i++)
LDI 27, 0
STS _i+0, 27
L_main8:
LDS 16, _i+0
CPI 16, 7
BRLO L__main15
JMP L_main9
L__main15:
;AS5030.c,59 :: {Lcd_Cmd(LCD_SHIFT_RIGHT); // Move text to the right 7 times
LDI 27, 28
PUSH 27
CALL _Lcd_Cmd+0
IN 26, 93
IN 27, 94
ADIW 26, 1
OUT 93, 26
OUT 94, 27
;AS5030.c,60 :: Move_Delay();
CALL _Move_Delay+0
;AS5030.c,58 :: for(i=0; i<7; i++)
LDS 16, _i+0
SUBI 16, 255
STS _i+0, 16
;AS5030.c,61 :: }
JMP L_main8
L_main9:
;AS5030.c,62 :: }
JMP L_main3
;AS5030.c,63 :: }
L_endmain:
JMP L_endmain
; end of _main
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?