📄 test.lst
字号:
__text_start:
__start:
0045 E5CF LDI R28,0x5F
0046 E0D4 LDI R29,4
0047 BFCD OUT 0x3D,R28
0048 BFDE OUT 0x3E,R29
0049 51C0 SUBI R28,0x10
004A 40D0 SBCI R29,0
004B EA0A LDI R16,0xAA
004C 8308 STD Y+0,R16
004D 2400 CLR R0
004E E9E5 LDI R30,0x95
004F E0F0 LDI R31,0
0050 E010 LDI R17,0
0051 39E5 CPI R30,0x95
0052 07F1 CPC R31,R17
0053 F011 BEQ 0x0056
0054 9201 ST R0,Z+
0055 CFFB RJMP 0x0051
0056 8300 STD Z+0,R16
0057 E5E4 LDI R30,0x54
0058 E0F0 LDI R31,0
0059 E6A0 LDI R26,0x60
005A E0B0 LDI R27,0
005B E010 LDI R17,0
005C 38E9 CPI R30,0x89
005D 07F1 CPC R31,R17
005E F021 BEQ 0x0063
005F 95C8 LPM
0060 9631 ADIW R30,1
0061 920D ST R0,X+
0062 CFF9 RJMP 0x005C
0063 940E0066 CALL _main
_exit:
0065 CFFF RJMP _exit
_main:
0066 9722 SBIW R28,2
FILE: G:\avr16\avr16-1020-2\main.c
(0001) /*--------------------------------------------------*/
(0002) /* AVR-ARM开发网论坛 */
(0003) /* http://www.avrarm.com */
(0004) /* AVR生成代码测试程序 */
(0005) /*--------------------------------------------------*/
(0006) /* 程序由AVR辅助开发工具V2.0.1自动生成 */
(0007) /* AVR系统的处理器为: ATMega16 */
(0008) /* AVR系统的晶振频率: 8.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) {
(0021)
(0022) LCD16xx_init();
0067 940E00E7 CALL _LCD16xx_init
(0023) LCD16xx_clr(); //显示清屏
0069 940E0103 CALL _LCD16xx_clr
(0024) delay_nms(10);
006B E00A LDI R16,0xA
006C E010 LDI R17,0
006D 940E0183 CALL _delay_nms
(0025) LCD16xx_write_string(3,0,"Welcome to");
006F E88A LDI R24,0x8A
0070 E090 LDI R25,0
0071 8399 STD Y+1,R25
0072 8388 STD Y+0,R24
0073 2722 CLR R18
0074 E003 LDI R16,3
0075 940E0156 CALL _LCD16xx_write_string
(0026) LCD16xx_write_string(1,1,"www.avrarm.com!");
0077 E78A LDI R24,0x7A
0078 E090 LDI R25,0
0079 8399 STD Y+1,R25
007A 8388 STD Y+0,R24
007B E021 LDI R18,1
007C E001 LDI R16,1
007D 940E0156 CALL _LCD16xx_write_string
(0027) LCD16xx_write_string(4,2,"By Peter");
007F E781 LDI R24,0x71
0080 E090 LDI R25,0
0081 8399 STD Y+1,R25
0082 8388 STD Y+0,R24
0083 E022 LDI R18,2
0084 E004 LDI R16,4
0085 940E0156 CALL _LCD16xx_write_string
(0028) LCD16xx_write_string(3,3,"2006.09.06");
0087 E686 LDI R24,0x66
0088 E090 LDI R25,0
0089 8399 STD Y+1,R25
008A 8388 STD Y+0,R24
008B E023 LDI R18,3
008C E003 LDI R16,3
008D 940E0156 CALL _LCD16xx_write_string
(0029) delay_nms(700);
008F EB0C LDI R16,0xBC
0090 E012 LDI R17,2
0091 940E0183 CALL _delay_nms
(0030) LCD16xx_clr(); //显示清屏
0093 940E0103 CALL _LCD16xx_clr
(0031) delay_nms(1);
0095 E001 LDI R16,1
0096 E010 LDI R17,0
0097 940E0183 CALL _delay_nms
0099 C04A RJMP 0x00E4
(0032)
(0033) while(2)
(0034) { LCD16xx_write_string(0,0,"PETER");
009A E680 LDI R24,0x60
009B E090 LDI R25,0
009C 8399 STD Y+1,R25
009D 8388 STD Y+0,R24
009E 2722 CLR R18
009F 2700 CLR R16
00A0 940E0156 CALL _LCD16xx_write_string
(0035) LCD16xx_write_string(4,1,"PETER");
00A2 E680 LDI R24,0x60
00A3 E090 LDI R25,0
00A4 8399 STD Y+1,R25
00A5 8388 STD Y+0,R24
00A6 E021 LDI R18,1
00A7 E004 LDI R16,4
00A8 940E0156 CALL _LCD16xx_write_string
(0036) LCD16xx_write_string(8,2,"PETER");
00AA E680 LDI R24,0x60
00AB E090 LDI R25,0
00AC 8399 STD Y+1,R25
00AD 8388 STD Y+0,R24
00AE E022 LDI R18,2
00AF E008 LDI R16,0x8
00B0 940E0156 CALL _LCD16xx_write_string
(0037) LCD16xx_write_string(12,3,"PETER");
00B2 E680 LDI R24,0x60
00B3 E090 LDI R25,0
00B4 8399 STD Y+1,R25
00B5 8388 STD Y+0,R24
00B6 E023 LDI R18,3
00B7 E00C LDI R16,0xC
00B8 940E0156 CALL _LCD16xx_write_string
(0038) LCD16xx_write_string(0,3,"PETER");
00BA E680 LDI R24,0x60
00BB E090 LDI R25,0
00BC 8399 STD Y+1,R25
00BD 8388 STD Y+0,R24
00BE E023 LDI R18,3
00BF 2700 CLR R16
00C0 940E0156 CALL _LCD16xx_write_string
(0039) LCD16xx_write_string(4,2,"PETER");
00C2 E680 LDI R24,0x60
00C3 E090 LDI R25,0
00C4 8399 STD Y+1,R25
00C5 8388 STD Y+0,R24
00C6 E022 LDI R18,2
00C7 E004 LDI R16,4
00C8 940E0156 CALL _LCD16xx_write_string
(0040) LCD16xx_write_string(8,1,"PETER");
00CA E680 LDI R24,0x60
00CB E090 LDI R25,0
00CC 8399 STD Y+1,R25
00CD 8388 STD Y+0,R24
00CE E021 LDI R18,1
00CF E008 LDI R16,0x8
00D0 940E0156 CALL _LCD16xx_write_string
(0041) LCD16xx_write_string(12,0,"PETER");
00D2 E680 LDI R24,0x60
00D3 E090 LDI R25,0
00D4 8399 STD Y+1,R25
00D5 8388 STD Y+0,R24
00D6 2722 CLR R18
00D7 E00C LDI R16,0xC
00D8 940E0156 CALL _LCD16xx_write_string
(0042) delay_nms(1500);
00DA ED0C LDI R16,0xDC
00DB E015 LDI R17,5
00DC 940E0183 CALL _delay_nms
(0043) LCD16xx_clr(); //显示清屏
00DE 940E0103 CALL _LCD16xx_clr
(0044) delay_nms(1000);
00E0 EE08 LDI R16,0xE8
00E1 E013 LDI R17,3
00E2 940E0183 CALL _delay_nms
00E4 CFB5 RJMP 0x009A
00E5 9622 ADIW R28,2
00E6 9508 RET
FILE: G:\avr16\avr16-1020-2\lcd.c
(0001) /*--------------------------------------------------*/
(0002) /* AVR-ARM开发网论坛 */
(0003) /* http://www.avrarm.com */
(0004) /* AVR生成代码测试程序 */
(0005) /*--------------------------------------------------*/
(0006) /* 程序由AVR辅助开发工具V2.0.1自动生成 */
(0007) /* AVR系统的处理器为: ATMega16 */
(0008) /* AVR系统的晶振频率: 8.0000 Mhz */
(0009) /*--------------------------------------------------*/
(0010)
(0011) #include <iom16v.h>
(0012) #include <macros.h>
(0013) #include "lcd.h"
(0014) #include "delay.h"
(0015)
(0016) /**********************************************************
(0017) 光标命令
(0018) LCD16xx_write_char(1,0x0e); //光标开
(0019) LCD16xx_write_char(1,0x0d); //光标所在字符闪烁
(0020) LCD16xx_write_char(1,0x0c); //光标关
(0021) **********************************************************/
(0022) /**********************************************************
(0023) TC16xxB LCD DISPLAY
(0024) 建立时间:2006年08月30日
(0025) 修改日期:2006年08月30日
(0026) LCD_write函数功能:当command=0时,向LCD写入数据,否则向LCD写
(0027) 入命令
(0028) LCD第一行显示寄存器地址:0x80-0x8F
(0029) LCD第二行显示寄存器地址:0xC0-0xCF
(0030) **********************************************************/
(0031) void LCD16xx_init(void)
(0032) {
(0033) LCD_DATA_DDR |= LCD_DATA;
_LCD16xx_init:
00E7 B384 IN R24,0x14
00E8 6F8F ORI R24,0xFF
00E9 BB84 OUT 0x14,R24
(0034) LCD_EN_DDR |= LCD_EN;
00EA 9A8F SBI 0x11,7
(0035) LCD_RS_DDR |= LCD_RS;
00EB 9A8E SBI 0x11,6
(0036)
(0037)
(0038) LCD_DATA_PORT = 0xff;
00EC EF8F LDI R24,0xFF
00ED BB85 OUT 0x15,R24
(0039) LCD16xx_en_write();
00EE D00D RCALL _LCD16xx_en_write
(0040)
(0041) LCD16xx_write_char(0,0x38); //4bit test
00EF E328 LDI R18,0x38
00F0 2700 CLR R16
00F1 D015 RCALL _LCD16xx_write_char
(0042) LCD16xx_write_char(0,0x0c); //显示开
00F2 E02C LDI R18,0xC
00F3 2700 CLR R16
00F4 D012 RCALL _LCD16xx_write_char
(0043) LCD16xx_write_char(0,0x01); //显示清屏
00F5 E021 LDI R18,1
00F6 2700 CLR R16
00F7 D00F RCALL _LCD16xx_write_char
(0044) LCD16xx_write_char(0,0x06); //显示光标移动设置
00F8 E026 LDI R18,6
00F9 2700 CLR R16
00FA D00C RCALL _LCD16xx_write_char
00FB 9508 RET
(0045) }
(0046)
(0047) void LCD16xx_en_write(void) //EN端产生一个高电平脉冲,写LCD
(0048) {
(0049) LCD_EN_PORT |= LCD_EN;
_LCD16xx_en_write:
00FC 9A97 SBI 0x12,7
(0050) delay_nus(4); //如果晶振频率太高,则可相应提高延时
00FD E004 LDI R16,4
00FE E010 LDI R17,0
00FF 940E0170 CALL _delay_nus
(0051) LCD_EN_PORT &= ~LCD_EN;
0101 9897 CBI 0x12,7
0102 9508 RET
(0052) }
(0053)
(0054) /************************************************************************/
(0055) /* LCD16xx清屏 */
(0056) /************************************************************************/
(0057) void LCD16xx_clr(void)
(0058) {
(0059) LCD16xx_write_char(1,0x01);
_LCD16xx_clr:
0103 E021 LDI R18,1
0104 E001 LDI R16,1
0105 D001 RCALL _LCD16xx_write_char
0106 9508 RET
_LCD16xx_write_char:
data_temp --> R20
data --> R10
command --> R22
0107 940E0199 CALL push_gset3
0109 2EA2 MOV R10,R18
010A 2F60 MOV R22,R16
(0060) }
(0061)
(0062) /*-----------------------------------------------------------------------
(0063) LCD16xx_write_char : 英文字符串显示函数
(0064)
(0065) 输入参数:*s :英文字符串指针;
(0066) X、Y : 显示字符串的位置,X:0-15,Y:0-1
(0067) LCD第一行显示寄存器地址:0x80-0x8F
(0068) LCD第一行显示寄存器地址:0xC0-0xCF
(0069) LCD第三行显示寄存器地址:0x90-0x9F
(0070) LCD第四行显示寄存器地址:0xD0-0xDF
(0071) 编写日期 :2006年08月30日
(0072) 最后修改日期 :2006年08月30日
(0073) -----------------------------------------------------------------------*/
(0074) void LCD16xx_write_char(unsigned char command,unsigned char data)
(0075) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -