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

📄 test.s

📁 基于AVR和51的240*128液晶显示模块驱动程序。很有用的喔~
💻 S
📖 第 1 页 / 共 3 页
字号:
	sbiw R28,1
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*一张240×128点阵的全尺寸图片*/
; //};
; 
; unsigned char PTSTR[]="Hello ever body,I'm RJ";
; 
; void avr_init(void);
; 
	cpi R20,240
	brsh L36
	cpi R22,128
	brlo L34
L36:
; int main(void)
; {
	xjmp L33
L34:
; 	unsigned char a,b,c,d;
	ldi R24,30
	mul R24,R22
	movw R22,R0
	mov R2,R20
	clr R3
	asr R3
	ror R2
	asr R3
	ror R2
	asr R3
	ror R2
	add R22,R2
	adc R23,R3
	subi R22,0  ; offset = 768
	sbci R23,253
;     avr_init();
	ldi R24,36
	std y+0,R24
	movw R18,R22
	mov R18,R19
	clr R19
	mov R16,R22
	xcall _Lcd_SendCom2
; 
	ldd R0,y+5
	tst R0
	breq L37
; 	Lcd_PrintText(10,2,PTSTR);
	ldi R16,7
	sub R16,R20
	andi R16,7
	ori R16,248
	xcall _Lcd_SendCom0
	xjmp L38
L37:
; 	
;     Lcd_Line(0,0,239,127,1);
	ldi R16,7
	sub R16,R20
	andi R16,7
	ori R16,240
	xcall _Lcd_SendCom0
L38:
L33:
	adiw R28,1
	xcall pop_gset2
	.dbline 0 ; func end
	ret
;              t -> R20,R21
;             dy -> R22,R23
;             dx -> R10,R11
;              e -> R12,R13
;           draw -> R14
;             y2 -> y+17
;             x2 -> y+15
;             y1 -> y+13
;             x1 -> y+11
	.even
_Lcd_Line::
	xcall push_arg4
	xcall push_gset5
	sbiw R28,1
	ldd R14,y+19
;     Lcd_Line(0,127,239,0,1);
;     Lcd_Line(0,64,239,64,1);
;     Lcd_Line(120,0,120,127,1);
;     Lcd_Circle(120,64,30,1);
;     Lcd_Box(2,2,237,125,1,0);
;     Lcd_Box(110,54,130,74,1,1);
;     Lcd_Box(115,59,125,69,0,1);
; 	Lcd_Point(0,0,1);
;     a=75;
;     b=1;
	ldd R0,y+11
	ldd R16,y+15
	cp R0,R16
	brne L40
; 
;     c=5;
	ldd R0,y+17
	ldd R16,y+13
	cp R0,R16
	brsh L42
	ldi R24,-1
	ldi R25,-1
	movw R12,R24
	xjmp L47
L42:
;     d=64;
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L47
L44:
	std y+0,R14
	ldd R18,y+13
	ldd R16,y+11
	xcall _Lcd_Point
L45:
	ldd R2,y+13
	clr R3
	add R2,R12
	adc R3,R13
	std y+13,R2
L47:
;     Lcd_Box(4,63,116,120,1,0);
	ldd R0,y+13
	ldd R16,y+17
	cp R0,R16
	brne L44
; 
	std y+0,R14
	mov R18,R0
	ldd R16,y+11
	xcall _Lcd_Point
; 	while(1)
	xjmp L39
L40:
;     {
;         Lcd_Line(a,14,a,26,b);
;         if (LCD_X_MAX-8==a++) {a=75;b= 1-b;}
	ldd R0,y+13
	ldd R16,y+17
	cp R0,R16
	brne L48
; 
;         if (c<115)
	ldd R0,y+15
	ldd R16,y+11
	cp R0,R16
	brsh L50
	ldi R24,-1
	ldi R25,-1
	movw R12,R24
	xjmp L55
L50:
;         {
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L55
L52:
	std y+0,R14
	ldd R18,y+13
	ldd R16,y+11
	xcall _Lcd_Point
L53:
	ldd R2,y+11
	clr R3
	add R2,R12
	adc R3,R13
	std y+11,R2
L55:
;             Lcd_Line(c,d,120-c,183-d,1);
	ldd R0,y+11
	ldd R16,y+15
	cp R0,R16
	brne L52
; 			delay_us(250);
	std y+0,R14
	ldd R18,y+13
	mov R16,R0
	xcall _Lcd_Point
;             Lcd_Line(c,d,120-c,183-d,0);
	xjmp L39
L48:
;             c++;
;         }
;         else
	ldd R2,y+11
	clr R3
	ldd R10,y+15
	clr R11
	sub R10,R2
	sbc R11,R3
;         {
	movw R24,R10
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L56
;             Lcd_Line(c,d,120-c,183-d,1);
; 			delay_us(250);
	mov R20,R2
	clr R21
	ldd R0,y+15
	std y+11,R0
	std y+15,R20
;             Lcd_Line(c,d,120-c,183-d,0);
	ldd R20,y+13
	clr R21
	ldd R0,y+17
	std y+13,R0
	std y+17,R20
;             d++;
	com R24
	com R25
	subi R24,0xFF
	sbci R25,0xFF
	movw R10,R24
;             if (d>=120) {d=64;c=5;} 
L56:
;         }
; 	}       
	ldd R2,y+13
	clr R3
	ldd R22,y+17
	clr R23
	sub R22,R2
	sbc R23,R3
; }
	clr R2
	cp R2,R22
	cpc R3,R23
	brge L58
; 
; void avr_init(void)
	ldi R20,1
	ldi R21,0
; {
	xjmp L59
L58:
;     Lcd_Setup();
; 	Lcd_Init();
;     return;
	ldi R20,-1
	ldi R21,-1
; }
	com R22
	com R23
	subi R22,0xFF
	sbci R23,0xFF
; }
L59:
; }
; }
	std y+0,R14
	ldd R18,y+13
	ldd R16,y+11
	xcall _Lcd_Point
; }
	cp R10,R22
	cpc R11,R23
	brlt L60
; }
; }
	movw R2,R10
	asr R3
	ror R2
	movw R12,R22
	sub R12,R2
	sbc R13,R3
	xjmp L63
L62:
; }
; }
; }
	clr R2
	clr R3
	cp R2,R12
	cpc R3,R13
	brge L65
; }
; }
	ldd R2,y+13
	clr R3
	add R2,R20
	adc R3,R21
	std y+13,R2
; }
	sub R12,R10
	sbc R13,R11
; }
L65:
	ldd R0,y+11
	inc R0
	std y+11,R0
	add R12,R22
	adc R13,R23
	std y+0,R14
	ldd R18,y+13
	mov R16,R0
	xcall _Lcd_Point
L63:
	ldd R0,y+11
	ldd R16,y+15
	cp R0,R16
	brne L62
; }
; }
; }
; }
; }
	xjmp L61
L60:
; }
; }
; }
	movw R2,R22
	asr R3
	ror R2
	movw R12,R10
	sub R12,R2
	sbc R13,R3
	xjmp L68
L67:
; }
; }
; }
	clr R2
	clr R3
	cp R2,R12
	cpc R3,R13
	brge L70
; }
; }
	ldd R0,y+11
	inc R0
	std y+11,R0
; }
	sub R12,R22
	sbc R13,R23
; }
L70:
	ldd R2,y+13
	clr R3
	add R2,R20
	adc R3,R21
	std y+13,R2
	add R12,R10
	adc R13,R11
	std y+0,R14
	mov R18,R2
	ldd R16,y+11
	xcall _Lcd_Point
L68:
	ldd R0,y+13
	ldd R16,y+17
	cp R0,R16
	brne L67
; }
; }
; }
; }
; }
L61:
L39:
	adiw R28,1
	xcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
;              p -> R20,R21
;             yc -> R22,R23
;             xc -> R10,R11
;           draw -> R12
;              r -> y+15
;              y -> R14
;              x -> y+11
	.even
_Lcd_Circle::
	xcall push_arg4
	xcall push_gset5
	mov R14,R18
	sbiw R28,1
	ldd R12,y+17
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	clr R10
	clr R11
; }
; }
; }
	ldd R22,y+15
	clr R23
; }
	mov R2,R22
	clr R3
	lsl R2
	rol R3
	ldi R20,3
	ldi R21,0
	sub R20,R2
	sbc R21,R3
	xjmp L74
L73:
; }
; }
; }
	std y+0,R12
	mov R18,R14
	clr R19
	add R18,R22
	adc R19,R23
	ldd R16,y+11
	clr R17
	add R16,R10
	adc R17,R11
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	sub R18,R22
	sbc R19,R23
	ldd R16,y+11
	clr R17
	add R16,R10
	adc R17,R11
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	add R18,R22
	adc R19,R23
	ldd R16,y+11
	clr R17
	sub R16,R10
	sbc R17,R11
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	sub R18,R22
	sbc R19,R23
	ldd R16,y+11
	clr R17
	sub R16,R10
	sbc R17,R11
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	add R18,R10
	adc R19,R11
	ldd R16,y+11
	clr R17
	add R16,R22
	adc R17,R23
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	sub R18,R10
	sbc R19,R11
	ldd R16,y+11
	clr R17
	add R16,R22
	adc R17,R23
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	add R18,R10
	adc R19,R11
	ldd R16,y+11
	clr R17
	sub R16,R22
	sbc R17,R23
	xcall _Lcd_Point
; }
	std y+0,R12
	mov R18,R14
	clr R19
	sub R18,R10
	sbc R19,R11
	ldd R16,y+11
	clr R17
	sub R16,R22
	sbc R17,R23
	xcall _Lcd_Point
; }
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge L76
; }
	movw R2,R10
	movw R24,R2
	adiw R24,1
	movw R10,R24
	movw R24,R2

⌨️ 快捷键说明

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