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

📄 lcd.ls1

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
008A                 594     ?C0045:
008A 90F800          595             MOV     DPTR,#0F800H
008D F0              596             MOVX    @DPTR,A
                     597     ;                       }       
                     598                             ; SOURCE LINE # 200
                     599     ;               }
                     600                             ; SOURCE LINE # 201
008E                 601     ?C0017:
008E 0F              602             INC     R7
008F 80D2            603             SJMP    ?C0015
                     604     ;       }
                     605                             ; SOURCE LINE # 202
0091                 606     ?C0014:
0091 0E              607             INC     R6
0092 80B0            608             SJMP    ?C0012
                     609     ; }
                     610                             ; SOURCE LINE # 203
0094                 611     ?C0020:
0094 22              612             RET     
                     613     ; END OF _lcd_display_graphic
                     614     
                     615     ; 
                     616     ; 
                     617     ; /****************************************************************************************
                             **
                     618     ; *函数名:              lcd_display_char
                     619     ; *参数:                        XStart                          开始显示的X坐标像素值
                     620     ;                               YStart                          开始显示的Y坐标像素值
                     621     ;                               bReverseDisplay         标识是否反显,1为反显,0为不反显
                     622     ;                               character                       显示字符的ASCII码表值
                     623     ; *返回值:              无
                     624     ; *描述:                        字符显示程序
                     625     ; *编写:                        王绍伟
                     626     ; *版本信息:            V1.0                            2003年8月15日
                     627     ; *****************************************************************************************
                             */
                     628     ; extern void lcd_display_char(                         /*为整个PAGE显示,不能任意位置*/
                     629     
----                 630             RSEG  ?PR?_lcd_display_char?LCD
0000                 631     L?0048:
                     632             USING   0
0000 FF              633             MOV     R7,A
0001 A3              634             INC     DPTR
A51 MACRO ASSEMBLER  LCD                                                                  10/31/2003 02:22:22 PAGE    11

0002 E0              635             MOVX    A,@DPTR
0003 FD              636             MOV     R5,A
0004 A200     F      637             MOV     C,bReverseDisplay?873
0006 9200     F      638             MOV     ?_lcd_display_char?BIT,C
0008 900000   F      639             MOV     DPTR,#Result?876
000B E0              640             MOVX    A,@DPTR
000C                 641     L?0049:
000C 900000   F      642             MOV     DPTR,#g_Data2Char
000F 93              643             MOVC    A,@A+DPTR
0010                 644     L?0050:
0010 900000   F      645             MOV     DPTR,#?_lcd_display_char?BYTE+02H
0013 F0              646             MOVX    @DPTR,A
0014                 647     _lcd_display_char:
                     648             USING   0
                     649                             ; SOURCE LINE # 217
                     650     ;---- Variable 'YStart?656' assigned to Register 'R5' ----
                     651     ;---- Variable 'XStart?655' assigned to Register 'R1' ----
0014 A907            652             MOV     R1,AR7
                     653     ;                                                       byte XStart,
                     654     ;                                                       byte YStart,
                     655     ;                                                       bool bReverseDisplay,
                     656     ;                                                       byte character)                    
                                 
                     657     ; {     
                     658                             ; SOURCE LINE # 222
                     659     ;       byte PageCounter;               /*页标志*/
                     660     ;       byte ColumnCounter;             /*X位置标志*/
                     661     ;       byte PageStart;                 /*起始页码*/
                     662     ;       byte PageEnd;                   /*终止页码*/
                     663     ;       byte code *pChar;               /*指向字符存放数据(按page划分存储)区的指针*/
                     664     ; 
                     665     ;       pChar = g_ASCII[character-0x20];        /*r根据ASCI码表,*/
                     666                             ; SOURCE LINE # 229
0016 900000   F      667             MOV     DPTR,#character?658
0019 E0              668             MOVX    A,@DPTR
001A 75F010          669             MOV     B,#010H
001D A4              670             MUL     AB
001E 2400     F      671             ADD     A,#LOW (g_ASCII+0FE00H)
0020 F582            672             MOV     DPL,A
0022 E5F0            673             MOV     A,B
0024 3400     F      674             ADDC    A,#HIGH (g_ASCII+0FE00H)
                     675     ;---- Variable 'pChar?663' assigned to Register 'R2/R3' ----
0026 AB82            676             MOV     R3,DPL
0028 FA              677             MOV     R2,A
                     678     ;       PageStart = YStart >> 3;                /*r由于是整页显示,不能随意位置,所以指定除8*
                             /
                     679                             ; SOURCE LINE # 230
0029 AF05            680             MOV     R7,AR5
002B EF              681             MOV     A,R7
002C 13              682             RRC     A
002D 13              683             RRC     A
002E 13              684             RRC     A
002F 541F            685             ANL     A,#01FH
0031 FF              686             MOV     R7,A
                     687     ;---- Variable 'PageStart?661' assigned to Register 'R7' ----
                     688     ;       PageEnd = PageStart + 2;                /*r一个字符在纵向占两个page*/
                     689                             ; SOURCE LINE # 231
0032 2402            690             ADD     A,#02H
0034 900000   F      691             MOV     DPTR,#PageEnd?662
0037 F0              692             MOVX    @DPTR,A
                     693     ;       
                     694     ;       for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
                     695                             ; SOURCE LINE # 233
                     696     ;---- Variable 'PageCounter?659' assigned to Register 'R6' ----
0038 AE07            697             MOV     R6,AR7
003A                 698     ?C0021:
A51 MACRO ASSEMBLER  LCD                                                                  10/31/2003 02:22:22 PAGE    12

003A 900000   F      699             MOV     DPTR,#PageEnd?662
003D E0              700             MOVX    A,@DPTR
003E FF              701             MOV     R7,A
003F EE              702             MOV     A,R6
0040 C3              703             CLR     C
0041 9F              704             SUBB    A,R7
0042 5040            705             JNC     ?C0029
                     706     ;       {
                     707                             ; SOURCE LINE # 234
                     708     ;               SetColumn(XStart);
                     709                             ; SOURCE LINE # 235
0044 AF01            710             MOV     R7,AR1
0046 120000   F      711             LCALL   _SetColumn
                     712     ;               SetPage(PageCounter);
                     713                             ; SOURCE LINE # 236
0049 AF06            714             MOV     R7,AR6
004B 120000   F      715             LCALL   _SetPage
                     716     ; 
                     717     ;               RS = 1;
                     718                             ; SOURCE LINE # 238
004E 90F802          719             MOV     DPTR,#0F802H
0051 7401            720             MOV     A,#01H
0053 F0              721             MOVX    @DPTR,A
                     722     ;               for(ColumnCounter = 0; ColumnCounter < 8; ColumnCounter++)      /*r一个字符
                             在横向占8列*/
                     723                             ; SOURCE LINE # 239
                     724     ;---- Variable 'ColumnCounter?660' assigned to Register 'R7' ----
0054 E4              725             CLR     A
0055 FF              726             MOV     R7,A
0056                 727     ?C0024:
                     728     ;               {
                     729                             ; SOURCE LINE # 240
                     730     ;                       if(!bReverseDisplay)
                     731                             ; SOURCE LINE # 241
0056 200010   F      732             JB      bReverseDisplay?657,?C0027
                     733     ;                       {
                     734                             ; SOURCE LINE # 242
                     735     ;                               WLCD = *pChar++;
                     736                             ; SOURCE LINE # 243
0059 0B              737             INC     R3
005A EB              738             MOV     A,R3
005B AC02            739             MOV     R4,AR2
005D 7001            740             JNZ     ?C0043
005F 0A              741             INC     R2
0060                 742     ?C0043:
0060 14              743             DEC     A
0061 F582            744             MOV     DPL,A
0063 8C83            745             MOV     DPH,R4
0065 E4              746             CLR     A
0066 93              747             MOVC    A,@A+DPTR
                     748     ;                       }
                     749                             ; SOURCE LINE # 244
0067 800F            750             SJMP    ?C0046
0069                 751     ?C0027:
                     752     ;                       else
                     753     ;                       {
                     754                             ; SOURCE LINE # 246
                     755     ;                               WLCD = ~(*pChar++);
                     756                             ; SOURCE LINE # 247
0069 0B              757             INC     R3
006A EB              758             MOV     A,R3
006B AC02            759             MOV     R4,AR2
006D 7001            760             JNZ     ?C0044
006F 0A              761             INC     R2
0070                 762     ?C0044:
0070 14              763             DEC     A
A51 MACRO ASSEMBLER  LCD                                                                  10/31/2003 02:22:22 PAGE    13

0071 F582            764             MOV     DPL,A
0073 8C83            765             MOV     DPH,R4
0075 E4              766             CLR     A
0076 93              767             MOVC    A,@A+DPTR
0077 F4              768             CPL     A
0078                 769     ?C0046:
0078 90F800          770             MOV     DPTR,#0F800H
007B F0              771             MOVX    @DPTR,A
                     772     ;                       }
                     773                             ; SOURCE LINE # 248
                     774     ;               }
                     775                             ; SOURCE LINE # 249
007C                 776     ?C0026:
007C 0F              777             INC     R7
007D EF              778             MOV     A,R7
007E B408D5          779             CJNE    A,#08H,?C0024
                     780     ;       }
                     781                             ; SOURCE LINE # 250
0081                 782     ?C0023:
0081 0E              783             INC     R6
0082 80B6            784             SJMP    ?C0021
                     785     ; }
                     786                             ; SOURCE LINE # 251
0084                 787     ?C0029:
0084 22              788             RET     
                     789     ; END OF _lcd_display_char
                     790     
                     791     ; 
                     792     ; 
                     793     ; /****************************************************************************************
                             **

⌨️ 快捷键说明

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