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

📄 ps2icc.lst

📁 AVRkaifashili.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0818 3001      CPI	R16,1
    0819 F411      BNE	0x081C
    081A 9AC4      SBI	0x18,4
    081B C003      RJMP	0x081F
(0138)  else     PORTB=PORTB&0xbf;}
    081C B388      IN	R24,0x18
    081D 7B8F      ANDI	R24,0xBF
    081E BB88      OUT	0x18,R24
    081F 9508      RET
(0139) 
(0140) //sbit RST=PB^5;
(0141) void Set_RST(uchar i)
(0142) {if(i==1) PORTB=PORTB|0x40;
_Set_RST:
  i                    --> R16
    0820 3001      CPI	R16,1
    0821 F411      BNE	0x0824
    0822 9AC6      SBI	0x18,6
    0823 C003      RJMP	0x0827
(0143)  else     PORTB=PORTB&0x7f;}
    0824 B388      IN	R24,0x18
    0825 778F      ANDI	R24,0x7F
    0826 BB88      OUT	0x18,R24
    0827 9508      RET
_DisplayOnOff:
  j                    --> Y+1
  i                    --> R20
    0828 D524      RCALL	push_gset1
    0829 2F40      MOV	R20,R16
(0144) 
(0145) //***************************LCD显示开关控制命令***********//
(0146) //参数说明:i=0开显示,i=1关显示
(0147) void DisplayOnOff(uchar i)
(0148) {uchar j;
(0149)  Set_RW(0);                  // RW=0;
    082A 2700      CLR	R16
    082B DFD4      RCALL	_Set_RW
(0150)  Set_DI(0);                  //DI=0;
    082C 2700      CLR	R16
    082D DFCA      RCALL	_Set_DI
(0151)  Set_EN(0);                  //ENABLE=0;
    082E 2700      CLR	R16
    082F DFD8      RCALL	_Set_EN
(0152)  PORTC=62+i;                 //P0=0x3e+i;
    0830 2F84      MOV	R24,R20
    0831 5C82      SUBI	R24,0xC2
    0832 BB85      OUT	0x15,R24
(0153)  DelayUs(10);                //_DelayUs_();
    0833 E00A      LDI	R16,0xA
    0834 DF1F      RCALL	_DelayUs
(0154)  Set_EN(1);                  //ENABLE=1;
    0835 E001      LDI	R16,1
    0836 DFD1      RCALL	_Set_EN
(0155)  DelayUs(10);                //_DelayUs_();
    0837 E00A      LDI	R16,0xA
    0838 DF1B      RCALL	_DelayUs
(0156)  DelayUs(10);                //_DelayUs_();
    0839 E00A      LDI	R16,0xA
    083A DF19      RCALL	_DelayUs
(0157)  Set_EN(0);                  //ENABLE=0;
    083B 2700      CLR	R16
    083C DFCB      RCALL	_Set_EN
(0158) }
    083D D512      RCALL	pop_gset1
    083E 9508      RET
_SetStartLine:
  i                    --> R20
    083F D50D      RCALL	push_gset1
    0840 2F40      MOV	R20,R16
(0159) 
(0160) //***************************设置LCD显示起始行*************//
(0161) //参数说明:i=0~63
(0162) void SetStartLine(uchar i)
(0163) {Set_RW(0);                  //RW=0;
    0841 2700      CLR	R16
    0842 DFBD      RCALL	_Set_RW
(0164)  Set_DI(0);                  //DI=0;
    0843 2700      CLR	R16
    0844 DFB3      RCALL	_Set_DI
(0165)  Set_EN(0);                  //ENABLE=0;
    0845 2700      CLR	R16
    0846 DFC1      RCALL	_Set_EN
(0166)  PORTC=0xc0+i;               //PORTC=0xc0+i;
    0847 2F84      MOV	R24,R20
    0848 5480      SUBI	R24,0x40
    0849 BB85      OUT	0x15,R24
(0167)  DelayUs(10);                //_DelayUs_();
    084A E00A      LDI	R16,0xA
    084B DF08      RCALL	_DelayUs
(0168)  Set_EN(1);                  //ENABLE=1;
    084C E001      LDI	R16,1
    084D DFBA      RCALL	_Set_EN
(0169)  DelayUs(10);                //_DelayUs_();
    084E E00A      LDI	R16,0xA
    084F DF04      RCALL	_DelayUs
(0170)  DelayUs(10);                //_DelayUs_();
    0850 E00A      LDI	R16,0xA
    0851 DF02      RCALL	_DelayUs
(0171)  Set_EN(0);                  //ENABLE=0;
    0852 2700      CLR	R16
    0853 DFB4      RCALL	_Set_EN
(0172) }
    0854 D4FB      RCALL	pop_gset1
    0855 9508      RET
_SetX:
  i                    --> R20
    0856 D4F6      RCALL	push_gset1
    0857 2F40      MOV	R20,R16
(0173) 
(0174) //***************************设置页(行)地址**************//
(0175) //参数说明:i=0~7
(0176) void SetX(uchar i)
(0177) {Set_RW(0);                  //RW=0;
    0858 2700      CLR	R16
    0859 DFA6      RCALL	_Set_RW
(0178)  Set_DI(0);                  //DI=0;
    085A 2700      CLR	R16
    085B DF9C      RCALL	_Set_DI
(0179)  Set_EN(0);                  //ENABLE=0;
    085C 2700      CLR	R16
    085D DFAA      RCALL	_Set_EN
(0180)  PORTC=0xb8+i;               //P0=0xb8+i;
    085E 2F84      MOV	R24,R20
    085F 5488      SUBI	R24,0x48
    0860 BB85      OUT	0x15,R24
(0181)  DelayUs(10);                //_DelayUs_();
    0861 E00A      LDI	R16,0xA
    0862 DEF1      RCALL	_DelayUs
(0182)  Set_EN(1);                  //ENABLE=1;
    0863 E001      LDI	R16,1
    0864 DFA3      RCALL	_Set_EN
(0183)  DelayUs(100);               // _DelayUs_();
    0865 E604      LDI	R16,0x64
    0866 DEED      RCALL	_DelayUs
(0184)  DelayUs(100);               //_DelayUs_();
    0867 E604      LDI	R16,0x64
    0868 DEEB      RCALL	_DelayUs
(0185)  Set_EN(0);                  //ENABLE=0;
    0869 2700      CLR	R16
    086A DF9D      RCALL	_Set_EN
(0186) }
    086B D4E4      RCALL	pop_gset1
    086C 9508      RET
_SetY:
  i                    --> R20
    086D D4DF      RCALL	push_gset1
    086E 2F40      MOV	R20,R16
(0187) 
(0188) //***************************设置Y(列)地址***************//
(0189) //参数说明:i=0~63
(0190) void SetY(uchar i)
(0191) {Set_RW(0);                  //RW=0;
    086F 2700      CLR	R16
    0870 DF8F      RCALL	_Set_RW
(0192)  Set_DI(0);                  //DI=0;
    0871 2700      CLR	R16
    0872 DF85      RCALL	_Set_DI
(0193)  Set_EN(0);                  //ENABLE=0;
    0873 2700      CLR	R16
    0874 DF93      RCALL	_Set_EN
(0194)  PORTC=0x40+i;               // P0=0x40+i;
    0875 2F84      MOV	R24,R20
    0876 5C80      SUBI	R24,0xC0
    0877 BB85      OUT	0x15,R24
(0195)  DelayUs(10);                //_DelayUs_();
    0878 E00A      LDI	R16,0xA
    0879 DEDA      RCALL	_DelayUs
(0196)  Set_EN(1);                  //ENABLE=1;
    087A E001      LDI	R16,1
    087B DF8C      RCALL	_Set_EN
(0197)  DelayUs(10);                //_DelayUs_();
    087C E00A      LDI	R16,0xA
    087D DED6      RCALL	_DelayUs
(0198)  DelayUs(10);                //_DelayUs_();
    087E E00A      LDI	R16,0xA
    087F DED4      RCALL	_DelayUs
(0199)  Set_EN(0);                  //ENABLE=0;
    0880 2700      CLR	R16
    0881 DF86      RCALL	_Set_EN
(0200) }
    0882 D4CD      RCALL	pop_gset1
    0883 9508      RET
_WriteByte:
  i                    --> R20
    0884 D4C8      RCALL	push_gset1
    0885 2F40      MOV	R20,R16
(0201) 
(0202) //***************************写显示数据********************//
(0203) //参数说明:i为送DDRAM的数据
(0204) void WriteByte(uchar i)
(0205) {Set_RW(0);                  //RW=0;
    0886 2700      CLR	R16
    0887 DF78      RCALL	_Set_RW
(0206)  Set_DI(1);                  //DI=1;
    0888 E001      LDI	R16,1
    0889 DF6E      RCALL	_Set_DI
(0207)  Set_EN(0);                  //ENABLE=0;
    088A 2700      CLR	R16
    088B DF7C      RCALL	_Set_EN
(0208)  PORTC=i;                    //P0=i;
    088C BB45      OUT	0x15,R20
(0209)  DelayUs(10);                //_DelayUs_();
    088D E00A      LDI	R16,0xA
    088E DEC5      RCALL	_DelayUs
(0210)  Set_EN(1);                  //ENABLE=1;
    088F E001      LDI	R16,1
    0890 DF77      RCALL	_Set_EN
(0211)  DelayUs(10);                //_DelayUs_();
    0891 E00A      LDI	R16,0xA
    0892 DEC1      RCALL	_DelayUs
(0212)  DelayUs(10);                //_DelayUs_();
    0893 E00A      LDI	R16,0xA
    0894 DEBF      RCALL	_DelayUs
(0213)  Set_EN(0);                  //ENABLE=0;
    0895 2700      CLR	R16
    0896 DF71      RCALL	_Set_EN
(0214) }
    0897 D4B8      RCALL	pop_gset1
    0898 9508      RET
(0215) 
(0216) //***************************LCD复位***********************//
(0217) void Reset(void)
(0218) {Set_RST(0);                 //RST=0;
_Reset:
    0899 2700      CLR	R16
    089A DF85      RCALL	_Set_RST
(0219)  DelayMs(1);
    089B E001      LDI	R16,1
    089C E010      LDI	R17,0
    089D DEA5      RCALL	_DelayMs
(0220)  Set_RST(1);                 //RST=1;
    089E E001      LDI	R16,1
(0221) }
    089F CF80      RJMP	_Set_RST
_ClearScreen:
  i                    --> R20
  j                    --> R22
  k                    --> R22
    08A0 D4C3      RCALL	push_gset2
    08A1 2F60      MOV	R22,R16
(0222) 
(0223) //***************************LCD清屏幕*********************//
(0224) //参数说明:LCD从k(0~7)行开始清屏幕
(0225) void ClearScreen(uchar k)
(0226) {uchar i,j;
(0227)  Set_CS1(1);                //CS1=1;选中右屏幕
    08A2 E001      LDI	R16,1
    08A3 DF6C      RCALL	_Set_CS1
(0228)  Set_CS2(1);                //CS2=1;选中左屏幕
    08A4 E001      LDI	R16,1
    08A5 DF72      RCALL	_Set_CS2
(0229)  for(i=k;i<8;i+=1)
    08A6 2F46      MOV	R20,R22
    08A7 C00A      RJMP	0x08B2
(0230)  	{SetX(i);               //设置起始行
    08A8 2F04      MOV	R16,R20
    08A9 DFAC      RCALL	_SetX
(0231) 	 for(j=0;j<64;j++)  
    08AA 2766      CLR	R22
    08AB C003      RJMP	0x08AF
(0232) 		WriteByte(0x00);    //向DDRAM写0清屏幕
    08AC 2700      CLR	R16
    08AD DFD6      RCALL	_WriteByte
    08AE 9563      INC	R22
    08AF 3460      CPI	R22,0x40
    08B0 F3D8      BCS	0x08AC
    08B1 9543      INC	R20
    08B2 3048      CPI	R20,0x8
    08B3 F3A0      BCS	0x08A8
(0233) 	 }
(0234) }
    08B4 D490      RCALL	pop_gset2
    08B5 9508      RET
(0235)  
(0236) //***************************LCD初始化*********************//
(0237) void Init_LCD(void)
(0238) {Reset();                    //LCD复位
_Init_LCD:
    08B6 DFE2      RCALL	_Reset
(0239)  DelayMs(1);
    08B7 E001      LDI	R16,1
    08B8 E010      LDI	R17,0
    08B9 DE89      RCALL	_DelayMs
(0240)  ClearScreen(0);             //LCD清屏
    08BA 2700      CLR	R16
    08BB DFE4      RCALL	_ClearScreen
(0241)  DisplayOnOff(1);            //开启显示
    08BC E001      LDI	R16,1
    08BD DF6A      RCALL	_DisplayOnOff
(0242)  SetStartLine(0);            //设置起始行
    08BE 2700      CLR	R16
(0243) }
    08BF CF7F      RJMP	_SetStartLine
_WritePIC:
  jj                   --> R22
  ii                   --> R20
  kk                   --> R22
  j                    --> R10
  i                    --> R14
  disp                 --> R12
    08C0 D4AC      RCALL	push_gset5
    08C1 2EE2      MOV	R14,R18
    08C2 2EC0      MOV	R12,R16
    08C3 2ED1      MOV	R13,R17
    08C4 84AA      LDD	R10,Y+10
(0244) 
(0245) //***************************LCD图象显示函数***************//
(0246) //参数说明:disp[]:图象数组名;i:LCD的起始行;j:LCD的结束行
(0247) //函数功能:从LCD的i行到j行显示数组disp[]所存的图象
(0248) void WritePIC(const uchar *disp,uchar i,uchar j)
(0249) {uchar ii=0;
    08C5 2744      CLR	R20
(0250)  uchar jj=0;
    08C6 2766      CLR	R22
(0251)  uchar kk=0;
(0252)  SetX(0);
    08C7 2700      CLR	R16
    08C8 DF8D      RCALL	_SetX
(0253)  SetY(0);
    08C9 2700      CLR	R16
    08CA DFA2      RCALL	_SetY
(0254)  for(ii=i;ii<j;ii++)
    08CB 2D4E      MOV	R20,R14
    08CC C02F      RJMP	0x08FC
(0255)  {for(kk=0;kk<64;kk++)
    08CD 2766      CLR	R22
    08CE C013      RJMP	0x08E2
(0256) 	{Set_CS1(0);             //选择左屏幕
    08CF 2700      CLR	R16
    08D0 DF3F      RCALL	_Set_CS1
(0257) 	 Set_CS2(1);
    08D1 E001      LDI	R16,1
    08D2 DF45      RCALL	_Set_CS2
(0258) 	 SetX(ii);               //设置页地址
    08D3 2F04      MOV	R16,R20
    08D4 DF81      RCALL	_SetX
(0259) 	 SetY(kk);               //设置列地址
    08D5 2F06      MOV	R16,R22
    08D6 DF96      RCALL	_SetY
(0260) 	 WriteByte(*disp);       //写数据
    08D7 2DEC      MOV	R30,R12
    08D8 2DFD      MOV	R31,R13
    08D9 95C8      LPM
    08DA 2D00      MOV	R16,R0
    08DB DFA8      RCALL	_WriteByte
(0261) 	 disp++;}
    08DC 2D8C      MOV	R24,R12
    08DD 2D9D      MOV	R25,R13
    08DE 9601      ADIW	R24,1
    08DF 2EC8      MOV	R12,R24
    08E0 2ED9      MOV	R13,R25
    08E1 9563      INC	R22
    08E2 3460      CPI	R22,0x40
    08E3 F358      BCS	0x08CF
(0262)   for(kk=0;kk<64;kk++)      
    08E4 2766      CLR	R22
    08E5 C013      RJMP	0x08F9
(0263) 	{Set_CS1(1);             //选择右屏幕
    08E6 E001      LDI	R16,1
    08E7 DF28      RCALL	_Set_CS1
(0264) 	 Set_CS2(0);           
    08E8 2700      CLR	R16
    08E9 DF2E      RCALL	_Set_CS2
(0265) 	 SetX(ii);               //设置页地址
    08EA 2F04      MOV	R16,R20
    08EB DF6A      RCALL	_SetX
(0266) 	 SetY(kk);               //设置列地址
    08EC 2F06      MOV	R16,R22
    08ED DF7F      RCALL	_SetY
(0267) 	 WriteByte(*disp);       //写数据
    08EE 2DEC      MOV	R30,R12
    08EF 2DFD      MOV	R31,R13
    08F0 95C8      LPM
    08F1 2D00      MOV	R16,R0
    08F2 DF91      RCALL	_WriteByte
(0268)   	 disp++;}}
    08F3 2D8C      MOV	R24,R12
    08F4 2D9D      MOV	R25,R13
    08F5 9601      ADIW	R24,1
    08F6 2EC8      MOV	R12,R24
    08F7 2ED9      MOV	R13,R25
    08F8 9563      INC	R22
    08F9 3460      CPI	R22,0x40
    08FA F358      BCS	0x08E6
    08FB 9543      INC	R20
    08FC 154A      CP	R20,R10
    08FD F408      BCC	0x08FF
    08FE CFCE      RJMP	0x08CD
(0269) } 
    08FF D44B      RCALL	pop_gset5
    0900 9508      RET
_WriteWord:
  i                    --> R20
  cs                   --> Y+10
  y                    --> R10
  x                    --> R12
  disp                 --> R22
    0901 D468      RCALL	push_gset4
    0902 2EC2      MOV	R12,R18
    0903 2F60      MOV	R22,R16
    0904 2F71      MOV	R23,R17
    0905 84A8      LDD	R10,Y+8
(0270)  
(0271) //***************************LCD中文汉字显示函数***********//
(0272) //参数说明:disp[]:汉字字模数组名;
(0273) //参数说明:x:LCD的页地址;y:LCD的列地址

⌨️ 快捷键说明

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