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

📄 aa.lst

📁 基于AVR单片机的lm1602字符液晶模块显示的C代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
    00C9 2F46      MOV	R20,R22
    00CA 5340      SUBI	R20,0x30
(0130)     LCD16xx_write_char( 1,address );
    00CB 2F24      MOV	R18,R20
    00CC E001      LDI	R16,1
    00CD DFAF      RCALL	_LCD16xx_write_char
(0131) }
    00CE 940E0153  CALL	pop_gset3
    00D0 9508      RET
_LCD16xx_write_string:
  s                    --> R20
  Y                    --> R10
  X                    --> R22
    00D1 940E0171  CALL	push_gset3
    00D3 2EA2      MOV	R10,R18
    00D4 2F60      MOV	R22,R16
    00D5 814E      LDD	R20,Y+6
    00D6 815F      LDD	R21,Y+7
(0132) /*-----------------------------------------------------------------------
(0133) LCD16xx_write_string  : 英文字符串显示函数
(0134) 
(0135) 输入参数:*s      :英文字符串指针;
(0136)           X、Y    : 显示字符串的位置
(0137) 编写日期          :2006年08月30日
(0138) 最后修改日期      :2006年08月30日 		
(0139) -----------------------------------------------------------------------*/
(0140) void LCD16xx_write_string(unsigned char X,unsigned char Y,unsigned char *s)
(0141) {
(0142)     LCD16xx_set_xy( X, Y );
    00D7 2D2A      MOV	R18,R10
    00D8 2F06      MOV	R16,R22
    00D9 DFDA      RCALL	_LCD16xx_set_xy
    00DA C00A      RJMP	0x00E5
(0143)     while (*s) 
(0144)     {
(0145)         delay_nus(5);
    00DB E005      LDI	R16,5
    00DC E010      LDI	R17,0
    00DD 940E00EF  CALL	_delay_nus
(0146)         LCD16xx_write_char( 0, *s );
    00DF 01FA      MOVW	R30,R20
    00E0 8120      LDD	R18,Z+0
    00E1 2700      CLR	R16
    00E2 DF9A      RCALL	_LCD16xx_write_char
(0147)         s++;
    00E3 5F4F      SUBI	R20,0xFF
    00E4 4F5F      SBCI	R21,0xFF
    00E5 01FA      MOVW	R30,R20
    00E6 8020      LDD	R2,Z+0
    00E7 2022      TST	R2
    00E8 F791      BNE	0x00DB
(0148)     }
(0149) }
    00E9 940E0153  CALL	pop_gset3
    00EB 9508      RET
FILE: E:\avr\测试\lcd1\delay.c
(0001) /*--------------------------------------------------*/
(0002) /*             AVR-ARM开发网论坛                    */
(0003) /*           http://www.avrarm.com                  */
(0004) /*            AVR生成代码测试程序                   */
(0005) /*--------------------------------------------------*/
(0006) /*     程序由AVR辅助开发工具V2.1.1自动生成          */
(0007) /*     AVR系统的处理器为:   ATMega16               */
(0008) /*     AVR系统的晶振频率:   1.0000 Mhz             */
(0009) /*--------------------------------------------------*/
(0010) 
(0011) #include <iom16v.h>
(0012) #include "delay.h"
(0013) 
(0014) /*-----------------------------------------------------------------------
(0015) delay_us	   :1us延时函数
(0016) -----------------------------------------------------------------------*/
(0017) void delay_us(void)
(0018) {
(0019)    unsigned char t=2;
_delay_us:
  t                    --> R16
    00EC E002      LDI	R16,2
(0020)    t--;
    00ED 950A      DEC	R16
(0021) }
    00EE 9508      RET
_delay_nus:
  t                    --> R20
    00EF 940E0156  CALL	push_gset1
    00F1 01A8      MOVW	R20,R16
(0022) 
(0023) /*-----------------------------------------------------------------------
(0024) delay_nus          :长延时函数
(0025) 
(0026) 输入参数: t        :延时时间 us
(0027) -----------------------------------------------------------------------*/
(0028) void delay_nus(unsigned int t)
(0029) {
    00F2 C001      RJMP	0x00F4
(0030)     while (t--)
(0031)        delay_us();
    00F3 DFF8      RCALL	_delay_us
    00F4 011A      MOVW	R2,R20
    00F5 5041      SUBI	R20,1
    00F6 4050      SBCI	R21,0
    00F7 2022      TST	R2
    00F8 F7D1      BNE	0x00F3
    00F9 2033      TST	R3
    00FA F7C1      BNE	0x00F3
(0032) }
    00FB 940E0159  CALL	pop_gset1
    00FD 9508      RET
(0033) 
(0034) /*-----------------------------------------------------------------------
(0035) delay_ms	   :1ms延时函数
(0036) -----------------------------------------------------------------------*/
(0037) void delay_ms(void)
(0038) {
(0039)    delay_nus(1000);
_delay_ms:
    00FE EE08      LDI	R16,0xE8
    00FF E013      LDI	R17,3
(0040) }
    0100 CFEE      RJMP	_delay_nus
_delay_nms:
  t                    --> R20
    0101 940E0156  CALL	push_gset1
    0103 01A8      MOVW	R20,R16
(0041) 
(0042) /*-----------------------------------------------------------------------
(0043) delay_nms          :长延时函数
(0044) 
(0045) 输入参数: t        :延时时间 ms
(0046) -----------------------------------------------------------------------*/
(0047) void delay_nms(unsigned int t)
(0048) {
    0104 C001      RJMP	0x0106
(0049)     while (t--)
(0050)        delay_ms();
    0105 DFF8      RCALL	_delay_ms
    0106 011A      MOVW	R2,R20
    0107 5041      SUBI	R20,1
    0108 4050      SBCI	R21,0
    0109 2022      TST	R2
    010A F7D1      BNE	0x0105
    010B 2033      TST	R3
    010C F7C1      BNE	0x0105
(0051) }
    010D 940E0159  CALL	pop_gset1
    010F 9508      RET
_main:
    0110 9722      SBIW	R28,2
FILE: E:\avr\测试\lcd1\main.c
(0001) /*--------------------------------------------------*/
(0002) /*             AVR-ARM开发网论坛                    */
(0003) /*           http://www.avrarm.com                  */
(0004) /*            AVR生成代码测试程序                   */
(0005) /*--------------------------------------------------*/
(0006) /*     程序由AVR辅助开发工具V2.1.1自动生成          */
(0007) /*     AVR系统的处理器为:   ATMega16               */
(0008) /*     AVR系统的晶振频率:   1.0000 Mhz             */
(0009) /*--------------------------------------------------*/
(0010) 
(0011) #include <iom16v.h>
(0012) #include <macros.h>
(0013) #include "lcd.h"
(0014) #include "delay.h"
(0015) 
(0016) //-----------------------------------------------------------
(0017) //主函数
(0018) //-----------------------------------------------------------
(0019) void main(void)
(0020) {   DDRC=0XFF;
    0111 EF8F      LDI	R24,0xFF
    0112 BB84      OUT	0x14,R24
(0021)     PORTC=0X00;
    0113 2422      CLR	R2
    0114 BA25      OUT	0x15,R2
(0022) 
(0023)    LCD16xx_init();
    0115 940E0055  CALL	_LCD16xx_init
(0024)    LCD16xx_clr();                     //显示清屏
    0117 940E007A  CALL	_LCD16xx_clr
(0025)    delay_nms(1); 
    0119 E001      LDI	R16,1
    011A E010      LDI	R17,0
    011B 940E0101  CALL	_delay_nms
(0026)    LCD16xx_write_string(3,0,"Successful");
    011D E689      LDI	R24,0x69
    011E E090      LDI	R25,0
    011F 8399      STD	Y+1,R25
    0120 8388      STD	Y+0,R24
    0121 2722      CLR	R18
    0122 E003      LDI	R16,3
    0123 940E00D1  CALL	_LCD16xx_write_string
(0027)    LCD16xx_write_string(4,1,"LCD TEST");
    0125 E680      LDI	R24,0x60
    0126 E090      LDI	R25,0
    0127 8399      STD	Y+1,R25
    0128 8388      STD	Y+0,R24
    0129 E021      LDI	R18,1
    012A E004      LDI	R16,4
    012B 940E00D1  CALL	_LCD16xx_write_string
(0028)    delay_nms(500);
    012D EF04      LDI	R16,0xF4
    012E E011      LDI	R17,1
    012F 940E0101  CALL	_delay_nms
(0029)    LCD16xx_clr();                     //显示清屏
    0131 940E007A  CALL	_LCD16xx_clr
(0030)    delay_nms(2);
    0133 E002      LDI	R16,2
    0134 E010      LDI	R17,0
    0135 940E0101  CALL	_delay_nms
    0137 C018      RJMP	0x0150
(0031) 
(0032)    while(1)
(0033)    {
(0034)       LCD16xx_write_string(3,0,"Successful");
    0138 E689      LDI	R24,0x69
    0139 E090      LDI	R25,0
    013A 8399      STD	Y+1,R25
    013B 8388      STD	Y+0,R24
    013C 2722      CLR	R18
    013D E003      LDI	R16,3
    013E 940E00D1  CALL	_LCD16xx_write_string
(0035)       LCD16xx_write_string(4,1,"LCD TEST");
    0140 E680      LDI	R24,0x60
    0141 E090      LDI	R25,0
    0142 8399      STD	Y+1,R25
    0143 8388      STD	Y+0,R24
    0144 E021      LDI	R18,1
    0145 E004      LDI	R16,4
    0146 940E00D1  CALL	_LCD16xx_write_string
(0036)       delay_nms(1000);
    0148 EE08      LDI	R16,0xE8
    0149 E013      LDI	R17,3
    014A 940E0101  CALL	_delay_nms
(0037)       //LCD16xx_clr();                     //显示清屏
(0038)       delay_nms(1000);
    014C EE08      LDI	R16,0xE8
    014D E013      LDI	R17,3
    014E 940E0101  CALL	_delay_nms
    0150 CFE7      RJMP	0x0138
(0039)    }
(0040) }
FILE: <library>
    0151 9622      ADIW	R28,2
    0152 9508      RET
pop_gset3:
    0153 E0E4      LDI	R30,4
    0154 940C015A  JMP	pop
push_gset1:
    0156 935A      ST	R21,-Y
    0157 934A      ST	R20,-Y
    0158 9508      RET
pop_gset1:
    0159 E0E1      LDI	R30,1
pop:
    015A 9149      LD	R20,Y+
    015B 9159      LD	R21,Y+
    015C FDE0      SBRC	R30,0
    015D 9508      RET
    015E 9169      LD	R22,Y+
    015F 9179      LD	R23,Y+
    0160 FDE1      SBRC	R30,1
    0161 9508      RET
    0162 90A9      LD	R10,Y+
    0163 90B9      LD	R11,Y+
    0164 FDE2      SBRC	R30,2
    0165 9508      RET
    0166 90C9      LD	R12,Y+
    0167 90D9      LD	R13,Y+
    0168 FDE3      SBRC	R30,3
    0169 9508      RET
    016A 90E9      LD	R14,Y+
    016B 90F9      LD	R15,Y+
    016C 9508      RET
push_gset2:
    016D 937A      ST	R23,-Y
    016E 936A      ST	R22,-Y
    016F 940C0156  JMP	push_gset1
push_gset3:
    0171 92BA      ST	R11,-Y
    0172 92AA      ST	R10,-Y
    0173 940C016D  JMP	push_gset2

⌨️ 快捷键说明

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