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

📄 lcd-16sn.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 015C           ;  wr_data2(' ');
 015C 00E2              ldi R16,32
 015E B0DF              xcall _wr_data2
 0160                   .dbline -2
 0160           L23:
 0160                   .dbline 0 ; func end
 0160 0895              ret
 0162                   .dbend
 0162                   .dbfunc e clear_line1 _clear_line1 fV
 0162           ;              i -> R20,R21
                        .even
 0162           _clear_line1::
 0162 4A93              st -y,R20
 0164 5A93              st -y,R21
 0166                   .dbline -1
 0166                   .dbline 146
 0166           ;  }
 0166           ;  
 0166           ; void clear_line1(void)
 0166           ; {
 0166                   .dbline 148
 0166           ;  int i;
 0166           ;  cursor_line1();
 0166 E2DF              xcall _cursor_line1
 0168                   .dbline 149
 0168           ;  for(i=0; i<=15; i++)
 0168 4427              clr R20
 016A 5527              clr R21
 016C           L25:
 016C                   .dbline 150
 016C           ;    space();
 016C F7DF              xcall _space
 016E           L26:
 016E                   .dbline 149
 016E 4F5F              subi R20,255  ; offset = 1
 0170 5F4F              sbci R21,255
 0172                   .dbline 149
 0172 8FE0              ldi R24,15
 0174 90E0              ldi R25,0
 0176 8417              cp R24,R20
 0178 9507              cpc R25,R21
 017A C4F7              brge L25
 017C           X4:
 017C                   .dbline 151
 017C           ;  cursor_line1();  
 017C D7DF              xcall _cursor_line1
 017E                   .dbline -2
 017E           L24:
 017E                   .dbline 0 ; func end
 017E 5991              ld R21,y+
 0180 4991              ld R20,y+
 0182 0895              ret
 0184                   .dbsym r i 20 I
 0184                   .dbend
 0184                   .dbfunc e clear_line2 _clear_line2 fV
 0184           ;              i -> R20,R21
                        .even
 0184           _clear_line2::
 0184 4A93              st -y,R20
 0186 5A93              st -y,R21
 0188                   .dbline -1
 0188                   .dbline 155
 0188           ; }
 0188           ; 
 0188           ; void clear_line2(void)
 0188           ; {
 0188                   .dbline 157
 0188           ;  int i;
 0188           ;  cursor_line2();
 0188 DDDF              xcall _cursor_line2
 018A                   .dbline 158
 018A           ;  for(i=0; i<=15; i++)
 018A 4427              clr R20
 018C 5527              clr R21
 018E           L30:
 018E                   .dbline 159
 018E           ;    space();
 018E E6DF              xcall _space
 0190           L31:
 0190                   .dbline 158
 0190 4F5F              subi R20,255  ; offset = 1
 0192 5F4F              sbci R21,255
 0194                   .dbline 158
 0194 8FE0              ldi R24,15
 0196 90E0              ldi R25,0
 0198 8417              cp R24,R20
 019A 9507              cpc R25,R21
 019C C4F7              brge L30
 019E           X5:
 019E                   .dbline 160
 019E           ;  cursor_line2();  
 019E D2DF              xcall _cursor_line2
 01A0                   .dbline -2
 01A0           L29:
 01A0                   .dbline 0 ; func end
 01A0 5991              ld R21,y+
 01A2 4991              ld R20,y+
 01A4 0895              ret
 01A6                   .dbsym r i 20 I
 01A6                   .dbend
 01A6                   .dbfunc e out_string _out_string fV
 01A6           ;        onechar -> R12
 01A6           ;              i -> R20,R21
 01A6           ;          array -> R10,R11
                        .even
 01A6           _out_string::
 01A6 0E940000          xcall push_xgset303C
 01AA 5801              movw R10,R16
 01AC                   .dbline -1
 01AC                   .dbline 165
 01AC           ; } 
 01AC           ; 
 01AC           ;  
 01AC           ; void out_string(const char array[])    //Send a string stored in array to LCD panel
 01AC           ; {
 01AC                   .dbline 166
 01AC           ;  int i=0;
 01AC 4427              clr R20
 01AE 5527              clr R21
 01B0                   .dbline 168
 01B0           ;  unsigned char onechar;
 01B0           ;  i=0;
 01B0 09C0              xjmp L36
 01B2           L35:
 01B2                   .dbline 170
 01B2           ;  while(array[i])
 01B2           ;   {
 01B2                   .dbline 171
 01B2           ;    onechar=array[i++];
 01B2 1A01              movw R2,R20
 01B4 4F5F              subi R20,255  ; offset = 1
 01B6 5F4F              sbci R21,255
 01B8 F101              movw R30,R2
 01BA EA0D              add R30,R10
 01BC FB1D              adc R31,R11
 01BE C690              elpm R12,Z
 01C0                   .dbline 172
 01C0           ;    wr_data2(onechar);
 01C0 0C2D              mov R16,R12
 01C2 7EDF              xcall _wr_data2
 01C4                   .dbline 173
 01C4           ;   }
 01C4           L36:
 01C4                   .dbline 169
 01C4 FA01              movw R30,R20
 01C6 EA0D              add R30,R10
 01C8 FB1D              adc R31,R11
 01CA 2690              elpm R2,Z
 01CC 2220              tst R2
 01CE 89F7              brne L35
 01D0           X6:
 01D0                   .dbline -2
 01D0           L34:
 01D0                   .dbline 0 ; func end
 01D0 0C940000          xjmp pop_xgset303C
 01D4                   .dbsym r onechar 12 c
 01D4                   .dbsym r i 20 I
 01D4                   .dbsym r array 10 pkc
 01D4                   .dbend
 01D4                   .dbfunc e lcd_on _lcd_on fV
 01D4           ;      ctrl_data -> <dead>
 01D4           ;              i -> <dead>
                        .even
 01D4           _lcd_on::
 01D4                   .dbline -1
 01D4                   .dbline 177
 01D4           ; }
 01D4           ; 
 01D4           ; void lcd_on(void)
 01D4           ; {
 01D4                   .dbline 179
 01D4           ;  unsigned char i, ctrl_data;
 01D4           ;  ldelay(20);
 01D4 04E1              ldi R16,20
 01D6 10E0              ldi R17,0
 01D8 28DF              xcall _ldelay
 01DA                   .dbline 180
 01DA           ;  PORTD=0x01;
 01DA 81E0              ldi R24,1
 01DC 82BB              out 0x12,R24
 01DE                   .dbline 181
 01DE           ;  ldelay(40);
 01DE 08E2              ldi R16,40
 01E0 10E0              ldi R17,0
 01E2 23DF              xcall _ldelay
 01E4                   .dbline 182
 01E4           ;  wr_instruction(0b00110000);   //Function Set:set 8-bit, 2line, 5x7 fonts
 01E4 00E3              ldi R16,48
 01E6 31DF              xcall _wr_instruction
 01E8                   .dbline 183
 01E8           ;  ldelay(2);
 01E8 02E0              ldi R16,2
 01EA 10E0              ldi R17,0
 01EC 1EDF              xcall _ldelay
 01EE                   .dbline 184
 01EE           ;  wr_instruction(0b00110000);   //
 01EE 00E3              ldi R16,48
 01F0 2CDF              xcall _wr_instruction
 01F2                   .dbline 185
 01F2           ;  ldelay(2);
 01F2 02E0              ldi R16,2
 01F4 10E0              ldi R17,0
 01F6 19DF              xcall _ldelay
 01F8                   .dbline 186
 01F8           ;  wr_instruction(0b00110000);   //
 01F8 00E3              ldi R16,48
 01FA 27DF              xcall _wr_instruction
 01FC                   .dbline 187
 01FC           ;  delay(80);
 01FC 00E5              ldi R16,80
 01FE 10E0              ldi R17,0
 0200 05DF              xcall _delay
 0202                   .dbline 188
 0202           ;  wr_instruction(0b00111100);   //8-bit, 2 lines, 5x7 font
 0202 0CE3              ldi R16,60
 0204 22DF              xcall _wr_instruction
 0206                   .dbline 189
 0206           ;  delay(20);
 0206 04E1              ldi R16,20
 0208 10E0              ldi R17,0
 020A 00DF              xcall _delay
 020C                   .dbline 190
 020C           ;  wr_instruction(0b00001110);   //display on, cursor on, blink off
 020C 0EE0              ldi R16,14
 020E 1DDF              xcall _wr_instruction
 0210                   .dbline 191
 0210           ;  delay(20);
 0210 04E1              ldi R16,20
 0212 10E0              ldi R17,0
 0214 FBDE              xcall _delay
 0216                   .dbline 192
 0216           ;  wr_instruction(0b00001110);   //display on, 
 0216 0EE0              ldi R16,14
 0218 18DF              xcall _wr_instruction
 021A                   .dbline 193
 021A           ;  delay(20);
 021A 04E1              ldi R16,20
 021C 10E0              ldi R17,0
 021E F6DE              xcall _delay
 0220                   .dbline 194
 0220           ;  wr_instruction(0b00000001);   //clear display
 0220 01E0              ldi R16,1
 0222 13DF              xcall _wr_instruction
 0224                   .dbline 195
 0224           ;  ldelay(5);
 0224 05E0              ldi R16,5
 0226 10E0              ldi R17,0
 0228 00DF              xcall _ldelay
 022A                   .dbline 196
 022A           ;  wr_instruction(0b00000110);   //Entry mode
 022A 06E0              ldi R16,6
 022C 0EDF              xcall _wr_instruction
 022E                   .dbline 197
 022E           ;  delay(10);
 022E 0AE0              ldi R16,10
 0230 10E0              ldi R17,0
 0232 ECDE              xcall _delay
 0234                   .dbline 198
 0234           ;  wr_instruction(0b00000001);   //clear display
 0234 01E0              ldi R16,1
 0236 09DF              xcall _wr_instruction
 0238                   .dbline 199
 0238           ;  delay(20);
 0238 04E1              ldi R16,20
 023A 10E0              ldi R17,0
 023C E7DE              xcall _delay
 023E                   .dbline -2
 023E           L38:
 023E                   .dbline 0 ; func end
 023E 0895              ret
 0240                   .dbsym l ctrl_data 1 c
 0240                   .dbsym l i 1 c
 0240                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0000           _swin2::
 0000                   .blkb 1
 0001                   .dbsym e swin2 _swin2 c
 0001           _swin::
 0001                   .blkb 1
 0002                   .dbsym e swin _swin c
 0002           _indexcount::
 0002                   .blkb 2
 0004                   .dbsym e indexcount _indexcount I
 0004           ;  }

⌨️ 快捷键说明

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