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

📄 12864.lst

📁 iccavr12864液晶程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    0059 E5CF      LDI	R28,0x5F
    005A E0D4      LDI	R29,4
    005B BFCD      OUT	0x3D,R28
    005C BFDE      OUT	0x3E,R29
    005D 51C0      SUBI	R28,0x10
    005E 40D0      SBCI	R29,0
    005F EA0A      LDI	R16,0xAA
    0060 8308      STD	Y+0,R16
    0061 2400      CLR	R0
    0062 EBED      LDI	R30,0xBD
    0063 E0F0      LDI	R31,0
    0064 E010      LDI	R17,0
    0065 3CED      CPI	R30,0xCD
    0066 07F1      CPC	R31,R17
    0067 F011      BEQ	0x006A
    0068 9201      ST	R0,Z+
    0069 CFFB      RJMP	0x0065
    006A 8300      STD	Z+0,R16
    006B E5E4      LDI	R30,0x54
    006C E0F0      LDI	R31,0
    006D E6A0      LDI	R26,0x60
    006E E0B0      LDI	R27,0
    006F E010      LDI	R17,0
    0070 3BE1      CPI	R30,0xB1
    0071 07F1      CPC	R31,R17
    0072 F021      BEQ	0x0077
    0073 95C8      LPM
    0074 9631      ADIW	R30,1
    0075 920D      ST	R0,X+
    0076 CFF9      RJMP	0x0070
    0077 940E007A  CALL	_main
_exit:
    0079 CFFF      RJMP	_exit
_main:
    007A 9722      SBIW	R28,2
FILE: D:\M16开发板实验教程\icc-avr\12864\12864_LCD_TEST.c
(0001) #include "iom16v.h"
(0002) #include "macros.h"
(0003) #include "12864.h"
(0004) 
(0005) //  配置熔丝参数 @8MHz 
(0006) 
(0007) extern void delay_nus(unsigned int n);
(0008) extern void delay_nms(unsigned int n);
(0009) 
(0010) char *str1,*str2,*str3,*str4,*str5,*str6,*str7,*str8;
(0011) 
(0012) void portinitial(void);
(0013) void main(void)
(0014)   {
(0015)   
(0016)   str1="AVR Mega16 BOARD";
    007B EA8C      LDI	R24,0xAC
    007C E090      LDI	R25,0
    007D 939000CC  STS	str1+1,R25
    007F 938000CB  STS	str1,R24
(0017)   str2="  学习开发板 ";
    0081 E98E      LDI	R24,0x9E
    0082 E090      LDI	R25,0
    0083 939000CA  STS	str2+1,R25
    0085 938000C9  STS	str2,R24
(0018)   str3="   dushibiao  ";
    0087 E88F      LDI	R24,0x8F
    0088 E090      LDI	R25,0
    0089 939000C8  STS	str3+1,R25
    008B 938000C7  STS	str3,R24
(0019)   str4="2007年11月制作";
    008D E880      LDI	R24,0x80
    008E E090      LDI	R25,0
    008F 939000C6  STS	str4+1,R25
    0091 938000C5  STS	str4,R24
(0020)   str6="12864 液晶试验";
    0093 E781      LDI	R24,0x71
    0094 E090      LDI	R25,0
    0095 939000C2  STS	str6+1,R25
    0097 938000C1  STS	str6,R24
(0021)   str7="并行总线接法练习";
    0099 E680      LDI	R24,0x60
    009A E090      LDI	R25,0
    009B 939000C0  STS	str7+1,R25
    009D 938000BF  STS	str7,R24
(0022)   portinitial();
    009F D06E      RCALL	_portinitial
(0023)    delay_nms(10);
    00A0 E00A      LDI	R16,0xA
    00A1 E010      LDI	R17,0
    00A2 940E01C1  CALL	_delay_nms
(0024)      LCD_init();
    00A4 940E0117  CALL	_LCD_init
    00A6 C064      RJMP	0x010B
(0025) 	  while(1){
(0026) 	LCD_write_char( 0x01, 0 );   //清屏
    00A7 2722      CLR	R18
    00A8 2733      CLR	R19
    00A9 E001      LDI	R16,1
    00AA E010      LDI	R17,0
    00AB 940E013C  CALL	_LCD_write_char
(0027) 	LCD_write_string(2,0,str1);
    00AD 902000CB  LDS	R2,str1
    00AF 903000CC  LDS	R3,str1+1
    00B1 8239      STD	Y+1,R3
    00B2 8228      STD	Y+0,R2
    00B3 2722      CLR	R18
    00B4 E002      LDI	R16,2
    00B5 940E018A  CALL	_LCD_write_string
(0028) 	LCD_write_string(0,1,str2);
    00B7 902000C9  LDS	R2,str2
    00B9 903000CA  LDS	R3,str2+1
    00BB 8239      STD	Y+1,R3
    00BC 8228      STD	Y+0,R2
    00BD E021      LDI	R18,1
    00BE 2700      CLR	R16
    00BF 940E018A  CALL	_LCD_write_string
(0029) 	LCD_write_string(0,2,str3);
    00C1 902000C7  LDS	R2,str3
    00C3 903000C8  LDS	R3,str3+1
    00C5 8239      STD	Y+1,R3
    00C6 8228      STD	Y+0,R2
    00C7 E022      LDI	R18,2
    00C8 2700      CLR	R16
    00C9 940E018A  CALL	_LCD_write_string
(0030) 	LCD_write_string(0,3,str4);
    00CB 902000C5  LDS	R2,str4
    00CD 903000C6  LDS	R3,str4+1
    00CF 8239      STD	Y+1,R3
    00D0 8228      STD	Y+0,R2
    00D1 E023      LDI	R18,3
    00D2 2700      CLR	R16
    00D3 940E018A  CALL	_LCD_write_string
(0031) 	delay_nms(4000);
    00D5 EA00      LDI	R16,0xA0
    00D6 E01F      LDI	R17,0xF
    00D7 940E01C1  CALL	_delay_nms
(0032) 	LCD_write_char( 0x01, 0 );   //清屏
    00D9 2722      CLR	R18
    00DA 2733      CLR	R19
    00DB E001      LDI	R16,1
    00DC E010      LDI	R17,0
    00DD 940E013C  CALL	_LCD_write_char
(0033) 	LCD_write_string(2,0,str5);
    00DF 902000C3  LDS	R2,str5
    00E1 903000C4  LDS	R3,str5+1
    00E3 8239      STD	Y+1,R3
    00E4 8228      STD	Y+0,R2
    00E5 2722      CLR	R18
    00E6 E002      LDI	R16,2
    00E7 940E018A  CALL	_LCD_write_string
(0034) 	LCD_write_string(0,1,str6);
    00E9 902000C1  LDS	R2,str6
    00EB 903000C2  LDS	R3,str6+1
    00ED 8239      STD	Y+1,R3
    00EE 8228      STD	Y+0,R2
    00EF E021      LDI	R18,1
    00F0 2700      CLR	R16
    00F1 940E018A  CALL	_LCD_write_string
(0035) 	LCD_write_string(0,2,str7);
    00F3 902000BF  LDS	R2,str7
    00F5 903000C0  LDS	R3,str7+1
    00F7 8239      STD	Y+1,R3
    00F8 8228      STD	Y+0,R2
    00F9 E022      LDI	R18,2
    00FA 2700      CLR	R16
    00FB 940E018A  CALL	_LCD_write_string
(0036) 	LCD_write_string(0,3,str8);
    00FD 902000BD  LDS	R2,str8
    00FF 903000BE  LDS	R3,str8+1
    0101 8239      STD	Y+1,R3
    0102 8228      STD	Y+0,R2
    0103 E023      LDI	R18,3
    0104 2700      CLR	R16
    0105 940E018A  CALL	_LCD_write_string
(0037) 	delay_nms(4000);
    0107 EA00      LDI	R16,0xA0
    0108 E01F      LDI	R17,0xF
    0109 940E01C1  CALL	_delay_nms
    010B CF9B      RJMP	0x00A7
    010C 9622      ADIW	R28,2
    010D 9508      RET
(0038) 	}	
(0039) }
(0040) 
(0041) void portinitial(void)
(0042) {
(0043) 	DDRA=0XFF;
_portinitial:
    010E EF8F      LDI	R24,0xFF
    010F BB8A      OUT	0x1A,R24
(0044) 	PORTA=0X00;
    0110 2422      CLR	R2
    0111 BA2B      OUT	0x1B,R2
(0045) 	DDRB=0XFF;
    0112 BB87      OUT	0x17,R24
(0046) 	PORTB=0XFF;
    0113 BB88      OUT	0x18,R24
(0047) 	LCD_RST_PORT |= LCD_RST;  	 
    0114 9AC3      SBI	0x18,3
(0048) 	LCD_PSB_PORT |= LCD_PSB;
    0115 9AC2      SBI	0x18,2
    0116 9508      RET
FILE: D:\M16开发板实验教程\icc-avr\12864\12864.c
(0001) #include "iom16v.h"
(0002) #include "macros.h"
(0003) #include "12864.h"
(0004) 
(0005) 
(0006) 
(0007) 
(0008) /**********************************************************
(0009) RT12864M LCD DISPLAY
(0010) 建立时间:2005年2月1号
(0011) 修改日期:2005年2月1号
(0012) 
(0013) **********************************************************/
(0014) extern void delay_nus(unsigned int n);
(0015) extern void delay_nms(unsigned int n);
(0016) 
(0017) 
(0018) void LCD_init(void)
(0019)   { 
(0020)    	LCD_EN_PORT &= ~LCD_EN; //EN=0
_LCD_init:
    0117 98C1      CBI	0x18,1
(0021)     delay_nms(1);
    0118 E001      LDI	R16,1
    0119 E010      LDI	R17,0
    011A D0A6      RCALL	_delay_nms
(0022) 	LCD_write_char(0x34,0);
    011B 2722      CLR	R18
    011C 2733      CLR	R19
    011D E304      LDI	R16,0x34
    011E E010      LDI	R17,0
    011F D01C      RCALL	_LCD_write_char
(0023) 	delay_nms(8);
    0120 E008      LDI	R16,0x8
    0121 E010      LDI	R17,0
    0122 D09E      RCALL	_delay_nms
(0024) 	LCD_write_char(0x30,0);
    0123 2722      CLR	R18
    0124 2733      CLR	R19
    0125 E300      LDI	R16,0x30
    0126 E010      LDI	R17,0
    0127 D014      RCALL	_LCD_write_char
(0025) 	delay_nms(8);
    0128 E008      LDI	R16,0x8
    0129 E010      LDI	R17,0
    012A D096      RCALL	_delay_nms
(0026)     LCD_write_char(0x0C,0);      //显示清屏
    012B 2722      CLR	R18
    012C 2733      CLR	R19
    012D E00C      LDI	R16,0xC
    012E E010      LDI	R17,0
    012F D00C      RCALL	_LCD_write_char
(0027) 	delay_nms(8);
    0130 E008      LDI	R16,0x8
    0131 E010      LDI	R17,0
    0132 D08E      RCALL	_delay_nms
(0028)     LCD_write_char(0x01,0);      //显示开
    0133 2722      CLR	R18
    0134 2733      CLR	R19
    0135 E001      LDI	R16,1
    0136 E010      LDI	R17,0
    0137 D004      RCALL	_LCD_write_char
(0029) 	delay_nms(8);
    0138 E008      LDI	R16,0x8
    0139 E010      LDI	R17,0
    013A D086      RCALL	_delay_nms
    013B 9508      RET
_LCD_write_char:
  data_temp            --> R22
  command_temp         --> R20
  data                 --> R12
  command              --> R10
    013C 940E01DB  CALL	push_gset4
    013E 0169      MOVW	R12,R18
    013F 0158      MOVW	R10,R16
(0030)   
(0031)   }
(0032) 
(0033) 
(0034) 
(0035) /*-----------------------------------------------------------------------
(0036) LCD_write_char    : 中英文字符串显示函数
(0037) LCD_write函数功能:当command=0时,向LCD写入数据,否则向LCD写
(0038)                    入命令
(0039) 输入参数:*s      :中英文字符串指针;
(0040)           X、Y    : 显示字符串的位置,X:0-15,Y:0-1
(0041)                     LCD第一行显示寄存器地址:0X80-0X87
(0042) 					LCD第二行显示寄存器地址:0X90-0X9F
(0043) 					LCD第三行显示寄存器地址:0X88-0X8F
(0044)                     LCD第四行显示寄存器地址:0X98-0X9F
(0045) -----------------------------------------------------------------------*/
(0046) void LCD_write_char(unsigned command,unsigned  data)
(0047)   {
(0048)    unsigned  command_temp;
(0049) 	unsigned  data_temp;        
(0050)     command_temp = command;
    0140 01A5      MOVW	R20,R10
(0051)     data_temp = data;
    0141 01B6      MOVW	R22,R12
(0052)      if (command == 0)
    0142 3040      CPI	R20,0

⌨️ 快捷键说明

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