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

📄 main.s

📁 LCD彩显驱动 nokia 6100 LCD
💻 S
📖 第 1 页 / 共 5 页
字号:
	.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 + -