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

📄 lcd2402.lst

📁 51单片机开发入门与典型实例
💻 LST
📖 第 1 页 / 共 4 页
字号:
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN LCD2402.OBJ
ASSEMBLER INVOKED BY: C:\Keil 7.06\C51\BIN\A51.EXE LCD2402.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;--------------------------------
                       2     ;文件名称:LCD2402.ASM
                       3     ;程序功能:温度控制器
                       4     ;--------------------------------        
  0024                 5               TEMP_ZH   EQU   24H    ;实时温度值存放单元
  0025                 6               TEMPL     EQU   25H    ;低温度值存放单元
  0026                 7               TEMPH     EQU   26H    ;高温度值存放单元
  0027                 8               TEMP_TH   EQU   27H    ;高温报警值存放单元
  0028                 9               TEMP_TL   EQU   28H    ;低温报警值存放单元
  0029                10               TEMPHC    EQU   29H    ;存十位数 BCD码
  002A                11               TEMPLC    EQU   2AH    ;存个位数 BCD码
                      12     ;--------------------------------
  00A1                13               K1     EQU  P2.1
  00A2                14               K2     EQU  P2.2
  00A3                15               K3     EQU  P2.3
  00A4                16               K4     EQU  P2.4
                      17     ;--------------------------------
  00B4                18               SPK    EQU  P3.4
  00A0                19               RELAY  EQU  P2.0
  002F                20               X      EQU  2FH      ;LCD 地址变量
                      21     ;--------------------------------          
  00B5                22               RS     EQU  P3.5
  00B6                23               RW     EQU  P3.6
  00B7                24               E      EQU  P3.7
                      25     ;--------------------------------         
  0000                26               FLAG   EQU  20H.0    ;DS18B20是否存在标记
  0001                27               KEY_UD EQU  20H.1    ;设定 KEY 的UP与DOWN 标记
  00A5                28               DQ     EQU P2.5
                      29     
                      30     ;======================== 主程序 ==========================
                      31     
0000                  32     MAIN:     
0000 7129             33               ACALL  SET_LCD     ;LCD初始化设置子程序
0002 31DB             34               ACALL  WR_THL      ;将报警上下线写入暂存寄存器
                      35     
0004 51C3             36     TOOP:     ACALL  RESET_1820   ;18B20复位子程序
0006 300008           37               JNB    FLAG,TOOP1    ;DS1820不存在
0009 7173             38               ACALL  MEU_OK       ;显示"OK"菜单
000B 5108             39               ACALL  RE_THL       ;把EEROM里温度报警值拷贝回暂存器
000D 7143             40               ACALL  TEMP_BJ      ;显示温度标记"C"
000F 8006             41               JMP    TOOP2
0011 71A4             42     TOOP1:    ACALL  MEU_ERROR     ;显示"ERROR"菜单
0013 7143             43               ACALL  TEMP_BJ       ;显示温度标记
0015 80FE             44               JMP    $
                      45     ;--------------------------
0017                  46     TOOP2:
0017 1121             47               ACALL  RE_TEMP
0019 113B             48               ACALL   SET_DATA
001B 319F             49               ACALL  TEMP_COMP      ;实际温度值与标记温度值比较子程序
001D 1142             50               ACALL  P_KEY          ;键扫描子程序
001F 80F6             51               SJMP  TOOP2
                      52     
                      53     ;--------- 读取温度数据子程序 ---------
                      54     
0021                  55     RE_TEMP:
0021 51C3             56               ACALL  RESET_1820    ;18B20复位子程序    
0023 3000EB           57               JNB    FLAG,TOOP1      ;DS1820不存在
0026 74CC             58               MOV    A,#0CCH        ;跳过ROM匹配
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     2

0028 51ED             59               ACALL  WRITE_1820    ;写入子程序
002A 7444             60               MOV    A,#44H         ;发出温度转换命令
002C 51ED             61               ACALL  WRITE_1820    ;调写入子程序     
002E 51C3             62               ACALL  RESET_1820    ;调复位子程序        
0030 74CC             63               MOV    A,#0CCH        ;跳过ROM匹配
0032 51ED             64               ACALL  WRITE_1820    ;写入子程序
0034 74BE             65               MOV    A,#0BEH        ;发出读温度命令
0036 51ED             66               ACALL  WRITE_1820    ;写入子程序      
0038 7105             67               ACALL  READ_1820      ;调用读入子程序
003A 22               68               RET
                      69     
                      70     ;-------- 温度数据处理显示子程序----------
                      71      
003B                  72      SET_DATA:
003B 5114             73               ACALL  CONV_TEMP     ;处理温度 BCD 码子程序
003D 518F             74               ACALL  DISP_BCD      ;显示区 BCD 码温度值刷新子程序
003F 71F2             75               ACALL  CONV           ;数据转换子程序        
0041 22               76               RET
                      77     
                      78     ;----------- 按键键扫描子程序 ----------
                      79     
0042                  80     P_KEY:   ;按键K1处理                            
0042 20A115           81              JB    K1,PK1             ; K1键未按,转到PK1处 
0045 916A             82              ACALL  SPK_BZ            ;K1键按下,一声鸣响
0047 30A1FD           83              JNB   K1,$               ;等按键放开
004A 90011D           84              MOV   DPTR,#M_ALAX1      ;存M_ALAX1表
004D 7401             85              MOV   A,#1
004F 71D5             86              ACALL  LCD_PRINT         ;显示字符
0051 11FF             87              ACALL  LOOK_ALARM         ;显示信息区
0053 20A3FD           88              JB    K3,$               ;等待K3按下
0056 916A             89              ACALL  SPK_BZ            ;一声鸣响
0058 8015             90              JMP   PK2                ;转到标号 PK2处 
005A                  91     PK1:    ; 按键K2处理
005A 20A216           92              JB    K2,PK3             ;K2键未按,转到PK3处             
005D 916A             93              ACALL  SPK_BZ             ;K2键按下,一声鸣响               
005F 30A2FD           94              JNB   K2,$               ;等按键放开                
0062 900074           95              MOV   DPTR,#TA1          ;存#TA1表           
0065 7401             96              MOV   A,#1                             
0067 71D5             97              ACALL  LCD_PRINT          ;显示字符           
0069 1184             98              ACALL  SET_ALARM          ;设定报警值 TH、TL          
006B 31DB             99              ACALL  WR_THL             ;将设定的TH,TL值写入DS18B20内
006D 31FB            100              ACALL  WRITE_E2           ;
006F                 101     PK2:
006F 7173            102              ACALL  MEU_OK            ;显示"OK"菜单
0071 7143            103              ACALL  TEMP_BJ           ;显示温度标记          
0073                 104     PK3:
0073 22              105              RET
                     106     ;-----------------------------------
0074                 107     TA1:
0074 52455345        108          DB  "RESET ALERT CODE"
0078 5420414C                
007C 45525420                
0080 434F4445                
                     109     ;-----------------------------------
                     110     
                     111     ;---------- 设定报警值 TH、TL子程序 ---------
                     112     
                     113     ;设定报警值 TH、TL
0084                 114     SET_ALARM:
0084 11FF            115              ACALL  LOOK_ALARM
0086                 116     A0:
0086 20A107          117              JB     K1,A2
0089 916A            118              ACALL  SPK_BZ
008B 30A1FD          119              JNB    K1,$
008E B201            120              CPL    20H.1            ;UP/DOWN 标记
0090 200102          121     A2:      JB     20H.1,A3           ;20H.1=1,UP
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     3

0093 8037            122              JMP    A8                ;20H.1=0,DOWN
                     123     
0095 20A214          124     A3:      JB     K2,A5             ;TH值调整(增加)
0098 916A            125              ACALL  SPK_BZ
009A 0527            126              INC    TEMP_TH
009C E527            127              MOV    A,TEMP_TH
009E B47803          128              CJNE   A,#120,A4
00A1 752700          129              MOV    TEMP_TH,#0
00A4 11FF            130     A4:      ACALL  LOOK_ALARM
00A6 7D0A            131              MOV    R5,#10
00A8 917D            132              ACALL  DELAY
00AA 80E9            133              JMP    A3
                     134     
00AC 20A314          135     A5:      JB     K3,A7          ;TL值调整(增加)
00AF 916A            136              ACALL   SPK_BZ
00B1 0528            137              INC    TEMP_TL
00B3 E528            138              MOV    A,TEMP_TL
00B5 B46303          139              CJNE   A,#99,A6
00B8 752800          140              MOV    TEMP_TL,#00H
00BB 11FF            141     A6:      ACALL  LOOK_ALARM    ;
00BD 7D0A            142              MOV    R5,#10
00BF 917D            143              ACALL  DELAY
00C1 80E9            144              JMP    A5
00C3 20A4C0          145     A7:      JB     K4,A0          ;确定调整 OK
00C6 916A            146              ACALL  SPK_BZ
00C8 30A4FD          147              JNB    K4,$
00CB 22              148              RET
                     149     
00CC                 150     A8:
00CC 20A213          151              JB     K2,A10          ;TH值调整 (减少)
00CF 916A            152              ACALL  SPK_BZ
00D1 1527            153              DEC    TEMP_TH
00D3 E527            154              MOV    A,TEMP_TH
00D5 B4FF02          155              CJNE   A,#0FFH,A9
00D8 801E            156              JMP    A12
00DA 11FF            157     A9:      ACALL  LOOK_ALARM
00DC 7D0A            158              MOV    R5,#10
00DE 917D            159              ACALL  DELAY
00E0 80A4            160              JMP    A0
                     161     
00E2 20A317          162     A10:     JB     K3,A13         ;TL值调整(减少)
00E5 916A            163              ACALL  SPK_BZ
00E7 1528            164              DEC    TEMP_TL
00E9 E528            165              MOV    A,TEMP_TL
00EB B4FF02          166              CJNE   A,#0FFH,A11
00EE 8008            167              JMP    A12
00F0 11FF            168     A11:     ACALL  LOOK_ALARM    ;
00F2 7D0A            169              MOV    R5,#10
00F4 917D            170              ACALL  DELAY
00F6 808E            171              JMP    A0
00F8 B201            172     A12:     CPL    20H.1
00FA 8099            173              JMP    A3
00FC 80C5            174     A13:     JMP    A7
00FE 22              175              RET
                     176     
                     177     ;---------- 显示信息区子程序  ----------- 
                     178     
00FF                 179     LOOK_ALARM:
                     180     
00FF 90012E          181               MOV    DPTR,#M_ALAX2   ;指针指到显示信息区
0102 7402            182               MOV    A,#2            ;显示在第二行
0104 71D5            183               ACALL  LCD_PRINT
                     184     
0106 74C6            185               MOV    A,#0C6H
0108 313F            186               ACALL  TEMP_BJ1
010A E527            187               MOV    A,TEMP_TH       ;加载TH数据
A51 MACRO ASSEMBLER  LCD2402                                                              01/05/2007 14:57:13 PAGE     4

010C 752F03          188               MOV    X,#3            ;设置位置
010F 3152            189               ACALL  SHOW_LINE2H     ;显示数据
                     190     
0111 74CE            191               MOV    A,#0CEH
0113 313F            192               ACALL  TEMP_BJ1
0115 E528            193               MOV    A,TEMP_TL       ;加载TL数据
0117 752F0C          194               MOV    X,#12           ;设置位置
011A 317F            195               ACALL  SHOW_LINE2L     ;显示数据
011C 22              196               RET
                     197     ;-------------------------------
011D                 198     M_ALAX1:
011D 204C4F4F        199          DB   " LOOK ALERT CODE",0
0121 4B20414C                
0125 45525420                
0129 434F4445                
012D 00                      
012E                 200     M_ALAX2:
012E 54483A20        201          DB   "TH:      TL:    ",0
0132 20202020                
0136 20544C3A                
013A 20202020                
013E 00                      
                     202     ;-------------------------------
013F                 203     TEMP_BJ1:
013F 9138            204               ACALL  WR_COMM
0141 900150          205               MOV    DPTR,#BJ2      ;指针指到显示信息区
0144 7900            206               MOV    R1,#0
0146 7802            207               MOV    R0,#2
                     208     
0148 E9              209     B0:       MOV    A,R1
0149 93              210               MOVC   A,@A+DPTR
014A 9145            211               ACALL  WR_DATA
014C 09              212               INC    R1
014D D8F9            213               DJNZ   R0,B0
014F 22              214               RET
0150                 215     BJ2:
0150 0043            216          DB  00H,"C"
                     217     
                     218     ;----------------------------------
                     219     
0152                 220     SHOW_LINE2H:                ;在 LCD 的第二行显示数字
0152 75F064          221               MOV    B,#100
0155 84              222               DIV    AB
0156 2430            223               ADD    A,#30H

⌨️ 快捷键说明

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