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

📄 master.lst

📁 aduc812精典源代码下载,适合初学者
💻 LST
📖 第 1 页 / 共 2 页
字号:
MASTER                                                                                                        PAGE 1

                       1    ;======================================================================
                       2    ;
                       3    ; Author        : ADI - Apps              www.analog.com/MicroConverter
                       4    ;
                       5    ; Date          : 30 April 1999
                       6    ;
                       7    ; File          : master.asm
                       8    ;
                       9    ; Hardware      : ADuC812
                      10    ;
                      11    ; Description   : Code for a master in an I2C system.
                      12    ;
                      13    ; Reference     : Tech Note, uC001: "Using the ADuC812 I2C Interface"
                      14    ;                 find it at www.analog.com/microconverter
                      15    ;
                      16    ;======================================================================
                      17    
                      18    $MOD812                         ; use ADuC812 & 8052 predefined symbols
                      19    
  0008                20    BITCNT          DATA    8h      ; bit counter for I2C routines
  0030                21    BYTECNT         DATA    030h    ; byte counter for I2C routines
  0032                22    SLAVEADD        DATA    032h    ; slave address for I2C routines
                      23    
  0028                24    FLAGS           DATA    28h
  0040                25    NOACK           BIT     FLAGS.0 ; I2C no acknowledge flag
  0041                26    BUSY            BIT     FLAGS.1 ; I2C busy flag
  0042                27    ERROR           BIT     FLAGS.2 ; I2C error flag
  00B4                28    MISTAKE         BIT     P3.4
                      29    
                      30    ;======================================================================
                      31    
----                  32    CSEG
                      33    
0000                  34    ORG 0000H
                      35    
0000 020122           36            JMP START
                      37    
                      38    ;======================================================================
                      39    
007B                  40    ORG 007BH                       ; Subroutines
                      41    
                      42    ;----------------------------------------------------------------------
                      43    ; DELAY: Create a delay for the main signals ( SCLOCK , SDATA )
                      44    ;----------------------------------------------------------------------
                      45    
007B                  46    DELAY:
                      47    
007B 00               48            NOP
007C 22               49            RET
                      50    
                      51    ;----------------------------------------------------------------------
                      52    ; SENDSTOP: Send the bit stop of the transmission
                      53    ;----------------------------------------------------------------------
                      54    
007D                  55    SENDSTOP:
                      56    
007D D2EE             57            SETB    MDE             ; to enable SDATA pin as an output
007F C2EF             58            CLR     MDO             ; get SDATA ready for stop
MASTER                                                                                                        PAGE 2

0081 D2ED             59            SETB    MCO             ; set clock for stop
0083 117B             60            ACALL   DELAY
0085 D2EF             61            SETB    MDO             ; this is the stop bit
0087 C241             62            CLR     BUSY            ; bus should be released
0089 22               63            RET
                      64    
                      65    ;----------------------------------------------------------------------
                      66    ; SENDBYTE: Send a 8-bits word to the slave
                      67    ;----------------------------------------------------------------------
                      68    
008A                  69    SENDBYTE:
                      70    
008A 750808           71            MOV     BITCNT,#8       ; 8 bits in a byte
                      72    
008D D2EE             73            SETB    MDE             ; to enable SDATA pin as an output      
008F C2EF             74            CLR     MDO
0091 C2ED             75            CLR     MCO
0093 33               76    LOOP:   RLC     A               ; send one bit
0094 92EF             77            MOV     MDO,C           ; put data bit on pin
0096 D2ED             78            SETB    MCO             ; send clock
0098 C2ED             79            CLR     MCO             ; clock is off
009A D508F6           80            DJNZ    BITCNT,LOOP
                      81    
009D C2EE             82            CLR     MDE             ; release data line for acknowledge
009F D2ED             83            SETB    MCO             ; send clock for acknowledge
00A1 30EC02           84            JNB     MDI,NEXT        ; this is a check
00A4 D240             85            SETB    NOACK           ; no acknowledge                
00A6 C2ED             86    NEXT:   CLR     MCO             ; clock for acknowledge
00A8 22               87            RET
                      88    
                      89    
                      90    ;----------------------------------------------------------------------
                      91    ; BITSTART: Send the bit start of the transmission and the slave
                      92    ;           address to the slave
                      93    ;----------------------------------------------------------------------
                      94    
00A9                  95    BITSTART:
                      96    
00A9 D241             97            SETB    BUSY            ; I2C is in progress
00AB D2EE             98            SETB    MDE             ; to enable SDATA pin as an output
00AD C240             99            CLR     NOACK
00AF C242            100            CLR     ERROR
00B1 30ED09          101            JNB     MCO,FAULT
00B4 30EF06          102            JNB     MDO,FAULT
00B7 C2EF            103            CLR     MDO             ; this is
00B9 117B            104            ACALL   DELAY           ; the
00BB C2ED            105            CLR     MCO             ; start bit
00BD C2B4            106    FAULT:  CLR     MISTAKE         ; set error flag
00BF E532            107            MOV     A,SLAVEADD      ; Get slave address
00C1 118A            108            ACALL   SENDBYTE        ; call routine to send slave addr. byte
00C3 22              109            RET
                     110    
                     111    ;----------------------------------------------------------------------
                     112    ; SENDATA: Send all the sequence to the slave ( slave address + data )
                     113    ;----------------------------------------------------------------------
                     114    
00C4                 115    SENDATA:
                     116    
MASTER                                                                                                        PAGE 3

00C4 11A9            117            ACALL   BITSTART
00C6 20EC0C          118            JB      MDI,NEXT1
00C9 7400            119            MOV     A,#00
00CB E0              120    SLOOP:  MOVX    A,@DPTR
00CC 118A            121            ACALL   SENDBYTE
00CE A3              122            INC     DPTR
00CF 204003          123            JB      NOACK,NEXT1
00D2 D530F6          124            DJNZ    BYTECNT,SLOOP
                     125    
00D5 117D            126    NEXT1:  ACALL   SENDSTOP
00D7 E528            127            MOV     A,FLAGS
00D9 5407            128            ANL     A,#07h
00DB 6004            129            JZ      RETOUR
00DD C2B4            130            CLR    P3.4

⌨️ 快捷键说明

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