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

📄 st7920.lst

📁 一个有关st7920控制器的测试程序和驱动程序的12864LCD的例程
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0227) /*********************************************************************************************************
(0228) ** 函数名称: Lcd_lineclr()
(0229) ** 功能描述: 清除一行的显示
(0230) ** 输 入: unsigned char row 要清除显示的行
(0231) ** 输 出: 
(0232) ** 全局变量: 无
(0233) ** 调用模块: 无
(0234) ** 说明:
(0235) ** 注意:
(0236) *******************************************************************************************************/
(0237) void Lcd_lineclr(unsigned char row)
(0238) {
(0239)     unsigned char i;
(0240)  	switch(row)
    020E 2755      CLR	R21
    020F 3041      CPI	R20,1
    0210 E0E0      LDI	R30,0
    0211 075E      CPC	R21,R30
    0212 F069      BEQ	0x0220
    0213 3042      CPI	R20,2
    0214 E0E0      LDI	R30,0
    0215 075E      CPC	R21,R30
    0216 F0A9      BEQ	0x022C
    0217 3043      CPI	R20,3
    0218 E0E0      LDI	R30,0
    0219 075E      CPC	R21,R30
    021A F0E9      BEQ	0x0238
    021B 3044      CPI	R20,4
    021C E0E0      LDI	R30,0
    021D 075E      CPC	R21,R30
    021E F129      BEQ	0x0244
    021F C02F      RJMP	0x024F
(0241) 	{
(0242) 	  case 1:
(0243) 	  {
(0244) 	     wr_lcd(Lcd_Set_Ddram,1);
    0220 E021      LDI	R18,1
    0221 E800      LDI	R16,0x80
    0222 DEF7      RCALL	_wr_lcd
(0245) 		 for(i=0;i<16;i++) wr_lcd(' ',0);
    0223 2744      CLR	R20
    0224 C004      RJMP	0x0229
    0225 2722      CLR	R18
    0226 E200      LDI	R16,0x20
    0227 DEF2      RCALL	_wr_lcd
    0228 9543      INC	R20
    0229 3140      CPI	R20,0x10
    022A F3D0      BCS	0x0225
(0246) 		 break;
    022B C023      RJMP	0x024F
(0247) 	  }
(0248) 	  case 2:
(0249) 	  {
(0250) 	     wr_lcd(Lcd_Set_Ddram+0x10,1);
    022C E021      LDI	R18,1
    022D E900      LDI	R16,0x90
    022E DEEB      RCALL	_wr_lcd
(0251) 		 for(i=0;i<16;i++) wr_lcd(' ',0);
    022F 2744      CLR	R20
    0230 C004      RJMP	0x0235
    0231 2722      CLR	R18
    0232 E200      LDI	R16,0x20
    0233 DEE6      RCALL	_wr_lcd
    0234 9543      INC	R20
    0235 3140      CPI	R20,0x10
    0236 F3D0      BCS	0x0231
(0252) 		 break;
    0237 C017      RJMP	0x024F
(0253) 	  }
(0254) 	  case 3:
(0255) 	  {
(0256) 	     wr_lcd(Lcd_Set_Ddram+0x08,1);
    0238 E021      LDI	R18,1
    0239 E808      LDI	R16,0x88
    023A DEDF      RCALL	_wr_lcd
(0257) 		 for(i=0;i<16;i++) wr_lcd(' ',0);
    023B 2744      CLR	R20
    023C C004      RJMP	0x0241
    023D 2722      CLR	R18
    023E E200      LDI	R16,0x20
    023F DEDA      RCALL	_wr_lcd
    0240 9543      INC	R20
    0241 3140      CPI	R20,0x10
    0242 F3D0      BCS	0x023D
(0258) 		 break;
    0243 C00B      RJMP	0x024F
(0259) 	  }
(0260) 	  case 4:
(0261) 	  {
(0262) 	     wr_lcd(Lcd_Set_Ddram+0x18,1);
    0244 E021      LDI	R18,1
    0245 E908      LDI	R16,0x98
    0246 DED3      RCALL	_wr_lcd
(0263) 		 for(i=0;i<16;i++) wr_lcd(' ',0);
    0247 2744      CLR	R20
    0248 C004      RJMP	0x024D
    0249 2722      CLR	R18
    024A E200      LDI	R16,0x20
    024B DECE      RCALL	_wr_lcd
    024C 9543      INC	R20
    024D 3140      CPI	R20,0x10
    024E F3D0      BCS	0x0249
(0264) 		 break;
(0265) 	  }
(0266) 	  
(0267) 	  default: break;
    024F 940E02D4  CALL	pop_gset1
    0251 9508      RET
_Lcd_linedisp:
  i                    --> R22
  row                  --> R22
  p                    --> R20
    0252 940E02CF  CALL	push_gset2
    0254 2F62      MOV	R22,R18
    0255 01A8      MOVW	R20,R16
(0268) 	}
(0269) }
(0270) 
(0271) 
(0272) /*********************************************************************************************************
(0273) ** 函数名称: void Lcd_linedisp(unsigned char *p,unsigned char row)
(0274) ** 功能描述: 在一行中显示
(0275) ** 输 入: unsigned char row 要清除显示的行
(0276) ** 输 出: 
(0277) ** 全局变量: 无
(0278) ** 调用模块: 无
(0279) ** 说明:
(0280) ** 注意:
(0281) *******************************************************************************************************/
(0282) 
(0283) void Lcd_linedisp(unsigned char *p,unsigned char row)
(0284) {
(0285)    unsigned char i;
(0286)    switch(row)
    0256 2777      CLR	R23
    0257 3061      CPI	R22,1
    0258 E0E0      LDI	R30,0
    0259 077E      CPC	R23,R30
    025A F071      BEQ	0x0269
    025B 3062      CPI	R22,2
    025C E0E0      LDI	R30,0
    025D 077E      CPC	R23,R30
    025E F0E1      BEQ	0x027B
    025F 3063      CPI	R22,3
    0260 E0E0      LDI	R30,0
    0261 077E      CPC	R23,R30
    0262 F151      BEQ	0x028D
    0263 3064      CPI	R22,4
    0264 E0E0      LDI	R30,0
    0265 077E      CPC	R23,R30
    0266 F409      BNE	0x0268
    0267 C037      RJMP	0x029F
    0268 C047      RJMP	0x02B0
(0287) 	{
(0288) 	  case 1:
(0289) 	  {
(0290) 	   	 Lcd_lineclr(1);
    0269 E001      LDI	R16,1
    026A DFA0      RCALL	_Lcd_lineclr
(0291) 	     wr_lcd(Lcd_Set_Ddram,1);
    026B E021      LDI	R18,1
    026C E800      LDI	R16,0x80
    026D DEAC      RCALL	_wr_lcd
(0292) 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
    026E 2766      CLR	R22
    026F C008      RJMP	0x0278
    0270 2722      CLR	R18
    0271 2FE6      MOV	R30,R22
    0272 27FF      CLR	R31
    0273 0FE4      ADD	R30,R20
    0274 1FF5      ADC	R31,R21
    0275 8100      LDD	R16,Z+0
    0276 DEA3      RCALL	_wr_lcd
    0277 9563      INC	R22
    0278 3160      CPI	R22,0x10
    0279 F3B0      BCS	0x0270
(0293) 		 break;
    027A C035      RJMP	0x02B0
(0294) 	  }
(0295) 	  case 2:
(0296) 	  {
(0297) 	     Lcd_lineclr(2);
    027B E002      LDI	R16,2
    027C DF8E      RCALL	_Lcd_lineclr
(0298) 	     wr_lcd(Lcd_Set_Ddram+0x10,1);
    027D E021      LDI	R18,1
    027E E900      LDI	R16,0x90
    027F DE9A      RCALL	_wr_lcd
(0299) 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
    0280 2766      CLR	R22
    0281 C008      RJMP	0x028A
    0282 2722      CLR	R18
    0283 2FE6      MOV	R30,R22
    0284 27FF      CLR	R31
    0285 0FE4      ADD	R30,R20
    0286 1FF5      ADC	R31,R21
    0287 8100      LDD	R16,Z+0
    0288 DE91      RCALL	_wr_lcd
    0289 9563      INC	R22
    028A 3160      CPI	R22,0x10
    028B F3B0      BCS	0x0282
(0300) 		 break;
    028C C023      RJMP	0x02B0
(0301) 	  }
(0302) 	  case 3:
(0303) 	  {
(0304) 	     Lcd_lineclr(3);
    028D E003      LDI	R16,3
    028E DF7C      RCALL	_Lcd_lineclr
(0305) 	     wr_lcd(Lcd_Set_Ddram+0x08,1);
    028F E021      LDI	R18,1
    0290 E808      LDI	R16,0x88
    0291 DE88      RCALL	_wr_lcd
(0306) 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
    0292 2766      CLR	R22
    0293 C008      RJMP	0x029C
    0294 2722      CLR	R18
    0295 2FE6      MOV	R30,R22
    0296 27FF      CLR	R31
    0297 0FE4      ADD	R30,R20
    0298 1FF5      ADC	R31,R21
    0299 8100      LDD	R16,Z+0
    029A DE7F      RCALL	_wr_lcd
    029B 9563      INC	R22
    029C 3160      CPI	R22,0x10
    029D F3B0      BCS	0x0294
(0307) 		 break;
    029E C011      RJMP	0x02B0
(0308) 	  }
(0309) 	  case 4:
(0310) 	  {
(0311) 	     Lcd_lineclr(4);
    029F E004      LDI	R16,4
    02A0 DF6A      RCALL	_Lcd_lineclr
(0312) 	     wr_lcd(Lcd_Set_Ddram+0x18,1);
    02A1 E021      LDI	R18,1
    02A2 E908      LDI	R16,0x98
    02A3 DE76      RCALL	_wr_lcd
(0313) 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
    02A4 2766      CLR	R22
    02A5 C008      RJMP	0x02AE
    02A6 2722      CLR	R18
    02A7 2FE6      MOV	R30,R22
    02A8 27FF      CLR	R31
    02A9 0FE4      ADD	R30,R20
    02AA 1FF5      ADC	R31,R21
    02AB 8100      LDD	R16,Z+0
    02AC DE6D      RCALL	_wr_lcd
    02AD 9563      INC	R22
    02AE 3160      CPI	R22,0x10
    02AF F3B0      BCS	0x02A6
(0314) 		 break;
    02B0 940E02C3  CALL	pop_gset2
    02B2 9508      RET
_Lcd_backwhite:
  line                 --> R20
    02B3 940E02D1  CALL	push_gset1
    02B5 2F40      MOV	R20,R16
(0315) 	  }
(0316) 	}
(0317) }
(0318) 
(0319) 
(0320) /*********************************************************************************************************
(0321) ** 函数名称: void Lcd_backwhite(unsigned char line)
(0322) ** 功能描述: 反白显示
(0323) ** 输 入: unsigned char row 要反白显示的行 row=0,1行3行反白显示  row=1,二行四行反白显示
(0324) ** 输 出: 
(0325) ** 全局变量: 无
(0326) ** 调用模块: 无
(0327) ** 说明:
(0328) ** 注意:
(0329) *******************************************************************************************************/
(0330) void Lcd_backwhite(unsigned char line)
(0331) {
(0332) 	wr_lcd(Lcd_Set_Function_Extend,1);
    02B6 E021      LDI	R18,1
    02B7 E304      LDI	R16,0x34
    02B8 DE61      RCALL	_wr_lcd
(0333) 	wr_lcd(Lcd_Back_White+line,1);
    02B9 E021      LDI	R18,1
    02BA 2F04      MOV	R16,R20
    02BB 5F0C      SUBI	R16,0xFC
    02BC DE5D      RCALL	_wr_lcd
(0334) 	wr_lcd(Lcd_Set_Function_Basic,1);
FILE: <library>
    02BD E021      LDI	R18,1
    02BE E300      LDI	R16,0x30
    02BF DE5A      RCALL	_wr_lcd
    02C0 940E02D4  CALL	pop_gset1
    02C2 9508      RET
pop_gset2:
    02C3 E0E2      LDI	R30,2
    02C4 940C02D5  JMP	pop
pop_gset3:
    02C6 E0E4      LDI	R30,4
    02C7 940C02D5  JMP	pop
push_gset5:
    02C9 92FA      ST	R15,-Y
    02CA 92EA      ST	R14,-Y
push_gset4:
    02CB 92DA      ST	R13,-Y
    02CC 92CA      ST	R12,-Y
push_gset3:
    02CD 92BA      ST	R11,-Y
    02CE 92AA      ST	R10,-Y
push_gset2:
    02CF 937A      ST	R23,-Y
    02D0 936A      ST	R22,-Y
push_gset1:
    02D1 935A      ST	R21,-Y
    02D2 934A      ST	R20,-Y
    02D3 9508      RET
pop_gset1:
    02D4 E0E1      LDI	R30,1
pop:
    02D5 9149      LD	R20,Y+
    02D6 9159      LD	R21,Y+
    02D7 FDE0      SBRC	R30,0
    02D8 9508      RET
    02D9 9169      LD	R22,Y+
    02DA 9179      LD	R23,Y+
    02DB FDE1      SBRC	R30,1
    02DC 9508      RET
    02DD 90A9      LD	R10,Y+
    02DE 90B9      LD	R11,Y+
    02DF FDE2      SBRC	R30,2
    02E0 9508      RET
    02E1 90C9      LD	R12,Y+
    02E2 90D9      LD	R13,Y+
    02E3 FDE3      SBRC	R30,3
    02E4 9508      RET
    02E5 90E9      LD	R14,Y+
    02E6 90F9      LD	R15,Y+
    02E7 9508      RET
asgncblk:
    02E8 93AA      ST	R26,-Y
    02E9 93BA      ST	R27,-Y
    02EA 93EA      ST	R30,-Y
    02EB 93FA      ST	R31,-Y
    02EC 920A      ST	R0,-Y
    02ED 81AF      LDD	R26,Y+7
    02EE 85B8      LDD	R27,Y+8
    02EF 81ED      LDD	R30,Y+5
    02F0 81FE      LDD	R31,Y+6
    02F1 3000      CPI	R16,0
    02F2 0701      CPC	R16,R17
    02F3 F031      BEQ	0x02FA
    02F4 95C8      LPM
    02F5 920D      ST	R0,X+
    02F6 9631      ADIW	R30,1
    02F7 5001      SUBI	R16,1
    02F8 4010      SBCI	R17,0
    02F9 CFF7      RJMP	0x02F1
    02FA 9009      LD	R0,Y+
    02FB 91F9      LD	R31,Y+
    02FC 91E9      LD	R30,Y+
    02FD 91B9      LD	R27,Y+
    02FE 91A9      LD	R26,Y+
    02FF 9624      ADIW	R28,4
    0300 9508      RET

⌨️ 快捷键说明

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