📄 7920_16.lis
字号:
.module _7920_16.c
.area lit(rom, con, rel)
0000 _mynew1::
0000 373932305F3377697265735F64656D6F .byte 55,57,50,48,95,51,'w,'i,'r,'e,'s,95,'d,'e,'m,'o
0010 00 .byte 0
0011 .dbfile E:\YM200\DEMO\LCD12864R(7920)\7920_16.c
0011 .dbsym e mynew1 _mynew1 A[17:17]kc
0011 _mynew2::
0011 4372656174652062793A43414E5900 .byte 'C,'r,'e,'a,'t,'e,32,'b,'y,58,'C,'A,'N,'Y,0
0020 .dbsym e mynew2 _mynew2 A[15:15]kc
0020 _mynew3::
0020 455F6D61696C3A43414E595F39393940 .byte 'E,95,'m,'a,'i,'l,58,'C,'A,'N,'Y,95,57,57,57,64
0030 00 .byte 0
0031 .dbsym e mynew3 _mynew3 A[17:17]kc
0031 _mynew4::
0031 3136332E636F6D00 .byte 49,54,51,46,'c,'o,'m,0
0039 .dbsym e mynew4 _mynew4 A[8:8]kc
.area text(rom, con, rel)
0000 .dbfile E:\YM200\DEMO\LCD12864R(7920)\7920_16.c
0000 .dbfunc e main _main fV
0000 ; i -> R20
.even
0000 _main::
0000 2197 sbiw R28,1
0002 .dbline -1
0002 .dbline 40
0002 ; //12864液晶(ST7920驱动)的3线串行驱动 MCU=ATMega16(L)
0002 ;
0002 ; /***********************************************************************
0002 ; 工 程:ST7920驱动的12864液晶的3线串行驱动模式
0002 ; 引脚定义:
0002 ; RS(CS)=====>PB0
0002 ; RW(SID)====>PB1
0002 ; EN(SCLK)===>PB2
0002 ; PSB为硬件控制,接高电平为8位或4位的并行模式,接低电平为串行模式
0002 ; ************************************************************************/
0002 ; #include <iom16v.h>
0002 ; #include <macros.h>
0002 ;
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ; #define nop() NOP()
0002 ; #define xtal 8
0002 ;
0002 ; #define Set_CS() DDRB |= (1<<0);PORTB |= (1<<0)
0002 ; #define Set_SID() DDRB |= (1<<1);PORTB |= (1<<1)
0002 ; #define Set_SCLK() DDRB |= (1<<2);PORTB |= (1<<2)
0002 ;
0002 ; #define Clr_CS() DDRB |= (1<<0);PORTB &=~(1<<0)
0002 ; #define Clr_SID() DDRB |= (1<<1);PORTB &=~(1<<1)
0002 ; #define Clr_SCLK() DDRB |= (1<<2);PORTB &=~(1<<2)
0002 ;
0002 ; //====================================================================
0002 ; //函数声明
0002 ; void Delay(uint ms); //延时子程序
0002 ; void W_1byte(uchar RW, uchar RS, uchar W_data);
0002 ; void Write_8bits(uint W_bits);
0002 ; void LCD_Init(void);
0002 ; /*********************************************************************/
0002 ; const uchar mynew1[]={"7920_3wires_demo"};
0002 ; const uchar mynew2[]={"Create by:CANY"};
0002 ; const uchar mynew3[]={"E_mail:CANY_999@"};
0002 ; const uchar mynew4[]={"163.com"};
0002 ; /*********************************************************************/
0002 ; void main()
0002 ; {
0002 .dbline 41
0002 ; uchar i = 0;
0002 4427 clr R20
0004 .dbline 42
0004 ; Clr_CS();
0004 B89A sbi 0x17,0
0006 .dbline 42
0006 C098 cbi 0x18,0
0008 .dbline 43
0008 ; Clr_SID();
0008 B99A sbi 0x17,1
000A .dbline 43
000A C198 cbi 0x18,1
000C .dbline 44
000C ; Clr_SCLK();
000C BA9A sbi 0x17,2
000E .dbline 44
000E C298 cbi 0x18,2
0010 .dbline 45
0010 ; LCD_Init();
0010 79D0 xcall _LCD_Init
0012 75C0 xjmp L3
0014 L2:
0014 .dbline 47
0014 ; while(1)
0014 ; {
0014 .dbline 48
0014 ; nop();
0014 0000 nop
0016 .dbline 49
0016 ; nop();
0016 0000 nop
0018 .dbline 50
0018 ; W_1byte(0,0,0x80); //显示的地址0x80
0018 80E8 ldi R24,128
001A 8883 std y+0,R24
001C 2227 clr R18
001E 0027 clr R16
0020 A0D0 xcall _W_1byte
0022 .dbline 51
0022 ; nop();
0022 0000 nop
0024 .dbline 52
0024 ; for(i=0;mynew1[i]!='\0';i++)
0024 4427 clr R20
0026 0CC0 xjmp L8
0028 L5:
0028 .dbline 53
0028 .dbline 54
0028 80E0 ldi R24,<_mynew1
002A 90E0 ldi R25,>_mynew1
002C E42F mov R30,R20
002E FF27 clr R31
0030 E80F add R30,R24
0032 F91F adc R31,R25
0034 E491 lpm R30,Z
0036 E883 std y+0,R30
0038 21E0 ldi R18,1
003A 0027 clr R16
003C 92D0 xcall _W_1byte
003E .dbline 55
003E L6:
003E .dbline 52
003E 4395 inc R20
0040 L8:
0040 .dbline 52
0040 80E0 ldi R24,<_mynew1
0042 90E0 ldi R25,>_mynew1
0044 E42F mov R30,R20
0046 FF27 clr R31
0048 E80F add R30,R24
004A F91F adc R31,R25
004C E491 lpm R30,Z
004E EE23 tst R30
0050 59F7 brne L5
0052 .dbline 56
0052 ; {
0052 ; W_1byte(0,1,mynew1[i]);
0052 ; }
0052 ; W_1byte(0,0,0x90); //显示的地址0x90
0052 80E9 ldi R24,144
0054 8883 std y+0,R24
0056 2227 clr R18
0058 0027 clr R16
005A 83D0 xcall _W_1byte
005C .dbline 57
005C ; for(i=0;mynew2[i]!='\0';i++)
005C 4427 clr R20
005E 0CC0 xjmp L12
0060 L9:
0060 .dbline 58
0060 .dbline 59
0060 80E0 ldi R24,<_mynew2
0062 90E0 ldi R25,>_mynew2
0064 E42F mov R30,R20
0066 FF27 clr R31
0068 E80F add R30,R24
006A F91F adc R31,R25
006C E491 lpm R30,Z
006E E883 std y+0,R30
0070 21E0 ldi R18,1
0072 0027 clr R16
0074 76D0 xcall _W_1byte
0076 .dbline 60
0076 L10:
0076 .dbline 57
0076 4395 inc R20
0078 L12:
0078 .dbline 57
0078 80E0 ldi R24,<_mynew2
007A 90E0 ldi R25,>_mynew2
007C E42F mov R30,R20
007E FF27 clr R31
0080 E80F add R30,R24
0082 F91F adc R31,R25
0084 E491 lpm R30,Z
0086 EE23 tst R30
0088 59F7 brne L9
008A .dbline 61
008A ; {
008A ; W_1byte(0,1,mynew2[i]);
008A ; }
008A ; W_1byte(0,0,0x88); //显示的地址0x88
008A 88E8 ldi R24,136
008C 8883 std y+0,R24
008E 2227 clr R18
0090 0027 clr R16
0092 67D0 xcall _W_1byte
0094 .dbline 62
0094 ; for(i=0;mynew3[i]!='\0';i++)
0094 4427 clr R20
0096 0CC0 xjmp L16
0098 L13:
0098 .dbline 63
0098 .dbline 64
0098 80E0 ldi R24,<_mynew3
009A 90E0 ldi R25,>_mynew3
009C E42F mov R30,R20
009E FF27 clr R31
00A0 E80F add R30,R24
00A2 F91F adc R31,R25
00A4 E491 lpm R30,Z
00A6 E883 std y+0,R30
00A8 21E0 ldi R18,1
00AA 0027 clr R16
00AC 5AD0 xcall _W_1byte
00AE .dbline 65
00AE L14:
00AE .dbline 62
00AE 4395 inc R20
00B0 L16:
00B0 .dbline 62
00B0 80E0 ldi R24,<_mynew3
00B2 90E0 ldi R25,>_mynew3
00B4 E42F mov R30,R20
00B6 FF27 clr R31
00B8 E80F add R30,R24
00BA F91F adc R31,R25
00BC E491 lpm R30,Z
00BE EE23 tst R30
00C0 59F7 brne L13
00C2 .dbline 66
00C2 ; {
00C2 ; W_1byte(0,1,mynew3[i]);
00C2 ; }
00C2 ; W_1byte(0,0,0x98); //显示的地址0x98
00C2 88E9 ldi R24,152
00C4 8883 std y+0,R24
00C6 2227 clr R18
00C8 0027 clr R16
00CA 4BD0 xcall _W_1byte
00CC .dbline 67
00CC ; for(i=0;mynew4[i]!='\0';i++)
00CC 4427 clr R20
00CE 0CC0 xjmp L20
00D0 L17:
00D0 .dbline 68
00D0 .dbline 69
00D0 80E0 ldi R24,<_mynew4
00D2 90E0 ldi R25,>_mynew4
00D4 E42F mov R30,R20
00D6 FF27 clr R31
00D8 E80F add R30,R24
00DA F91F adc R31,R25
00DC E491 lpm R30,Z
00DE E883 std y+0,R30
00E0 21E0 ldi R18,1
00E2 0027 clr R16
00E4 3ED0 xcall _W_1byte
00E6 .dbline 70
00E6 L18:
00E6 .dbline 67
00E6 4395 inc R20
00E8 L20:
00E8 .dbline 67
00E8 80E0 ldi R24,<_mynew4
00EA 90E0 ldi R25,>_mynew4
00EC E42F mov R30,R20
00EE FF27 clr R31
00F0 E80F add R30,R24
00F2 F91F adc R31,R25
00F4 E491 lpm R30,Z
00F6 EE23 tst R30
00F8 59F7 brne L17
00FA .dbline 71
00FA ; {
00FA ; W_1byte(0,1,mynew4[i]);
00FA ; }
00FA ; nop();
00FA 0000 nop
00FC .dbline 72
00FC .dbline 73
00FC .dbline 74
00FC L22:
00FC .dbline 72
00FC .dbline 72
00FC FFCF xjmp L22
00FE L3:
00FE .dbline 46
00FE 8ACF xjmp L2
0100 X0:
0100 .dbline -2
0100 L1:
0100 2196 adiw R28,1
0102 .dbline 0 ; func end
0102 0895 ret
0104 .dbsym r i 20 c
0104 .dbend
0104 .dbfunc e LCD_Init _LCD_Init fV
0104 ; cmd -> R20
.even
0104 _LCD_Init::
0104 0E940000 xcall push_gset1
0108 2197 sbiw R28,1
010A .dbline -1
010A .dbline 80
010A ; for(;;)
010A ; {
010A ; continue;
010A ; }
010A ; }
010A ; }
010A ; /******************************************************************/
010A ; void LCD_Init(void)
010A ; {
010A .dbline 82
010A ; uchar cmd;
010A ; cmd=0x30; //功能设置 8位数据,基本指令
010A 40E3 ldi R20,48
010C .dbline 83
010C ; W_1byte(0,0,cmd);
010C 4883 std y+0,R20
010E 2227 clr R18
0110 0027 clr R16
0112 27D0 xcall _W_1byte
0114 .dbline 84
0114 ; Delay(2);
0114 02E0 ldi R16,2
0116 10E0 ldi R17,0
0118 89D0 xcall _Delay
011A .dbline 85
011A ; cmd=0x0C; //显示状态 ON,游标OFF,反白OFF
011A 4CE0 ldi R20,12
011C .dbline 86
011C ; W_1byte(0,0,cmd); //写指令
011C 4883 std y+0,R20
011E 2227 clr R18
0120 0027 clr R16
0122 1FD0 xcall _W_1byte
0124 .dbline 87
0124 ; Delay(2);
0124 02E0 ldi R16,2
0126 10E0 ldi R17,0
0128 81D0 xcall _Delay
012A .dbline 88
012A ; cmd=0x01; //清除显示
012A 41E0 ldi R20,1
012C .dbline 89
012C ; W_1byte(0,0,cmd); //写指令
012C 4883 std y+0,R20
012E 2227 clr R18
0130 0027 clr R16
0132 17D0 xcall _W_1byte
0134 .dbline 90
0134 ; Delay(2);
0134 02E0 ldi R16,2
0136 10E0 ldi R17,0
0138 79D0 xcall _Delay
013A .dbline 91
013A ; cmd=0x02; //地址归位
013A 42E0 ldi R20,2
013C .dbline 92
013C ; W_1byte(0,0,cmd); //写指令
013C 4883 std y+0,R20
013E 2227 clr R18
0140 0027 clr R16
0142 0FD0 xcall _W_1byte
0144 .dbline 93
0144 ; Delay(2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -