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

📄 1602b_lcd_prj.lst

📁 这是1602液晶的使用简单例子,用到ATmage8来控制的C语言程序
💻 LST
字号:
FILE: <library>
__start:
__text_start:
    002F E5CF      LDI	R28,0x5F
    0030 E0D4      LDI	R29,4
    0031 BFCD      OUT	0x3D,R28
    0032 BFDE      OUT	0x3E,R29
    0033 51C0      SUBI	R28,0x10
    0034 40D0      SBCI	R29,0
    0035 EA0A      LDI	R16,0xAA
    0036 8308      STD	Y+0,R16
    0037 2400      CLR	R0
    0038 E9E7      LDI	R30,0x97
    0039 E0F0      LDI	R31,0
    003A E010      LDI	R17,0
    003B 39E7      CPI	R30,0x97
    003C 07F1      CPC	R31,R17
    003D F011      BEQ	0x0040
    003E 9201      ST	R0,Z+
    003F CFFB      RJMP	0x003B
    0040 8300      STD	Z+0,R16
    0041 E2E6      LDI	R30,0x26
    0042 E0F0      LDI	R31,0
    0043 E6A0      LDI	R26,0x60
    0044 E0B0      LDI	R27,0
    0045 E010      LDI	R17,0
    0046 35ED      CPI	R30,0x5D
    0047 07F1      CPC	R31,R17
    0048 F021      BEQ	0x004D
    0049 95C8      LPM
    004A 9631      ADIW	R30,1
    004B 920D      ST	R0,X+
    004C CFF9      RJMP	0x0046
    004D D0AE      RCALL	_main
_exit:
    004E CFFF      RJMP	_exit
_LCD_init:
    004F E00F      LDI	R16,0xF
    0050 E010      LDI	R17,0
    0051 D0FD      RCALL	_delay_nms
    0052 2722      CLR	R18
    0053 2733      CLR	R19
    0054 E208      LDI	R16,0x28
    0055 E010      LDI	R17,0
    0056 D016      RCALL	_LCD_write_char
    0057 2722      CLR	R18
    0058 2733      CLR	R19
    0059 E00C      LDI	R16,0xC
    005A E010      LDI	R17,0
    005B D011      RCALL	_LCD_write_char
    005C 2722      CLR	R18
    005D 2733      CLR	R19
    005E E001      LDI	R16,1
    005F E010      LDI	R17,0
    0060 D00C      RCALL	_LCD_write_char
    0061 2722      CLR	R18
    0062 2733      CLR	R19
    0063 E006      LDI	R16,6
    0064 E010      LDI	R17,0
    0065 D007      RCALL	_LCD_write_char
    0066 9508      RET
_LCD_en_write:
    0067 9AAD      SBI	0x15,5
    0068 E001      LDI	R16,1
    0069 E010      LDI	R17,0
    006A D0CD      RCALL	_delay_nus
    006B 98AD      CBI	0x15,5
    006C 9508      RET
_LCD_write_char:
  data_temp            --> R22
  command_temp         --> R20
  data                 --> R12
  command              --> R10
    006D D0F6      RCALL	push_gset4
    006E 0169      MOVW	R12,R18
    006F 0158      MOVW	R10,R16
    0070 01A5      MOVW	R20,R10
    0071 01B6      MOVW	R22,R12
    0072 D04E      RCALL	_LCD_wait_Ready
    0073 9893      CBI	0x12,3
    0074 3040      CPI	R20,0
    0075 0745      CPC	R20,R21
    0076 F469      BNE	0x0084
    0077 9AAC      SBI	0x15,4
    0078 B382      IN	R24,0x12
    0079 708F      ANDI	R24,0xF
    007A BB82      OUT	0x12,R24
    007B 01CB      MOVW	R24,R22
    007C 7F80      ANDI	R24,0xF0
    007D 7090      ANDI	R25,0
    007E B222      IN	R2,0x12
    007F 2433      CLR	R3
    0080 2A28      OR	R2,R24
    0081 2A39      OR	R3,R25
    0082 BA22      OUT	0x12,R2
    0083 C00C      RJMP	0x0090
    0084 98AC      CBI	0x15,4
    0085 B382      IN	R24,0x12
    0086 708F      ANDI	R24,0xF
    0087 BB82      OUT	0x12,R24
    0088 01CA      MOVW	R24,R20
    0089 7F80      ANDI	R24,0xF0
    008A 7090      ANDI	R25,0
    008B B222      IN	R2,0x12
    008C 2433      CLR	R3
    008D 2A28      OR	R2,R24
    008E 2A39      OR	R3,R25
    008F BA22      OUT	0x12,R2
    0090 DFD6      RCALL	_LCD_en_write
    0091 0F44      LSL	R20
    0092 1F55      ROL	R21
    0093 0F44      LSL	R20
    0094 1F55      ROL	R21
    0095 0F44      LSL	R20
    0096 1F55      ROL	R21
    0097 0F44      LSL	R20
    0098 1F55      ROL	R21
    0099 0F66      LSL	R22
    009A 1F77      ROL	R23
    009B 0F66      LSL	R22
    009C 1F77      ROL	R23
    009D 0F66      LSL	R22
    009E 1F77      ROL	R23
    009F 0F66      LSL	R22
    00A0 1F77      ROL	R23
    00A1 B382      IN	R24,0x12
    00A2 708F      ANDI	R24,0xF
    00A3 BB82      OUT	0x12,R24
    00A4 20AA      TST	R10
    00A5 F459      BNE	0x00B1
    00A6 20BB      TST	R11
    00A7 F449      BNE	0x00B1
    00A8 01CB      MOVW	R24,R22
    00A9 7F80      ANDI	R24,0xF0
    00AA 7090      ANDI	R25,0
    00AB B222      IN	R2,0x12
    00AC 2433      CLR	R3
    00AD 2A28      OR	R2,R24
    00AE 2A39      OR	R3,R25
    00AF BA22      OUT	0x12,R2
    00B0 C008      RJMP	0x00B9
    00B1 01CA      MOVW	R24,R20
    00B2 7F80      ANDI	R24,0xF0
    00B3 7090      ANDI	R25,0
    00B4 B222      IN	R2,0x12
    00B5 2433      CLR	R3
    00B6 2A28      OR	R2,R24
    00B7 2A39      OR	R3,R25
    00B8 BA22      OUT	0x12,R2
    00B9 DFAD      RCALL	_LCD_en_write
    00BA 9A93      SBI	0x12,3
    00BB E180      LDI	R24,0x10
    00BC B225      IN	R2,0x15
    00BD 2628      EOR	R2,R24
    00BE BA25      OUT	0x15,R2
    00BF D0A0      RCALL	pop_gset4
    00C0 9508      RET
_LCD_wait_Ready:
    00C1 988F      CBI	0x11,7
    00C2 9A93      SBI	0x12,3
    00C3 98AC      CBI	0x15,4
    00C4 9AAD      SBI	0x15,5
    00C5 9987      SBIC	0x10,7
    00C6 C003      RJMP	0x00CA
    00C7 E001      LDI	R16,1
    00C8 E010      LDI	R17,0
    00C9 C002      RJMP	0x00CC
    00CA 2700      CLR	R16
    00CB 2711      CLR	R17
    00CC 3000      CPI	R16,0
    00CD 0701      CPC	R16,R17
    00CE F3B1      BEQ	0x00C5
    00CF 98AD      CBI	0x15,5
    00D0 B381      IN	R24,0x11
    00D1 6F80      ORI	R24,0xF0
    00D2 BB81      OUT	0x11,R24
    00D3 9508      RET
_LCD_set_xy:
  address              --> R20
  y                    --> R20
  x                    --> R22
    00D4 D093      RCALL	push_gset2
    00D5 2F42      MOV	R20,R18
    00D6 2F60      MOV	R22,R16
    00D7 2344      TST	R20
    00D8 F419      BNE	0x00DC
    00D9 2F46      MOV	R20,R22
    00DA 5840      SUBI	R20,0x80
    00DB C002      RJMP	0x00DE
    00DC 2F46      MOV	R20,R22
    00DD 5440      SUBI	R20,0x40
    00DE 2722      CLR	R18
    00DF 2733      CLR	R19
    00E0 2F04      MOV	R16,R20
    00E1 2711      CLR	R17
    00E2 DF8A      RCALL	_LCD_write_char
    00E3 D078      RCALL	pop_gset2
    00E4 9508      RET
_LCD_write_string:
  s                    --> R20
  Y                    --> R10
  X                    --> R22
    00E5 D080      RCALL	push_gset3
    00E6 2EA2      MOV	R10,R18
    00E7 2F60      MOV	R22,R16
    00E8 814E      LDD	R20,Y+6
    00E9 815F      LDD	R21,Y+7
    00EA 2D2A      MOV	R18,R10
    00EB 2F06      MOV	R16,R22
    00EC DFE7      RCALL	_LCD_set_xy
    00ED C008      RJMP	0x00F6
    00EE 01FA      MOVW	R30,R20
    00EF 8120      LDD	R18,Z+0
    00F0 2733      CLR	R19
    00F1 2700      CLR	R16
    00F2 2711      CLR	R17
    00F3 DF79      RCALL	_LCD_write_char
    00F4 5F4F      SUBI	R20,0xFF
    00F5 4F5F      SBCI	R21,0xFF
    00F6 01FA      MOVW	R30,R20
    00F7 8020      LDD	R2,Z+0
    00F8 2022      TST	R2
    00F9 F7A1      BNE	0x00EE
    00FA D063      RCALL	pop_gset3
    00FB 9508      RET
_main:
    00FC 9722      SBIW	R28,2
    00FD EA85      LDI	R24,0xA5
    00FE BF81      OUT	0x31,R24
    00FF B381      IN	R24,0x11
    0100 6F88      ORI	R24,0xF8
    0101 BB81      OUT	0x11,R24
    0102 B384      IN	R24,0x14
    0103 6380      ORI	R24,0x30
    0104 BB84      OUT	0x14,R24
    0105 DF49      RCALL	_LCD_init
    0106 C02C      RJMP	0x0133
    0107 2722      CLR	R18
    0108 2733      CLR	R19
    0109 E001      LDI	R16,1
    010A E010      LDI	R17,0
    010B DF61      RCALL	_LCD_write_char
    010C E88F      LDI	R24,0x8F
    010D E090      LDI	R25,0
    010E 8399      STD	Y+1,R25
    010F 8388      STD	Y+0,R24
    0110 2722      CLR	R18
    0111 E003      LDI	R16,3
    0112 DFD2      RCALL	_LCD_write_string
    0113 E880      LDI	R24,0x80
    0114 E090      LDI	R25,0
    0115 8399      STD	Y+1,R25
    0116 8388      STD	Y+0,R24
    0117 E021      LDI	R18,1
    0118 E001      LDI	R16,1
    0119 DFCB      RCALL	_LCD_write_string
    011A E808      LDI	R16,0x88
    011B E113      LDI	R17,0x13
    011C D032      RCALL	_delay_nms
    011D 2722      CLR	R18
    011E 2733      CLR	R19
    011F E001      LDI	R16,1
    0120 E010      LDI	R17,0
    0121 DF4B      RCALL	_LCD_write_char
    0122 E780      LDI	R24,0x70
    0123 E090      LDI	R25,0
    0124 8399      STD	Y+1,R25
    0125 8388      STD	Y+0,R24
    0126 2722      CLR	R18
    0127 2700      CLR	R16
    0128 DFBC      RCALL	_LCD_write_string
    0129 E680      LDI	R24,0x60
    012A E090      LDI	R25,0
    012B 8399      STD	Y+1,R25
    012C 8388      STD	Y+0,R24
    012D E021      LDI	R18,1
    012E 2700      CLR	R16
    012F DFB5      RCALL	_LCD_write_string
    0130 E808      LDI	R16,0x88
    0131 E113      LDI	R17,0x13
    0132 D01C      RCALL	_delay_nms
    0133 CFD3      RJMP	0x0107
    0134 9622      ADIW	R28,2
    0135 9508      RET
_delay_1us:
    0136 0000      NOP
    0137 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0138 D02F      RCALL	push_gset2
    0139 01B8      MOVW	R22,R16
    013A 2744      CLR	R20
    013B 2755      CLR	R21
    013C C003      RJMP	0x0140
    013D DFF8      RCALL	_delay_1us
    013E 5F4F      SUBI	R20,0xFF
    013F 4F5F      SBCI	R21,0xFF
    0140 1746      CP	R20,R22
    0141 0757      CPC	R21,R23
    0142 F3D0      BCS	0x013D
    0143 D018      RCALL	pop_gset2
    0144 9508      RET
_delay_1ms:
  i                    --> R16
    0145 2700      CLR	R16
    0146 2711      CLR	R17
    0147 C002      RJMP	0x014A
    0148 5F0F      SUBI	R16,0xFF
    0149 4F1F      SBCI	R17,0xFF
    014A 3704      CPI	R16,0x74
    014B E0E4      LDI	R30,4
    014C 071E      CPC	R17,R30
    014D F3D0      BCS	0x0148
    014E 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    014F D018      RCALL	push_gset2
    0150 01B8      MOVW	R22,R16
    0151 2744      CLR	R20
    0152 2755      CLR	R21
    0153 C003      RJMP	0x0157
    0154 DFF0      RCALL	_delay_1ms
    0155 5F4F      SUBI	R20,0xFF
    0156 4F5F      SBCI	R21,0xFF
    0157 1746      CP	R20,R22
    0158 0757      CPC	R21,R23
    0159 F3D0      BCS	0x0154
    015A D001      RCALL	pop_gset2
    015B 9508      RET
pop_gset2:
    015C E0E2      LDI	R30,2
    015D C010      RJMP	pop
pop_gset3:
    015E E0E4      LDI	R30,4
    015F C00E      RJMP	pop
pop_gset4:
    0160 E0E8      LDI	R30,0x8
    0161 C00C      RJMP	pop
push_gset5:
    0162 92FA      ST	R15,-Y
    0163 92EA      ST	R14,-Y
push_gset4:
    0164 92DA      ST	R13,-Y
    0165 92CA      ST	R12,-Y
push_gset3:
    0166 92BA      ST	R11,-Y
    0167 92AA      ST	R10,-Y
push_gset2:
    0168 937A      ST	R23,-Y
    0169 936A      ST	R22,-Y
push_gset1:
    016A 935A      ST	R21,-Y
    016B 934A      ST	R20,-Y
    016C 9508      RET
pop_gset1:
    016D E0E1      LDI	R30,1
pop:
    016E 9149      LD	R20,Y+
    016F 9159      LD	R21,Y+
    0170 FDE0      SBRC	R30,0
    0171 9508      RET
    0172 9169      LD	R22,Y+
    0173 9179      LD	R23,Y+
    0174 FDE1      SBRC	R30,1
    0175 9508      RET
    0176 90A9      LD	R10,Y+
    0177 90B9      LD	R11,Y+
    0178 FDE2      SBRC	R30,2
    0179 9508      RET
    017A 90C9      LD	R12,Y+
    017B 90D9      LD	R13,Y+
    017C FDE3      SBRC	R30,3
    017D 9508      RET
    017E 90E9      LD	R14,Y+
    017F 90F9      LD	R15,Y+
    0180 9508      RET

⌨️ 快捷键说明

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