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

📄 test.lst

📁 用ATMEGA88推动LCD240128液晶的测试程序。按config.h的定义连接AVR和LCD
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0052)     LCD_RW_L;NOP();NOP();NOP();NOP();NOP();NOP();
    0849 9829      CBI	0x05,1
    084A 0000      NOP
    084B 0000      NOP
    084C 0000      NOP
    084D 0000      NOP
    084E 0000      NOP
    084F 0000      NOP
(0053) 	
(0054) 	
(0055)     LCD_DDR = 0XFF;
    0850 EF8F      LDI	R24,0xFF
    0851 B98A      OUT	0x0A,R24
(0056)     LCD_PORT = lcd_code;NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
    0852 B90B      OUT	0x0B,R16
    0853 0000      NOP
    0854 0000      NOP
    0855 0000      NOP
    0856 0000      NOP
    0857 0000      NOP
    0858 0000      NOP
    0859 0000      NOP
    085A 0000      NOP
    085B 0000      NOP
(0057)     LCD_CODE_P |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
    085C B185      IN	R24,0x05
    085D 608F      ORI	R24,0xF
    085E B985      OUT	0x05,R24
    085F 9508      RET
_lcd_wc3:
  lcd_data2            --> Y+4
  lcd_data1            --> R22
  lcd_code             --> R20
    0860 D088      RCALL	push_gset2
    0861 2F62      MOV	R22,R18
    0862 2F40      MOV	R20,R16
(0058) }
(0059) /***********************************************************************************/
(0060) void lcd_wc3(unsigned char lcd_code,unsigned char lcd_data1,unsigned char lcd_data2)
(0061) {
(0062)     lcd_wd(lcd_data1);
    0863 2F06      MOV	R16,R22
    0864 DF9B      RCALL	_lcd_wd
(0063)     lcd_wd(lcd_data2);
    0865 810C      LDD	R16,Y+4
    0866 DF99      RCALL	_lcd_wd
(0064)     lcd_wc(lcd_code);
    0867 2F04      MOV	R16,R20
    0868 DFC6      RCALL	_lcd_wc
    0869 D075      RCALL	pop_gset2
    086A 9508      RET
_lcd_init:
    086B 9721      SBIW	R28,1
(0065) }
(0066) /******************************************************************************/
(0067) void lcd_init(void)
(0068) {
(0069)     LCD_RES_H;
    086C 9A2C      SBI	0x05,4
(0070)     LCD_RES_L;
    086D 982C      CBI	0x05,4
(0071)     lcd_delay(15);
    086E E00F      LDI	R16,0xF
    086F E010      LDI	R17,0
    0870 DF7C      RCALL	_lcd_delay
(0072)     LCD_RES_H;
    0871 9A2C      SBI	0x05,4
(0073)     lcd_wc(0x80);          //设置显示模式为逻辑“或”模式
    0872 E800      LDI	R16,0x80
    0873 DFBB      RCALL	_lcd_wc
(0074)     lcd_wc(0x98);          //开显示
    0874 E908      LDI	R16,0x98
    0875 DFB9      RCALL	_lcd_wc
(0075)     lcd_wc3(0x40,0,0);     //设置文本显示区首地址
    0876 2422      CLR	R2
    0877 8228      STD	Y+0,R2
    0878 2722      CLR	R18
    0879 E400      LDI	R16,0x40
    087A DFE5      RCALL	_lcd_wc3
(0076)     lcd_wc3(0x41,30,0);    //设置文本显示区宽度
    087B 2422      CLR	R2
    087C 8228      STD	Y+0,R2
    087D E12E      LDI	R18,0x1E
    087E E401      LDI	R16,0x41
    087F DFE0      RCALL	_lcd_wc3
(0077)     lcd_wc3(0x42,0,0);     //设置图形显示区首地址
    0880 2422      CLR	R2
    0881 8228      STD	Y+0,R2
    0882 2722      CLR	R18
    0883 E402      LDI	R16,0x42
    0884 DFDB      RCALL	_lcd_wc3
(0078)     lcd_wc3(0x43,30,0);    //设置图形显示区宽度
    0885 2422      CLR	R2
    0886 8228      STD	Y+0,R2
    0887 E12E      LDI	R18,0x1E
    0888 E403      LDI	R16,0x43
    0889 DFD6      RCALL	_lcd_wc3
    088A 9621      ADIW	R28,1
    088B 9508      RET
_lcd_clear:
  i                    --> R20
  j                    --> R10
  lcd_data             --> R22
    088C D05A      RCALL	push_gset3
    088D 2F60      MOV	R22,R16
    088E 9721      SBIW	R28,1
(0079) }
(0080) /******************************************************************************/
(0081) void lcd_clear(unsigned char lcd_data)
(0082) {
(0083)     unsigned char i,j;
(0084)     lcd_wc(0x98);                    //打开图形显示,关闭文本显示
    088F E908      LDI	R16,0x98
    0890 DF9E      RCALL	_lcd_wc
(0085)     lcd_wc3(0x24,0,0);               //设置地址指针
    0891 2422      CLR	R2
    0892 8228      STD	Y+0,R2
    0893 2722      CLR	R18
    0894 E204      LDI	R16,0x24
    0895 DFCA      RCALL	_lcd_wc3
(0086)     lcd_wc(0xb0);                    //设置自动写数据
    0896 EB00      LDI	R16,0xB0
    0897 DF97      RCALL	_lcd_wc
(0087)     for(i=0;i<128;i++)
    0898 2744      CLR	R20
    0899 C009      RJMP	0x08A3
(0088)     {
(0089)         for(j=0;j<30;j++)
    089A 24AA      CLR	R10
    089B C003      RJMP	0x089F
(0090)         {
(0091)             lcd_wd(lcd_data);        //Write display data 
    089C 2F06      MOV	R16,R22
    089D DF62      RCALL	_lcd_wd
    089E 94A3      INC	R10
    089F 2D8A      MOV	R24,R10
    08A0 318E      CPI	R24,0x1E
    08A1 F3D0      BCS	0x089C
    08A2 9543      INC	R20
    08A3 3840      CPI	R20,0x80
    08A4 F3A8      BCS	0x089A
(0092)         }
(0093)     }                               
(0094)     lcd_wc(0xb2);                    //Awroff (auto reset)
    08A5 EB02      LDI	R16,0xB2
    08A6 DF88      RCALL	_lcd_wc
    08A7 9621      ADIW	R28,1
    08A8 D038      RCALL	pop_gset3
    08A9 9508      RET
_lcd_print:
  lcd_data             --> Y+5
  y                    --> R22
  x                    --> R20
    08AA D03E      RCALL	push_gset2
    08AB 2F62      MOV	R22,R18
    08AC 2F40      MOV	R20,R16
    08AD 9721      SBIW	R28,1
(0095) }
(0096) /******************************************************************************/
(0097) void lcd_print(unsigned char x,unsigned char y,unsigned char lcd_data)
(0098) {
(0099)     lcd_wc(0x98);
    08AE E908      LDI	R16,0x98
    08AF DF7F      RCALL	_lcd_wc
(0100)     lcd_wc3(0x24,x,y);
    08B0 8368      STD	Y+0,R22
    08B1 2F24      MOV	R18,R20
    08B2 E204      LDI	R16,0x24
    08B3 DFAC      RCALL	_lcd_wc3
(0101)     lcd_wc(0xb0);
    08B4 EB00      LDI	R16,0xB0
    08B5 DF79      RCALL	_lcd_wc
(0102)     lcd_wd(lcd_data);
    08B6 810D      LDD	R16,Y+5
    08B7 DF48      RCALL	_lcd_wd
(0103)     lcd_wc(0xb2);
    08B8 EB02      LDI	R16,0xB2
    08B9 DF75      RCALL	_lcd_wc
    08BA 9621      ADIW	R28,1
    08BB D023      RCALL	pop_gset2
    08BC 9508      RET
_lcd_print240128:
  i                    --> R20
  j                    --> R10
  str                  --> R22
    08BD D029      RCALL	push_gset3
    08BE 01B8      MOVW	R22,R16
    08BF 9721      SBIW	R28,1
(0104) }
(0105) /******************************************************************************/
(0106) void lcd_print240128(cchar *str)
(0107) {
(0108)     uchar i,j;
(0109)     lcd_wc(0x98);
    08C0 E908      LDI	R16,0x98
    08C1 DF6D      RCALL	_lcd_wc
(0110)     lcd_wc3(0x24,0,0);
    08C2 2422      CLR	R2
    08C3 8228      STD	Y+0,R2
    08C4 2722      CLR	R18
    08C5 E204      LDI	R16,0x24
    08C6 DF99      RCALL	_lcd_wc3
(0111)     lcd_wc(0xb0);
    08C7 EB00      LDI	R16,0xB0
    08C8 DF66      RCALL	_lcd_wc
(0112)     for(i=0;i<128;i++)
    08C9 2744      CLR	R20
    08CA C00D      RJMP	0x08D8
(0113)     {
(0114)         for(j=0;j<30;j++)
    08CB 24AA      CLR	R10
    08CC C007      RJMP	0x08D4
(0115)         {
(0116)             lcd_wd(*str++);
    08CD 011B      MOVW	R2,R22
    08CE 5F6F      SUBI	R22,0xFF
    08CF 4F7F      SBCI	R23,0xFF
    08D0 01F1      MOVW	R30,R2
    08D1 9104      LPM	R16,0(Z)
    08D2 DF2D      RCALL	_lcd_wd
    08D3 94A3      INC	R10
    08D4 2D8A      MOV	R24,R10
    08D5 318E      CPI	R24,0x1E
    08D6 F3B0      BCS	0x08CD
    08D7 9543      INC	R20
    08D8 3840      CPI	R20,0x80
    08D9 F388      BCS	0x08CB
(0117)         }
(0118)     }
(0119)     lcd_wc(0xb2);
FILE: <library>
    08DA EB02      LDI	R16,0xB2
    08DB DF53      RCALL	_lcd_wc
    08DC 9621      ADIW	R28,1
    08DD D003      RCALL	pop_gset3
    08DE 9508      RET
pop_gset2:
    08DF E0E2      LDI	R30,2
    08E0 C00E      RJMP	pop
pop_gset3:
    08E1 E0E4      LDI	R30,4
    08E2 C00C      RJMP	pop
push_gset5:
    08E3 92FA      ST	R15,-Y
    08E4 92EA      ST	R14,-Y
push_gset4:
    08E5 92DA      ST	R13,-Y
    08E6 92CA      ST	R12,-Y
push_gset3:
    08E7 92BA      ST	R11,-Y
    08E8 92AA      ST	R10,-Y
push_gset2:
    08E9 937A      ST	R23,-Y
    08EA 936A      ST	R22,-Y
push_gset1:
    08EB 935A      ST	R21,-Y
    08EC 934A      ST	R20,-Y
    08ED 9508      RET
pop_gset1:
    08EE E0E1      LDI	R30,1
pop:
    08EF 9149      LD	R20,Y+
    08F0 9159      LD	R21,Y+
    08F1 FDE0      SBRC	R30,0
    08F2 9508      RET
    08F3 9169      LD	R22,Y+
    08F4 9179      LD	R23,Y+
    08F5 FDE1      SBRC	R30,1
    08F6 9508      RET
    08F7 90A9      LD	R10,Y+
    08F8 90B9      LD	R11,Y+
    08F9 FDE2      SBRC	R30,2
    08FA 9508      RET
    08FB 90C9      LD	R12,Y+
    08FC 90D9      LD	R13,Y+
    08FD FDE3      SBRC	R30,3
    08FE 9508      RET
    08FF 90E9      LD	R14,Y+
    0900 90F9      LD	R15,Y+
    0901 9508      RET

⌨️ 快捷键说明

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