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

📄 lcd-16sn.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0064           ;  PORTA=0b00000100;             //PA2<--1 LCD-E ON (enable)
 0064 84E0              ldi R24,4
 0066 8BBB              out 0x1b,R24
 0068                   .dbline 77
 0068           ;  delay(2);
 0068 02E0              ldi R16,2
 006A 10E0              ldi R17,0
 006C CFDF              xcall _delay
 006E                   .dbline 78
 006E           ;  PORTA=0b00000000;             //PA2<--0 LCD-E OFF (disable) 
 006E 2224              clr R2
 0070 2BBA              out 0x1b,R2
 0072                   .dbline 79
 0072           ;  delay(1);
 0072 01E0              ldi R16,1
 0074 10E0              ldi R17,0
 0076 CADF              xcall _delay
 0078                   .dbline -2
 0078           L12:
 0078                   .dbline 0 ; func end
 0078 A990              ld R10,y+
 007A 0895              ret
 007C                   .dbsym r instr 10 c
 007C                   .dbend
 007C                   .dbfunc e wr_data _wr_data fV
 007C           ;           data -> R10
                        .even
 007C           _wr_data::
 007C AA92              st -y,R10
 007E A02E              mov R10,R16
 0080                   .dbline -1
 0080                   .dbline 83
 0080           ; }
 0080           ; 
 0080           ; void wr_data(unsigned char data)
 0080           ; {
 0080                   .dbline 84
 0080           ;  DDRA=0xff;
 0080 8FEF              ldi R24,255
 0082 8ABB              out 0x1a,R24
 0084                   .dbline 85
 0084           ;  PORTA=0b00000001;              //PA0 <-- 1, Select data register
 0084 81E0              ldi R24,1
 0086 8BBB              out 0x1b,R24
 0088                   .dbline 86
 0088           ;  PORTB=data;                    //Send out data
 0088 A8BA              out 0x18,R10
 008A                   .dbline 87
 008A           ;  delay(1);
 008A 01E0              ldi R16,1
 008C 10E0              ldi R17,0
 008E BEDF              xcall _delay
 0090                   .dbline 88
 0090           ;  PORTA=0b00000101;              //Enable write to Data register
 0090 85E0              ldi R24,5
 0092 8BBB              out 0x1b,R24
 0094                   .dbline 89
 0094           ;  delay(2);
 0094 02E0              ldi R16,2
 0096 10E0              ldi R17,0
 0098 B9DF              xcall _delay
 009A                   .dbline 90
 009A           ;  PORTA=0b00000000;              //disable ????
 009A 2224              clr R2
 009C 2BBA              out 0x1b,R2
 009E                   .dbline 91
 009E           ;  delay(1);
 009E 01E0              ldi R16,1
 00A0 10E0              ldi R17,0
 00A2 B4DF              xcall _delay
 00A4                   .dbline -2
 00A4           L13:
 00A4                   .dbline 0 ; func end
 00A4 A990              ld R10,y+
 00A6 0895              ret
 00A8                   .dbsym r data 10 c
 00A8                   .dbend
 00A8                   .dbfunc e wr_instruction2 _wr_instruction2 fV
 00A8           ;          flags -> <dead>
 00A8           ;          instr -> R10
                        .even
 00A8           _wr_instruction2::
 00A8 AA92              st -y,R10
 00AA A02E              mov R10,R16
 00AC                   .dbline -1
 00AC                   .dbline 98
 00AC           ; }
 00AC           ; 
 00AC           ; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 00AC           ; // Following functions for LCD panel control
 00AC           ; 
 00AC           ; void wr_instruction2(unsigned char instr)
 00AC           ; {
 00AC                   .dbline 100
 00AC           ;  unsigned char flags;
 00AC           ;   delay(10);
 00AC 0AE0              ldi R16,10
 00AE 10E0              ldi R17,0
 00B0 ADDF              xcall _delay
 00B2                   .dbline 101
 00B2           ;   wr_instruction(instr);
 00B2 0A2D              mov R16,R10
 00B4 CADF              xcall _wr_instruction
 00B6                   .dbline 102
 00B6           ;   delay(10);
 00B6 0AE0              ldi R16,10
 00B8 10E0              ldi R17,0
 00BA A8DF              xcall _delay
 00BC                   .dbline -2
 00BC           L14:
 00BC                   .dbline 0 ; func end
 00BC A990              ld R10,y+
 00BE 0895              ret
 00C0                   .dbsym l flags 1 c
 00C0                   .dbsym r instr 10 c
 00C0                   .dbend
 00C0                   .dbfunc e wr_data2 _wr_data2 fV
 00C0           ;          flags -> <dead>
 00C0           ;           data -> R10
                        .even
 00C0           _wr_data2::
 00C0 AA92              st -y,R10
 00C2 A02E              mov R10,R16
 00C4                   .dbline -1
 00C4                   .dbline 106
 00C4           ; }
 00C4           ; 
 00C4           ; void wr_data2(unsigned char data)
 00C4           ; {
 00C4                   .dbline 108
 00C4           ;  unsigned char flags;
 00C4           ;  if(cursor_index==0x10)
 00C4 80910A00          lds R24,_cursor_index
 00C8 90910B00          lds R25,_cursor_index+1
 00CC 8031              cpi R24,16
 00CE E0E0              ldi R30,0
 00D0 9E07              cpc R25,R30
 00D2 11F4              brne L16
 00D4           X2:
 00D4                   .dbline 109
 00D4           ;     cursor_line2();
 00D4 37D0              xcall _cursor_line2
 00D6 09C0              xjmp L17
 00D8           L16:
 00D8                   .dbline 110
 00D8           ;  else if(cursor_index==0x50)
 00D8 80910A00          lds R24,_cursor_index
 00DC 90910B00          lds R25,_cursor_index+1
 00E0 8035              cpi R24,80
 00E2 E0E0              ldi R30,0
 00E4 9E07              cpc R25,R30
 00E6 09F4              brne L18
 00E8           X3:
 00E8                   .dbline 111
 00E8           ;     cursor_line1();   
 00E8 21D0              xcall _cursor_line1
 00EA           L18:
 00EA           L17:
 00EA                   .dbline 112
 00EA           ;  wr_data(data);
 00EA 0A2D              mov R16,R10
 00EC C7DF              xcall _wr_data
 00EE                   .dbline 113
 00EE           ;  cursor_index++;
 00EE 80910A00          lds R24,_cursor_index
 00F2 90910B00          lds R25,_cursor_index+1
 00F6 0196              adiw R24,1
 00F8 90930B00          sts _cursor_index+1,R25
 00FC 80930A00          sts _cursor_index,R24
 0100                   .dbline 114
 0100           ;  delay(50); 
 0100 02E3              ldi R16,50
 0102 10E0              ldi R17,0
 0104 83DF              xcall _delay
 0106                   .dbline -2
 0106           L15:
 0106                   .dbline 0 ; func end
 0106 A990              ld R10,y+
 0108 0895              ret
 010A                   .dbsym l flags 1 c
 010A                   .dbsym r data 10 c
 010A                   .dbend
 010A                   .dbfunc e cursor_home _cursor_home fV
                        .even
 010A           _cursor_home::
 010A                   .dbline -1
 010A                   .dbline 118
 010A           ;  }
 010A           ;  
 010A           ; void cursor_home(void)                //Move cursor to Home
 010A           ; {
 010A                   .dbline 119
 010A           ;  wr_instruction2(0x01);
 010A 01E0              ldi R16,1
 010C CDDF              xcall _wr_instruction2
 010E                   .dbline 120
 010E           ;  delay(10);
 010E 0AE0              ldi R16,10
 0110 10E0              ldi R17,0
 0112 7CDF              xcall _delay
 0114                   .dbline 121
 0114           ;  wr_instruction2(0x80);
 0114 00E8              ldi R16,128
 0116 C8DF              xcall _wr_instruction2
 0118                   .dbline 122
 0118           ;  ldelay(5);
 0118 05E0              ldi R16,5
 011A 10E0              ldi R17,0
 011C 86DF              xcall _ldelay
 011E                   .dbline 123
 011E           ;  cursor_index=0;
 011E 2224              clr R2
 0120 3324              clr R3
 0122 30920B00          sts _cursor_index+1,R3
 0126 20920A00          sts _cursor_index,R2
 012A                   .dbline -2
 012A           L20:
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbend
 012C                   .dbfunc e cursor_line1 _cursor_line1 fV
                        .even
 012C           _cursor_line1::
 012C                   .dbline -1
 012C                   .dbline 127
 012C           ; }
 012C           ;  
 012C           ; void cursor_line1(void)               //Move cursor to the first line 
 012C           ; {
 012C                   .dbline 128
 012C           ;  wr_instruction2(0x80);
 012C 00E8              ldi R16,128
 012E BCDF              xcall _wr_instruction2
 0130                   .dbline 129
 0130           ;  cursor_index=0;
 0130 2224              clr R2
 0132 3324              clr R3
 0134 30920B00          sts _cursor_index+1,R3
 0138 20920A00          sts _cursor_index,R2
 013C                   .dbline 130
 013C           ;  ldelay(5);
 013C 05E0              ldi R16,5
 013E 10E0              ldi R17,0
 0140 74DF              xcall _ldelay
 0142                   .dbline -2
 0142           L21:
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbend
 0144                   .dbfunc e cursor_line2 _cursor_line2 fV
                        .even
 0144           _cursor_line2::
 0144                   .dbline -1
 0144                   .dbline 134
 0144           ; }
 0144           ; 
 0144           ; void cursor_line2(void)               //Move cursor to the second line
 0144           ; {
 0144                   .dbline 135
 0144           ;  wr_instruction2(0b11000000);
 0144 00EC              ldi R16,192
 0146 B0DF              xcall _wr_instruction2
 0148                   .dbline 136
 0148           ;  cursor_index=0x40;
 0148 80E4              ldi R24,64
 014A 90E0              ldi R25,0
 014C 90930B00          sts _cursor_index+1,R25
 0150 80930A00          sts _cursor_index,R24
 0154                   .dbline 137
 0154           ;  ldelay(2);
 0154 02E0              ldi R16,2
 0156 10E0              ldi R17,0
 0158 68DF              xcall _ldelay
 015A                   .dbline -2
 015A           L22:
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbend
 015C                   .dbfunc e space _space fV
                        .even
 015C           _space::
 015C                   .dbline -1
 015C                   .dbline 141
 015C           ; } 
 015C           ; 
 015C           ; void space(void)                       //Write space, ' ', on the panel
 015C           ; {
 015C                   .dbline 142

⌨️ 快捷键说明

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