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

📄 12864r.lst

📁 avr驱动显示屏LCD12864R(7920)
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    0047 E5CF      LDI	R28,0x5F
    0048 E0D4      LDI	R29,4
    0049 BFCD      OUT	0x3D,R28
    004A BFDE      OUT	0x3E,R29
    004B 51C0      SUBI	R28,0x10
    004C 40D0      SBCI	R29,0
    004D EA0A      LDI	R16,0xAA
    004E 8308      STD	Y+0,R16
    004F 2400      CLR	R0
    0050 E6E0      LDI	R30,0x60
    0051 E0F0      LDI	R31,0
    0052 E010      LDI	R17,0
    0053 36E0      CPI	R30,0x60
    0054 07F1      CPC	R31,R17
    0055 F011      BEQ	0x0058
    0056 9201      ST	R0,Z+
    0057 CFFB      RJMP	0x0053
    0058 8300      STD	Z+0,R16
    0059 E8ED      LDI	R30,0x8D
    005A E0F0      LDI	R31,0
    005B E6A0      LDI	R26,0x60
    005C E0B0      LDI	R27,0
    005D E010      LDI	R17,0
    005E 38ED      CPI	R30,0x8D
    005F 07F1      CPC	R31,R17
    0060 F021      BEQ	0x0065
    0061 95C8      LPM
    0062 9631      ADIW	R30,1
    0063 920D      ST	R0,X+
    0064 CFF9      RJMP	0x005E
    0065 940E0068  CALL	_main
_exit:
    0067 CFFF      RJMP	_exit
_main:
  i                    --> R20
    0068 9721      SBIW	R28,1
FILE: E:\YM200\DEMO\LCD12864R(7920)\7920_16.c
(0001) //12864液晶(ST7920驱动)的3线串行驱动 MCU=ATMega16(L)
(0002) 
(0003) /***********************************************************************
(0004) 工    程:ST7920驱动的12864液晶的3线串行驱动模式
(0005) 引脚定义:
(0006) 	RS(CS)=====>PB0
(0007)     	RW(SID)====>PB1
(0008)         EN(SCLK)===>PB2
(0009)     	PSB为硬件控制,接高电平为8位或4位的并行模式,接低电平为串行模式
(0010) ************************************************************************/
(0011) #include <iom16v.h>
(0012) #include <macros.h>
(0013) 
(0014) #define uchar unsigned char
(0015) #define uint unsigned int 
(0016) #define nop()  NOP()
(0017) #define xtal 8
(0018) 
(0019) #define Set_CS() DDRB |= (1<<0);PORTB |= (1<<0)
(0020) #define Set_SID() DDRB |= (1<<1);PORTB |= (1<<1)
(0021) #define Set_SCLK() DDRB |= (1<<2);PORTB |= (1<<2)
(0022) 
(0023) #define Clr_CS() DDRB |= (1<<0);PORTB &=~(1<<0)
(0024) #define Clr_SID() DDRB |= (1<<1);PORTB &=~(1<<1)
(0025) #define Clr_SCLK() DDRB |= (1<<2);PORTB &=~(1<<2)
(0026) 
(0027) //====================================================================
(0028) //函数声明
(0029) void Delay(uint ms);      //延时子程序
(0030) void W_1byte(uchar RW, uchar RS, uchar W_data);
(0031) void Write_8bits(uint W_bits);
(0032) void LCD_Init(void);
(0033) /*********************************************************************/ 
(0034) const uchar mynew1[]={"7920_3wires_demo"};
(0035) const uchar mynew2[]={"Create by:CANY"};
(0036) const uchar mynew3[]={"E_mail:CANY_999@"};
(0037) const uchar mynew4[]={"163.com"};
(0038) /*********************************************************************/
(0039) void main()
(0040) {
(0041) 	uchar i = 0;
    0069 2744      CLR	R20
(0042)  	Clr_CS();
    006A 9AB8      SBI	0x17,0
    006B 98C0      CBI	0x18,0
(0043)  	Clr_SID();
    006C 9AB9      SBI	0x17,1
    006D 98C1      CBI	0x18,1
(0044)  	Clr_SCLK();
    006E 9ABA      SBI	0x17,2
    006F 98C2      CBI	0x18,2
(0045)  	LCD_Init();
    0070 D079      RCALL	_LCD_Init
    0071 C075      RJMP	0x00E7
(0046)  	while(1)
(0047)  	{ 
(0048)   		nop();
    0072 0000      NOP
(0049)   		nop();
    0073 0000      NOP
(0050)   		W_1byte(0,0,0x80);   			//显示的地址0x80
    0074 E880      LDI	R24,0x80
    0075 8388      STD	Y+0,R24
    0076 2722      CLR	R18
    0077 2700      CLR	R16
    0078 D0A0      RCALL	_W_1byte
(0051)   		nop();
    0079 0000      NOP
(0052)   		for(i=0;mynew1[i]!='\0';i++)
    007A 2744      CLR	R20
    007B C00C      RJMP	0x0088
(0053)   		{
(0054)    			W_1byte(0,1,mynew1[i]);
    007C E584      LDI	R24,0x54
    007D E090      LDI	R25,0
    007E 2FE4      MOV	R30,R20
    007F 27FF      CLR	R31
    0080 0FE8      ADD	R30,R24
    0081 1FF9      ADC	R31,R25
    0082 91E4      LPM	R30,0(Z)
    0083 83E8      STD	Y+0,R30
    0084 E021      LDI	R18,1
    0085 2700      CLR	R16
    0086 D092      RCALL	_W_1byte
    0087 9543      INC	R20
    0088 E584      LDI	R24,0x54
    0089 E090      LDI	R25,0
    008A 2FE4      MOV	R30,R20
    008B 27FF      CLR	R31
    008C 0FE8      ADD	R30,R24
    008D 1FF9      ADC	R31,R25
    008E 91E4      LPM	R30,0(Z)
    008F 23EE      TST	R30
    0090 F759      BNE	0x007C
(0055) 		  }
(0056)   		W_1byte(0,0,0x90);     			//显示的地址0x90
    0091 E980      LDI	R24,0x90
    0092 8388      STD	Y+0,R24
    0093 2722      CLR	R18
    0094 2700      CLR	R16
    0095 D083      RCALL	_W_1byte
(0057)   		for(i=0;mynew2[i]!='\0';i++)
    0096 2744      CLR	R20
    0097 C00C      RJMP	0x00A4
(0058)   		{
(0059)    			W_1byte(0,1,mynew2[i]); 
    0098 E685      LDI	R24,0x65
    0099 E090      LDI	R25,0
    009A 2FE4      MOV	R30,R20
    009B 27FF      CLR	R31
    009C 0FE8      ADD	R30,R24
    009D 1FF9      ADC	R31,R25
    009E 91E4      LPM	R30,0(Z)
    009F 83E8      STD	Y+0,R30
    00A0 E021      LDI	R18,1
    00A1 2700      CLR	R16
    00A2 D076      RCALL	_W_1byte
    00A3 9543      INC	R20
    00A4 E685      LDI	R24,0x65
    00A5 E090      LDI	R25,0
    00A6 2FE4      MOV	R30,R20
    00A7 27FF      CLR	R31
    00A8 0FE8      ADD	R30,R24
    00A9 1FF9      ADC	R31,R25
    00AA 91E4      LPM	R30,0(Z)
    00AB 23EE      TST	R30
    00AC F759      BNE	0x0098
(0060)   		}
(0061)   		W_1byte(0,0,0x88);   			//显示的地址0x88
    00AD E888      LDI	R24,0x88
    00AE 8388      STD	Y+0,R24
    00AF 2722      CLR	R18
    00B0 2700      CLR	R16
    00B1 D067      RCALL	_W_1byte
(0062)   		for(i=0;mynew3[i]!='\0';i++)
    00B2 2744      CLR	R20
    00B3 C00C      RJMP	0x00C0
(0063)   		{
(0064)    			W_1byte(0,1,mynew3[i]);
    00B4 E784      LDI	R24,0x74
    00B5 E090      LDI	R25,0
    00B6 2FE4      MOV	R30,R20
    00B7 27FF      CLR	R31
    00B8 0FE8      ADD	R30,R24
    00B9 1FF9      ADC	R31,R25
    00BA 91E4      LPM	R30,0(Z)
    00BB 83E8      STD	Y+0,R30
    00BC E021      LDI	R18,1
    00BD 2700      CLR	R16
    00BE D05A      RCALL	_W_1byte
    00BF 9543      INC	R20
    00C0 E784      LDI	R24,0x74
    00C1 E090      LDI	R25,0
    00C2 2FE4      MOV	R30,R20
    00C3 27FF      CLR	R31
    00C4 0FE8      ADD	R30,R24
    00C5 1FF9      ADC	R31,R25
    00C6 91E4      LPM	R30,0(Z)
    00C7 23EE      TST	R30
    00C8 F759      BNE	0x00B4
(0065)   		}
(0066)   		W_1byte(0,0,0x98);     			//显示的地址0x98
    00C9 E988      LDI	R24,0x98
    00CA 8388      STD	Y+0,R24
    00CB 2722      CLR	R18
    00CC 2700      CLR	R16
    00CD D04B      RCALL	_W_1byte
(0067)   		for(i=0;mynew4[i]!='\0';i++)
    00CE 2744      CLR	R20
    00CF C00C      RJMP	0x00DC
(0068)   		{
(0069)    			W_1byte(0,1,mynew4[i]);
    00D0 E885      LDI	R24,0x85
    00D1 E090      LDI	R25,0
    00D2 2FE4      MOV	R30,R20
    00D3 27FF      CLR	R31
    00D4 0FE8      ADD	R30,R24
    00D5 1FF9      ADC	R31,R25
    00D6 91E4      LPM	R30,0(Z)
    00D7 83E8      STD	Y+0,R30
    00D8 E021      LDI	R18,1
    00D9 2700      CLR	R16
    00DA D03E      RCALL	_W_1byte
    00DB 9543      INC	R20
    00DC E885      LDI	R24,0x85
    00DD E090      LDI	R25,0
    00DE 2FE4      MOV	R30,R20
    00DF 27FF      CLR	R31
    00E0 0FE8      ADD	R30,R24
    00E1 1FF9      ADC	R31,R25
    00E2 91E4      LPM	R30,0(Z)
    00E3 23EE      TST	R30
    00E4 F759      BNE	0x00D0
(0070)   		}
(0071)   		nop();
    00E5 0000      NOP
(0072)   		for(;;)
    00E6 CFFF      RJMP	0x00E6
    00E7 CF8A      RJMP	0x0072
    00E8 9621      ADIW	R28,1
    00E9 9508      RET
_LCD_Init:
  cmd                  --> R20
    00EA 940E019F  CALL	push_gset1
    00EC 9721      SBIW	R28,1
(0073)   		{
(0074)     			continue;
(0075)   		} 
(0076)  }
(0077) }
(0078) /******************************************************************/
(0079) void LCD_Init(void)
(0080) {
(0081) 	uchar cmd;
(0082)   	cmd=0x30;   				//功能设置 8位数据,基本指令
    00ED E340      LDI	R20,0x30
(0083)  	W_1byte(0,0,cmd);
    00EE 8348      STD	Y+0,R20
    00EF 2722      CLR	R18
    00F0 2700      CLR	R16
    00F1 D027      RCALL	_W_1byte
(0084)  	Delay(2);
    00F2 E002      LDI	R16,2
    00F3 E010      LDI	R17,0
    00F4 D089      RCALL	_Delay
(0085)  	cmd=0x0C;   				//显示状态 ON,游标OFF,反白OFF
    00F5 E04C      LDI	R20,0xC
(0086)  	W_1byte(0,0,cmd); 			//写指令
    00F6 8348      STD	Y+0,R20
    00F7 2722      CLR	R18
    00F8 2700      CLR	R16
    00F9 D01F      RCALL	_W_1byte
(0087)  	Delay(2);
    00FA E002      LDI	R16,2
    00FB E010      LDI	R17,0
    00FC D081      RCALL	_Delay
(0088)  	cmd=0x01;   				//清除显示
    00FD E041      LDI	R20,1
(0089)  	W_1byte(0,0,cmd); 			//写指令
    00FE 8348      STD	Y+0,R20
    00FF 2722      CLR	R18
    0100 2700      CLR	R16
    0101 D017      RCALL	_W_1byte
(0090)  	Delay(2);
    0102 E002      LDI	R16,2
    0103 E010      LDI	R17,0
    0104 D079      RCALL	_Delay
(0091)  	cmd=0x02;   				//地址归位
    0105 E042      LDI	R20,2
(0092)  	W_1byte(0,0,cmd); 			//写指令
    0106 8348      STD	Y+0,R20

⌨️ 快捷键说明

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