lcd-16sm.lis

来自「大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多」· LIS 代码 · 共 1,093 行 · 第 1/3 页

LIS
1,093
字号
 01BA           ;  wr_instruction(0b00110000);   //
 01BA 00E3              ldi R16,48
 01BC 4EDF              xcall _wr_instruction
 01BE                   .dbline 198
 01BE           ;  ldelay(2);
 01BE 02E0              ldi R16,2
 01C0 10E0              ldi R17,0
 01C2 3BDF              xcall _ldelay
 01C4                   .dbline 199
 01C4           ;  wr_instruction(0b00110000);   //
 01C4 00E3              ldi R16,48
 01C6 49DF              xcall _wr_instruction
 01C8                   .dbline 200
 01C8           ;  delay(80);
 01C8 00E5              ldi R16,80
 01CA 10E0              ldi R17,0
 01CC 27DF              xcall _delay
 01CE                   .dbline 201
 01CE           ;  wr_instruction(0b00111100);   //8-bit, 2 lines, 5x7 font
 01CE 0CE3              ldi R16,60
 01D0 44DF              xcall _wr_instruction
 01D2                   .dbline 202
 01D2           ;  delay(20);
 01D2 04E1              ldi R16,20
 01D4 10E0              ldi R17,0
 01D6 22DF              xcall _delay
 01D8                   .dbline 203
 01D8           ;  wr_instruction(0b00001110);   //display on, cursor on, blink off
 01D8 0EE0              ldi R16,14
 01DA 3FDF              xcall _wr_instruction
 01DC                   .dbline 204
 01DC           ;  delay(20);
 01DC 04E1              ldi R16,20
 01DE 10E0              ldi R17,0
 01E0 1DDF              xcall _delay
 01E2                   .dbline 205
 01E2           ;  wr_instruction(0b00001110);   //display on, 
 01E2 0EE0              ldi R16,14
 01E4 3ADF              xcall _wr_instruction
 01E6                   .dbline 206
 01E6           ;  delay(20);
 01E6 04E1              ldi R16,20
 01E8 10E0              ldi R17,0
 01EA 18DF              xcall _delay
 01EC                   .dbline 207
 01EC           ;  wr_instruction(0b00000001);   //clear display
 01EC 01E0              ldi R16,1
 01EE 35DF              xcall _wr_instruction
 01F0                   .dbline 208
 01F0           ;  ldelay(5);
 01F0 05E0              ldi R16,5
 01F2 10E0              ldi R17,0
 01F4 22DF              xcall _ldelay
 01F6                   .dbline 209
 01F6           ;  wr_instruction(0b00000110);   //Entry mode
 01F6 06E0              ldi R16,6
 01F8 30DF              xcall _wr_instruction
 01FA                   .dbline 210
 01FA           ;  delay(10);
 01FA 0AE0              ldi R16,10
 01FC 10E0              ldi R17,0
 01FE 0EDF              xcall _delay
 0200                   .dbline 211
 0200           ;  wr_instruction(0b00000001);   //clear display
 0200 01E0              ldi R16,1
 0202 2BDF              xcall _wr_instruction
 0204                   .dbline 212
 0204           ;  delay(20);
 0204 04E1              ldi R16,20
 0206 10E0              ldi R17,0
 0208 09DF              xcall _delay
 020A                   .dbline -2
 020A           L29:
 020A                   .dbline 0 ; func end
 020A 0895              ret
 020C                   .dbsym l ctrl_data 1 c
 020C                   .dbsym l i 1 c
 020C                   .dbend
 020C                   .dbfunc e main _main fV
 020C           ;              a -> <dead>
 020C           ;         array1 -> y+0
 020C           ;          jsave -> <dead>
 020C           ;              j -> <dead>
 020C           ;           dark -> <dead>
 020C           ;           pfin -> <dead>
 020C           ;           data -> <dead>
 020C           ;              i -> R10,R11
 020C           ;         darkfg -> R20
                        .even
 020C           _main::
 020C 2A97              sbiw R28,10
 020E                   .dbline -1
 020E                   .dbline 219
 020E           ;  }
 020E           ; //***********************************************************
 020E           ; 
 020E           ; // **********************************************************
 020E           ; // Main program
 020E           ; void main(void)
 020E           ; {
 020E                   .dbline 220
 020E           ;  unsigned char data, pfin, dark, darkfg=0xff;
 020E 4FEF              ldi R20,255
 0210                   .dbline 221
 0210           ;  int i=0;
 0210 AA24              clr R10
 0212 BB24              clr R11
 0214                   .dbline 224
 0214           ;  unsigned char j, jsave, array1[10];
 0214           ;  int a;
 0214           ;  CLI();
 0214 F894              cli
 0216                   .dbline 225
 0216           ;  port_init();
 0216 F4DE              xcall _port_init
 0218                   .dbline 226
 0218           ;  WDT_off();
 0218 FBDE              xcall _WDT_off
 021A                   .dbline 227
 021A           ;  ldelay(200);
 021A 08EC              ldi R16,200
 021C 10E0              ldi R17,0
 021E 0DDF              xcall _ldelay
 0220                   .dbline 228
 0220           ;  lcd_on();
 0220 BFDF              xcall _lcd_on
 0222                   .dbline 229
 0222           ;  PORTD=0x50;
 0222 80E5              ldi R24,80
 0224 82BB              out 0x12,R24
 0226                   .dbline 230
 0226           ;  ldelay(50);
 0226 02E3              ldi R16,50
 0228 10E0              ldi R17,0
 022A 07DF              xcall _ldelay
 022C                   .dbline 231
 022C           ;  PORTD=0x05;
 022C 85E0              ldi R24,5
 022E 82BB              out 0x12,R24
 0230                   .dbline 232
 0230           ;  ldelay(50);
 0230 02E3              ldi R16,50
 0232 10E0              ldi R17,0
 0234 02DF              xcall _ldelay
 0236                   .dbline 233
 0236           ;  out_string(message1);
 0236 00E0              ldi R16,<_message1
 0238 10E0              ldi R17,>_message1
 023A 9BDF              xcall _out_string
 023C                   .dbline 234
 023C           ;  cursor_line2();
 023C 8BDF              xcall _cursor_line2
 023E                   .dbline 235
 023E           ;  out_string(message2);
 023E 00E0              ldi R16,<_message2
 0240 10E0              ldi R17,>_message2
 0242 97DF              xcall _out_string
 0244                   .dbline 236
 0244           ;  PORTD=0x55;
 0244 85E5              ldi R24,85
 0246 82BB              out 0x12,R24
 0248                   .dbline 237
 0248           ;  PORTA=0xF8;
 0248 88EF              ldi R24,248
 024A 8BBB              out 0x1b,R24
 024C                   .dbline 238
 024C           ;  PORTB=0x00;
 024C 2224              clr R2
 024E 28BA              out 0x18,R2
 0250                   .dbline 239
 0250           ;  ldelay(100);
 0250 04E6              ldi R16,100
 0252 10E0              ldi R17,0
 0254 F2DE              xcall _ldelay
 0256 43C0              xjmp L32
 0258           L31:
 0258                   .dbline 242
 0258           ; 
 0258           ;  while(1)
 0258           ;  {
 0258                   .dbline 243
 0258           ;   WDR();
 0258 A895              wdr
 025A                   .dbline 244
 025A           ;   swin=PINC&0x30;
 025A 83B3              in R24,0x13
 025C 8073              andi R24,48
 025E 80930100          sts _swin,R24
 0262                   .dbline 245
 0262           ;   swin=(swin>>4)&0x03;
 0262 8295              swap R24
 0264 8F70              andi R24,#0x0F
 0266 8370              andi R24,3
 0268 80930100          sts _swin,R24
 026C                   .dbline 248
 026C           ;   
 026C           ;   
 026C           ;   if(swin2!=swin)
 026C 282E              mov R2,R24
 026E 30900000          lds R3,_swin2
 0272 3816              cp R3,R24
 0274 09F4              brne X10
 0276 30C0              xjmp L34
 0278           X10:
 0278           X5:
 0278                   .dbline 249
 0278           ;     {
 0278                   .dbline 250
 0278           ;        PORTD=swin;
 0278 82BB              out 0x12,R24
 027A                   .dbline 251
 027A           ;        swin2=swin;
 027A 20920000          sts _swin2,R2
 027E                   .dbline 252
 027E           ;        if(swin==0x00)
 027E 8823              tst R24
 0280 49F4              brne L36
 0282           X6:
 0282                   .dbline 253
 0282           ;       {
 0282                   .dbline 254
 0282           ;         cursor_home();
 0282 4BDF              xcall _cursor_home
 0284                   .dbline 255
 0284           ;         out_string(message1);
 0284 00E0              ldi R16,<_message1
 0286 10E0              ldi R17,>_message1
 0288 74DF              xcall _out_string
 028A                   .dbline 256
 028A           ;         cursor_line2();
 028A 64DF              xcall _cursor_line2
 028C                   .dbline 257
 028C           ;         out_string(message2);
 028C 00E0              ldi R16,<_message2
 028E 10E0              ldi R17,>_message2
 0290 70DF              xcall _out_string
 0292                   .dbline 258
 0292           ;         }
 0292 22C0              xjmp L37
 0294           L36:
 0294                   .dbline 259
 0294           ;        else if(swin==0x01)
 0294 80910100          lds R24,_swin
 0298 8130              cpi R24,1
 029A 49F4              brne L38
 029C           X7:
 029C                   .dbline 260
 029C           ;       {
 029C                   .dbline 261
 029C           ;         cursor_home();
 029C 3EDF              xcall _cursor_home
 029E                   .dbline 262
 029E           ;         out_string(message3);
 029E 00E0              ldi R16,<_message3
 02A0 10E0              ldi R17,>_message3
 02A2 67DF              xcall _out_string
 02A4                   .dbline 263
 02A4           ;         cursor_line2();
 02A4 57DF              xcall _cursor_line2
 02A6                   .dbline 264
 02A6           ;         out_string(message4);
 02A6 00E0              ldi R16,<_message4
 02A8 10E0              ldi R17,>_message4
 02AA 63DF              xcall _out_string
 02AC                   .dbline 265
 02AC           ;         }
 02AC 15C0              xjmp L39
 02AE           L38:
 02AE                   .dbline 266
 02AE           ;      else if(swin==0x02)
 02AE 80910100          lds R24,_swin
 02B2 8230              cpi R24,2
 02B4 49F4              brne L40
 02B6           X8:
 02B6                   .dbline 267
 02B6           ;       {
 02B6                   .dbline 268
 02B6           ;         cursor_home();
 02B6 31DF              xcall _cursor_home
 02B8                   .dbline 269
 02B8           ;         out_string(message5);
 02B8 00E0              ldi R16,<_message5
 02BA 10E0              ldi R17,>_message5
 02BC 5ADF              xcall _out_string
 02BE                   .dbline 270
 02BE           ;         cursor_line2();
 02BE 4ADF              xcall _cursor_line2
 02C0                   .dbline 271
 02C0           ;         out_string(message6);
 02C0 00E0              ldi R16,<_message6
 02C2 10E0              ldi R17,>_message6
 02C4 56DF              xcall _out_string
 02C6                   .dbline 272
 02C6           ;         }
 02C6 08C0              xjmp L41
 02C8           L40:
 02C8                   .dbline 274
 02C8           ;      else
 02C8           ;       {
 02C8                   .dbline 275
 02C8           ;         cursor_home();
 02C8 28DF              xcall _cursor_home
 02CA                   .dbline 276
 02CA           ;         out_string(message7);
 02CA 00E0              ldi R16,<_message7
 02CC 10E0              ldi R17,>_message7
 02CE 51DF              xcall _out_string
 02D0                   .dbline 277
 02D0           ;         cursor_line2();
 02D0 41DF              xcall _cursor_line2
 02D2                   .dbline 278
 02D2           ;         out_string(message8);
 02D2 00E0              ldi R16,<_message8
 02D4 10E0              ldi R17,>_message8
 02D6 4DDF              xcall _out_string
 02D8                   .dbline 279
 02D8           ;         }             
 02D8           L41:
 02D8           L39:
 02D8           L37:
 02D8                   .dbline 280
 02D8           ;       }
 02D8           L34:
 02D8                   .dbline 281
 02D8           ;   ldelay(10);
 02D8 0AE0              ldi R16,10
 02DA 10E0              ldi R17,0
 02DC AEDE              xcall _ldelay
 02DE                   .dbline 282
 02DE           ;   }
 02DE           L32:
 02DE                   .dbline 241
 02DE BCCF              xjmp L31
 02E0           X9:
 02E0                   .dbline -2
 02E0           L30:
 02E0                   .dbline 0 ; func end
 02E0 2A96              adiw R28,10
 02E2 0895              ret
 02E4                   .dbsym l a 1 I
 02E4                   .dbsym l array1 0 A[10:10]c
 02E4                   .dbsym l jsave 1 c
 02E4                   .dbsym l j 1 c
 02E4                   .dbsym l dark 1 c
 02E4                   .dbsym l pfin 1 c
 02E4                   .dbsym l data 1 c
 02E4                   .dbsym r i 10 I
 02E4                   .dbsym r darkfg 20 c
 02E4                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\+samples-16small\LCD-16sm\LCD-16sm.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           ;   
 0004           ; }

⌨️ 快捷键说明

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