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 + -
显示快捷键?