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

📄 ps2.s

📁 AVRkaifashili.rar
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 107
;  Set_DI(0);//DI=0;
	clr R16
	rcall _Set_DI
	.dbline 108
;  Set_EN(0);//ENABLE=0;
	clr R16
	rcall _Set_EN
	.dbline 109
;  PORTA=0x40+i;// P0=0x40+i;
	mov R24,R20
	subi R24,192    ; addi 64
	out 0x1b,R24
	.dbline 110
;  nop(10);//_nop_();
	ldi R16,10
	rcall _nop
	.dbline 111
;  Set_EN(1);//ENABLE=1;
	ldi R16,1
	rcall _Set_EN
	.dbline 112
;  nop(10);//_nop_();
	ldi R16,10
	rcall _nop
	.dbline 113
;  nop(10);// _nop_();
	ldi R16,10
	rcall _nop
	.dbline 114
;  Set_EN(0);//ENABLE=0;
	clr R16
	rcall _Set_EN
	.dbline -2
	.dbline 116
;  //Delay(1);
; }
L36:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e WriteByte _WriteByte fV
;              i -> R20
	.even
_WriteByte::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 132
; 
; //读状态//
; //返回值:DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0
; //返回值:BF,0,ON/OFF,RST,0,0,0,0
; /*ucharReadStatus(void)
; {uchardata i;
;  RW=1;
;  DI=0;
;  ENABLE=1;
;  i=P0;
;  return i;
; }*/
; 
; //写显示数据,i为送DDRAM的数据
; void WriteByte(uchar i)
; {Set_RW(0);//RW=0;
	.dbline 132
	clr R16
	rcall _Set_RW
	.dbline 133
;  Set_DI(1);//DI=1;
	ldi R16,1
	rcall _Set_DI
	.dbline 134
;  Set_EN(0);//ENABLE=0;
	clr R16
	rcall _Set_EN
	.dbline 135
;  PORTA=i;//P0=i;
	out 0x1b,R20
	.dbline 136
;  nop(10);//_nop_();
	ldi R16,10
	rcall _nop
	.dbline 137
;  Set_EN(1);//ENABLE=1;
	ldi R16,1
	rcall _Set_EN
	.dbline 138
;  nop(10);//_nop_();
	ldi R16,10
	rcall _nop
	.dbline 139
;  nop(10);//_nop_();
	ldi R16,10
	rcall _nop
	.dbline 140
;  Set_EN(0);//ENABLE=0;
	clr R16
	rcall _Set_EN
	.dbline -2
	.dbline 142
;  //Delay(1);
; }
L37:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e Reset _Reset fV
	.even
_Reset::
	.dbline -1
	.dbline 156
; 
; //读显示数据处理
; /*ucharReadData(void)
; {uchar i;
;  RW=1;
;  DI=0;
;  ENABLE=1;
;  i=P0;
;  return i;
; }*/
; 
; //LCD复位//
; void Reset(void)
; {Set_RST(0);//RST=0;
	.dbline 156
	clr R16
	rcall _Set_RST
	.dbline 157
;  Delay(1);
	ldi R16,1
	ldi R17,0
	rcall _Delay
	.dbline 158
;  Set_RST(1);//RST=1;
	ldi R16,1
	.dbline -2
	.dbline 160
;  //Delay(1);
; }
L38:
	.dbline 0 ; func end
	rjmp _Set_RST
	.dbend
	.dbfunc e ClearScreen _ClearScreen fV
;              i -> R20
;              j -> R22
;              k -> R22
	.even
_ClearScreen::
	rcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 164
; 
; 
; void ClearScreen(uchar k)
; {uchar i,j;
	.dbline 165
;  Set_CS1(1);//CS1=1;
	ldi R16,1
	rcall _Set_CS1
	.dbline 166
;  Set_CS2(1);//CS2=1;
	ldi R16,1
	rcall _Set_CS2
	.dbline 167
;  for(i=k;i<8;i+=1)
	mov R20,R22
	rjmp L43
L40:
	.dbline 168
;  	{SetX(i);
	.dbline 168
	mov R16,R20
	rcall _SetX
	.dbline 169
; 	 for(j=0;j<64;j++)
	clr R22
	rjmp L47
L44:
	.dbline 170
	clr R16
	rcall _WriteByte
L45:
	.dbline 169
	inc R22
L47:
	.dbline 169
	cpi R22,64
	brlo L44
	.dbline 171
L41:
	.dbline 167
	inc R20
L43:
	.dbline 167
	cpi R20,8
	brlo L40
	.dbline -2
	.dbline 172
; 		WriteByte(0x00);
; 	 }
; }
L39:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbsym r k 22 c
	.dbend
	.dbfunc e InitLCD _InitLCD fV
	.even
_InitLCD::
	.dbline -1
	.dbline 176
;  
; //LCD初始化//
; void InitLCD(void)
; {Reset();
	.dbline 176
	rcall _Reset
	.dbline 177
;  Delay(0);
	clr R16
	clr R17
	rcall _Delay
	.dbline 178
;  ClearScreen(0);
	clr R16
	rcall _ClearScreen
	.dbline 179
;  DisplayOnOff(1);
	ldi R16,1
	rcall _DisplayOnOff
	.dbline 180
;  SetStartLine(0);
	clr R16
	.dbline -2
	.dbline 181
;  }
L48:
	.dbline 0 ; func end
	rjmp _SetStartLine
	.dbend
	.dbfunc e WriteWord _WriteWord fV
;              i -> R20
;             cs -> y+10
;              y -> R10
;              x -> R12
;           disp -> R22,R23
	.even
_WriteWord::
	rcall push_gset4
	mov R12,R18
	mov R22,R16
	mov R23,R17
	ldd R10,y+8
	.dbline -1
	.dbline 184
; 
; void WriteWord(uchar const *disp,uchar x,uchar y,uchar cs)
; {uchar i;
	.dbline 185
;  if(cs==1) {Set_CS1(1);Set_CS2(0);}
	ldd R24,y+10
	cpi R24,1
	brne L50
	.dbline 185
	.dbline 185
	ldi R16,1
	rcall _Set_CS1
	.dbline 185
	clr R16
	rcall _Set_CS2
	.dbline 185
	rjmp L51
L50:
	.dbline 186
;  else      {Set_CS1(0);Set_CS2(1);}
	.dbline 186
	clr R16
	rcall _Set_CS1
	.dbline 186
	ldi R16,1
	rcall _Set_CS2
	.dbline 186
L51:
	.dbline 187
;  SetX(x);
	mov R16,R12
	rcall _SetX
	.dbline 188
;  SetY(y);
	mov R16,R10
	rcall _SetY
	.dbline 189
;  for(i=0;i<16;i++)
	clr R20
	rjmp L55
L52:
	.dbline 190
	.dbline 190
	mov R30,R22
	mov R31,R23
	lpm
	mov R16,R0
	rcall _WriteByte
	.dbline 191
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 191
L53:
	.dbline 189
	inc R20
L55:
	.dbline 189
	cpi R20,16
	brlo L52
	.dbline 192
;      {WriteByte(*disp);
; 	   disp++;}
;   SetX(x+1);
	mov R16,R12
	subi R16,255    ; addi 1
	rcall _SetX
	.dbline 193
;   SetY(y);
	mov R16,R10
	rcall _SetY
	.dbline 194
;   for(i=0;i<16;i++)
	clr R20
	rjmp L59
L56:
	.dbline 195
	.dbline 195
	mov R30,R22
	mov R31,R23
	lpm
	mov R16,R0
	rcall _WriteByte
	.dbline 196
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 196
L57:
	.dbline 194
	inc R20
L59:
	.dbline 194
	cpi R20,16
	brlo L56
	.dbline -2
	.dbline 197
;  	{WriteByte(*disp);
; 	 disp++;}
; }
L49:
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym l cs 10 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbsym r disp 22 pkc
	.dbend
	.dbfunc e WriteCharacter _WriteCharacter fV
;              i -> R20
;             cs -> y+10
;              y -> R10
;              x -> R12
;           disp -> R22,R23
	.even
_WriteCharacter::
	rcall push_gset4
	mov R12,R18
	mov R22,R16
	mov R23,R17
	ldd R10,y+8
	.dbline -1
	.dbline 201
; 
; 
; void WriteCharacter(const uchar *disp,uchar x,uchar y,uchar cs)
; {uchar i;
	.dbline 202
;  if(cs==0) {Set_CS1(1);Set_CS2(0);}//CS1=1选中右屏幕;
	ldd R0,y+10
	tst R0
	brne L61
	.dbline 202
	.dbline 202
	ldi R16,1
	rcall _Set_CS1
	.dbline 202
	clr R16
	rcall _Set_CS2
	.dbline 202
	rjmp L62
L61:
	.dbline 203
;  else      {Set_CS1(0);Set_CS2(1);}//CS2=1选中左屏幕;
	.dbline 203
	clr R16
	rcall _Set_CS1
	.dbline 203
	ldi R16,1
	rcall _Set_CS2
	.dbline 203
L62:
	.dbline 204
;  SetX(x);
	mov R16,R12
	rcall _SetX
	.dbline 205
;  SetY(y);
	mov R16,R10
	rcall _SetY
	.dbline 206
;  for(i=0;i<8;i++)
	clr R20
	rjmp L66
L63:
	.dbline 207
	.dbline 207
	mov R30,R22
	mov R31,R23
	lpm
	mov R16,R0
	rcall _WriteByte
	.dbline 208
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 208
L64:
	.dbline 206
	inc R20
L66:
	.dbline 206
	cpi R20,8
	brlo L63
	.dbline 209
;      {WriteByte(*disp);
; 	   disp++;}
;   SetX(x+1);
	mov R16,R12
	subi R16,255    ; addi 1
	rcall _SetX
	.dbline 210
;   SetY(y);
	mov R16,R10
	rcall _SetY
	.dbline 211
;   for(i=0;i<8;i++)
	clr R20
	rjmp L70
L67:
	.dbline 212
	.dbline 212
	mov R30,R22
	mov R31,R23
	lpm
	mov R16,R0
	rcall _WriteByte
	.dbline 213
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 213
L68:
	.dbline 211
	inc R20
L70:
	.dbline 211
	cpi R20,8
	brlo L67
	.dbline -2
	.dbline 214
;  	{WriteByte(*disp);
; 	 disp++;}
; }
L60:
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym l cs 10 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbsym r disp 22 pkc
	.dbend
	.dbfunc e Write_Character _Write_Character fV
;         shift1 -> R22
;              p -> R20,R21
;              i -> R20
	.even
_Write_Character::
	rcall push_gset3
	mov R20,R16
	sbiw R28,3
	.dbline -1
	.dbline 217
; 
; void Write_Character(uchar i)
; {uchar shift1;
	.dbline 219
;  uchar const *p;
;  switch(i)
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L75
X2:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L76
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L77
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L78
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L79
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L80
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L81
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L82
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	breq L83
	rjmp L72
X3:
	.dbline 220
L75:
	.dbline 220
;   {case 0:p=X0;break;
	ldi R20,<_X0
	ldi R21,>_X0
	.dbline 220
	rjmp L73
L76:
	.dbline 221
;    case 1:p=X1;break;
	ldi R20,<_X1
	ldi R21,>_X1
	.dbline 221
	rjmp L73
L77:
	.dbline 222
;    case 2:p=X2;break;
	ldi R20,<_X2
	ldi R21,>_X2
	.dbline 222
	rjmp L73
L78:
	.dbline 223
;    case 3:p=X3;break;
	ldi R20,<_X3
	ldi R21,>_X3
	.dbline 223
	rjmp L73
L79:
	.dbline 224
;    case 4:p=X4;break;
	ldi R20,<_X4
	ldi R21,>_X4
	.dbline 224
	rjmp L73
L80:
	.dbline 225
;    case 5:p=X5;break;
	ldi R20,<_X5
	ldi R21,>_X5
	.dbline 225
	rjmp L73
L81:
	.dbline 226
;    case 6:p=X6;break;
	ldi R20,<_X6
	ldi R21,>_X6
	.dbline 226
	rjmp L73
L82:
	.dbline 227
;    case 7:p=X7;break;
	ldi R20,<_X7
	ldi R21,>_X7
	.dbline 227
	rjmp L73
L83:
	.dbline 228
;    case 8:p=X8;break;
	ldi R20,<_X8
	ldi R21,>_X8
	.dbline 228
	rjmp L73
L72:
	.dbline 229
;    default:p=X9;break;}   
	ldi R20,<_X9
	ldi R21,>_X9
	.dbline 229
L73:
	.dbline 231
;  
;  if(R_flag==1) //若是写右边的屏幕; 
	lds R24,_R_flag
	cpi R24,1
	breq X4
	rjmp L84
X4:
	.dbline 232
;  	{if(Column==56) 
	.dbline 232
	lds R24,_Column
	cpi R24,56
	brne L86
	.dbline 233
; 	   {shift1=1;//若是到了最后一个字节,则写完后要换行
	.dbline 233
	ldi R22,1
	.dbline 234
;         WriteCharacter(p,Row,Column,!R_flag);
	lds R2,_R_flag
	tst R2
	brne L88
	ldi R24,1
	ldi R25,0
	mov R10,R24
	mov R11,R25
	rjmp L89
L88:
	clr R10
	clr R11
L89:
	std y+2,R10
	lds R2,_Column
	std y+0,R2
	lds R18,_Row
	mov R16,R20
	mov R17,R21
	rcall _WriteCharacter
	.dbline 235
; 		R_flag=0;//回到左边屏幕第0列;
	clr R2
	sts _R_flag,R2
	.dbline 236
; 		Column=0;
	sts _Column,R2
	.dbline 237
; 		if(shift1==1) 
	cpi R22,1
	brne L90
	.dbline 238
; 		{Row+=2;shift1=0;}
	.dbline 238
	lds R24,_Row
	subi R24,254    ; addi 2
	sts _Row,R24
	.dbline 238
	clr R22
	.dbline 238
L90:
	.dbline 239
; 		if (Row>7) Row=0;
	ldi R24,7
	lds R2,_Row
	cp R24,R2
	brlo X5
	rjmp L85
X5:
	.dbline 239
	clr R2
	sts _Row,R2
	.dbline 240
; 		}
	rjmp L85
L86:
	.dbline 242
; 	  else 
; 	   {WriteCharacter(p,Row,Column,!R_flag);
	.dbline 242
	lds R2,_R_flag
	tst R2
	brne L94
	ldi R22,1
	ldi R23,0
	rjmp L95
L94:
	clr R22
	clr R23
L95:
	std y+2,R22
	lds R2,_Column
	std y+0,R2
	lds R18,_Row
	mov R16,R20
	mov R17,R21
	rcall _WriteCharacter
	.dbline 243
;         Column=Column+8;} 
	lds R24,_Column
	subi R24,248    ; addi 8
	sts _Column,R24
	.dbline 243
	.dbline 244
; 	 }
	rjmp L85
L84:
	.dbline 246
;  else
;    {if(Column==56) //写完后需要换右边的屏幕

⌨️ 快捷键说明

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