📄 aa.lst
字号:
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 + -