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

📄 1602六线接法练习.lst

📁 iccavr下
💻 LST
📖 第 1 页 / 共 2 页
字号:
    00F1 BB8B      OUT	0x1B,R24
(0108)   LCD_DATA_PORT|=command_temp&0xf0; //写高四位
    00F2 01CA      MOVW	R24,R20
    00F3 7F80      ANDI	R24,0xF0
    00F4 7090      ANDI	R25,0
    00F5 B22B      IN	R2,0x1B
    00F6 2433      CLR	R3
    00F7 2A28      OR	R2,R24
    00F8 2A39      OR	R3,R25
    00F9 BA2B      OUT	0x1B,R2
(0109)   LCD_en_write();
    00FA DFBD      RCALL	_LCD_en_write
(0110)   command_temp=command_temp<<4;
    00FB 0F44      LSL	R20
    00FC 1F55      ROL	R21
    00FD 0F44      LSL	R20
    00FE 1F55      ROL	R21
    00FF 0F44      LSL	R20
    0100 1F55      ROL	R21
    0101 0F44      LSL	R20
    0102 1F55      ROL	R21
(0111)   LCD_DATA_PORT&=0x0f;
    0103 B38B      IN	R24,0x1B
    0104 708F      ANDI	R24,0xF
    0105 BB8B      OUT	0x1B,R24
(0112)   LCD_DATA_PORT|=command_temp&0xf0;  //写低四位
    0106 01CA      MOVW	R24,R20
    0107 7F80      ANDI	R24,0xF0
    0108 7090      ANDI	R25,0
    0109 B22B      IN	R2,0x1B
    010A 2433      CLR	R3
    010B 2A28      OR	R2,R24
    010C 2A39      OR	R3,R25
    010D BA2B      OUT	0x1B,R2
(0113)   LCD_en_write();
    010E DFA9      RCALL	_LCD_en_write
(0114)   }
    010F 940E0195  CALL	pop_gset4
    0111 9508      RET
_clear:
  i                    --> R20
    0112 940E01A0  CALL	push_gset1
(0115) }
(0116) /*-------------------------------------------------------------
(0117) function: clear the lcd1602
(0118) ---------------------------------------------------------------*/
(0119) void clear(void)
(0120) {
(0121)    unsigned char i;
(0122)    LCD_set_xy(0,0);
    0114 2722      CLR	R18
    0115 2700      CLR	R16
    0116 DF8E      RCALL	_LCD_set_xy
(0123)    for(i=0;i<16;i++)
    0117 2744      CLR	R20
    0118 C006      RJMP	0x011F
(0124)    		LCD_write_char(0,' ');
    0119 E220      LDI	R18,0x20
    011A E030      LDI	R19,0
    011B 2700      CLR	R16
    011C 2711      CLR	R17
    011D DFA1      RCALL	_LCD_write_char
    011E 9543      INC	R20
    011F 3140      CPI	R20,0x10
    0120 F3C0      BCS	0x0119
(0125)    LCD_set_xy(0,1);
    0121 E021      LDI	R18,1
    0122 2700      CLR	R16
    0123 DF81      RCALL	_LCD_set_xy
(0126)    for(i=0;i<16;i++)
    0124 2744      CLR	R20
    0125 C006      RJMP	0x012C
(0127)    		LCD_write_char(0,' ');
    0126 E220      LDI	R18,0x20
    0127 E030      LDI	R19,0
    0128 2700      CLR	R16
    0129 2711      CLR	R17
    012A DF94      RCALL	_LCD_write_char
    012B 9543      INC	R20
    012C 3140      CPI	R20,0x10
    012D F3C0      BCS	0x0126
    012E 940E01A3  CALL	pop_gset1
    0130 9508      RET
_main:
    0131 9722      SBIW	R28,2
FILE: D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #include "1602.h"
(0004) 
(0005) 
(0006) void main(void)
(0007) {
(0008)      LCD_init();                     //initialize lcd1602
    0132 DF38      RCALL	_LCD_init
    0133 C02E      RJMP	0x0162
(0009)      while(1)
(0010)        {
(0011) 		 clear();                   //clear lcd1602
    0134 DFDD      RCALL	_clear
(0012) 		 delay_nms(10);
    0135 E00A      LDI	R16,0xA
    0136 E010      LDI	R17,0
    0137 940E0180  CALL	_delay_nms
(0013)          LCD_write_string(0,0," ATmega 16 BOARD");    //write the string on the first 
    0139 E88E      LDI	R24,0x8E
    013A E090      LDI	R25,0
    013B 8399      STD	Y+1,R25
    013C 8388      STD	Y+0,R24
    013D 2722      CLR	R18
    013E 2700      CLR	R16
    013F DF4C      RCALL	_LCD_write_string
(0014) 		 									  //line at the first address
(0015)          LCD_write_string(1,1,"  dushibiao ");
    0140 E881      LDI	R24,0x81
    0141 E090      LDI	R25,0
    0142 8399      STD	Y+1,R25
    0143 8388      STD	Y+0,R24
    0144 E021      LDI	R18,1
    0145 E001      LDI	R16,1
    0146 DF45      RCALL	_LCD_write_string
(0016)          delay_nms(5000);
    0147 E808      LDI	R16,0x88
    0148 E113      LDI	R17,0x13
    0149 940E0180  CALL	_delay_nms
(0017) 		 clear();
    014B DFC6      RCALL	_clear
(0018) 		 delay_nms(10);
    014C E00A      LDI	R16,0xA
    014D E010      LDI	R17,0
    014E 940E0180  CALL	_delay_nms
(0019)          LCD_write_string(0,0,"Stduy follow me");
    0150 E781      LDI	R24,0x71
    0151 E090      LDI	R25,0
    0152 8399      STD	Y+1,R25
    0153 8388      STD	Y+0,R24
    0154 2722      CLR	R18
    0155 2700      CLR	R16
    0156 DF35      RCALL	_LCD_write_string
(0020)          LCD_write_string(0,1,"You will secceed");
    0157 E680      LDI	R24,0x60
    0158 E090      LDI	R25,0
    0159 8399      STD	Y+1,R25
    015A 8388      STD	Y+0,R24
    015B E021      LDI	R18,1
    015C 2700      CLR	R16
    015D DF2E      RCALL	_LCD_write_string
(0021)          delay_nms(5000);
    015E E808      LDI	R16,0x88
    015F E113      LDI	R17,0x13
    0160 940E0180  CALL	_delay_nms
    0162 CFD1      RJMP	0x0134
    0163 9622      ADIW	R28,2
    0164 9508      RET
FILE: D:\M16开发板实验教程\icc-avr\lcd1602test\delay.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) 
(0004)  /*-----------------------------------------------------------------------
(0005) 延时函数
(0006) 系统时钟:8M
(0007) -----------------------------------------------------------------------*/
(0008) void delay_1us(void)                 //1us延时函数
(0009)   {
(0010)    asm("nop");
_delay_1us:
    0165 0000      NOP
    0166 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0167 940E019E  CALL	push_gset2
    0169 01B8      MOVW	R22,R16
(0011)   }
(0012) 
(0013) void delay_nus(unsigned int n)       //N us延时函数
(0014)   {
(0015)    unsigned int i=0;
    016A 2744      CLR	R20
    016B 2755      CLR	R21
(0016)    for (i=0;i<n;i++)
    016C C003      RJMP	0x0170
(0017)    delay_1us();
    016D DFF7      RCALL	_delay_1us
    016E 5F4F      SUBI	R20,0xFF
    016F 4F5F      SBCI	R21,0xFF
    0170 1746      CP	R20,R22
    0171 0757      CPC	R21,R23
    0172 F3D0      BCS	0x016D
    0173 940E018F  CALL	pop_gset2
    0175 9508      RET
(0018)   }
(0019)   
(0020) void delay_1ms(void)                 //1ms延时函数
(0021)   {
(0022)    unsigned int i;
(0023)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    0176 2700      CLR	R16
    0177 2711      CLR	R17
    0178 C002      RJMP	0x017B
    0179 5F0F      SUBI	R16,0xFF
    017A 4F1F      SBCI	R17,0xFF
    017B 3704      CPI	R16,0x74
    017C E0E4      LDI	R30,4
    017D 071E      CPC	R17,R30
    017E F3D0      BCS	0x0179
    017F 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    0180 940E019E  CALL	push_gset2
    0182 01B8      MOVW	R22,R16
(0024)   }
(0025)   
(0026) void delay_nms(unsigned int n)       //N ms延时函数
(0027)   {
(0028)    unsigned int i=0;
    0183 2744      CLR	R20
    0184 2755      CLR	R21
(0029)    for (i=0;i<n;i++)
    0185 C003      RJMP	0x0189
(0030)    delay_1ms();
FILE: <library>
    0186 DFEF      RCALL	_delay_1ms
    0187 5F4F      SUBI	R20,0xFF
    0188 4F5F      SBCI	R21,0xFF
    0189 1746      CP	R20,R22
    018A 0757      CPC	R21,R23
    018B F3D0      BCS	0x0186
    018C 940E018F  CALL	pop_gset2
    018E 9508      RET
pop_gset2:
    018F E0E2      LDI	R30,2
    0190 940C01A4  JMP	pop
pop_gset3:
    0192 E0E4      LDI	R30,4
    0193 940C01A4  JMP	pop
pop_gset4:
    0195 E0E8      LDI	R30,0x8
    0196 940C01A4  JMP	pop
push_gset5:
    0198 92FA      ST	R15,-Y
    0199 92EA      ST	R14,-Y
push_gset4:
    019A 92DA      ST	R13,-Y
    019B 92CA      ST	R12,-Y
push_gset3:
    019C 92BA      ST	R11,-Y
    019D 92AA      ST	R10,-Y
push_gset2:
    019E 937A      ST	R23,-Y
    019F 936A      ST	R22,-Y
push_gset1:
    01A0 935A      ST	R21,-Y
    01A1 934A      ST	R20,-Y
    01A2 9508      RET
pop_gset1:
    01A3 E0E1      LDI	R30,1
pop:
    01A4 9149      LD	R20,Y+
    01A5 9159      LD	R21,Y+
    01A6 FDE0      SBRC	R30,0
    01A7 9508      RET
    01A8 9169      LD	R22,Y+
    01A9 9179      LD	R23,Y+
    01AA FDE1      SBRC	R30,1
    01AB 9508      RET
    01AC 90A9      LD	R10,Y+
    01AD 90B9      LD	R11,Y+
    01AE FDE2      SBRC	R30,2
    01AF 9508      RET
    01B0 90C9      LD	R12,Y+
    01B1 90D9      LD	R13,Y+
    01B2 FDE3      SBRC	R30,3
    01B3 9508      RET
    01B4 90E9      LD	R14,Y+
    01B5 90F9      LD	R15,Y+
    01B6 9508      RET

⌨️ 快捷键说明

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