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

📄 lcd2402.lst

📁 51单片机开发入门与典型实例
💻 LST
📖 第 1 页 / 共 4 页
字号:
0158 C0F0            224               PUSH   B
015A 852FF0          225               MOV    B,X
015D 912B            226               ACALL  LCDP2
015F D0F0            227               POP    B
0161 740A            228               MOV    A,#0AH
0163 C5F0            229               XCH    A,B
0165 84              230               DIV    AB
0166 2430            231               ADD    A,#30H
0168 052F            232               INC    X
016A C0F0            233               PUSH   B
016C 852FF0          234               MOV    B,X
016F 912B            235               ACALL  LCDP2
0171 D0F0            236               POP    B
0173 052F            237               INC    X
0175 E5F0            238               MOV    A,B
0177 852FF0          239               MOV    B,X
017A 2430            240               ADD    A,#30H
017C 912B            241               ACALL  LCDP2
017E 22              242               RET
                     243     ;-----------------------------
017F                 244     SHOW_LINE2L:                ;在 LCD 的第二行显示数字
017F 75F064          245               MOV  B,#100
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     5

0182 84              246               DIV  AB
0183 740A            247               MOV  A,#0AH
0185 C5F0            248               XCH  A,B
0187 84              249               DIV  AB
0188 2430            250               ADD  A,#30H
018A C0F0            251               PUSH  B
018C 852FF0          252               MOV  B,X
018F 912B            253               CALL  LCDP2
0191 D0F0            254               POP  B
0193 052F            255               INC  X
0195 E5F0            256               MOV  A,B
0197 852FF0          257               MOV  B,X
019A 2430            258               ADD  A,#30H
019C 912B            259               ACALL  LCDP2
019E 22              260               RET
                     261     ;--------------------------------
                     262     
                     263     ;----------- 温度值比较子程序------------
                     264     
                     265     ;实际温度值与标记温度值比较子程序
019F                 266     TEMP_COMP:
019F E527            267               MOV   A,TEMP_TH       
01A1 9524            268               SUBB  A,TEMP_ZH       ;减数>被减数,则
01A3 400E            269               JC    TCL1            ;借位标志位C=1,转
01A5 E524            270               MOV   A,TEMP_ZH
01A7 9528            271               SUBB  A,TEMP_TL       ;减数>被减数,则
01A9 4012            272               JC    TCL2            ;借位标志位C=1,转
01AB 9001D9          273               MOV   DPTR,#BJ5
01AE 31C5            274               ACALL TEMP_BJ3
01B0 C2A0            275               CLR   RELAY           ;继电器吸合
01B2 22              276               RET
01B3                 277      TCL1:
01B3 9001D5          278               MOV   DPTR,#BJ3       ;存入#BJ3表
01B6 31C5            279               ACALL TEMP_BJ3        ;调用显示高、低温度及加热标记子程序
01B8 D2A0            280               SETB  RELAY           ;继电器关闭
01BA 916A            281               ACALL SPK_BZ
01BC 22              282               RET
01BD                 283      TCL2:
01BD 9001D7          284               MOV    DPTR,#BJ4    ;存入#BJ4表    
01C0 31C5            285               ACALL  TEMP_BJ3     ;调用显示高、低温度及加标记子程序      
01C2 916A            286               ACALL  SPK_BZ       ;调用鸣响子程序
01C4 22              287               RET
                     288     
                     289     ;--- 显示高、低温度及加热标记程序----
01C5                 290     TEMP_BJ3:
01C5 74CE            291               MOV    A,#0CEH
01C7 9138            292               ACALL  WR_COMM
01C9 7900            293               MOV    R1,#0
01CB 7802            294               MOV    R0,#2
                     295     
01CD E9              296     BJJ:      MOV    A,R1
01CE 93              297               MOVC   A,@A+DPTR
01CF 9145            298               ACALL  WR_DATA
01D1 09              299               INC    R1
01D2 D8F9            300               DJNZ   R0,BJJ
01D4 22              301               RET
01D5                 302     BJ3:
01D5 3E48            303              DB  ">H"
01D7                 304     BJ4:
01D7 3C4C            305              DB  "<L"
01D9                 306     BJ5:
01D9 2021            307              DB  " !"
                     308     
                     309     ;--------- 报警上下线写入暂存器子程序 ----------
                     310     
01DB                 311     WR_THL:
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     6

01DB 200001          312             JB      FLAG,WR_T    ;
01DE 22              313             RET
01DF                 314     WR_T:
01DF 51C3            315             ACALL  RESET_1820
01E1 74CC            316             MOV    A,#0CCH       ;跳过ROM匹配
01E3 1202ED          317             LCALL  WRITE_1820
01E6 744E            318             MOV    A,#4EH        ;写暂存寄存器
01E8 1202ED          319             LCALL  WRITE_1820
01EB E527            320             MOV    A,TEMP_TH     ;TH(报警上限)
01ED 1202ED          321             LCALL  WRITE_1820
01F0 E528            322             MOV    A,TEMP_TL     ;TL(报警下限)
01F2 1202ED          323             LCALL  WRITE_1820
01F5 747F            324             MOV    A,#7FH        ;12位精确度
01F7 1202ED          325             LCALL  WRITE_1820
01FA 22              326             RET
                     327     
                     328     ;--------- 报警值拷贝到EEROM子程序 -----------
                     329     
01FB                 330     WRITE_E2:
01FB 51C3            331             ACALL  RESET_1820
01FD 74CC            332             MOV    A,#0CCH        ;跳过ROM匹配
01FF 1202ED          333             LCALL  WRITE_1820
0202 7448            334             MOV    A,#48H         ;[48H]为拷贝到EEROM的指令代码
0204 1202ED          335             LCALL  WRITE_1820
0207 22              336             RET
                     337     
                     338     ;---------- 报警值拷贝回暂存器子程序 ----------
                     339     
0208                 340     RE_THL:
0208 51C3            341             ACALL  RESET_1820
020A 74CC            342             MOV    A,#0CCH        ;跳过ROM匹配
020C 1202ED          343             LCALL  WRITE_1820
020F 74B8            344             MOV    A,#0B8H        ;把EEROM里的温度报警值拷贝回暂存器
0211 51ED            345             ACALL  WRITE_1820
0213 22              346             RET
                     347     
                     348     ;----------  处理温度 BCD 码子程序 -----------
                     349     
                     350     ; 处理温度 BCD 码子程序
0214 E526            351     CONV_TEMP:     MOV  A,TEMPH       ;判温度是否零下
0216 5480            352                    ANL  A,#80H
0218 6011            353                    JZ   TC1           ;温度零上转
021A C3              354                    CLR  C
021B E525            355                    MOV  A,TEMPL       ;二进制数求补(双字节)
021D F4              356                    CPL  A             ;取反加1
021E 2401            357                    ADD  A,#01H
0220 F525            358                    MOV  TEMPL,A
0222 E526            359                    MOV  A,TEMPH
0224 F4              360                    CPL  A
0225 3400            361                    ADDC  A,#00H
0227 F526            362                    MOV  TEMPH,A
0229 8003            363                    SJMP  TC2
                     364     
022B 75290A          365     TC1:           MOV  TEMPHC,#0AH     
022E E529            366     TC2:           MOV  A,TEMPHC
0230 C4              367                    SWAP  A
0231 F529            368                    MOV  TEMPHC,A
0233 E525            369                    MOV  A,TEMPL
0235 540F            370                    ANL  A,#0FH              ;乘0.0625
0237 90027F          371                    MOV  DPTR,#DOTTAB
023A 93              372                    MOVC  A,@A+DPTR
023B F52A            373                    MOV  TEMPLC,A            ;TEMPLC LOW=小数部分 BCD
                     374     
023D E525            375                    MOV  A,TEMPL             ;整数部分
023F 54F0            376                    ANL  A,#0F0H             ;取出高四位
0241 C4              377                    SWAP  A
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     7

0242 F525            378                    MOV  TEMPL,A
0244 E526            379                    MOV  A,TEMPH             ;取出低四位
0246 540F            380                    ANL  A,#0FH
0248 C4              381                    SWAP  A
0249 4525            382                    ORL  A,TEMPL             ;重新组合
024B F524            383                    MOV  TEMP_ZH,A
024D 120271          384                    LCALL  HEX2BCD1
0250 F525            385                    MOV  TEMPL,A
0252 54F0            386                    ANL  A,#0F0H
0254 C4              387                    SWAP  A
0255 4529            388                    ORL  A,TEMPHC            ;TEMPHC LOW = 十位数 BCD
0257 F529            389                    MOV  TEMPHC,A
0259 E525            390                    MOV  A,TEMPL
025B 540F            391                    ANL  A,#0FH
025D C4              392                    SWAP  A                  ;TEMPLC HI = 个位数 BCD
025E 452A            393                    ORL  A,TEMPLC
0260 F52A            394                    MOV  TEMPLC,A
0262 EC              395                    MOV  A,R4
0263 600B            396                    JZ   TC3
0265 540F            397                    ANL  A,#0FH
0267 C4              398                    SWAP  A
0268 FC              399                    MOV  R4,A
0269 E529            400                    MOV  A,TEMPHC            ;TEMPHC HI = 百位数 BCD
026B 540F            401                    ANL  A,#0FH
026D 4C              402                    ORL  A,R4
026E F529            403                    MOV  TEMPHC,A
0270 22              404     TC3:           RET
                     405     ;--------------------------
0271                 406     HEX2BCD1:
0271 75F064          407                   MOV  B,#064H          ;十六进制-> BCD
0274 84              408                   DIV  AB               ;B= A % 100
0275 FC              409                   MOV  R4,A             ;R7 = 百位数
0276 740A            410                   MOV  A,#0AH
0278 C5F0            411                   XCH  A,B
027A 84              412                   DIV  AB               ;B = A % B
027B C4              413                   SWAP  A
027C 45F0            414                   ORL  A,B
027E 22              415                   RET
                     416     
                     417     ;-------------------------
                     418      ; 小数部分码表
027F                 419     DOTTAB:
027F 00000101        420              DB   00H,00H,01H,01H,02H,03H,03H,04H
0283 02030304                
0287 05050606        421              DB   05H,05H,06H,06H,07H,08H,08H,09H
028B 07080809                
                     422     ;-------------------------
                     423     
                     424     ;--------- 显示区BCD 码温度值刷新子程序 ----------
                     425     
                     426     ;显示区 BCD 码温度值刷新
028F                 427     DISP_BCD:
028F E52A            428                   MOV  A,TEMPLC
0291 540F            429                   ANL  A,#0FH
0293 F570            430                   MOV  70H,A                 ;小数位
0295 E52A            431                   MOV  A,TEMPLC
0297 C4              432                   SWAP  A
0298 540F            433                   ANL  A,#0FH
029A F571            434                   MOV  71H,A                 ;个位
029C E529            435                   MOV  A,TEMPHC
029E 540F            436                   ANL  A,#0FH
02A0 F572            437                   MOV  72H,A                 ;十位
02A2 E529            438                   MOV  A,TEMPHC
02A4 C4              439                   SWAP  A
02A5 540F            440                   ANL  A,#0FH
02A7 F573            441                   MOV  73H,A                 ;百位
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     8

02A9 E529            442                   MOV  A,TEMPHC
02AB 54F0            443                   ANL  A,#0F0H
02AD B41002          444                   CJNE  A,#010H,DI0
02B0 8010            445                   SJMP  DI2
                     446     
02B2 E529            447     DI0:         MOV  A,TEMPHC
02B4 540F            448                   ANL  A,#0FH
02B6 700A            449                   JNZ  DI2               ;十位数是0
02B8 E529            450                   MOV  A,TEMPHC
02BA C4              451                   SWAP  A
02BB 540F            452                   ANL  A,#0FH
02BD 75730A          453                   MOV  73H,#0AH               ;符号位不显示
02C0 F572            454                   MOV  72H,A                  ;十位数显示符号
02C2 22              455     DI2:     RET
                     456     
                     457     ;------------------- DS18B20复位初始化子程序 ----------------------
                     458     
02C3                 459      RESET_1820:  ;复位(有具体的时序要求)                       
02C3 D2A5            460            SETB  DQ       
02C5 00              461            NOP
02C6 C2A5            462            CLR   DQ       

⌨️ 快捷键说明

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