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

📄 12864.lst

📁 iccavr12864液晶程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0143 0745      CPC	R20,R21
    0144 F461      BNE	0x0151
(0053)       {
(0054) 	  LCD_DATA_PORT = data_temp;   //send 8bit 
    0145 BB6B      OUT	0x1B,R22
(0055) 	 
(0056) 	  LCD_RS_PORT |= LCD_RS;  //RS=1       
    0146 9AC0      SBI	0x18,0
(0057)    
(0058) 	   LCD_EN_PORT &= ~LCD_EN; //EN=0
    0147 98C1      CBI	0x18,1
(0059) 	   delay_nus(2);
    0148 E002      LDI	R16,2
    0149 E010      LDI	R17,0
    014A D05D      RCALL	_delay_nus
(0060) 	  LCD_EN_PORT |= LCD_EN;    //EN=1
    014B 9AC1      SBI	0x18,1
(0061)     delay_nus(500);
    014C EF04      LDI	R16,0xF4
    014D E011      LDI	R17,1
    014E D059      RCALL	_delay_nus
(0062)     LCD_EN_PORT &= ~LCD_EN;   //EN=0
    014F 98C1      CBI	0x18,1
(0063)       }
    0150 C00B      RJMP	0x015C
(0064)     else 
(0065)       {
(0066) 	  LCD_DATA_PORT = command_temp;//send command
    0151 BB4B      OUT	0x1B,R20
(0067) 	  
(0068) 	  LCD_RS_PORT &= ~LCD_RS; //RS=0     
    0152 98C0      CBI	0x18,0
(0069) 	  LCD_EN_PORT &= ~LCD_EN;  //EN=0
    0153 98C1      CBI	0x18,1
(0070) 	  delay_nus(2); 
    0154 E002      LDI	R16,2
    0155 E010      LDI	R17,0
    0156 D051      RCALL	_delay_nus
(0071) 	  LCD_EN_PORT |= LCD_EN;    //EN=1
    0157 9AC1      SBI	0x18,1
(0072)       delay_nus(500);
    0158 EF04      LDI	R16,0xF4
    0159 E011      LDI	R17,1
    015A D04D      RCALL	_delay_nus
(0073)       LCD_EN_PORT &= ~LCD_EN;   //EN=0
    015B 98C1      CBI	0x18,1
(0074)       }
    015C 940E01D6  CALL	pop_gset4
    015E 9508      RET
_LCD_set_xy:
  address              --> R20
  y                    --> R20
  x                    --> R22
    015F 940E01DF  CALL	push_gset2
    0161 2F42      MOV	R20,R18
    0162 2F60      MOV	R22,R16
(0075) 	 
(0076)   }
(0077) 
(0078) 
(0079) /*-----------------------------------------------------------------------
(0080) LCD_set_xy        : 设置LCD显示的起始位置
(0081) 
(0082) 输入参数:x、y    : 显示字符串的位置,X:0-15,Y:0-3
(0083)                     LCD第一行显示寄存器地址:0X80-0X8F
(0084)                     LCD第一行显示寄存器地址:0XC0-0XCF
(0085) 
(0086) 编写日期          :2005
(0087) 最后修改日期      :2005	
(0088) -----------------------------------------------------------------------*/
(0089) void LCD_set_xy( unsigned char x, unsigned char y )
(0090)   {
(0091)     unsigned char address;
(0092) 	switch(y){
    0163 2755      CLR	R21
    0164 3040      CPI	R20,0
    0165 0745      CPC	R20,R21
    0166 F069      BEQ	0x0174
    0167 3041      CPI	R20,1
    0168 E0E0      LDI	R30,0
    0169 075E      CPC	R21,R30
    016A F061      BEQ	0x0177
    016B 3042      CPI	R20,2
    016C E0E0      LDI	R30,0
    016D 075E      CPC	R21,R30
    016E F059      BEQ	0x017A
    016F 3043      CPI	R20,3
    0170 E0E0      LDI	R30,0
    0171 075E      CPC	R21,R30
    0172 F051      BEQ	0x017D
    0173 C00C      RJMP	0x0180
(0093) 	case 0: 
(0094) 	   address = 0x80 + x;
    0174 2F46      MOV	R20,R22
    0175 5840      SUBI	R20,0x80
(0095) 	    break; 
    0176 C00B      RJMP	0x0182
(0096)     case 1: 
(0097) 	    address = 0x90 + x;
    0177 2F46      MOV	R20,R22
    0178 5740      SUBI	R20,0x70
(0098) 		break; 
    0179 C008      RJMP	0x0182
(0099) 	case 2: 
(0100) 	address = 0x88 + x;
    017A 2F46      MOV	R20,R22
    017B 5748      SUBI	R20,0x78
(0101) 	break; 
    017C C005      RJMP	0x0182
(0102)     case 3: 
(0103) 	address = 0x98 + x;
    017D 2F46      MOV	R20,R22
    017E 5648      SUBI	R20,0x68
(0104) 	break; 
    017F C002      RJMP	0x0182
(0105) 	default:address = 0x80 + x;}
    0180 2F46      MOV	R20,R22
    0181 5840      SUBI	R20,0x80
(0106)     LCD_write_char( address, 0 );
    0182 2722      CLR	R18
    0183 2733      CLR	R19
    0184 2F04      MOV	R16,R20
    0185 2711      CLR	R17
    0186 DFB5      RCALL	_LCD_write_char
    0187 940E01D0  CALL	pop_gset2
    0189 9508      RET
_LCD_write_string:
  s                    --> R20
  Y                    --> R10
  X                    --> R22
    018A 940E01DD  CALL	push_gset3
    018C 2EA2      MOV	R10,R18
    018D 2F60      MOV	R22,R16
    018E 814E      LDD	R20,Y+6
    018F 815F      LDD	R21,Y+7
(0107) 	
(0108)   }
(0109) /*-----------------------------------------------------------------------
(0110) LCD_write_string  : 中英文字符串显示函数
(0111) 
(0112) 输入参数:*s      :英文字符串指针;
(0113)           X、Y    : 显示字符串的位置 
(0114) 
(0115) 编写日期          :2005
(0116) 最后修改日期      :2005	
(0117) -----------------------------------------------------------------------*/
(0118) void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
(0119)   {
(0120)   LCD_set_xy( X, Y );
    0190 2D2A      MOV	R18,R10
    0191 2F06      MOV	R16,R22
    0192 DFCC      RCALL	_LCD_set_xy
    0193 C00B      RJMP	0x019F
(0121)     
(0122)     while (*s) 
(0123)       {
(0124)         LCD_write_char( 0, *s );
    0194 01FA      MOVW	R30,R20
    0195 8120      LDD	R18,Z+0
    0196 2733      CLR	R19
    0197 2700      CLR	R16
    0198 2711      CLR	R17
    0199 DFA2      RCALL	_LCD_write_char
(0125) 	    s ++;
    019A 5F4F      SUBI	R20,0xFF
    019B 4F5F      SBCI	R21,0xFF
(0126) 		delay_nms(5);
    019C E005      LDI	R16,5
    019D E010      LDI	R17,0
    019E D022      RCALL	_delay_nms
    019F 01FA      MOVW	R30,R20
    01A0 8020      LDD	R2,Z+0
    01A1 2022      TST	R2
    01A2 F789      BNE	0x0194
    01A3 940E01D3  CALL	pop_gset3
    01A5 9508      RET
(0127) 	  }
(0128)   }
(0129) 
(0130) /*-----------------------------------------------------------------------
(0131) 延时函数
(0132) 系统时钟:8M
(0133) -----------------------------------------------------------------------*/
(0134) void delay_1us(void)                 //1us延时函数
(0135)   {
(0136)    asm("nop");
_delay_1us:
    01A6 0000      NOP
    01A7 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    01A8 940E01DF  CALL	push_gset2
    01AA 01B8      MOVW	R22,R16
(0137)   }
(0138) 
(0139) void delay_nus(unsigned int n)       //N us延时函数
(0140)   {
(0141)    unsigned int i=0;
    01AB 2744      CLR	R20
    01AC 2755      CLR	R21
(0142)    for (i=0;i<n;i++)
    01AD C003      RJMP	0x01B1
(0143)    delay_1us();
    01AE DFF7      RCALL	_delay_1us
    01AF 5F4F      SUBI	R20,0xFF
    01B0 4F5F      SBCI	R21,0xFF
    01B1 1746      CP	R20,R22
    01B2 0757      CPC	R21,R23
    01B3 F3D0      BCS	0x01AE
    01B4 940E01D0  CALL	pop_gset2
    01B6 9508      RET
(0144)   }
(0145)   
(0146) void delay_1ms(void)                 //1ms延时函数
(0147)   {
(0148)    unsigned int i;
(0149)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    01B7 2700      CLR	R16
    01B8 2711      CLR	R17
    01B9 C002      RJMP	0x01BC
    01BA 5F0F      SUBI	R16,0xFF
    01BB 4F1F      SBCI	R17,0xFF
    01BC 3704      CPI	R16,0x74
    01BD E0E4      LDI	R30,4
    01BE 071E      CPC	R17,R30
    01BF F3D0      BCS	0x01BA
    01C0 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    01C1 940E01DF  CALL	push_gset2
    01C3 01B8      MOVW	R22,R16
(0150)   }
(0151)   
(0152) void delay_nms(unsigned int n)       //N ms延时函数
(0153)   {
(0154)    unsigned int i=0;
    01C4 2744      CLR	R20
    01C5 2755      CLR	R21
(0155)    for (i=0;i<n;i++)
    01C6 C003      RJMP	0x01CA
(0156)    delay_1ms();
FILE: <library>
    01C7 DFEF      RCALL	_delay_1ms
    01C8 5F4F      SUBI	R20,0xFF
    01C9 4F5F      SBCI	R21,0xFF
    01CA 1746      CP	R20,R22
    01CB 0757      CPC	R21,R23
    01CC F3D0      BCS	0x01C7
    01CD 940E01D0  CALL	pop_gset2
    01CF 9508      RET
pop_gset2:
    01D0 E0E2      LDI	R30,2
    01D1 940C01E5  JMP	pop
pop_gset3:
    01D3 E0E4      LDI	R30,4
    01D4 940C01E5  JMP	pop
pop_gset4:
    01D6 E0E8      LDI	R30,0x8
    01D7 940C01E5  JMP	pop
push_gset5:
    01D9 92FA      ST	R15,-Y
    01DA 92EA      ST	R14,-Y
push_gset4:
    01DB 92DA      ST	R13,-Y
    01DC 92CA      ST	R12,-Y
push_gset3:
    01DD 92BA      ST	R11,-Y
    01DE 92AA      ST	R10,-Y
push_gset2:
    01DF 937A      ST	R23,-Y
    01E0 936A      ST	R22,-Y
push_gset1:
    01E1 935A      ST	R21,-Y
    01E2 934A      ST	R20,-Y
    01E3 9508      RET
pop_gset1:
    01E4 E0E1      LDI	R30,1
pop:
    01E5 9149      LD	R20,Y+
    01E6 9159      LD	R21,Y+
    01E7 FDE0      SBRC	R30,0
    01E8 9508      RET
    01E9 9169      LD	R22,Y+
    01EA 9179      LD	R23,Y+
    01EB FDE1      SBRC	R30,1
    01EC 9508      RET
    01ED 90A9      LD	R10,Y+
    01EE 90B9      LD	R11,Y+
    01EF FDE2      SBRC	R30,2
    01F0 9508      RET
    01F1 90C9      LD	R12,Y+
    01F2 90D9      LD	R13,Y+
    01F3 FDE3      SBRC	R30,3
    01F4 9508      RET
    01F5 90E9      LD	R14,Y+
    01F6 90F9      LD	R15,Y+
    01F7 9508      RET

⌨️ 快捷键说明

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