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

📄 main.s

📁 LCD彩显驱动 nokia 6100 LCD
💻 S
📖 第 1 页 / 共 5 页
字号:
	.dbline 106
	mov R14,R22
	.dbline 106
	mov R22,R12
	.dbline 106
	mov R12,R14
	.dbline 106
	.dbline 106
L79:
	.dbline 106
; 
	.dbline 106
	.dbline 108
; 
; 
	lds R2,_csh
	lds R3,_csh+1
	sbrs R3,7
	rjmp L81
	.dbline 108
	.dbline 109
; sc_cfg(255,0,0,1);
	movw R16,R2
	rcall _RGBToChar
	.dbline 110
; sc_cbk(0,0,255,1);
	std y+2,R12
	mov R24,R10
	subi R24,2
	std y+0,R24
	mov R18,R12
	mov R16,R20
	subi R16,252    ; addi 4
	rcall _glcdDoFillRect
	.dbline 111
; RoundRect(66,1,31,31,4);
	mov R24,R12
	subi R24,2
	std y+2,R24
	std y+0,R10
	mov R18,R22
	subi R18,252    ; addi 4
	mov R16,R10
	rcall _glcdDoFillRect
	.dbline 112
; sc_cfg(0,0,255,1);
	dec R10
	.dbline 113
; sc_cbk(100,0,208,0);
	dec R12
	.dbline 114
; RoundRect(99,1,29,31,8);
	std y+2,R12
	std y+0,R10
	mov R18,R12
	subi R18,2
	mov R16,R10
	subi R16,2
	rcall _glcdDoFillRect
	.dbline 115
; 
L81:
	.dbline 116
; sc_cfg(0,0,255,0);
	lds R2,_cfr
	lds R3,_cfr+1
	sbrs R3,7
	rjmp L83
	.dbline 116
	.dbline 117
; sc_cbk(0,255,128,1);
	movw R16,R2
	rcall _RGBToChar
	.dbline 118
; RoundRect(1,33,31,31,6);
	std y+2,R22
	mov R24,R10
	subi R24,2
	std y+0,R24
	mov R18,R22
	mov R16,R20
	subi R16,254    ; addi 2
	rcall _glcdDoFillRect
	.dbline 119
; 
	std y+2,R12
	mov R24,R10
	subi R24,2
	std y+0,R24
	mov R18,R12
	mov R16,R20
	subi R16,254    ; addi 2
	rcall _glcdDoFillRect
	.dbline 120
; //glcdRectangle(3,8,10,20);
	mov R24,R12
	subi R24,2
	std y+2,R24
	std y+0,R10
	mov R18,R22
	subi R18,254    ; addi 2
	mov R16,R10
	rcall _glcdDoFillRect
	.dbline 121
; sc_cfg(0,255,0,1);
	mov R24,R12
	subi R24,2
	std y+2,R24
	std y+0,R20
	mov R18,R22
	subi R18,254    ; addi 2
	mov R16,R20
	rcall _glcdDoFillRect
	.dbline 122
; 
	inc R20
	.dbline 123
; glcdCircle(48,48,15);
	inc R22
	.dbline 124
; glcdEllipse(82,48,15,12);
	dec R10
	.dbline 125
; 
	dec R12
	.dbline 126
; RGB2(0,0,255);
	mov R18,R22
	mov R16,R20
	rcall _glcdSetPixel
	.dbline 127
; sc_cfg(0,0,255,1);
	mov R18,R22
	mov R16,R10
	rcall _glcdSetPixel
	.dbline 128
; sc_cbk(255,255,0,1);
	mov R18,R12
	mov R16,R20
	rcall _glcdSetPixel
	.dbline 129
; sc_csh(0,0,255,1);
	mov R18,R12
	mov R16,R10
	rcall _glcdSetPixel
	.dbline 130
; glcdFrame(1,66,31,97);
L83:
	.dbline 131
	lds R2,_cbk
	lds R3,_cbk+1
	sbrs R3,7
	rjmp L85
	.dbline 131
	.dbline 132
	movw R16,R2
	rcall _RGBToChar
	.dbline 133
	mov R24,R12
	subi R24,1
	std y+2,R24
	std y+0,R20
	mov R18,R22
	subi R18,255    ; addi 1
	mov R16,R20
	rcall _glcdDoFillRect
	.dbline 134
	mov R24,R12
	subi R24,1
	std y+2,R24
	std y+0,R10
	mov R18,R22
	subi R18,255    ; addi 1
	mov R16,R10
	rcall _glcdDoFillRect
	.dbline 135
	std y+2,R12
	mov R24,R10
	subi R24,1
	std y+0,R24
	mov R18,R22
	mov R16,R20
	subi R16,255    ; addi 1
	rcall _glcdDoFillRect
	.dbline 136
L85:
	.dbline -2
	.dbline 137
; RGB2(255,0,255);
; glcdLine(99,33,130,64);
; //n6100DrawCircle(64,64,30);
; //glcdn_InitDisplay();
; //
; // SPCR = (1<<MSTR)|(1<<SPE)|(1<<SPR0);
; //backgroundColor=4;
L76:
	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 glcdLine _glcdLine fV
;              t -> R14
;              t -> R14
;              t -> R14
;              t -> R20
;              t -> R22
;              t -> y+15
;              t -> y+14
;              t -> y+13
;              t -> R20
;              t -> R20
;              t -> R20
;           swap -> y+12
;             sx -> y+11
;              i -> y+10
;             dy -> y+9
;             y3 -> y+8
;             x3 -> y+7
;             sy -> y+6
;             dx -> y+5
;              e -> y+3
;             y2 -> R8
;             x2 -> R6
;             y1 -> y+28
;             x1 -> y+26
	.even
_glcdLine::
	rcall push_arg4
	rcall push_gset5
	sbiw R28,16
	ldd R6,y+30
	ldd R8,y+32
	.dbline -1
	.dbline 139
; while(1);
; sc_cfg(0,255,255,1);
	.dbline 145
; b2=1;
;  while(1)
;  {
; //while(1);
; //RGB2(255,255,255);
;  //glcdn_ClearLcd();
	lds R2,_cfg
	lds R3,_cfg+1
	sbrs R3,7
	rjmp L88
	.dbline 145
	.dbline 146
; // n6100DrawCircle(64,64,backgroundColor);
	movw R16,R2
	push R6
	push R8
	rcall _RGBToChar
	pop R8
	pop R6
	.dbline 147
; //RGB2(0,0,255);
	ldd R0,y+26
	cp R0,R6
	brne L92
	ldi R22,1
	ldi R23,0
	rjmp L93
L92:
	clr R22
	clr R23
L93:
	ldd R0,y+28
	cp R0,R8
	brne L94
	ldi R20,1
	ldi R21,0
	rjmp L95
L94:
	clr R20
	clr R21
L95:
	movw R2,R22
	or R2,R20
	or R3,R21
	tst R2
	brne X3
	tst R3
	breq L90
X3:
	.dbline 147
	.dbline 148
; 
	std y+2,R8
	std y+0,R6
	ldd R18,y+28
	ldd R16,y+26
	push R6
	push R8
	rcall _glcdFillRect
	pop R8
	pop R6
	.dbline 149
	rjmp L91
L90:
	.dbline 149
; 
	.dbline 153
;  glcdCircle(64,64,backgroundColor);
;  RoundRect(backgroundColor,backgroundColor,backgroundColor+5,backgroundColor+5,10);
; backgroundColor++;
; 
	ldd R0,y+26
	cp R0,R6
	brsh L96
	.dbline 153
	.dbline 153
	mov R2,R6
	sub R2,R0
	std y+5,R2
	.dbline 153
	clr R0
	inc R0
	std y+11,R0
	.dbline 153
	rjmp L97
L96:
	.dbline 154
;   if(backgroundColor>64)
	.dbline 154
	ldd R2,y+26
	sub R2,R6
	std y+5,R2
	.dbline 154
	ldi R24,255
	std y+11,R24
	.dbline 154
L97:
	.dbline 155
;  {backgroundColor=7;
	ldd R0,y+28
	cp R0,R8
	brsh L98
	.dbline 155
	.dbline 155
	mov R2,R8
	sub R2,R0
	std y+9,R2
	.dbline 155
	clr R0
	inc R0
	std y+6,R0
	.dbline 155
	rjmp L99
L98:
	.dbline 156
;  //b2++;
	.dbline 156
	ldd R2,y+28
	sub R2,R8
	std y+9,R2
	.dbline 156
	ldi R24,255
	std y+6,R24
	.dbline 156
L99:
	.dbline 159
;  //if(b2>64)b2=5;
;  //goto top;
;  
	ldd R0,y+9
	ldd R16,y+5
	cp R0,R16
	brsh L100
	.dbline 159
	clr R0
	std y+12,R0
	rjmp L101
L100:
	.dbline 160
;  b2=(b2+1)%2;
	clr R0
	inc R0
	std y+12,R0
L101:
	.dbline 161
;  sc_cbk(255,255,0,b2-1);
	ldd R0,y+12
	tst R0
	breq L102
	.dbline 161
	.dbline 162
;  }
	.dbline 162
	ldd R20,y+26
	.dbline 162
	ldd R0,y+28
	std y+26,R0
	.dbline 162
	std y+28,R20
	.dbline 162
	.dbline 162
	.dbline 163
;  
	.dbline 163
	ldd R20,y+5
	.dbline 163
	ldd R0,y+9
	std y+5,R0
	.dbline 163
	std y+9,R20
	.dbline 163
	.dbline 163
	.dbline 164
; //glcdn_InitDisplay2();
	.dbline 164
	ldd R20,y+11
	.dbline 164
	ldd R0,y+6
	std y+11,R0
	.dbline 164
	std y+6,R20
	.dbline 164
	.dbline 164
	.dbline 165
; //glcdn_InitDisplay();
L102:
	.dbline 167
; //glcdn_WriteCommand(0x5C);
; //glcdn_WriteData(0x7f);
	ldd R2,y+5
	clr R3
	ldd R4,y+9
	clr R5
	sub R4,R2
	sbc R5,R3
	ldd R2,y+9
	clr R3
	add R4,R2
	adc R5,R3
	std y+4,R5
	std y+3,R4
	.dbline 168
; //glcdn_InitDisplay();
	ldd R0,y+26
	std y+7,R0
	.dbline 169
; //init_lcd();
	ldd R0,y+28
	std y+8,R0
	.dbline 170
; //glcdn_Delay(13900);
	ldd R6,y+26
	.dbline 171
; //glcdn_SetPageArea(GLCD_X_START, GLCD_X_END, GLCD_Y_START, GLCD_Y_END);
	ldd R8,y+28
	.dbline 174
	clr R0
	std y+10,R0
	rjmp L107
L104:
	.dbline 174
; //while(1)
; //glcdn_ClearLcd();
; //	{glcdn_WriteCommand(MEM_WRITE);
	.dbline 175
; //	glcdn_WriteData(RED);
	ldd R0,y+26
	cp R0,R6
	breq L110
	ldi R24,1
	ldi R25,0
	movw R12,R24
	rjmp L111
L110:
	clr R12
	clr R13
L111:
	ldd R0,y+28
	cp R0,R8
	breq L112
	ldi R24,1
	ldi R25,0
	movw R10,R24
	rjmp L113
L112:
	clr R10
	clr R11
L113:
	movw R2,R12
	and R2,R10
	and R3,R11
	tst R2
	brne X4
	tst R3
	breq L108
X4:
	.dbline 175
	.dbline 176
; //	glcdn_Delay(80);
	ldd R0,y+12
	tst R0
	breq L114
	.dbline 176
	.dbline 177
; 	}
	.dbline 177
	std y+13,R6
	.dbline 177
	mov R6,R8
	.dbline 177
	ldd R8,y+13
	.dbline 177
	.dbline 177
	.dbline 178
;  
	.dbline 178
	ldd R0,y+7
	std y+14,R0
	.dbline 178
	ldd R0,y+8
	std y+7,R0
	.dbline 178
	ldd R0,y+14
	std y+8,R0
	.dbline 178
	.dbline 178
	.dbline 179
; }
L114:
	.dbline 180
	.dbline 180
	ldd R0,y+7
	cp R0,R6
	brsh L116
	.dbline 180
	.dbline 180
	.dbline 180
	std y+15,R6
	.dbline 180
	ldd R6,y+7
	.dbline 180
	ldd R0,y+15
	std y+7,R0
	.dbline 180
	.dbline 180
L116:
	.dbline 180
; 
	.dbline 180
	.dbline 181
	.dbline 181
	ldd R0,y+8
	cp R0,R8
	brsh L118
	.dbline 181
	.dbline 181
	.dbline 181
	mov R22,R8
	.dbline 181
	mov R8,R0
	.dbline 181
	std y+8,R22
	.dbline 181
	.dbline 181
L118:
	.dbline 181
; void sp(unsigned char dd,unsigned char cmd)
	.dbline 181
	.dbline 182
; {
	ldd R0,y+8
	std y+2,R0
	ldd R0,y+7
	std y+0,R0
	mov R18,R8
	mov R16,R6
	push R16
	push R18
	rcall _glcdDoFillRect
	pop R8
	pop R6
	.dbline 183
; unsigned char i;
	ldd R6,y+26
	.dbline 184
; //csl;
	ldd R8,y+28
	.dbline 185
L108:
	.dbline 185
; 
	.dbline 186
; sclkl;
	ldd R0,y+26
	std y+7,R0
	.dbline 187
; if(cmd)
	ldd R0,y+28
	std y+8,R0
	rjmp L121
L120:
	.dbline 188
	.dbline 189
	ldd R0,y+28
	ldd R16,y+6
	add R0,R16
	std y+28,R0
	.dbline 190
	ldd R2,y+5
	clr R3
	ldd R0,y+3
	ldd R1,y+4
	sub R0,R2
	sbc R1,R3
	std y+4,R1
	std y+3,R0
	.dbline 191
	ldd R2,y+5
	clr R3
	sub R0,R2
	sbc R1,R3
	std y+4,R1
	std y+3,R0
	.dbline 192
L121:
	.dbline 188
	ldd R24,y+3
	ldd R25,y+4
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L120
	.dbline 193
	ldd R0,y+26
	ldd R16,y+11
	add R0,R16
	std y+26,R0
	.dbline 194
	ldd R2,y+9
	clr R3
	ldd R0,y+3
	ldd R1,y+4
	add R0,R2
	adc R1,R3
	std y+4,R1
	std y+3,R0
	.dbline 195
	ldd R2,y+9
	clr R3
	add R0,R2
	adc R1,R3
	std y+4,R1
	std y+3,R0
	.dbline 196
L105:
	.dbline 174
	ldd R0,y+10
	inc R0
	std y+10,R0
L107:
	.dbline 174
	ldd R0,y+5
	ldd R16,y+10
	cp R0,R16
	brlo X5
	rjmp L104
X5:
	.dbline 197
; sdatah;
; else
; sdatal;
; sclkh;
; 
; for(i=0;i<8;i++)
; {
; sclkl;
; //NOP();
; if(((dd<<i)&0x80)==0x80)
	ldd R0,y+12
	tst R0
	breq L123
	.dbline 197
	.dbline 198
; sdatah;
	.dbline 198
	mov R20,R6
	.dbline 198
	mov R6,R8
	.dbline 198
	mov R8,R20
	.dbline 198
	.dbline 198
	.dbline 199
; else
	.dbline 199
	ldd R14,y+7
	.dbline 199
	ldd R0,y+8
	std y+7,R0
	.dbline 199
	std y+8,R14
	.dbline 199
	.dbline 199
	.dbline 200
; sdatal;
L123:
	.dbline 201
	.dbline 201
	ldd R0,y+7
	cp R0,R6
	brsh L125
	.dbline 201
	.dbline 201
	.dbline 201
	mov R14,R6
	.dbline 201
	mov R6,R0
	.dbline 201
	std y+7,R14
	.dbline 201
	.dbline 201
L125:
	.dbline 201
; 
	.dbline 201
	.dbline 202
	.dbline 202
	ldd R0,y+8
	cp R0,R8
	brsh L127
	.dbline 202
	.dbline 202
	.dbline 202
	mov R14,R8
	.dbline 202
	mov R8,R0
	.dbline 202
	std y+8,R14
	.dbline 202
	.dbline 202
L127:
	.dbline 202
; sclkh;
	.dbline 202
	.dbline 203
; }
	ldd R0,y+8
	std y+2,R0
	ldd R0,y+7
	std y+0,R0
	mov R18,R8
	mov R16,R6
	rcall _glcdDoFillRect
	.dbline 204
; 
L91:
	.dbline 205
L88:
	.dbline -2
	.dbline 206
; //csh;
; }
L87:
	adiw R28,16
	rcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r t 14 c
	.dbsym r t 14 c
	.dbsym r t 14 c
	.dbsym r t 20 c
	.dbsym r t 22 c
	.dbsym l t 15 c
	.dbsym l t 14 c
	.dbsym l t 13 c
	.dbsym r t 20 c
	.dbsym r t 20 c
	.dbsym r t 20 c
	.dbsym l swap 12 c
	.dbsym l sx 11 c
	.dbsym l i 10 c
	.dbsym l dy 9 c
	.dbsym l y3 8 c
	.dbsym l x3 7 c
	.dbsym l sy 6 c
	.dbsym l dx 5 c
	.dbsym l e 3 I
	.dbsym r y2 8 c
	.dbsym r x2 6 c
	.dbsym l y1 28 c
	.dbsym l x1 26 c
	.dbend
	.dbfunc e glcdDoPixelLine _glcdDoPixelLine fV
;           fill -> y+15
;              y -> R22,R23
;             x2 -> R10,R11
;             x1 -> R20,R21
	.even
_glcdDoPixelLine::
	rcall push_gset5
	movw R10,R18
	movw R20,R16
	sbiw R28,3
	ldd R22,y+13
	ldd R23,y+14
	.dbline -1
	.dbline 209
; 
; void init_lcd(void)
; {
	.dbline 211
; int i;
; 	glcdn_Delay(20000);
	lds R2,_glcd_Clip+1
	clr R3
	cp R22,R2
	cpc R23,R3
	brlo L134
	ldi R24,1
	ldi R25,0
	movw R14,R24
	rjmp L135
L134:
	clr R14
	clr R15
L135:
	lds R2,_glcd_Clip+3
	clr R3
	cp R2,R22
	cpc R3,R23
	brlo L136
	ldi R24,1
	ldi R25,0
	movw R12,R24
	rjmp L137
L136:
	clr R12
	clr R13
L137:
	movw R2,R14
	and R2,R12
	and R3,R13
	tst R2
	brne X6
	tst R3
	brne X8
	rjmp L130
X8:
X6:
	.dbline 211
	.dbline 212
	lds R2,_glcd_Clip
	clr R3
	cp R20,R2
	cpc R21,R3
	brsh L138
	.dbline 212
	.dbline 212
	mov R20,R2
	clr R21
	.dbline 212
	rjmp L139
L138:
	.dbline 212
;     PORTB=0x00;
	.dbline 213
	lds R2,_glcd_Clip+2
	clr R3
	cp R2,R20
	cpc R3,R21
	brsh L140
	.dbline 213
	.dbline 213
	rjmp L129
L140:
	.dbline 213
; 	GLCD_SER_DDR = 0xff;
	.dbline 214
; 	PORTD=0x00;
	lds R2,_cfg
	lds R3,_cfg+1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -