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

📄 1302-12232f.lst

📁 时钟温度计(用1302、18B20、12232F显示器)    汇编代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER  1302_12232F                                                          08/17/2005 07:55:12 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN E:\05年学生用单片机实验板\实验1-时钟温度计(用1302、18B20、12232F显示器)\1302-12232F.OBJ
ASSEMBLER INVOKED BY: C:\KEIL\C51\BIN\A51.EXE E:\05年学生用单片机实验板\实验1-时钟温度计(用1302、18B20、12232F显示器)\13
                      02-12232F.ASM DB SB

LOC  OBJ            LINE     SOURCE

                       1     ;****************************************************************;
                       2     ;                 时钟\温度计程序( 用1302\18B20\12232F显示)                    ;
                       3     ;                                                                ;
                       4     ;              AT89C52/12M晶振/编写者LRM/2005.07.10               ;
                       5     ;                                                                ;
                       6     ;****************************************************************;
                       7     ;
                       8     ; 从1302中读出的数据放在 52H(小时)51H(分钟)50H(秒)
                       9     ; 时间显示缓冲单元:70H-79H: 72H-73H(45H-44H)小时,75H-76H(43H-42H)分钟,78H-79H(41H-40H)秒
                      10     ; 温度显示缓冲单元:60H-67H: :\空\百\十\个\小数点\小数位\空\℃
                      11     ; 定时器T1为时间调整时候闪烁用。
                      12     ; 显示式样第一行为:    时间: 15:38:12
                      13     ; 显示式样第二行为:    温度: 100.5
                      14     ;*****************定义*********************;
  00B4                15                                 PLAYFLG  EQU P3.4     ; 主程序运行指示灯用
  0090                16                                    SCLK  EQU P1.0      ; 1302时钟口,1302第7脚
  0091                17                                     IO   EQU P1.1      ;  数据口,1302第6脚
  0092                18                                     RST  EQU P1.2      ;  使能口,1302第5脚
  0082                19                                   SPEAK  BIT P0.2     ;
  00B2                20                                    KEY2  BIT P3.2
  00A6                21                                  KEYSW0  EQU  P2.6     ;  调时按键
  00A7                22                                  KEYSW1  EQU  P2.7     ;  加1按键
  0052                23                                     hour DATA 52H      ;  1302读出时
  0051                24                                   mintue DATA 51H      ;  1302读出分
  0050                25                                   second DATA 50H      ;  1302读出秒
  0032                26                              DS1302_ADDR DATA 32H      ;  1302需操作的地址数据存放
  0031                27                              DS1302_DATA DATA 31H      ;  1302读出或需写入的数据存放
  0030                28                              INTCON      DATA 30H      ;  闪烁中断计时用
  0006                29                              CON_DATA    DATA 06H      ;  闪烁时间=65*6=0.39秒
  0033                30                              CON1S       DATA 33H      ;  1秒计时用,温度1-2秒测量一次
  000F                31                              CON1S_DATA  DATA 0FH      ;  测温间隔定时值65*15ms
  0007                32                              FLG1S       EQU  07H      ;  1秒到标志
                      33     ;************LCD定义***********************;
  0094                34                                 LAMPBLAK EQU        P1.4          ;背光灯控制,=0时开,=1时关.
  0095                35                                 CS       EQU        P1.5          ;液晶使能,=1操作,=0禁止.
  0096                36                                 SID      EQU        P1.6          ;液晶串行数据输入口
  0097                37                                 CLK      EQU        P1.7          ;液晶串行操作时钟口
                      38     ;温度部分定义
  0030                39                             TEMPHEAD        EQU     30H             ;
  0026                40                             TEMPL           DATA    26H
  0027                41                             TEMPH           DATA    27H
  0028                42                             TEMPHC          DATA    28H
  0029                43                             TEMPLC          DATA    29H
  0093                44                             TEMPDIN         BIT     P1.3
                      45     ;
  00B6                46             VSDA            BIT P3.6 ; EEPROM数据传送口,24C16的5脚
  00B5                47             VSCL            BIT P3.5 ; EEPROM时钟传送口 ,24C16的6脚
                      48     ;
                      49     ;*********************程序入口*********************;
                      50     ;
0000                  51                                       ORG 0000H
0000 02002C           52                                       LJMP  START
0003                  53                                       ORG 0003H
0003 32               54                                       RETI
000B                  55                                       ORG 000BH
000B 02026A           56                                       LJMP INTT0
0013                  57                                       ORG 0013H
A51 MACRO ASSEMBLER  1302_12232F                                                          08/17/2005 07:55:12 PAGE     2

0013 32               58                                       RETI
001B                  59                                       ORG 001BH
001B 0202A3           60                                       LJMP INTT1
0023                  61                                       ORG 0023H
0023 32               62                                       RETI
002B                  63                                       ORG 002BH
002B 32               64                                       RETI
                      65     ;
                      66     ;*****************;主程序;*********************;
                      67     ;
002C                  68                     START:
002C C295             69                               CLR  CS                ;液晶操作禁止
002E 758180           70                               mov   SP, #80H         ;堆栈在80H上
0031 75700A           71                               MOV  70H,#0AH          ;放北京时间后的“:”代码字
0034 75710F           72                               MOV  71H,#0FH          ;空
0037 75740A           73                               MOV  74H,#0AH          ; ": "
003A 75770A           74                               MOV  77H,#0AH          ; ": "
003D 120543           75                               LCALL READTEMP         ;上电时先温度转换一次
0040 758911           76                               MOV TMOD,#11H  ;计数器1,方式1
0043 758B00           77                               MOV TL1,#00H
0046 758D00           78                               MOV TH1,#00H
0049 758A00           79                               MOV TL0,#00H    ;1秒定时用
004C 758C00           80                               MOV TH0,#00H
004F 753006           81                               MOV INTCON,#CON_DATA
0052 C200             82                               CLR  00H        ;清闪烁标志
0054 C201             83                               CLR  01H        ;清闪烁标志
0056 E4               84                               CLR A                           ;
0057 F8               85                               MOV R0, A                       ;从24C16中 0000H开始读出4个字节放
                             在40H始单元
0058 7940             86                               MOV R1, #40H                    ;
005A 7F04             87                               MOV R7, #04H                    ;
005C 120708           88                               LCALL C16SERD                   ;
005F D2AF             89                               SETB EA
0061 75328E           90                               MOV DS1302_ADDR,#8EH
0064 753100           91                               MOV DS1302_DATA,#00H ;允许写1302
0067 1202EE           92                               LCALL WRITE
006A 753280           93                               MOV    DS1302_ADDR,#80H
006D 753100           94                               MOV    DS1302_DATA,#00H ;1302晶振开始振荡
0070 1202EE           95                               LCALL  WRITE
0073 753290           96                               MOV  DS1302_ADDR,#90H
0076 7531A6           97                               MOV  DS1302_DATA,#0A6H;1302充电,充电电流1.1MA
0079 1202EE           98                               LCALL  WRITE
007C 75328E           99                               MOV    DS1302_ADDR,#8EH
007F 753180          100                               MOV    DS1302_DATA,#80H ;禁止写入1302
0082 1202EE          101                               LCALL  WRITE
                     102     ;
0085 1203A0          103                               LCALL SETUP            ;LCD初始化
0088 120382          104                               LCALL LOGON            ;开机显示画面
008B 120360          105                               LCALL TIME             ;上行显示"时间: 00:00:00"
008E 1205FB          106                               LCALL TEMPP            ;下行显示“温度:
0091 D2A9            107                               SETB  ET0
0093 D28C            108                               SETB  TR0
0095 C207            109                               CLR   FLG1S
0097 75330F          110                               MOV   CON1S,#CON1S_DATA
009A 01EF            111                               AJMP  MAIN11
                     112     ;以下主程序
009C 753285          113                   MAIN1:      MOV    DS1302_ADDR,#85H  ;读出小时
009F 120326          114                               LCALL   READ
00A2 853152          115                               MOV     hour,DS1302_DATA
00A5 753283          116                               MOV    DS1302_ADDR,#83H  ;读出分钟
00A8 120326          117                               LCALL   READ
00AB 853151          118                               MOV    mintue,DS1302_DATA
00AE 753281          119                               MOV    DS1302_ADDR,#81H  ;读出秒
00B1 120326          120                               LCALL  READ
00B4 853150          121                               MOV   second,DS1302_DATA
                     122                               ;
A51 MACRO ASSEMBLER  1302_12232F                                                          08/17/2005 07:55:12 PAGE     3

00B7 A852            123                               MOV    R0,hour ;小时分离,送显示缓存
00B9 1202E4          124                               LCALL  DIVIDE
00BC 8973            125                               MOV    73H,R1   ;时个位
00BE 8944            126                               MOV    44H,R1
00C0 8A72            127                               MOV    72H,R2   ;时十位
00C2 8A45            128                               MOV    45H,R2
00C4 A851            129                               MOV    R0,mintue ;分钟分离,送显示缓存
00C6 1202E4          130                               LCALL  DIVIDE
00C9 8976            131                               MOV    76H,R1   ;时个位
00CB 8942            132                               MOV    42H,R1
00CD 8A75            133                               MOV    75H,R2   ;时十位
00CF 8A43            134                               MOV    43H,R2
00D1 A850            135                               MOV    R0,second  ;秒分离,送显示缓存
00D3 1202E4          136                               LCALL  DIVIDE
00D6 8979            137                               MOV    79H,R1  ;秒个位
00D8 8940            138                               MOV    40H,R1
00DA 8A78            139                               MOV    78H,R2  ;秒十位
00DC 8A41            140                               MOV    41H,R2
00DE 12036B          141                               LCALL  TIMEUP                  ;时间显示涮新一次
00E1 30A608          142                               JNB    KEYSW0,SETGG  ;调整时间控制键
00E4 30B220          143                               JNB    KEY2,BAOJSET ;设置温度报警
00E7 100705          144                               JBC    FLG1S,MAIN11
00EA 019C            145                               AJMP   MAIN1
00EC 0201A5          146     SETGG:                    LJMP   SETG
00EF                 147     MAIN11:
00EF 120559          148                               LCALL READTEMP1               ;读出温度值子程序
00F2 12058C          149                               LCALL CONVTEMP                ;温度BCD 码计算处理子程序
00F5 120607          150                               LCALL DISPTEMP                ;温度值显示涮新子程序
00F8 120277          151                               LCALL BAOJ                    ; 报警处理
00FB 120543          152                               LCALL READTEMP                ;再发一次转换温度命令
00FE D28C            153                               SETB  TR0
0100 D2A9            154                               SETB  ET0
0102 B2B4            155                               CPL   PLAYFLG                 ;程序运行指示灯
0104 02009C          156                               LJMP MAIN1
                     157     ;
0107 12044E          158             BAOJSET:     LCALL   DELAY1
010A 30B2FA          159                          JNB     KEY2,BAOJSET
010D C2A9            160                          CLR    ET0
010F C28C            161                          CLR    TR0
0111 7490            162                          MOV  A,#90H               ;第二行左第一个字开始
0113 1203DC          163                          LCALL WRITE_COM
0116 9004D6          164                          MOV  DPTR,#CHINESE4       ;16*16点阵“报警-----”
0119 120468          165                          LCALL WRITE_HZ
011C 854066          166                          MOV    66H,40H
011F 854164          167                          MOV    64H,41H
0122 854263          168                          MOV    63H,42H
0125 854362          169                          MOV    62H,43H
0128 75600A          170                          MOV     60H,#0AH                ;  :
012B 75610F          171                          MOV     61H,#0FH                ;  空
012E 756511          172                          MOV     65H,#11H                ;  小数点.
0131 75670F          173                          MOV     67H,#0FH                ;  空
0134 120646          174                          LCALL   TEMPUP                 ;显示报警温度
0137 7962            175                          MOV     R1,#62H
0139                 176                SET10:

⌨️ 快捷键说明

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