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

📄 1

📁 RM51单片机实验板配套实验例程库
💻
📖 第 1 页 / 共 5 页
字号:
                                                                    页     1
                                                                    11-20-05
                                                                    09:53:56
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;****************************************************************;
            ;                 时钟\温度计程序( 用1302\18B20\12232F显示)                    ;
            ;                                                                ;
            ;              AT89C52/12M晶振/编写者LRM/2005.07.10               ;
            ;                                                                ;
            ;****************************************************************;
            ;
            ; 从1302中读出的数据放在 52H(小时)51H(分钟)50H(秒)
            ; 时间显示缓冲单元:70H-79H: 72H-73H(45H-44H)小时,75H-76H(43H-42H)分钟,78H-79H(41H-40H)秒
            ; 温度显示缓冲单元:60H-67H: :\空\百\十\个\小数点\小数位\空\℃
            ; 定时器T1为时间调整时候闪烁用。
            ; 显示式样第一行为:    时间: 15:38:12
            ; 显示式样第二行为:    温度: 100.5 ℃
            ;*****************定义*********************;
                                        PLAYFLG  EQU P3.4     ; 主程序运行指示灯用
                                           SCLK  EQU P1.0      ; 1302时钟口,1302第7脚
                                            IO   EQU P1.1      ;  数据口,1302第6脚
                                            RST  EQU P1.2      ;  使能口,1302第5脚
                                          SPEAK  BIT P0.2     ;
                                           KEY2  BIT P3.2
                                         KEYSW0  EQU  P2.6     ;  调时按键
                                         KEYSW1  EQU  P2.7     ;  加1按键
                                            hour DATA 52H      ;  1302读出时
                                          mintue DATA 51H      ;  1302读出分
                                          second DATA 50H      ;  1302读出秒
                                     DS1302_ADDR DATA 3EH      ;  1302需操作的地址数据存放
                                     DS1302_DATA DATA 3DH      ;  1302读出或需写入的数据存放
                                     INTCON      DATA 3CH      ;  闪烁中断计时用
                                     CON_DATA    DATA 06H      ;  闪烁时间=65*6=0.39秒
                                     CON1S       DATA 3BH      ;  1秒计时用,温度1-2秒测量一次
                                     CON1S_DATA  DATA 0FH      ;  测温间隔定时值65*15ms
                                     FLG1S       EQU  07H      ;  1秒到标志
            ;************LCD定义***********************;
                                        LAMPBLAK EQU        P1.4          ;背光灯控制,=0时开,=1时关.
                                        CS	     EQU	P1.5          ;液晶使能,=1操作,=0禁止.
                                        SID      EQU	P1.6          ;液晶串行数据输入口
                                        CLK	     EQU	P1.7          ;液晶串行操作时钟口
            ;温度部分定义
                                    TEMPHEAD        EQU	30H		;
            	                TEMPL		DATA	26H
            	                TEMPH		DATA	27H
            	                TEMPHC		DATA	28H
            	                TEMPLC		DATA	29H
                                    TEMPDIN         BIT     P1.3
            ;
                    VSDA            BIT P3.6 ; EEPROM数据传送口,24C16的5脚
                    VSCL            BIT P3.5 ; EEPROM时钟传送口 ,24C16的6脚
                    BDATA           DATA 2AH  ;百十个小数位比较用


D:\温度时钟器示范程序\25.ASM                                    
 
                                                                    页     2
                                                                    11-20-05
                                                                    09:53:56
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

                    SDATA           DATA 2BH
                    GDATA           DATA 2CH
                    XSDATA          DATA 2DH
                    BELL            BIT    P0.2             ;呜叫器
            ;
            ;*********************程序入口*********************;
            ;
                                              ORG 0000H
0000 02002C                                   LJMP  START
                                              ORG 0003H
0003 32                                       RETI
                                              ORG 000BH
000B 0202A6                                   LJMP INTT0
                                              ORG 0013H
0013 32                                       RETI
                                              ORG 001BH
001B 0202DF                                   LJMP INTT1
                                              ORG 0023H
0023 32                                       RETI
                                              ORG 002BH
002B 32                                       RETI
            ;
            ;*****************;主程序;*********************;
            ;
                            START:
002C C295                             CLR  CS                ;液晶操作禁止
002E 758180 	                  mov   SP, #80H         ;堆栈在80H上
0031 75700A                           MOV  70H,#0AH          ;放北京时间后的“:”代码字
0034 75710F                           MOV  71H,#0FH          ;空
0037 75740A                           MOV  74H,#0AH          ; ": "
003A 75770A                           MOV  77H,#0AH          ; ": "
003D 1205E1                           LCALL	READTEMP	 ;上电时先温度转换一次
0040 758911                           MOV TMOD,#11H  ;计数器1,方式1
0043 758B00                           MOV TL1,#00H
0046 758D00                           MOV TH1,#00H
0049 758A00                           MOV TL0,#00H    ;1秒定时用
004C 758C00                           MOV TH0,#00H
004F 753C06                           MOV INTCON,#CON_DATA
0052 C200                             CLR  00H        ;清闪烁标志
0054 C201                             CLR  01H        ;清闪烁标志
0056 E4                               CLR A                           ;
0057 F8                               MOV R0, A                       ;从24C16中 0000H开始读出4个字节放在40H始单元
0058 792A                             MOV R1, #BDATA                  ;
005A 7F04                             MOV R7, #04H                    ;
005C 1207A6                           LCALL C16SERD                   ;
005F D2AF                             SETB EA
0061 753E8E                           MOV DS1302_ADDR,#8EH
0064 753D00                           MOV DS1302_DATA,#00H ;允许写1302


D:\温度时钟器示范程序\25.ASM                                    
 
                                                                    页     3
                                                                    11-20-05
                                                                    09:53:56
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0067 12033F                           LCALL WRITE
006A 753E80                           MOV    DS1302_ADDR,#80H
006D 753D00                           MOV    DS1302_DATA,#00H ;1302晶振开始振荡
0070 12033F                           LCALL  WRITE
0073 753E90                           MOV  DS1302_ADDR,#90H
0076 753DA6                           MOV  DS1302_DATA,#0A6H;1302充电,充电电流1.1MA
0079 12033F                           LCALL  WRITE
007C 753E8E                           MOV    DS1302_ADDR,#8EH
007F 753D80                           MOV    DS1302_DATA,#80H ;禁止写入1302
0082 12033F                           LCALL  WRITE
            ;
0085 12040F        	                  LCALL SETUP            ;LCD初始化
0088 1203D3                           LCALL LOGON            ;开机显示画面1
008B 1203F1                           LCALL LOGON1            ;开机显示画面2
008E 1203B1                           LCALL TIME             ;上行显示"时间: 00:00:00"
0091 120699                           LCALL TEMPP            ;下行显示“温度:
0094 D2A9                             SETB  ET0
0096 D28C                             SETB  TR0
0098 C207                             CLR   FLG1S
009A 753B0F                           MOV   CON1S,#CON1S_DATA
009D 01F2                             AJMP  MAIN11
            ;以下主程序
009F 753E85               MAIN1:      MOV    DS1302_ADDR,#85H  ;读出小时
00A2 120377                           LCALL   READ
00A5 853D52                           MOV     hour,DS1302_DATA
00A8 753E83                           MOV    DS1302_ADDR,#83H  ;读出分钟
00AB 120377                           LCALL   READ
00AE 853D51                           MOV    mintue,DS1302_DATA
00B1 753E81                           MOV    DS1302_ADDR,#81H  ;读出秒
00B4 120377                           LCALL  READ
00B7 853D50                           MOV   second,DS1302_DATA
                                      ;
00BA A852                             MOV    R0,hour ;小时分离,送显示缓存
00BC 120335                           LCALL  DIVIDE
00BF 8973                             MOV    73H,R1   ;时个位
00C1 8944                             MOV    44H,R1
00C3 8A72                             MOV    72H,R2   ;时十位
00C5 8A45                             MOV    45H,R2
00C7 A851                             MOV    R0,mintue ;分钟分离,送显示缓存
00C9 120335                           LCALL  DIVIDE
00CC 8976                             MOV    76H,R1   ;时个位
00CE 8942                             MOV    42H,R1
00D0 8A75                             MOV    75H,R2   ;时十位
00D2 8A43                             MOV    43H,R2
00D4 A850                             MOV    R0,second  ;秒分离,送显示缓存
00D6 120335                           LCALL  DIVIDE
00D9 8979                             MOV    79H,R1  ;秒个位
00DB 8940                             MOV    40H,R1


D:\温度时钟器示范程序\25.ASM                                    
 
                                                                    页     4
                                                                    11-20-05
                                                                    09:53:56
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

00DD 8A78                             MOV    78H,R2  ;秒十位
00DF 8A41                             MOV    41H,R2
00E1 1203BC                           LCALL  TIMEUP                  ;时间显示涮新一次
00E4 30A608                           JNB    KEYSW0,SETGG  ;调整时间控制键
00E7 30B220                           JNB    KEY2,BAOJSET ;设置温度报警
00EA 100705                           JBC    FLG1S,MAIN11
00ED 019F                             AJMP   MAIN1
00EF 0201AC SETGG:                    LJMP   SETG
            MAIN11:
00F2 1205F7                           LCALL	READTEMP1		;读出温度值子程序
00F5 12062A                           LCALL	CONVTEMP		;温度BCD 码计算处理子程序
00F8 1206A5                           LCALL DISPTEMP                ;温度值显示涮新子程序
00FB 1202B3                           LCALL BAOJ                    ; 报警处理
00FE 1205E1                           LCALL	READTEMP                ;再发一次转换温度命令
0101 D28C                             SETB  TR0
0103 D2A9                             SETB  ET0
0105 B2B4                             CPL   PLAYFLG                 ;程序运行指示灯
0107 02009F                           LJMP MAIN1
            ;
010A 1204BD         BAOJSET:     LCALL   DELAY1
010D 30B2FA                      JNB     KEY2,BAOJSET
0110 C2A9                        CLR    ET0
0112 C2AF                        CLR    EA
0114 C28C                        CLR    TR0
0116 7490                        MOV  A,#90H	       ;第二行左第一个字开始
0118 12044B 	             LCALL WRITE_COM
011B 90054D 	             MOV  DPTR,#CHINESE4       ;16*16点阵“报警-----”
011E 1204D7 	             LCALL WRITE_HZ
0121 756600                      MOV    66H,#00H
0124 852C64                      MOV    64H,GDATA
0127 852B63                      MOV    63H,SDATA
012A 852A62                      MOV    62H,BDATA
012D 75600A                      MOV     60H,#0AH                ;  :
0130 75610F                      MOV     61H,#0FH                ;  空
0133 756511                      MOV     65H,#11H                ;  小数点.
0136 75670F                      MOV     67H,#0FH                ;  空
0139 1206E4                      LCALL   TEMPUP                 ;显示报警温度
013C 7862                        MOV     R0,#62H
                       SET10:
013E 30B20C                     JNB     KEY2,SET2
0141 30A619                     JNB     KEYSW0,SAFEADD1
0144 30A724                     JNB     KEYSW1,SAFESUBB1
0147 1206E4                     LCALL   TEMPUP                 ;显示报警温度
014A 02013E                     LJMP    SET10
014D 1204BD            SET2:    LCALL   DELAY1
0150 30B2FA                     JNB     KEY2,SET2
0153 08                         INC     R0
0154 E8                         MOV     A,R0


D:\温度时钟器示范程序\25.ASM                                    
 
                                                                    页     5
                                                                    11-20-05
                                                                    09:53:56
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0155 C3                         CLR     C
0156 B46500                     CJNE    A,#65H,SET101
0159 40E3           SET101:     JC      SET10
015B 2179                       AJMP    SETOUT
            ;
015D 1204BD        SAFEADD1:    LCALL   DELAY1
0160 30A6FA                     JNB     KEYSW0,SAFEADD1
0163 E6                         MOV     A,@R0
0164 12019A                     LCALL   ADD11
0167 F6                         MOV     @R0,A
0168 02013E                     LJMP    SET10
016B 1204BD        SAFESUBB1:   LCALL   DELAY1
016E 30A7FA                     JNB     KEYSW1,SAFESUBB1
0171 E6                         MOV     A,@R0
0172 1201A4                     LCALL   SUBB11
0175 F6                         MOV     @R0,A
0176 02013E                     LJMP    SET10
            ;
0179 85622A        SETOUT:      MOV    BDATA,62H
017C 85632B                     MOV    SDATA,63H
017F 85642C                     MOV    GDATA,64H
0182 85662D                     MOV    XSDATA,66H
0185 E4                         CLR A            ; 把4 字节写入24C16的0000H开始地址中
0186 F8                         MOV R0, A        ;
0187 792A                       MOV R1, #BDATA   ;
0189 7F04                       MOV R7, #4       ;R7中的最大数据在1-16
018B 120748                     LCALL C16PAWR    ;
018E 120699 	            LCALL TEMPP
0191 D2A9                       SETB    ET0
0193 D2AF                       SETB     EA
0195 D28C                       SETB    TR0
0197 02009F MAIN111:            LJMP    MAIN1
            ;
            ADD11:
019A 2401                       ADD    A,#01H
019C B40A00                     CJNE   A,#0AH,OLOOP
019F 4002          OLOOP:       JC    OUTT
01A1 7400                       MOV   A,#00H
01A3 22            OUTT:        RET
            ;
                   SUBB11:
01A4 6002                       JZ     PPP1
01A6 14                         DEC    A
01A7 22            OUTP:        RET
01A8 7409          PPP1:        MOV    A,#09H
01AA 21A7                       AJMP   OUTP
            ;******************公历设置程序*********************;
            ;


D:\温度时钟器示范程序\25.ASM                                    
 
                                                                    页     6
                                                                    11-20-05
                                                                    09:53:56
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

01AC 1204BD                   SETG :   LCALL DELAY1
01AF 20A6E5                            JB   KEYSW0,MAIN111
01B2 D28E                              SETB TR1
01B4 D2AB                              SETB ET1
01B6 C28C                              CLR  TR0
01B8 C2A9                              CLR  ET0
01BA 757800                            MOV  78H,#00H         ;调时时秒位为0
01BD 757900                            MOV  79H,#00H         ;调时时秒位为0
01C0 754000                            MOV  40H,#00H         ;调时时秒位为0
01C3 754100                            MOV  41H,#00H         ;调时时秒位为0
01C6 753E8E                            MOV DS1302_ADDR,#8EH
01C9 753D00                            MOV DS1302_DATA,#00H  ;允许写1302
01CC 12033F                            LCALL WRITE
01CF 753E80                            MOV DS1302_ADDR,#80H
01D2 753D80                            MOV DS1302_DATA,#80H  ;1302停止振荡
01D5 12033F                            LCALL WRITE
01D8 1204BD                 GWAIT8:    LCALL DELAY1

⌨️ 快捷键说明

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