时间程序

来源:互联网 发布:班级介绍ppt模板知乎 编辑:程序博客网 时间:2024/05/17 08:17

/******************************************
2008年12月18编写
利用18B20来实现测量温度值。利用LED显示温度值
******************************************/
/*****************************************
设置164 引脚,
****************************************/
 AB_DATA BIT P0.0
 CLK BIT P0.1
/*****************************************
设置显示LED数码管引脚,
****************************************/
 COM1 BIT P0.2
 COM2 BIT P0.3
 COM3 BIT P0.4
 COM4 BIT P0.5
 COM5 BIT P0.6
 COM6 BIT P0.7
/*****************************************
内部存储空间RAM区间用于显示数码管?
****************************************/
 A_BIT EQU 30H;小数位存放位置
 B_BIT EQU 31H;个数位存放位置
 C_BIT EQU 32H;十数位存放位置
 D_BIT EQU 33H;百数位存放位置
/*****************************************
内部存储空间RAM区间用于存18B20的送来的值
****************************************/
 TEMP_H EQU 35H;用于保存读出温度的高8位
 TEMP_L EQU 36H;用于保存读出温度的低8位
/*****************************************
是否检测到DS18B20标志位
****************************************/ 
 FLAG1 EQU 37H;是否检测到DS18B20标志位
/*****************************************
DS18B20的数据Data传输位
****************************************/
 DQ EQU P2.0
/******************************************
  主程序的编写
******************************************/
 ORG 0000H
 AJMP MAIN
 ORG 0030H
MAIN: MOV SP,#60H
 LCALL GET_TEMP;获取温度值
 LCALL TEMP_CON;温度值转化
 LCALL DISPLAY
 AJMP MAIN
 
GET_TEMP: 
 SETB DQ
 LCALL INIT_18B20
 JB FLAG1,TSS2
 RET ;判断DS1820是否存在?若DS18B20不存在则返回
TSS2: 
 MOV A,#0CCH
 LCALL WRITE_DATA
 MOV A,#44H
 LCALL WRITE_DATA
 LCALL INIT_18B20
 MOV A,#0CCH
 LCALL WRITE_DATA
 MOV A,#0BEH
 LCALL WRITE_DATA
 LCALL READ_DATA
 RET
/******************************************
18B20的初始化程序。要学习18B20的时序资料
******************************************/
INIT_18B20:
 SETB DQ
 NOP
INIT0:
 CLR DQ
 MOV R1,#3
INIT1: 
 MOV R2,#108
 DJNZ R2,$
 DJNZ R1,INIT1
 SETB DQ
 MOV R2,#30
 DJNZ R2,$
 JNB DQ,INIT2
 JMP INIT0
INIT2: 
 SETB FLAG1
 CLR P1.0
 MOV R0,#117
 DJNZ R0,$
 SETB DQ
 RET

/*****************************************************************
对DS18B20的数据Data位写操作,把C的值一位一位地写到DQ引脚上
******************************************************************/
WRITE_DATA:
 MOV R2,#8
 CLR C
WRITE: CLR DQ
 MOV R3,#6
 DJNZ R3,$
 RRC A
 MOV DQ, C
 MOV R3,#23
 DJNZ R3,$
 SETB DQ
 NOP
 DJNZ R2,WRITE
 SETB DQ
 RET
/*****************************************************************
对DS18B20的数据Data位对操作,把DQ引脚上的值一位一位地写到累加器中去
******************************************************************/
READ_DATA:
 MOV R4,#2
 MOV R1,#TEMP_L
READ0:  MOV R2,#8
READ1: CLR C
 SETB DQ
 NOP
 NOP
 CLR DQ
 NOP
 NOP
 NOP
 SETB DQ
 MOV R3,#9
 DJNZ R3,$
 MOV DQ,C
 MOV R3,#23  ;
 DJNZ R3,$
 RRC A
 DJNZ R2,READ1
 MOV @R1,A
 DEC R1
 DJNZ R4,READ0
 RET
/*************************************************************
数据处理子程序
*************************************************************/
TEMP_CON:
  MOV  A,TEMP_L;
         MOV  R0,A
  SWAP  A
  ANL  A,#0FH  ;
  MOV  40H,A ;
  MOV  A,TEMP_H ;
  SWAP  A 
  ORL  A,40H ;
         MOV  B,#100   ;
  DIV  AB  ;商存于A中,余数存于B中
  MOV  41H,B ;
  MOV  D_BIT,A ;符号位
         MOV  A,41H ;
  MOV  B,#10 ;
  DIV  AB
  MOV  C_BIT,A ;十位
  MOV  B_BIT,B ;个位
  MOV  A,R0
  ANL  A,#0FH ;
  MOV  B,#10 ;
  MUL  AB
  MOV  B,#16 ;
  DIV  AB
  MOV  A_BIT,A ;TEMPER_L的低4位*10/16得小数后一位数
  RET

DISPLAY:    MOV  R7,#2  ;
LOOP1:         MOV  R6,#200;显示1000次
LOOP2:         MOV  R0,#79H  ;显示缓冲区首地址
        MOV  DPTR,#TAB ;查表
        MOV  p0,#0FFH ;
loop3:          ;ORL  P0,#0FFH ;关位
disp:  MOV  A,@R0  ;
  MOVC  A, @A+DPTR ;查表取数
  lcall disp2
  CLR  COM4
  MOV  01H,#80
  DJNZ  01H,$  ;再关防止鬼影(岩石50US)
  SETB  COM4
  INC R0
  MOV DPTR,#TAB1
  MOV A,@R0
  MOVC A,@A+DPTR
  LCALL DISP2
  CLR  COM3
  MOV  02H,#80
  DJNZ  02H,$  ;再关防止鬼影(岩石50US)
  SETB  COM3
  INC R0
  MOV  DPTR,#TAB
  MOV  A,@R0  ;
  MOVC  A, @A+DPTR ;查表取数
  lcall disp2
  CLR  COM2
  MOV  03H,#80
  DJNZ  03H,$  ;再关防止鬼影(岩石50US)
  SETB  COM2
  INC R0
  MOV  DPTR,#TAB
  MOV  A,@R0  ;
  MOVC  A, @A+DPTR ;查表取数
  lcall disp2
  CLR   COM1
  MOV  04H,#80
  DJNZ  04H,$  ;再关防止鬼影(岩石50US)
  SETB  COM1
LD1:          DJNZ  R6,LOOP2 ;100次没完循环
  DJNZ  R7,LOOP1 ;4个100次没完循
ld2:  RET
disp2:  MOV 30h,#08H  ; 
DISP0:  RLC A
  MOV AB_DATA,C  ;数据移入164
  CLR CLK
  SETB CLK
  DJNZ 30h,DISP0 ;移完否?
  RET     

TAB:   db 0c0h,0f9h,0a4h,0b0h 
  db 99h,92h,82h,0f8h 
  db 80h,90h,88h,83h  
  db 0c6h,0a1h,86h,8eh 
  db 0bfh,89h,8ch  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TAB1: DB 40H,79H,24H,30H,19H
 DB 12H,02H,78H,00H,10H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
         end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 11/19/2009 19:16:10 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN ./时间程序.obj
ASSEMBLER INVOKED BY: C:/Keil/C51/BIN/A51.EXE ../时间程序/时间程序.asm SET(SMALL) DEBUG PRINT(./时间程序.lst) OBJECT(./?
                      奔涑绦?obj) EP

LOC  OBJ            LINE     SOURCE

                       1    
                       2    
                       3    
                       4    
                       5    
                       6    
  0080                 7             AB_DATA BIT     P0.0
  0081                 8             CLK     BIT     P0.1
                       9    
                      10    
                      11    
  0082                12             COM1    BIT     P0.2
  0083                13             COM2    BIT     P0.3
  0084                14             COM3    BIT     P0.4
  0085                15             COM4    BIT     P0.5
  0086                16             COM5    BIT     P0.6   
  0087                17             COM6    BIT     P0.7
                      18    
                      19    
                      20    
  0030                21             SECOND  EQU     30H
  0031                22             MINUTE  EQU     31H
  0032                23             HOUR    EQU     32H
                      24    
                      25    
                      26    
0000                  27             ORG     0000H
0000 0130             28             AJMP    MAIN
000B                  29             ORG     000BH
000B 01F7             30             AJMP    T0_INT
0030                  31             ORG     0030H
0030 758160           32     MAIN:   MOV     SP,#60H
0033 120041           33             LCALL   T0_INIT
0036 120052           34             LCALL   SYS_INIT
0039 12005C           35     LOOP:   LCALL   TCONVERT
003C 12007F           36             LCALL   DISPLAY
003F 0139             37             AJMP    LOOP
                      38     ;       SJMP    $
0041                  39     T0_INIT:
0041 758901           40             MOV     TMOD,#01H
0044 758C3C           41             MOV     TH0,#3CH
0047 758AB0           42             MOV     TL0,#0B0H
004A 75A882           43             MOV     IE,#82H
004D D28C             44             SETB    TR0
004F 7F14             45             MOV     R7,#14H
0051 22               46             RET
                      47    
                      48    
                      49    
0052                  50     SYS_INIT:
0052 753000           51             MOV     SECOND,#00H
0055 753100           52             MOV     MINUTE,#00H
0058 753212           53             MOV     HOUR,#12H
005B 22               54             RET
005C                  55     TCONVERT:
005C E530             56             MOV     A,SECOND
005E B4601D           57             CJNE    A,#60H,RETURN0
A51 MACRO ASSEMBLER  蔩糭砡_?                                                            11/19/2009 19:16:10 PAGE     2

0061 753000           58             MOV     SECOND,#00H
0064 E531             59             MOV     A,MINUTE
0066 2401             60             ADD     A,#01H
0068 D4               61             DA      A
0069 F531             62             MOV     MINUTE,A
006B B43C10           63             CJNE    A,#60,RETURN0
006E 753100           64             MOV     MINUTE,#00H
0071 E532             65             MOV     A,HOUR
0073 2401             66             ADD     A,#01H
0075 D4               67             DA      A
0076 F532             68             MOV     HOUR,A
0078 B42403           69             CJNE    A,#24H,RETURN0
007B 753200           70             MOV     HOUR,#00H
007E                  71     RETURN0:
007E 22               72             RET
                      73    
                      74    
                      75    
                      76    
                      77    
007F                  78     DISPLAY:
                      79    
                      80    
                      81    
007F E530             82             MOV     A,SECOND
0081 540F             83             ANL     A,#0FH
0083 900109           84             MOV     DPTR,#TAB
0086 93               85             MOVC    A,@A+DPTR
0087 11E2             86             ACALL   SEND
0089 C287             87             CLR     COM6
008B 11EE             88             ACALL   DELAY
008D D287             89             SETB    COM6
008F E530             90             MOV     A,SECOND
0091 C4               91             SWAP    A
0092 540F             92             ANL     A,#0FH
0094 900109           93             MOV     DPTR,#TAB
0097 93               94             MOVC    A,@A+DPTR
0098 11E2             95             ACALL   SEND
009A C286             96             CLR     COM5
009C 11EE             97             ACALL   DELAY
009E D286             98             SETB    COM5
                      99    
                     100    
                     101    
00A0 E531            102             MOV     A,MINUTE
00A2 540F            103             ANL     A,#0FH
00A4 900109          104             MOV     DPTR,#TAB
00A7 93              105             MOVC    A,@A+DPTR
00A8 11E2            106             ACALL   SEND
00AA C285            107             CLR     COM4
00AC 11EE            108             ACALL   DELAY
00AE D285            109             SETB    COM4
00B0 E531            110             MOV     A,MINUTE
00B2 C4              111             SWAP    A
00B3 540F            112             ANL     A,#0FH
00B5 900109          113             MOV     DPTR,#TAB
00B8 93              114             MOVC    A,@A+DPTR
00B9 11E2            115             ACALL   SEND
00BB C284            116             CLR     COM3
00BD 11EE            117             ACALL   DELAY
00BF D284            118             SETB    COM3
                     119    
                     120    
                     121    
00C1 E532            122             MOV     A,HOUR
00C3 540F            123             ANL     A,#0FH
A51 MACRO ASSEMBLER  蔩糭砡_?                                                            11/19/2009 19:16:10 PAGE     3

00C5 900109          124             MOV     DPTR,#TAB
00C8 93              125             MOVC    A,@A+DPTR
00C9 11E2            126             ACALL   SEND
00CB C283            127             CLR     COM2
00CD 11EE            128             ACALL   DELAY
00CF D283            129             SETB    COM2
00D1 E532            130             MOV     A,HOUR
00D3 C4              131             SWAP    A
00D4 540F            132             ANL     A,#0FH
00D6 900109          133             MOV     DPTR,#TAB
00D9 93              134             MOVC    A,@A+DPTR
00DA 11E2            135             ACALL   SEND
00DC C282            136             CLR     COM1
00DE 11EE            137             ACALL   DELAY
00E0 D282            138             SETB    COM1
                     139    
                     140    
                     141            
00E2 7A08            142     SEND:   MOV     R2,#08H
00E4 33              143     TURN:   RLC     A
00E5 9280            144             MOV     AB_DATA,C
00E7 D281            145             SETB    CLK
00E9 C281            146             CLR     CLK
00EB DAF7            147             DJNZ    R2,TURN
00ED 22              148             RET
                     149    
                     150    
                     151    
00EE 7F0A            152     DELAY:  MOV     R7,#10
00F0 7E14            153     DELAY0: MOV     R6,#20
00F2 DEFE            154             DJNZ    R6,$
00F4 DFFA            155             DJNZ    R7,DELAY0
00F6 22              156             RET
                     157    
                     158    
                     159    
                     160    
00F7                 161     T0_INT:
00F7 DF09            162             DJNZ    R7,T0_INT0
00F9 7F14            163             MOV     R7,#14H
00FB E530            164             MOV     A,SECOND
00FD 2401            165             ADD     A,#01H
00FF D4              166             DA      A
0100 F530            167             MOV     SECOND,A
0102 758C3C          168     T0_INT0:MOV     TH0,#3CH
0105 758AB0          169             MOV     TL0,#0B0H
0108                 170     RETURN1:
0108 32              171             RETI
0109 C0              172     TAB:    DB        0C0H;0
010A F9              173             DB        0F9H;1
010B A4              174             DB        0A4H;2
010C B0              175             DB        0B0H;3
010D 99              176             DB        099H;4
010E 92              177             DB        092H;5
010F 82              178             DB        082H;6
0110 F8              179             DB        0F8H;7
0111 80              180             DB        080H;8
0112 90              181             DB        090H;9
                     182             END
A51 MACRO ASSEMBLER  蔩糭砡_?                                                            11/19/2009 19:16:10 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

AB_DATA. . . . . .  B ADDR   0080H.0 A  
CLK. . . . . . . .  B ADDR   0080H.1 A  
COM1 . . . . . . .  B ADDR   0080H.2 A  
COM2 . . . . . . .  B ADDR   0080H.3 A  
COM3 . . . . . . .  B ADDR   0080H.4 A  
COM4 . . . . . . .  B ADDR   0080H.5 A  
COM5 . . . . . . .  B ADDR   0080H.6 A  
COM6 . . . . . . .  B ADDR   0080H.7 A  
DELAY. . . . . . .  C ADDR   00EEH   A  
DELAY0 . . . . . .  C ADDR   00F0H   A  
DISPLAY. . . . . .  C ADDR   007FH   A  
HOUR . . . . . . .  N NUMB   0032H   A  
IE . . . . . . . .  D ADDR   00A8H   A  
LOOP . . . . . . .  C ADDR   0039H   A  
MAIN . . . . . . .  C ADDR   0030H   A  
MINUTE . . . . . .  N NUMB   0031H   A  
P0 . . . . . . . .  D ADDR   0080H   A  
RETURN0. . . . . .  C ADDR   007EH   A  
RETURN1. . . . . .  C ADDR   0108H   A  
SECOND . . . . . .  N NUMB   0030H   A  
SEND . . . . . . .  C ADDR   00E2H   A  
SP . . . . . . . .  D ADDR   0081H   A  
SYS_INIT . . . . .  C ADDR   0052H   A  
T0_INIT. . . . . .  C ADDR   0041H   A  
T0_INT . . . . . .  C ADDR   00F7H   A  
T0_INT0. . . . . .  C ADDR   0102H   A  
TAB. . . . . . . .  C ADDR   0109H   A  
TCONVERT . . . . .  C ADDR   005CH   A  
TH0. . . . . . . .  D ADDR   008CH   A  
TL0. . . . . . . .  D ADDR   008AH   A  
TMOD . . . . . . .  D ADDR   0089H   A  
TR0. . . . . . . .  B ADDR   0088H.4 A  
TURN . . . . . . .  C ADDR   00E4H   A  


REGISTER BANK(S) USED: 0


ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

原创粉丝点击