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

📄 lcd.ls1

📁 本程序是练习lcd16*2的使用,其中的一些基本的函数可以供其他实用该型号的器件的时候所调用.
💻 LS1
📖 第 1 页 / 共 3 页
字号:
                     183     ; void write_LCD_data(unsigned LCDdata)
                     184     
----                 185             RSEG  ?PR?_write_LCD_data?LCD
0000                 186     _write_LCD_data:
                     187             USING   0
                     188                             ; SOURCE LINE # 13
A51 MACRO ASSEMBLER  LCD                                                                  10/31/2007 10:07:19 PAGE     4

                     189     ;---- Variable 'LCDdata?141' assigned to Register 'R6/R7' ----
                     190     ; {rw=WRITE;
                     191                             ; SOURCE LINE # 14
0000 C2B4            192             CLR     P3_4
                     193     ; rs=DATA;
                     194                             ; SOURCE LINE # 15
0002 D2B5            195             SETB    P3_5
                     196     ; enable=ENABLE;
                     197                             ; SOURCE LINE # 16
                     198     ; P1=LCDdata;
                     199                             ; SOURCE LINE # 17
                     200     ; delay100us(20);
                     201                             ; SOURCE LINE # 18
0004 120000   F      202             LCALL   L?0017
                     203     ; enable=DISABLE;
                     204                             ; SOURCE LINE # 19
0007 C2B3            205             CLR     P3_3
                     206     ; rw=1;
                     207                             ; SOURCE LINE # 20
0009 D2B4            208             SETB    P3_4
                     209     ; }
                     210                             ; SOURCE LINE # 21
000B 22              211             RET     
                     212     ; END OF _write_LCD_data
                     213     
                     214     ; void init_LCD(void)
                     215     
----                 216             RSEG  ?PR?init_LCD?LCD
0000                 217     init_LCD:
                     218             USING   0
                     219                             ; SOURCE LINE # 22
                     220     ; { write_LCD_command(Twoline_8bit);
                     221                             ; SOURCE LINE # 23
0000 7F38            222             MOV     R7,#038H
0002 7E00            223             MOV     R6,#00H
0004 120000   F      224             LCALL   _write_LCD_command
                     225     ; write_LCD_command(CURSOR_OFF);
                     226                             ; SOURCE LINE # 24
0007 7F0C            227             MOV     R7,#0CH
0009 7E00            228             MOV     R6,#00H
000B 120000   F      229             LCALL   _write_LCD_command
                     230     ; write_LCD_command(CURSOR_RIGHT);
                     231                             ; SOURCE LINE # 25
000E 7F06            232             MOV     R7,#06H
0010 7E00            233             MOV     R6,#00H
0012 020000   F      234             LJMP    _write_LCD_command
                     235     ; END OF init_LCD
                     236     
                     237     ; }
                     238     ; void clear_LCD(void)
                     239     
----                 240             RSEG  ?PR?clear_LCD?LCD
0000                 241     clear_LCD:
                     242             USING   0
                     243                             ; SOURCE LINE # 27
                     244     ; {write_LCD_command(CLEAR);
                     245                             ; SOURCE LINE # 28
0000 7F01            246             MOV     R7,#01H
0002 7E00            247             MOV     R6,#00H
0004 120000   F      248             LCALL   _write_LCD_command
                     249     ;  write_LCD_command(CURSOR_HOME);
                     250                             ; SOURCE LINE # 29
0007 7F02            251             MOV     R7,#02H
0009 7E00            252             MOV     R6,#00H
000B 020000   F      253             LJMP    _write_LCD_command
                     254     ; END OF clear_LCD
A51 MACRO ASSEMBLER  LCD                                                                  10/31/2007 10:07:19 PAGE     5

                     255     
                     256     ; }
                     257     ; void display_LCD_string(char *p)
                     258     
----                 259             RSEG  ?PR?_display_LCD_string?LCD
0000                 260     _display_LCD_string:
                     261             USING   0
                     262                             ; SOURCE LINE # 31
0000 8B00     F      263             MOV     p?442,R3
0002 8A00     F      264             MOV     p?442+01H,R2
0004 8900     F      265             MOV     p?442+02H,R1
                     266     ; { while(*p)
                     267                             ; SOURCE LINE # 32
0006                 268     ?C0005:
0006 AB00     F      269             MOV     R3,p?442
0008 AA00     F      270             MOV     R2,p?442+01H
000A A900     F      271             MOV     R1,p?442+02H
000C 120000   F      272             LCALL   ?C?CLDPTR
000F FF              273             MOV     R7,A
0010 6014            274             JZ      ?C0007
                     275     ; {write_LCD_data(*p);
                     276                             ; SOURCE LINE # 33
0012 33              277             RLC     A
0013 95E0            278             SUBB    A,ACC
0015 FE              279             MOV     R6,A
0016 120000   F      280             LCALL   _write_LCD_data
                     281     ; p++;
                     282                             ; SOURCE LINE # 34
0019 7401            283             MOV     A,#01H
001B 2500     F      284             ADD     A,p?442+02H
001D F500     F      285             MOV     p?442+02H,A
001F E4              286             CLR     A
0020 3500     F      287             ADDC    A,p?442+01H
0022 F500     F      288             MOV     p?442+01H,A
                     289     ; }  }
                     290                             ; SOURCE LINE # 35
0024 80E0            291             SJMP    ?C0005
0026                 292     ?C0007:
0026 22              293             RET     
                     294     ; END OF _display_LCD_string
                     295     
                     296     ; void display_LCD_number(char number)
                     297     
----                 298             RSEG  ?PR?_display_LCD_number?LCD
0000                 299     _display_LCD_number:
                     300             USING   0
                     301                             ; SOURCE LINE # 36
                     302     ;---- Variable 'number?543' assigned to Register 'R7' ----
                     303     ; { unsigned char x,y;
                     304                             ; SOURCE LINE # 37
                     305     ; x=number/10;
                     306                             ; SOURCE LINE # 38
0000 EF              307             MOV     A,R7
0001 75F00A          308             MOV     B,#0AH
0004 120000   F      309             LCALL   ?C?SCDIV
0007 FE              310             MOV     R6,A
                     311     ;---- Variable 'x?544' assigned to Register 'R6' ----
                     312     ; y=number-10*x;
                     313                             ; SOURCE LINE # 39
0008 75F00A          314             MOV     B,#0AH
000B A4              315             MUL     AB
000C FD              316             MOV     R5,A
000D C3              317             CLR     C
000E EF              318             MOV     A,R7
000F 9D              319             SUBB    A,R5
0010 F500     F      320             MOV     y?545,A
A51 MACRO ASSEMBLER  LCD                                                                  10/31/2007 10:07:19 PAGE     6

                     321     ; write_LCD_data(int2charLCD[x]);
                     322                             ; SOURCE LINE # 40
0012 EE              323             MOV     A,R6
0013 900000   F      324             MOV     DPTR,#int2charLCD
0016 93              325             MOVC    A,@A+DPTR
0017 FF              326             MOV     R7,A
0018 33              327             RLC     A
0019 95E0            328             SUBB    A,ACC
001B FE              329             MOV     R6,A
001C 120000   F      330             LCALL   _write_LCD_data
                     331     ; write_LCD_data(int2charLCD[y]);
                     332                             ; SOURCE LINE # 41
001F E500     F      333             MOV     A,y?545
0021 900000   F      334             MOV     DPTR,#int2charLCD
0024 93              335             MOVC    A,@A+DPTR
0025 FF              336             MOV     R7,A
0026 33              337             RLC     A
0027 95E0            338             SUBB    A,ACC
0029 FE              339             MOV     R6,A
002A 020000   F      340             LJMP    _write_LCD_data
                     341     ; END OF _display_LCD_number
                     342     
                     343     ; }
                     344     ; void gotoxy(unsigned x,unsigned y)
                     345     
----                 346             RSEG  ?PR?_gotoxy?LCD
0000                 347     _gotoxy:
                     348             USING   0
                     349                             ; SOURCE LINE # 43
0000 8C00     F      350             MOV     y?647,R4
0002 8D00     F      351             MOV     y?647+01H,R5
                     352     ;---- Variable 'x?646' assigned to Register 'R6/R7' ----
                     353     ; {  if(x==1)
                     354                             ; SOURCE LINE # 44
0004 EF              355             MOV     A,R7
0005 6401            356             XRL     A,#01H
0007 4E              357             ORL     A,R6
0008 7006            358             JNZ     ?C0009
                     359     ;  write_LCD_command(GOTO_LINE_1+y);
                     360                             ; SOURCE LINE # 45
000A E500     F      361             MOV     A,y?647+01H
000C 2480            362             ADD     A,#080H
000E 8004            363             SJMP    ?C0016
0010                 364     ?C0009:
                     365     ; else 
                     366     ; write_LCD_command(GOTO_LINE_2+y) ;
                     367                             ; SOURCE LINE # 47
0010 E500     F      368             MOV     A,y?647+01H
0012 24C0            369             ADD     A,#0C0H
0014                 370     ?C0016:
0014 FF              371             MOV     R7,A
0015 E4              372             CLR     A
0016 3500     F      373             ADDC    A,y?647

⌨️ 快捷键说明

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