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

📄 lcd.s

📁 本科毕业设计做的一个东西,用的是AT908515,驱动128*64的LCD,开发环境是ICCAVR6.22.这些代码现在已经在成熟的产品中应用了
💻 S
📖 第 1 页 / 共 3 页
字号:
	mov R16,R22
	subi R16,1
	subi R16,192	; addi 64
	rcall _WriInsn
	.dbline 106
	clr R16
	rcall _WriData
	.dbline 107
	dec R22
	.dbline 108
L14:
	.dbline 101
	tst R22
	brne L13
	.dbline 109
	dec R20
	.dbline 110
L11:
	.dbline 98
	tst R20
	brne L10
	.dbline 112
; 				 while(Clear_Y)
; 				 	  {
; 					   
; 					   WriInsn((Clear_page-1)+0b10111000);
; 					   WriInsn((Clear_Y-1)+0b01000000);
; 					   WriData(0x00);
; 					   Clear_Y--;
; 					  }
; 				 Clear_page--;	  			   
; 			   }
; //***************************************************		 		 
; 	     ContrPort=ContrPort&~CS1;  //cs1=0
	cbi 0x15,7
	.dbline 113
; 		 ContrPort=ContrPort|CS2;//cs2=1		 
	sbi 0x15,6
	.dbline 114
; 		 Clear_page=8;
	ldi R20,8
	rjmp L17
L16:
	.dbline 116
; 		 while(Clear_page)
; 		       {
	.dbline 117
; 			     Clear_Y=64;
	ldi R22,64
	rjmp L20
L19:
	.dbline 119
	.dbline 121
	mov R16,R20
	subi R16,1
	subi R16,72	; addi 184
	rcall _WriInsn
	.dbline 122
	mov R16,R22
	subi R16,1
	subi R16,192	; addi 64
	rcall _WriInsn
	.dbline 123
	clr R16
	rcall _WriData
	.dbline 124
	dec R22
	.dbline 125
L20:
	.dbline 118
	tst R22
	brne L19
	.dbline 126
	dec R20
	.dbline 127
L17:
	.dbline 115
	tst R20
	brne L16
	.dbline -2
	.dbline 130
; 				 while(Clear_Y)
; 				 	  {
; 					   
; 					   WriInsn((Clear_page-1)+0b10111000);
; 					   WriInsn((Clear_Y-1)+0b01000000);
; 					   WriData(0x00);
; 					   Clear_Y--;
; 					  }
; 				 Clear_page--;	  			   
; 			   }		 
; 	   
; 	   
; 	   }       		 
L9:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Clear_page 20 c
	.dbsym r Clear_Y 22 c
	.dbfunc s WriteCgram _WriteCgram fI
;         NumCs2 -> R20,R21
;         NumCs1 -> R22,R23
;      NumTemp01 -> R12,R13
;        NumPage -> R14
;              j -> R20,R21
;              i -> R22,R23
;          Point -> R10
;    DataSequent -> R6
	.even
_WriteCgram::
	rcall push_gset5
	mov R10,R18
	mov R6,R16
	.dbline -1
	.dbline 134
; //********************************************************
; //**setup CGRAM**********************		 
; void WriteCgram(unsigned char DataSequent, unsigned char Point)
; 	 {  
	.dbline 138
; 	   unsigned char NumPage;  //the data page 
; 	   unsigned NumCs1,NumCs2;//chip select
; 	   unsigned NumTemp01,i,j;
; 	   if(DataSequent<8)
	mov R24,R6
	cpi R24,8
	brsh L23
	.dbline 139
;             {
	.dbline 140
; 			  NumPage=0;
	clr R14
	.dbline 141
; 			   if(DataSequent<4)
	cpi R24,4
	brsh L25
	.dbline 142
; 			     {NumCs1=1;
	.dbline 142
	ldi R22,1
	ldi R23,0
	.dbline 143
; 				  NumCs2=0;
	clr R20
	clr R21
	.dbline 144
; 				  NumTemp01=16*DataSequent;
	mov R12,R6
	clr R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 145
; 				  }	
	rjmp L24
L25:
	.dbline 147
; 			   else 
; 			     {NumCs1=0;
	.dbline 147
	clr R22
	clr R23
	.dbline 148
; 				  NumCs2=1;
	ldi R20,1
	ldi R21,0
	.dbline 149
; 				  NumTemp01=16*(DataSequent-4);
	mov R24,R6
	clr R25
	sbiw R24,4
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 150
; 				  }				 
	.dbline 152
; 				   	  			 
; 			   }
	rjmp L24
L23:
	.dbline 153
; 	   else if((DataSequent)<16&&(DataSequent>7))
	mov R24,R6
	cpi R24,16
	brsh L27
	ldi R24,7
	cp R24,R6
	brsh L27
	.dbline 154
; 	        {
	.dbline 155
; 			 NumPage=2;
	ldi R24,2
	mov R14,R24
	.dbline 156
; 			 if(DataSequent<12)
	mov R24,R6
	cpi R24,12
	brsh L29
	.dbline 157
; 			     {NumCs1=1;
	.dbline 157
	ldi R22,1
	ldi R23,0
	.dbline 158
; 				  NumCs2=0;
	clr R20
	clr R21
	.dbline 159
; 				  NumTemp01=16*(DataSequent-8);
	clr R25
	sbiw R24,8
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 160
; 				  }	
	rjmp L28
L29:
	.dbline 162
; 			   else
; 			     {NumCs1=0;
	.dbline 162
	clr R22
	clr R23
	.dbline 163
; 				  NumCs2=1;
	ldi R20,1
	ldi R21,0
	.dbline 164
; 				  NumTemp01=16*(DataSequent-12);
	mov R24,R6
	clr R25
	sbiw R24,12
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 165
; 				  }		
	.dbline 166
; 			 }
	rjmp L28
L27:
	.dbline 167
; 	   else if((DataSequent>15)&&(DataSequent<24))
	ldi R24,15
	cp R24,R6
	brsh L31
	mov R24,R6
	cpi R24,24
	brsh L31
	.dbline 168
; 	        {
	.dbline 169
; 			 NumPage=4;
	ldi R24,4
	mov R14,R24
	.dbline 170
; 			 if(DataSequent<20)
	mov R24,R6
	cpi R24,20
	brsh L33
	.dbline 171
; 			     {NumCs1=1;
	.dbline 171
	ldi R22,1
	ldi R23,0
	.dbline 172
; 				  NumCs2=0;
	clr R20
	clr R21
	.dbline 173
; 				  NumTemp01=16*(DataSequent-16);
	clr R25
	sbiw R24,16
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 174
; 				  }	
	rjmp L32
L33:
	.dbline 176
; 			   else 
; 			     {NumCs1=0;
	.dbline 176
	clr R22
	clr R23
	.dbline 177
; 				  NumCs2=1;
	ldi R20,1
	ldi R21,0
	.dbline 178
; 				  NumTemp01=16*(DataSequent-20);
	mov R24,R6
	clr R25
	sbiw R24,20
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 179
; 				  }					
	.dbline 180
; 			 }
	rjmp L32
L31:
	.dbline 181
; 	   else if((DataSequent>23)&&(DataSequent<32))
	ldi R24,23
	cp R24,R6
	brsh L35
	mov R24,R6
	cpi R24,32
	brsh L35
	.dbline 182
; 	        {
	.dbline 183
; 			 NumPage=6;
	ldi R24,6
	mov R14,R24
	.dbline 184
; 			 if(DataSequent<28)
	mov R24,R6
	cpi R24,28
	brsh L37
	.dbline 185
; 			     {NumCs1=1;
	.dbline 185
	ldi R22,1
	ldi R23,0
	.dbline 186
; 				  NumCs2=0;
	clr R20
	clr R21
	.dbline 187
; 				  NumTemp01=16*(DataSequent-24);
	clr R25
	sbiw R24,24
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 188
; 				  }	
	rjmp L38
L37:
	.dbline 190
; 			   else
; 			     {NumCs1=0;
	.dbline 190
	clr R22
	clr R23
	.dbline 191
; 				  NumCs2=1;
	ldi R20,1
	ldi R21,0
	.dbline 192
; 				  NumTemp01=16*(DataSequent-28);
	mov R24,R6
	clr R25
	sbiw R24,28
	mov R12,R24
	mov R13,R25
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	lsl R12
	rol R13
	.dbline 193
; 				  }		
L38:
	.dbline 194
; 			 }	
L35:
L32:
L28:
L24:
	.dbline 195
; 		if(NumCs1)	 
	cpi R22,0
	cpc R22,R23
	breq L39
	.dbline 196
; 		    {ContrPort=ContrPort|CS1;}
	.dbline 196
	sbi 0x15,7
	.dbline 196
	rjmp L40
L39:
	.dbline 198
; 		else
; 		     {ContrPort=ContrPort&~CS1;}
	.dbline 198
	cbi 0x15,7
	.dbline 198
L40:
	.dbline 199
; 		if(NumCs2)
	cpi R20,0
	cpc R20,R21
	breq L41
	.dbline 200
; 		    {ContrPort=ContrPort|CS2;}	
	.dbline 200
	sbi 0x15,6
	.dbline 200
	rjmp L42
L41:
	.dbline 202
; 		else	 	
; 		    {ContrPort=ContrPort&~CS2;}
	.dbline 202
	cbi 0x15,6
	.dbline 202
L42:
	.dbline 203
; 		NumPage=NumPage&0b00000111;
	mov R24,R14
	andi R24,7
	mov R14,R24
	.dbline 204
; 		NumPage=NumPage|0b10111000;
	ori R24,184
	mov R14,R24
	.dbline 205
; 		NumTemp01=NumTemp01&0b00111111;
	mov R24,R12
	mov R25,R13
	andi R24,63
	andi R25,0
	mov R12,R24
	mov R13,R25
	.dbline 206
; 		NumTemp01=NumTemp01|0b01000000;
	ori R24,64
	mov R12,R24
	mov R13,R25
	.dbline 207
; 		WriInsn(NumPage);//set the page	
	mov R16,R14
	rcall _WriInsn
	.dbline 208
; 		WriInsn(NumTemp01);// y address
	mov R16,R12
	rcall _WriInsn
	.dbline 210
; 		
; 		i=16;j=0;
	ldi R22,16
	ldi R23,0
	.dbline 210
	clr R20
	clr R21
	rjmp L44
L43:
	.dbline 212
	.dbline 213
	ldi R18,5
	ldi R19,0
	mov R16,R10
	clr R17
	rcall lsl16
	mov R2,R16
	mov R3,R17
	ldi R24,<_TAB
	ldi R25,>_TAB
	add R2,R24
	adc R3,R25
	mov R4,R20
	mov R5,R21
	add R4,R2
	adc R5,R3
	mov R30,R4
	mov R31,R5
	lpm
	mov R16,R0
	rcall _WriData
	.dbline 214
	subi R22,1
	sbci R23,0
	.dbline 215
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 216
L44:
	.dbline 211
; 		while(i)
	cpi R22,0
	cpc R22,R23
	brne L43
	.dbline 217
; 		   {
; 		     WriData(TAB[Point][j]);
; 			 i--;
; 			 j++;
; 			 }
; 		WriInsn(NumPage+1);//set the page
	mov R16,R14
	subi R16,255	; addi 1
	rcall _WriInsn
	.dbline 218
; 		WriInsn(NumTemp01);// y address
	mov R16,R12
	rcall _WriInsn
	.dbline 219
; 		i=16;
	ldi R22,16
	ldi R23,0
	rjmp L47
L46:
	.dbline 221
	.dbline 222
	ldi R18,5
	ldi R19,0
	mov R16,R10
	clr R17
	rcall lsl16
	mov R2,R16
	mov R3,R17
	ldi R24,<_TAB
	ldi R25,>_TAB
	add R2,R24
	adc R3,R25
	mov R4,R20
	mov R5,R21
	add R4,R2
	adc R5,R3
	mov R30,R4
	mov R31,R5
	lpm
	mov R16,R0
	rcall _WriData
	.dbline 223
	subi R22,1
	sbci R23,0
	.dbline 224
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 225
L47:
	.dbline 220
; 		while(i)
	cpi R22,0
	cpc R22,R23
	brne L46
	.dbline -2
	.dbline 227
; 		   {
; 		     WriData(TAB[Point][j]);
; 			 i--;
; 			 j++;
; 			 }
; 	   
; 	   } 		 
L22:
	rcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r NumCs2 20 i
	.dbsym r NumCs1 22 i
	.dbsym r NumTemp01 12 i
	.dbsym r NumPage 14 c
	.dbsym r j 20 i
	.dbsym r i 22 i
	.dbsym r Point 10 c
	.dbsym r DataSequent 6 c
	.dbfunc s StartDiaplay _StartDiaplay fI
	.even
_StartDiaplay::
	.dbline -1
	.dbline 231
; //**************************************************
; //开始显示		 
; void StartDiaplay(void)
;         {
	.dbline 233
; //***********use the left hand number******
;         PORTC=PORTC|~0b01111111;  //cs1=1
	in R24,0x15
	ori R24,128
	out 0x15,R24
	.dbline 234
; 		PORTC=PORTC&~0b01000000;  //cs2=0	
	cbi 0x15,6
	.dbline 236
; //****************************************	
; 		WriInsn(0b11000000);//the first line
	ldi R16,192
	rcall _WriInsn
	.dbline 237
; 		PORTC=PORTC&0b01111111;  //cs1=0
	in R24,0x15
	andi R24,127
	out 0x15,R24
	.dbline 238
; 		PORTC=PORTC|0b01000000;  //cs2=1	
	sbi 0x15,6
	.dbline 239
; 		WriInsn(0b11000000);//the first line
	ldi R16,192
	rcall _WriInsn
	.dbline 240
; 		PORTC=PORTC|~0b01111111;  //cs1=1
	in R24,0x15
	ori R24,128
	out 0x15,R24
	.dbline 241
; 		PORTC=PORTC&~0b01000000;  //cs2=0	
	cbi 0x15,6
	.dbline 242
; 		WriInsn(0b00111111);//start
	ldi R16,63
	rcall _WriInsn
	.dbline 243
; 		WriInsn(0b00111111);	
	ldi R16,63
	rcall _WriInsn
	.dbline 244
; 		PORTC=PORTC&0b01111111;  //cs1=0
	in R24,0x15
	andi R24,127
	out 0x15,R24
	.dbline 245
; 		PORTC=PORTC|0b01000000;  //cs2=1	 
	sbi 0x15,6
	.dbline 246
; 		WriInsn(0b00111111);//start				
	ldi R16,63
	rcall _WriInsn
	.dbline -2
	.dbline 247
; 		}
L49:
	.dbline 0 ; func end
	ret

⌨️ 快捷键说明

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