📄 main.s
字号:
.module MAIN.C
.area data(ram, con, rel)
_Color1::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e Color1 _Color1 c
_Color2::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e Color2 _Color2 c
_backgroundColor::
.blkb 1
.area idata
.byte 3
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e backgroundColor _backgroundColor c
_b2::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e b2 _b2 c
_memAccessCtrl::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e memAccessCtrl _memAccessCtrl c
_zx::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e zx _zx c
_zy::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbsym e zy _zy c
.area text(rom, con, rel)
.dbfile E:\电子\ICCAVR\6610ME~1/lcd6610.c
.dbfunc e sc_cbk _sc_cbk fV
; tm -> y+8
; b -> y+6
; g -> R22
; r -> R20
.even
_sc_cbk::
rcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 27
; //ICC-AVR application builder : 2004-11-15 下午 07:08:16
; // Target : M8
; // Crystal: 8.0000Mhz
;
; #include <iom8v.h>
; #include <macros.h>
; #include "G6610.h"
; #include "lcd6610.c"
;
; #define csl asm("cbi 0x12,1") //PB0
; #define csh asm("sbi 0x12,1")
;
; #define restl asm("cbi 0x12,0") //PB4
; #define resth asm("sbi 0x12,0")
;
; #define sclkl asm("cbi 0x18,5") //PB5
; #define sclkh asm("sbi 0x18,5")
;
; #define sdatal asm("cbi 0x18,3") //PB3
; #define sdatah asm("sbi 0x18,3")
;
;
; void port_init(void)
; {
; PORTB = 0x00;
; DDRB = 0xFF;
; PORTC = 0x7F; //m103 output only
.dbline 27
ldd R2,y+6
clr R3
std y+1,R3
std y+0,R2
mov R18,R22
clr R19
mov R16,R20
clr R17
rcall _RGB
movw R2,R16
ldi R18,15
ldi R19,0
ldd R16,y+8
ldd R17,y+9
rcall lsl16
or R2,R16
or R3,R17
sts _cbk+1,R3
sts _cbk,R2
.dbline -2
.dbline 29
; DDRC = 0x00;
; PORTD = 0x00;
L2:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l tm 8 i
.dbsym l b 6 c
.dbsym r g 22 c
.dbsym r r 20 c
.dbend
.dbfunc e sc_cfg _sc_cfg fV
; tm -> y+8
; b -> y+6
; g -> R22
; r -> R20
.even
_sc_cfg::
rcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 32
; DDRD = 0xFF;
; }
;
.dbline 33
; //call this routine to initialise all peripherals
ldd R2,y+6
clr R3
std y+1,R3
std y+0,R2
mov R18,R22
clr R19
mov R16,R20
clr R17
rcall _RGB
movw R2,R16
ldi R18,15
ldi R19,0
ldd R16,y+8
ldd R17,y+9
rcall lsl16
or R2,R16
or R3,R17
sts _cfg+1,R3
sts _cfg,R2
.dbline -2
.dbline 35
; void init_devices(void)
; {
L3:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l tm 8 i
.dbsym l b 6 c
.dbsym r g 22 c
.dbsym r r 20 c
.dbend
.dbfunc e sc_cfr _sc_cfr fV
; tm -> y+8
; b -> y+6
; g -> R22
; r -> R20
.even
_sc_cfr::
rcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 38
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
; port_init();
.dbline 39
;
ldd R2,y+6
clr R3
std y+1,R3
std y+0,R2
mov R18,R22
clr R19
mov R16,R20
clr R17
rcall _RGB
movw R2,R16
ldi R18,15
ldi R19,0
ldd R16,y+8
ldd R17,y+9
rcall lsl16
or R2,R16
or R3,R17
sts _cfr+1,R3
sts _cfr,R2
.dbline -2
.dbline 40
; MCUCR = 0x00;
L4:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l tm 8 i
.dbsym l b 6 c
.dbsym r g 22 c
.dbsym r r 20 c
.dbend
.dbfunc e sc_csh _sc_csh fV
; tm -> y+8
; b -> y+6
; g -> R22
; r -> R20
.even
_sc_csh::
rcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 43
; GICR = 0x00;
; TIMSK = 0x00; //timer interrupt sources
; //SEI(); //re-enable interrupts
.dbline 44
; //all peripherals are now initialised
ldd R2,y+6
clr R3
std y+1,R3
std y+0,R2
mov R18,R22
clr R19
mov R16,R20
clr R17
rcall _RGB
movw R2,R16
ldi R18,15
ldi R19,0
ldd R16,y+8
ldd R17,y+9
rcall lsl16
or R2,R16
or R3,R17
sts _csh+1,R3
sts _csh,R2
.dbline -2
.dbline 45
; }
L5:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l tm 8 i
.dbsym l b 6 c
.dbsym r g 22 c
.dbsym r r 20 c
.dbend
.dbfunc e glcdSetPixel _glcdSetPixel fV
; y -> R22
; x -> y+10
.even
_glcdSetPixel::
rcall push_arg4
rcall push_gset5
mov R22,R18
.dbline -1
.dbline 47
;
; void glcdn_Delay(long ld)
.dbline 49
; {
; long d;
lds R2,_glcd_Clip
ldd R0,y+10
cp R0,R2
brlo L12
ldi R20,1
ldi R21,0
rjmp L13
L12:
clr R20
clr R21
L13:
lds R2,_glcd_Clip+2
ldd R0,y+10
cp R2,R0
brlo L14
ldi R24,1
ldi R25,0
movw R14,R24
rjmp L15
L14:
clr R14
clr R15
L15:
lds R2,_glcd_Clip+1
cp R22,R2
brlo L16
ldi R24,1
ldi R25,0
movw R12,R24
rjmp L17
L16:
clr R12
clr R13
L17:
lds R2,_glcd_Clip+3
cp R2,R22
brlo L18
ldi R24,1
ldi R25,0
movw R10,R24
rjmp L19
L18:
clr R10
clr R11
L19:
movw R2,R20
and R2,R14
and R3,R15
and R2,R12
and R3,R13
and R2,R10
and R3,R11
tst R2
brne X0
tst R3
breq L7
X0:
.dbline 49
.dbline 50
mov R18,R22
clr R19
ldd R16,y+10
clr R17
rcall _point
.dbline 51
L7:
.dbline -2
.dbline 52
; for(d=0;d<ld;d++)
; {
; NOP();
L6:
rcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r y 22 c
.dbsym l x 10 c
.dbend
.dbfunc e glcdDoFillRect _glcdDoFillRect fV
; y -> R10
; x -> R14
; y2 -> R20
; x2 -> y+18
; y1 -> y+16
; x1 -> y+14
.even
_glcdDoFillRect::
rcall push_arg4
rcall push_gset5
sbiw R28,4
ldd R20,y+20
.dbline -1
.dbline 54
; NOP();
; NOP();
.dbline 59
; NOP();
; NOP();
; NOP();
;
; }
lds R2,_glcd_Clip+2
ldd R0,y+14
cp R2,R0
brsh L26
ldi R24,1
ldi R25,0
movw R12,R24
rjmp L27
L26:
clr R12
clr R13
L27:
lds R2,_glcd_Clip
ldd R0,y+18
cp R0,R2
brsh L28
ldi R24,1
ldi R25,0
movw R14,R24
rjmp L29
L28:
clr R14
clr R15
L29:
lds R2,_glcd_Clip+3
ldd R0,y+16
cp R2,R0
brsh L30
ldi R24,1
ldi R25,0
movw R10,R24
rjmp L31
L30:
clr R10
clr R11
L31:
lds R2,_glcd_Clip+1
cp R20,R2
brsh L32
ldi R22,1
ldi R23,0
rjmp L33
L32:
clr R22
clr R23
L33:
movw R2,R12
or R2,R14
or R3,R15
or R2,R10
or R3,R11
or R2,R22
or R3,R23
tst R2
brne X1
tst R3
breq L21
X1:
.dbline 59
.dbline 59
rjmp L20
L21:
.dbline 60
; }
lds R2,_glcd_Clip
ldd R0,y+14
cp R0,R2
brsh L34
.dbline 60
.dbline 60
std y+14,R2
.dbline 60
L34:
.dbline 61
;
lds R2,_glcd_Clip+1
ldd R0,y+16
cp R0,R2
brsh L36
.dbline 61
.dbline 61
std y+16,R2
.dbline 61
L36:
.dbline 62
; //
lds R2,_glcd_Clip+2
ldd R0,y+18
cp R2,R0
brsh L40
.dbline 62
.dbline 62
std y+18,R2
.dbline 62
L40:
.dbline 63
; void main(void)
lds R2,_glcd_Clip+3
cp R2,R20
brsh L44
.dbline 63
.dbline 63
mov R20,R2
.dbline 63
L44:
.dbline 65
; {
; init_devices();
ldd R0,y+18
ldd R16,y+14
cp R0,R16
brlo L50
ldi R22,1
ldi R23,0
rjmp L51
L50:
clr R22
clr R23
L51:
ldd R0,y+16
cp R20,R0
brlo L52
ldi R24,1
ldi R25,0
movw R10,R24
rjmp L53
L52:
clr R10
clr R11
L53:
movw R2,R22
and R2,R10
and R3,R11
tst R2
brne X2
tst R3
breq L48
X2:
.dbline 66
; OSCCAL=0xff; // 8M系统内部时钟校准
.dbline 67
; //设置MCU的I/O口
mov R2,R20
clr R3
std y+3,R3
std y+2,R2
ldd R2,y+16
clr R3
std y+1,R3
std y+0,R2
ldd R18,y+18
clr R19
ldd R16,y+14
clr R17
rcall _glcdn_SetPageArea
.dbline 68
; DDRD=0xFF;
ldi R16,92
ldi R17,0
rcall _glcdn_WriteCommand
.dbline 69
ldd R10,y+16
rjmp L57
L54:
.dbline 69
; PORTD=0x00;
.dbline 70
ldd R14,y+14
rjmp L61
L58:
.dbline 70
.dbline 71
lds R16,_Color1
clr R17
rcall _glcdn_WriteData
.dbline 72
lds R16,_Color2
clr R17
rcall _glcdn_WriteData
.dbline 73
L59:
.dbline 70
inc R14
L61:
.dbline 70
ldd R0,y+18
cp R0,R14
brsh L58
.dbline 74
L55:
.dbline 69
inc R10
L57:
.dbline 69
cp R20,R10
brsh L54
.dbline 75
L48:
.dbline -2
.dbline 76
; DDRB = 0xFF;
; PORTB=0x00;
; // SPSR |= BIT(SPI2X); // 设置SPI时钟倍速
; // SPCR |= BIT(SPE)|BIT(MSTR); // 使能SPI接口,主机模式,4M时钟
; //SPCR=0x51;
; //SPCR = 0x73; //setup SPI
; //SPSR = 0x01; //setup SPI
L20:
adiw R28,4
rcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r y 10 c
.dbsym r x 14 c
.dbsym r y2 20 c
.dbsym l x2 18 c
.dbsym l y1 16 c
.dbsym l x1 14 c
.dbend
.dbfunc e glcdFillRect _glcdFillRect fV
; t -> R14
; t -> R14
; y2 -> R12
; x2 -> R10
; y1 -> R22
; x1 -> R20
.even
_glcdFillRect::
rcall push_gset5
mov R22,R18
mov R20,R16
sbiw R28,3
ldd R10,y+13
ldd R12,y+15
.dbline -1
.dbline 78
; SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<CPOL);
; //insert your functional code here...
.dbline 80
.dbline 80
cp R10,R20
brsh L63
.dbline 80
.dbline 80
.dbline 80
mov R14,R20
.dbline 80
mov R20,R10
.dbline 80
mov R10,R14
.dbline 80
.dbline 80
L63:
.dbline 80
; // glcdn_Delay(9900000);
;
.dbline 80
.dbline 81
.dbline 81
cp R12,R22
brsh L65
.dbline 81
.dbline 81
.dbline 81
mov R14,R22
.dbline 81
mov R22,R12
.dbline 81
mov R12,R14
.dbline 81
.dbline 81
L65:
.dbline 81
; RGB2(255,255,255);
.dbline 81
.dbline 83
; glcdSetRect(glcd_Clip, 0, 0, 130, 130);
; init_lcd();
std y+2,R12
std y+0,R10
mov R18,R22
mov R16,R20
rcall _glcdDoFillRect
.dbline -2
.dbline 84
; top:
L62:
adiw R28,3
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r t 14 c
.dbsym r t 14 c
.dbsym r y2 12 c
.dbsym r x2 10 c
.dbsym r y1 22 c
.dbsym r x1 20 c
.dbend
.dbfunc e glcdRectangle _glcdRectangle fV
; t -> R14
; t -> R14
; y2 -> R12
; x2 -> R10
; y1 -> R22
; x1 -> R20
.even
_glcdRectangle::
rcall push_gset5
mov R22,R18
mov R20,R16
sbiw R28,3
ldd R10,y+13
ldd R12,y+15
.dbline -1
.dbline 86
; RGB2(255,255,255);
; glcdn_ClearLcd();
.dbline 88
.dbline 88
cp R10,R20
brsh L68
.dbline 88
.dbline 88
.dbline 88
mov R14,R20
.dbline 88
mov R20,R10
.dbline 88
mov R10,R14
.dbline 88
.dbline 88
L68:
.dbline 88
;
; sc_cbk(255,0,255,1);
.dbline 88
.dbline 89
.dbline 89
cp R12,R22
brsh L70
.dbline 89
.dbline 89
.dbline 89
mov R14,R22
.dbline 89
mov R22,R12
.dbline 89
mov R12,R14
.dbline 89
.dbline 89
L70:
.dbline 89
; sc_cfg(0,255,255,1);
.dbline 89
.dbline 90
; sc_cfr(0,0,255,1);
lds R2,_cfg
lds R3,_cfg+1
sbrs R3,7
rjmp L72
.dbline 90
.dbline 91
; sc_csh(0,0,255,1);
movw R16,R2
rcall _RGBToChar
.dbline 92
; //cbk&=0x8000;
std y+2,R22
std y+0,R10
mov R18,R22
mov R16,R20
rcall _glcdDoFillRect
.dbline 93
; //RGBToChar(cbk);
std y+2,R12
std y+0,R10
mov R18,R22
mov R16,R10
rcall _glcdDoFillRect
.dbline 94
; //if(cbk&0x8000)
std y+2,R12
std y+0,R10
mov R18,R12
mov R16,R20
rcall _glcdDoFillRect
.dbline 95
; //circle(30,30,20,1);
std y+2,R12
std y+0,R20
mov R18,R22
mov R16,R20
rcall _glcdDoFillRect
.dbline 96
; //else
L72:
.dbline 97
lds R2,_cbk
lds R3,_cbk+1
sbrs R3,7
rjmp L74
.dbline 97
.dbline 98
movw R16,R2
rcall _RGBToChar
.dbline 99
mov R24,R12
subi R24,1
mov R2,R24
mov R12,R24
std y+2,R2
mov R24,R10
subi R24,1
mov R2,R24
mov R10,R24
std y+0,R2
mov R24,R22
subi R24,255 ; addi 1
mov R22,R24
mov R18,R24
mov R24,R20
subi R24,255 ; addi 1
mov R20,R24
mov R16,R24
rcall _glcdDoFillRect
.dbline 100
L74:
.dbline -2
.dbline 101
; //circle(100,100,20,1);
; //point(30,30,0);
;
;
; glcdRectangle(1,1,31,31);
L67:
adiw R28,3
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r t 14 c
.dbsym r t 14 c
.dbsym r y2 12 c
.dbsym r x2 10 c
.dbsym r y1 22 c
.dbsym r x1 20 c
.dbend
.dbfunc e glcdFrame _glcdFrame fV
; t -> R14
; t -> R14
; y2 -> R12
; x2 -> R10
; y1 -> R22
; x1 -> R20
.even
_glcdFrame::
rcall push_gset5
mov R22,R18
mov R20,R16
sbiw R28,3
ldd R10,y+13
ldd R12,y+15
.dbline -1
.dbline 103
;
; sc_cbk(255,0,255,0);
.dbline 105
.dbline 105
cp R10,R20
brsh L77
.dbline 105
.dbline 105
.dbline 105
mov R14,R20
.dbline 105
mov R20,R10
.dbline 105
mov R10,R14
.dbline 105
.dbline 105
L77:
.dbline 105
;
; glcdRectangle(33,1,64,31);
.dbline 105
.dbline 106
.dbline 106
cp R12,R22
brsh L79
.dbline 106
.dbline 106
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -