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 + -
显示快捷键?