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

📄 vs1307.lst

📁 关于温度传感器和电机测速的单片机程序
💻 LST
字号:
A51 MACRO ASSEMBLER  VS1307                                                               11/14/2005 19:19:02 PAGE     1


MACRO ASSEMBLER A51 V7.00a
OBJECT MODULE PLACED IN VS1307.OBJ
ASSEMBLER INVOKED BY: D:\MCU\Keil51\C51\BIN\A51.EXE VS1307.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1             NAME    READBYT
                       2             PUBLIC  WriteTim
                       3             PUBLIC  ReadTim
                       4     
  00B6                 5             SCL     BIT P3.6
  00B7                 6             SDA     BIT P3.7
                       7             
  00D0                 8             DS1307W EQU 0D0H
  00D1                 9             DS1307R EQU 0D1H
                      10     
                      11     
                      12     VS1307  SEGMENT CODE 
----                  13             RSEG  VS1307
                      14     ;-------------------------------------------------------------------------
                      15     ; THESE SUB SENDS THE START & STOP CONDITIONS
                      16     ;-------------------------------------------------------------------------
0000                  17     SEND_START:
0000 D2B7             18             SETB    SDA
0002 120000   F       19             LCALL   SCL_HIGH        ; SDA
0005 C2B7             20             CLR     SDA
0007 120000   F       21             LCALL   DELAY           ; SCL ^START CONDITION
000A C2B6             22             CLR     SCL
000C 22               23             RET
000D                  24     SEND_STOP:
000D C2B7             25             CLR     SDA             ; SDA
000F 120000   F       26             LCALL   SCL_HIGH ;
0012 D2B7             27             SETB    SDA             ; SCL ^STOP CONDITION
0014 22               28             RET
                      29     ;-------------------------------------------------------------------------
                      30     ; THIS SUB SENDS ONE BYTE OF DATA TO THE DS1307
                      31     ;-------------------------------------------------------------------------
0015                  32     SEND_BYTE:
0015 C0F0             33             PUSH    B
0017 75F008           34             MOV     B,#08H          ; SET COUNTER FOR 8 BITS
001A                  35     SB_LOOP:
001A 33               36             RLC     A               ; CHECK TO SEE IF BIT 7 OF ACC IS A 1
001B 92B7             37             MOV     SDA,C
001D 120000   F       38             LCALL   SCL_HIGH        ; TRANSITION SCL LOW蠺O蠬IGH
0020 C2B6             39             CLR     SCL             ; TRANSITION SCL HIGH蠺O蠰OW
0022 D5F0F5           40             DJNZ    B,SB_LOOP       ; LOOP FOR 8 BITS
0025 D2B7             41             SETB    SDA             ; SET SDA HIGH TO LOOK FOR ACKNOWLEDGE PULSE
0027 120000   F       42             LCALL   SCL_HIGH        ; TRASITION SCL LOW TO HIGH
                      43     
002A A2B7             44             MOV     C,SDA
002C 120000   F       45             LCALL   DELAY           ; DELAY FOR AN OPERATION
002F C2B6             46             CLR     SCL             ; TRANSITION SCL  HIGH O蠰OW
0031 120000   F       47             LCALL   DELAY           ; DELAY FOR AN OPERATION
0034 D0F0             48             POP     B
0036 22               49             RET
                      50     ;-------------------------------------------------------------------------
                      51     ; THIS SUB READS ONE BYTE OF DATA FROM THE DS1307
                      52     ;-------------------------------------------------------------------------
0037                  53     READ_BYTE:
0037 C0F0             54             PUSH    B
0039 75F008           55             MOV     B,#08H          ; SET COUNTER FOR 8 BITS OF DATA
003C 7400             56             MOV     A,#00H
003E D2B7             57             SETB    SDA             ; SET SDA HIGH TO ENSURE LINE FREE
0040                  58     READ_BITS:
A51 MACRO ASSEMBLER  VS1307                                                               11/14/2005 19:19:02 PAGE     2

0040 120000   F       59             LCALL   SCL_HIGH        ; TRANSITION SCL LOW蠺O蠬IGH
0043 A2B7             60             MOV     C,SDA           ; MOVE DATA BIT INTO CARRY BIT
0045 33               61             RLC     A               ; ROTATE CARRY BIT INTO ACC.0
0046 C2B6             62             CLR     SCL             ; TRANSITION SCL HIGH蠺O蠰OW
0048 D5F0F5           63             DJNZ    B,READ_BITS     ; LOOP FOR 8 BITS
004B C2B7             64             CLR     SDA             ; ACKNOWLEDGE BIT
004D 120000   F       65             LCALL   SCL_HIGH        ; PULSE SCL TO TRANSIMIT ACKNOWLEDGE
0050 C2B6             66             CLR     SCL             ; OR NOT ACKNOWLEDGE BIT
0052 D0F0             67             POP     B
0054 22               68             RET
                      69     
0055                  70     READ_LAST:
0055 C0F0             71             PUSH    B
0057 75F008           72             MOV     B,#08H          ; SET COUNTER FOR 8 BITS OF DATA
005A 7400             73             MOV     A,#00H
005C D2B7             74             SETB    SDA             ; SET SDA HIGH TO ENSURE LINE FREE
005E                  75     R8_BITS:
005E 120000   F       76             LCALL   SCL_HIGH        ; TRANSITION SCL LOW蠺O蠬IGH
0061 A2B7             77             MOV     C,SDA           ; MOVE DATA BIT INTO CARRY BIT
0063 33               78             RLC     A               ; ROTATE CARRY BIT INTO ACC.0
0064 C2B6             79             CLR     SCL             ; TRANSITION SCL HIGH蠺O蠰OW
0066 D5F0F5           80             DJNZ    B,R8_BITS       ; LOOP FOR 8 BITS
0069 D2B7             81             SETB    SDA
006B 120000   F       82             LCALL   SCL_HIGH        ; PULSE SCL TO TRANSIMIT ACKNOWLEDGE
006E C2B6             83             CLR     SCL             ; OR NOT ACKNOWLEDGE BIT
0070 D0F0             84             POP     B
0072 22               85             RET
                      86     ;-------------------------------------------------------------------------
                      87     ; THIS SUB SETS THE CLOCK LINE HIGH
                      88     ;-------------------------------------------------------------------------
0073                  89     SCL_HIGH:
0073 D2B6             90             SETB    SCL             ; SET SCL HIGH
0075 30B6FD           91             JNB     SCL,$           ; LOOP UNTIL STRONG 1 ON SCL
0078 22               92             RET
                      93     ;-------------------------------------------------------------------------
                      94     ; DELAY & DELAY_4 to lower THE BUS
                      95     ;-------------------------------------------------------------------------
0079 00               96     DELAY:  NOP                     ; DELAY FOR BUS TIMING
007A 22               97             RET
007B                  98     DELAY_4:
007B 00               99             NOP                     ; DELAY FOR BUS TIMING
007C 00              100             NOP
007D 00              101             NOP
007E 00              102             NOP
007F 22              103             RET
                     104     ;-------------------------------------------------------------------------
                     105     ; THIS SUB READS THE CLOCK AND WRITES IT TO THE SCRATCH PAD MEMORY ;
                     106     ;-------------------------------------------------------------------------
0080                 107     ReadTim:
0080 120000   F      108             LCALL   SEND_START      ; SEND START CONDITION
0083 74D0            109             MOV     A,#DS1307W      ; SET POINTER TO REG 00H ON DS1307
0085 120000   F      110             LCALL   SEND_BYTE
0088 7400            111             MOV     A,#00H
008A 120000   F      112             LCALL   SEND_BYTE
008D 120000   F      113             LCALL   SEND_STOP       ; SEND STOP CONDITION
                     114     
0090 120000   F      115             LCALL   SEND_START      ; SEND START CONDITION
0093 74D1            116             MOV     A,#DS1307R      ; SEND READ COMMAND TO DS1307
0095 120000   F      117             LCALL   SEND_BYTE
                     118             
0098 7820            119             MOV     R0,#20H
009A 75F007          120             MOV     B,#07h
009D                 121     READ0_6:
009D 120000   F      122             LCALL   READ_BYTE       ; READ A BYTE OF DATA
00A0 F6              123             MOV     @R0,A           ; MOVE DATA IN SCRATCHPAD MEMORY
00A1 08              124             INC     R0
A51 MACRO ASSEMBLER  VS1307                                                               11/14/2005 19:19:02 PAGE     3

00A2 D5F0F8          125             DJNZ    B,READ0_6
00A5                 126     READ7:
00A5 120000   F      127             LCALL   READ_LAST       
00A8 F6              128             MOV     @R0,A           ; MOVE DATA IN SCRATCHPAD MEMORY
00A9 08              129             INC     R0
                     130     ;-------------------------------------------------------------------------
                     131     ; THIS SUB SETS THE CLOCK (MANUAL)
                     132     ;-------------------------------------------------------------------------
00AA                 133     WriteTim:
00AA 7820            134             MOV     R0,#20H         ; POINT TO BEGINNING OF CLOCK DATA IN SCRATCHPAD MEMORY
00AC 120000   F      135             LCALL   SEND_START      ; SEND 2WIRE START CONDITION
00AF 74D0            136             MOV     A,#DS1307W      ; SEND DS1307 WRITE COMMAND
00B1 120000   F      137             LCALL   SEND_BYTE
00B4 7400            138             MOV     A,#00H          ; SET DATA POINTER TO REGISTER 00H ON
00B6 120000   F      139             LCALL   SEND_BYTE       ; THE DS1307
00B9 75F008          140             MOV     B,#08h  
00BC                 141     SEND_LOOP:
00BC E6              142             MOV     A,@R0           ; MOVE THE FIRST BYTE OF DATA TO ACC
00BD 120000   F      143             LCALL   SEND_BYTE       ; SEND DATA ON 2WIRE BUT
00C0 08              144             INC     R0
00C1 D5F0F8          145             DJNZ    B,SEND_LOOP     ; LOOP UNTIL CLOCK DATA SENT TO DS1307
00C4 120000   F      146             LCALL   SEND_STOP       ; SEND 2WIRE STOP CONDITION
00C7 22              147             RET
                     148             END
                             
                                     
A51 MACRO ASSEMBLER  VS1307                                                               11/14/2005 19:19:02 PAGE     4

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


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

B. . . . . . . . .  D ADDR   00F0H   A   
DELAY. . . . . . .  C ADDR   0079H   R   SEG=VS1307
DELAY_4. . . . . .  C ADDR   007BH   R   SEG=VS1307
DS1307R. . . . . .  N NUMB   00D1H   A   
DS1307W. . . . . .  N NUMB   00D0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
R8_BITS. . . . . .  C ADDR   005EH   R   SEG=VS1307
READ0_6. . . . . .  C ADDR   009DH   R   SEG=VS1307
READ7. . . . . . .  C ADDR   00A5H   R   SEG=VS1307
READBYT. . . . . .  N NUMB   -----       
READTIM. . . . . .  C ADDR   0080H   R   SEG=VS1307
READ_BITS. . . . .  C ADDR   0040H   R   SEG=VS1307
READ_BYTE. . . . .  C ADDR   0037H   R   SEG=VS1307
READ_LAST. . . . .  C ADDR   0055H   R   SEG=VS1307
SB_LOOP. . . . . .  C ADDR   001AH   R   SEG=VS1307
SCL. . . . . . . .  B ADDR   00B0H.6 A   
SCL_HIGH . . . . .  C ADDR   0073H   R   SEG=VS1307
SDA. . . . . . . .  B ADDR   00B0H.7 A   
SEND_BYTE. . . . .  C ADDR   0015H   R   SEG=VS1307
SEND_LOOP. . . . .  C ADDR   00BCH   R   SEG=VS1307
SEND_START . . . .  C ADDR   0000H   R   SEG=VS1307
SEND_STOP. . . . .  C ADDR   000DH   R   SEG=VS1307
VS1307 . . . . . .  C SEG    00C8H       REL=UNIT
WRITETIM . . . . .  C ADDR   00AAH   R   SEG=VS1307


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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