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

📄 project1.lst

📁 7920中文液晶显示屏 程序一般 7920的优点是有个汉字库
💻 LST
📖 第 1 页 / 共 2 页
字号:
  LineNum              --> R10
    00DC 940E019E  CALL	push_gset3
    00DE 2F62      MOV	R22,R18
    00DF 2EA0      MOV	R10,R16
(0176) 
(0177) 	
(0178)  	}
(0179) 	
(0180) 
(0181) }
(0182) 
(0183) void DispSetCursor(unsigned char LineNum, unsigned char ColumnNum)
(0184) {
(0185) 
(0186)     unsigned char i=0x00;
    00E0 2744      CLR	R20
(0187)     switch(LineNum&0x0f)   //确定行号
    00E1 2D8A      MOV	R24,R10
    00E2 2799      CLR	R25
    00E3 708F      ANDI	R24,0xF
    00E4 7090      ANDI	R25,0
    00E5 015C      MOVW	R10,R24
    00E6 3080      CPI	R24,0
    00E7 0789      CPC	R24,R25
    00E8 F071      BEQ	0x00F7
    00E9 01C5      MOVW	R24,R10
    00EA 3081      CPI	R24,1
    00EB E0E0      LDI	R30,0
    00EC 079E      CPC	R25,R30
    00ED F059      BEQ	0x00F9
    00EE 3082      CPI	R24,2
    00EF E0E0      LDI	R30,0
    00F0 079E      CPC	R25,R30
    00F1 F049      BEQ	0x00FB
    00F2 3083      CPI	R24,3
    00F3 E0E0      LDI	R30,0
    00F4 079E      CPC	R25,R30
    00F5 F039      BEQ	0x00FD
    00F6 C007      RJMP	0x00FE
(0188)     {
(0189) 	case 0x00:
(0190) 		i=0x80;
    00F7 E840      LDI	R20,0x80
(0191) 		break;
    00F8 C005      RJMP	0x00FE
(0192) 	case 0x01: 
(0193) 		i=0x90; 
    00F9 E940      LDI	R20,0x90
(0194) 		break;
    00FA C003      RJMP	0x00FE
(0195) 	case 0x02: 
(0196) 		i=0x88;
    00FB E848      LDI	R20,0x88
(0197) 		break;
    00FC C001      RJMP	0x00FE
(0198) 	case 0x03:
(0199) 		i=0x98;
    00FD E948      LDI	R20,0x98
(0200) 		break;
(0201) 	default : 
(0202) 		break;
(0203)     }
(0204)     i = (ColumnNum&0x0f)|i; //确定列号
    00FE 2F86      MOV	R24,R22
    00FF 708F      ANDI	R24,0xF
    0100 2B48      OR	R20,R24
(0205)    SdCmd(i);
    0101 2F04      MOV	R16,R20
    0102 DF99      RCALL	_SdCmd
    0103 940E0197  CALL	pop_gset3
    0105 9508      RET
_WriteTextScreen2:
  i                    --> R20
  j                    --> R10
  pstr                 --> R22
    0106 940E019E  CALL	push_gset3
    0108 01B8      MOVW	R22,R16
(0206) 	
(0207) }
(0208) 
(0209) void WriteTextScreen2(unsigned char *pstr)
(0210) {
(0211) unsigned char i;
(0212) unsigned char j;
(0213) 
(0214)    	SdCmd(0x34);        // 8bit I/F, basic command
    0109 E304      LDI	R16,0x34
    010A DF91      RCALL	_SdCmd
(0215)    	SdCmd(0x30);        // 8bit I/F, basic command, graphic off
    010B E300      LDI	R16,0x30
    010C DF8F      RCALL	_SdCmd
(0216) 
(0217) 	 for(i=0;i<36;i++)       //清空屏幕
    010D 2744      CLR	R20
    010E C00F      RJMP	0x011E
(0218) 	 {
(0219) 		 if (i%18==0)         //判断是否换行
    010F E112      LDI	R17,0x12
    0110 2F04      MOV	R16,R20
    0111 940E017C  CALL	mod8u
    0113 2300      TST	R16
    0114 F431      BNE	0x011B
(0220) 		 {
(0221) 			 DispSetCursor(i/18,0);   //如换行, 则光标移动到行首
    0115 2722      CLR	R18
    0116 E112      LDI	R17,0x12
    0117 2F04      MOV	R16,R20
    0118 940E017E  CALL	div8u
    011A DFC1      RCALL	_DispSetCursor
(0222) 		 }
(0223) 
(0224) 		 SdData(' '); //
    011B E200      LDI	R16,0x20
    011C DF93      RCALL	_SdData
    011D 9543      INC	R20
    011E 3244      CPI	R20,0x24
    011F F378      BCS	0x010F
(0225) 	 }
(0226) 		
(0227)      j=0;
    0120 24AA      CLR	R10
    0121 C025      RJMP	0x0147
(0228)      //while (*pstr)
(0229)      while (*pstr && j<36)
(0230)      {
(0231) 		 if (j%18==0)         //判断是否换行
    0122 E112      LDI	R17,0x12
    0123 2D0A      MOV	R16,R10
    0124 940E017C  CALL	mod8u
    0126 2300      TST	R16
    0127 F431      BNE	0x012E
(0232) 		 {
(0233) 			 DispSetCursor(j/18,0);   //如换行, 则光标移动到行首
    0128 2722      CLR	R18
    0129 E112      LDI	R17,0x12
    012A 2D0A      MOV	R16,R10
    012B 940E017E  CALL	div8u
    012D DFAE      RCALL	_DispSetCursor
(0234) 		 }
(0235) 		 
(0236) 		 //避免最后一格写半个汉字, 把汉字写到下一行
(0237) 		 if (((j+1)%18==0) && *pstr>127 && *(pstr-1)<128) 
    012E E112      LDI	R17,0x12
    012F 2D0A      MOV	R16,R10
    0130 5F0F      SUBI	R16,0xFF
    0131 940E017C  CALL	mod8u
    0133 2300      TST	R16
    0134 F469      BNE	0x0142
    0135 E78F      LDI	R24,0x7F
    0136 01FB      MOVW	R30,R22
    0137 8020      LDD	R2,Z+0
    0138 1582      CP	R24,R2
    0139 F440      BCC	0x0142
    013A 9731      SBIW	R30,1
    013B 8180      LDD	R24,Z+0
    013C 3880      CPI	R24,0x80
    013D F420      BCC	0x0142
(0238) 		 {
(0239) 		 	SdData(' '); //
    013E E200      LDI	R16,0x20
    013F DF70      RCALL	_SdData
(0240) 			j++;
    0140 94A3      INC	R10
(0241) 		 }
    0141 C005      RJMP	0x0147
(0242) 		else
(0243) 		{	
(0244) 		 	SdData(*pstr++);
    0142 01FB      MOVW	R30,R22
    0143 9101      LD	R16,Z+
    0144 01BF      MOVW	R22,R30
    0145 DF6A      RCALL	_SdData
(0245) 		 	j++;
    0146 94A3      INC	R10
    0147 01FB      MOVW	R30,R22
    0148 8020      LDD	R2,Z+0
    0149 2022      TST	R2
    014A F021      BEQ	0x014F
    014B 2D8A      MOV	R24,R10
    014C 3284      CPI	R24,0x24
    014D F408      BCC	0x014F
    014E CFD3      RJMP	0x0122
    014F 940E0197  CALL	pop_gset3
    0151 9508      RET
(0246) 		}
(0247) 		
(0248)         //SdData(*pstr++);
(0249)         //j++;		
(0250)      }
(0251) 
(0252)  }
(0253) 
(0254) /*-----------------------------------------------------------------------
(0255) 延时函数
(0256) 系统时钟:8M
(0257) -----------------------------------------------------------------------*/
(0258) void delay_1us(void)                 //1us延时函数
(0259)   {
(0260)    asm("nop");
_delay_1us:
    0152 0000      NOP
    0153 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0154 940E01A0  CALL	push_gset2
    0156 01B8      MOVW	R22,R16
(0261)   }
(0262) 
(0263) void delay_nus(unsigned int n)       //N us延时函数
(0264)   {
(0265)    unsigned int i=0;
    0157 2744      CLR	R20
    0158 2755      CLR	R21
(0266)    for (i=0;i<n;i++)
    0159 C003      RJMP	0x015D
(0267)    delay_1us();
    015A DFF7      RCALL	_delay_1us
    015B 5F4F      SUBI	R20,0xFF
    015C 4F5F      SBCI	R21,0xFF
    015D 1746      CP	R20,R22
    015E 0757      CPC	R21,R23
    015F F3D0      BCS	0x015A
    0160 940E0194  CALL	pop_gset2
    0162 9508      RET
(0268)   }
(0269)   
(0270) void delay_1ms(void)                 //1ms延时函数
(0271)   {
(0272)    unsigned int i;
(0273)    for (i=0;i<1140;i++); 
_delay_1ms:
  i                    --> R16
    0163 2700      CLR	R16
    0164 2711      CLR	R17
    0165 C002      RJMP	0x0168
    0166 5F0F      SUBI	R16,0xFF
    0167 4F1F      SBCI	R17,0xFF
    0168 3704      CPI	R16,0x74
    0169 E0E4      LDI	R30,4
    016A 071E      CPC	R17,R30
    016B F3D0      BCS	0x0166
    016C 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    016D 940E01A0  CALL	push_gset2
    016F 01B8      MOVW	R22,R16
(0274)   }
(0275)   
(0276) void delay_nms(unsigned int n)       //N ms延时函数
(0277)   {
(0278)    unsigned int i=0;
    0170 2744      CLR	R20
    0171 2755      CLR	R21
(0279)    for (i=0;i<n;i++)
    0172 C003      RJMP	0x0176
(0280)    delay_1ms();
FILE: <library>
    0173 DFEF      RCALL	_delay_1ms
    0174 5F4F      SUBI	R20,0xFF
    0175 4F5F      SBCI	R21,0xFF
    0176 1746      CP	R20,R22
    0177 0757      CPC	R21,R23
    0178 F3D0      BCS	0x0173
    0179 940E0194  CALL	pop_gset2
    017B 9508      RET
mod8u:
    017C 9468      BSET	6
    017D C001      RJMP	xdiv8u
div8u:
    017E 94E8      BCLR	6
xdiv8u:
    017F 932A      ST	R18,-Y
    0180 92FA      ST	R15,-Y
    0181 92EA      ST	R14,-Y
    0182 24FF      CLR	R15
    0183 24EE      CLR	R14
    0184 E120      LDI	R18,0x10
    0185 0F00      LSL	R16
    0186 1CFF      ROL	R15
    0187 1CEE      ROL	R14
    0188 16E1      CP	R14,R17
    0189 F010      BCS	0x018C
    018A 1AE1      SUB	R14,R17
    018B 9503      INC	R16
    018C 952A      DEC	R18
    018D F7B9      BNE	0x0185
    018E F40E      BRTC	0x0190
    018F 2D0E      MOV	R16,R14
    0190 90E9      LD	R14,Y+
    0191 90F9      LD	R15,Y+
    0192 9129      LD	R18,Y+
    0193 9508      RET
pop_gset2:
    0194 E0E2      LDI	R30,2
    0195 940C01A6  JMP	pop
pop_gset3:
    0197 E0E4      LDI	R30,4
    0198 940C01A6  JMP	pop
push_gset5:
    019A 92FA      ST	R15,-Y
    019B 92EA      ST	R14,-Y
push_gset4:
    019C 92DA      ST	R13,-Y
    019D 92CA      ST	R12,-Y
push_gset3:
    019E 92BA      ST	R11,-Y
    019F 92AA      ST	R10,-Y
push_gset2:
    01A0 937A      ST	R23,-Y
    01A1 936A      ST	R22,-Y
push_gset1:
    01A2 935A      ST	R21,-Y
    01A3 934A      ST	R20,-Y
    01A4 9508      RET
pop_gset1:
    01A5 E0E1      LDI	R30,1
pop:
    01A6 9149      LD	R20,Y+
    01A7 9159      LD	R21,Y+
    01A8 FDE0      SBRC	R30,0
    01A9 9508      RET
    01AA 9169      LD	R22,Y+
    01AB 9179      LD	R23,Y+
    01AC FDE1      SBRC	R30,1
    01AD 9508      RET
    01AE 90A9      LD	R10,Y+
    01AF 90B9      LD	R11,Y+
    01B0 FDE2      SBRC	R30,2
    01B1 9508      RET
    01B2 90C9      LD	R12,Y+
    01B3 90D9      LD	R13,Y+
    01B4 FDE3      SBRC	R30,3
    01B5 9508      RET
    01B6 90E9      LD	R14,Y+
    01B7 90F9      LD	R15,Y+
    01B8 9508      RET

⌨️ 快捷键说明

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