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

📄 1602.lst

📁 用AVRmega8515编写的lcd1602显示程序
💻 LST
字号:
__start:
__text_start:
      1D E5CF      LDI	R28,0x5F
      1E E0D2      LDI	R29,2
      1F BFCD      OUT	0x3D,R28
      20 BFDE      OUT	0x3E,R29
      21 51CE      SUBI	R28,0x1E
      22 40D0      SBCI	R29,0
      23 EA0A      LDI	R16,0xAA
      24 8308      STD	Y+0,R16
      25 2400      CLR	R0
      26 E6E0      LDI	R30,0x60
      27 E0F0      LDI	R31,0
      28 E010      LDI	R17,0
      29 36E0      CPI	R30,0x60
      2A 07F1      CPC	R31,R17
      2B F011      BEQ	0x002E
      2C 9201      ST	R0,Z+
      2D CFFB      RJMP	0x0029
      2E 8300      STD	Z+0,R16
      2F E3EA      LDI	R30,0x3A
      30 E0F0      LDI	R31,0
      31 E6A0      LDI	R26,0x60
      32 E0B0      LDI	R27,0
      33 E010      LDI	R17,0
      34 E000      LDI	R16,0
      35 BF0B      OUT	0x3B,R16
      36 33EA      CPI	R30,0x3A
      37 07F1      CPC	R31,R17
      38 F021      BEQ	0x003D
      39 95C8      LPM
      3A 9631      ADIW	R30,1
      3B 920D      ST	R0,X+
      3C CFF9      RJMP	0x0036
      3D D06F      RCALL	_main
_exit:
      3E CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
      3F D079      RCALL	push_xgsetF000
FILE: E:\AVR程序\OK\1602\1602.c
(0001) #include"1602.h"
(0002) 
(0003) #pragma data:code
(0004) const uchar table[]="I LOVE AVR !";  //双引号是将这些字符转化成ASCII码
(0005) const uchar table1[]="zhang yi !";
(0006) 
(0007) void delay(uint ms)
(0008) {
(0009)         uint i,j;
(0010) 	for(i=0;i<ms;i++)
      40 2744      CLR	R20
      41 2755      CLR	R21
      42 C00B      RJMP	0x004E
(0011) 	   {
(0012) 	   for(j=0;j<1141;j++);
      43 2766      CLR	R22
      44 2777      CLR	R23
      45 C002      RJMP	0x0048
      46 5F6F      SUBI	R22,0xFF
      47 4F7F      SBCI	R23,0xFF
      48 3765      CPI	R22,0x75
      49 E0E4      LDI	R30,4
      4A 077E      CPC	R23,R30
      4B F3D0      BCS	0x0046
      4C 5F4F      SUBI	R20,0xFF
      4D 4F5F      SBCI	R21,0xFF
      4E 1740      CP	R20,R16
      4F 0751      CPC	R21,R17
      50 F390      BCS	0x0043
      51 C06C      RJMP	pop_xgsetF000
_write_com:
  com                  --> R10
      52 92AA      ST	R10,-Y
      53 2EA0      MOV	R10,R16
(0013)        }
(0014) }
(0015) 
(0016) void write_com(uchar com)  //写指令
(0017) {
(0018)     CLR_RS_1602;   //选择命令端
      54 98AD      CBI	0x15,5
(0019) 	CLR_RW_1602;    //选择写端
      55 98AE      CBI	0x15,6
(0020) 	delay(1);   //延时1ms
      56 E001      LDI	R16,1
      57 E010      LDI	R17,0
      58 DFE6      RCALL	_delay
(0021) 	
(0022) 	
(0023) 	SET_E_1602;
      59 9AAF      SBI	0x15,7
(0024) 	PORTA=com;
      5A BAAB      OUT	0x1B,R10
(0025) 	CLR_E_1602;
      5B 98AF      CBI	0x15,7
      5C 90A9      LD	R10,Y+
      5D 9508      RET
_write_dat:
  dat                  --> R10
      5E 92AA      ST	R10,-Y
      5F 2EA0      MOV	R10,R16
(0026) }
(0027) 
(0028) void write_dat(uchar dat)  //写数据
(0029) {
(0030)     SET_RS_1602;    //选择数据端
      60 9AAD      SBI	0x15,5
(0031) 	CLR_RW_1602;    //选择写端
      61 98AE      CBI	0x15,6
(0032) 	delay(1);   //延时1ms
      62 E001      LDI	R16,1
      63 E010      LDI	R17,0
      64 DFDA      RCALL	_delay
(0033) 	
(0034) 	SET_E_1602;
      65 9AAF      SBI	0x15,7
(0035) 	PORTA=dat;
      66 BAAB      OUT	0x1B,R10
(0036) 	CLR_E_1602;
      67 98AF      CBI	0x15,7
      68 90A9      LD	R10,Y+
      69 9508      RET
(0037) 
(0038) }
(0039) 
(0040) void LCD_init()
(0041) {
(0042) 	write_com(0X38);	 //初始化设置,显示模式设置
_LCD_init:
      6A E308      LDI	R16,0x38
      6B DFE6      RCALL	_write_com
(0043) 	write_com(0X0C);	   //0X0C去光标
      6C E00C      LDI	R16,0xC
      6D DFE4      RCALL	_write_com
(0044)    	write_com(0X06);	   //地址从左往右加1
      6E E006      LDI	R16,6
      6F DFE2      RCALL	_write_com
(0045) 	write_com(0X01);	   
      70 E001      LDI	R16,1
      71 DFE0      RCALL	_write_com
(0046) 	delay(5); 
      72 E005      LDI	R16,5
      73 E010      LDI	R17,0
      74 DFCA      RCALL	_delay
      75 9508      RET
_display:
  i                    --> R20
      76 934A      ST	R20,-Y
(0047) }
(0048) void display()
(0049) {
(0050) /*******************第一行显示**********/
(0051)    uchar i;
(0052)    write_com(0X80+0X00);
      77 E800      LDI	R16,0x80
      78 DFD9      RCALL	_write_com
(0053)    delay(5);
      79 E005      LDI	R16,5
      7A E010      LDI	R17,0
      7B DFC3      RCALL	_delay
(0054)    for(i=0;i<12;i++)
      7C 2744      CLR	R20
      7D C00C      RJMP	0x008A
(0055)    {
(0056)      write_dat(table[i]);
      7E E282      LDI	R24,0x22
      7F E090      LDI	R25,0
      80 2FE4      MOV	R30,R20
      81 27FF      CLR	R31
      82 0FE8      ADD	R30,R24
      83 1FF9      ADC	R31,R25
      84 9104      LPM	R16,0(Z)
      85 DFD8      RCALL	_write_dat
(0057) 	 delay(5);
      86 E005      LDI	R16,5
      87 E010      LDI	R17,0
      88 DFB6      RCALL	_delay
      89 9543      INC	R20
      8A 304C      CPI	R20,0xC
      8B F390      BCS	0x007E
(0058)    
(0059)    }
(0060) 
(0061) /******************第二行显示***************/
(0062)    write_com(0X80+0X40);
      8C EC00      LDI	R16,0xC0
      8D DFC4      RCALL	_write_com
(0063)    delay(5);
      8E E005      LDI	R16,5
      8F E010      LDI	R17,0
      90 DFAE      RCALL	_delay
(0064)    for(i=0;i<10;i++)
      91 2744      CLR	R20
      92 C00C      RJMP	0x009F
(0065)    {
(0066)      write_dat(table1[i]);
      93 E28F      LDI	R24,0x2F
      94 E090      LDI	R25,0
      95 2FE4      MOV	R30,R20
      96 27FF      CLR	R31
      97 0FE8      ADD	R30,R24
      98 1FF9      ADC	R31,R25
      99 9104      LPM	R16,0(Z)
      9A DFC3      RCALL	_write_dat
(0067) 	 delay(5);
      9B E005      LDI	R16,5
      9C E010      LDI	R17,0
      9D DFA1      RCALL	_delay
      9E 9543      INC	R20
      9F 304A      CPI	R20,0xA
      A0 F390      BCS	0x0093
(0068)    }
(0069) 
(0070)   for(i=0;i<15;i++)
      A1 2744      CLR	R20
      A2 C006      RJMP	0x00A9
(0071)    {
(0072)        write_com(0x1C);
      A3 E10C      LDI	R16,0x1C
      A4 DFAD      RCALL	_write_com
(0073) 	   delay(100);
      A5 E604      LDI	R16,0x64
      A6 E010      LDI	R17,0
      A7 DF97      RCALL	_delay
      A8 9543      INC	R20
      A9 304F      CPI	R20,0xF
      AA F3C0      BCS	0x00A3
      AB 9149      LD	R20,Y+
      AC 9508      RET
(0074)    
(0075)    }
(0076) }
(0077) void main()
(0078) { 
(0079)    DDRA=0XFF;
_main:
      AD EF8F      LDI	R24,0xFF
      AE BB8A      OUT	0x1A,R24
(0080)    DDRC|=BIT(5)|BIT(6)|BIT(7);
      AF B384      IN	R24,0x14
      B0 6E80      ORI	R24,0xE0
      B1 BB84      OUT	0x14,R24
(0081)    CLR_E_1602;
      B2 98AF      CBI	0x15,7
(0082) 
(0083)  
(0084)   
(0085)    LCD_init();
      B3 DFB6      RCALL	_LCD_init
(0086)    delay(20);
      B4 E104      LDI	R16,0x14
      B5 E010      LDI	R17,0
      B6 DF88      RCALL	_delay
(0087)    //write_com(0x84);
(0088)    //write_dat(0x34);
(0089)    display();
FILE: <library>
      B7 DFBE      RCALL	_display
      B8 9508      RET
push_xgsetF000:
      B9 937A      ST	R23,-Y
      BA 936A      ST	R22,-Y
      BB 935A      ST	R21,-Y
      BC 934A      ST	R20,-Y
      BD 9508      RET
pop_xgsetF000:
      BE 9149      LD	R20,Y+
      BF 9159      LD	R21,Y+
      C0 9169      LD	R22,Y+
      C1 9179      LD	R23,Y+
      C2 9508      RET

⌨️ 快捷键说明

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