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

📄 master.lst

📁 aduc812精典源代码下载,适合初学者
💻 LST
📖 第 1 页 / 共 2 页
字号:
00DF C2EA            131            CLR     I2CRS
00E1 22              132    RETOUR: RET
                     133    
                     134    ;----------------------------------------------------------------------
                     135    ; RCVBYTE: receives one byte of data from an I2C slave device.
                     136    ;----------------------------------------------------------------------
                     137    
00E2                 138    RCVBYTE:
                     139    
00E2 750808          140            MOV     BITCNT,#8       ;Set bit count.
                     141    
00E5 C2EE            142            CLR     MDE             ;Data pin of the master is now an input
00E7 C2ED            143            CLR     MCO
00E9 D2ED            144    LOOP2:  SETB    MCO
00EB C2ED            145            CLR     MCO
00ED A2EC            146            MOV     C,MDI           ;Get data bit from pin.
00EF 33              147            RLC     A               ;Rotate bit into result byte.
                     148    
00F0 D508F6          149            DJNZ    BITCNT,LOOP2    ;Repeat until all bits received.
                     150    
                     151                                    ;result byte is in the accumulator
                     152    
00F3 C0E0            153            PUSH    ACC             ;Save result byte in the stack
                     154    
00F5 D2EE            155            SETB    MDE             ;Data pin of the master must be an..
                     156                                    ;..output for the acknowledge   
00F7 E530            157            MOV     A,BYTECNT
00F9 B40104          158            CJNE    A,#1,SACK       ;Check for last byte of frame.
00FC D2EF            159            SETB    MDO             ;Send no acknowledge on last byte.
00FE 8002            160            SJMP    NACK
                     161    
0100 C2EF            162    SACK:   CLR     MDO             ;Send acknowledge bit.
                     163    
0102 D2ED            164    NACK:   SETB    MCO             ;Send acknowledge clock.
0104 D0E0            165            POP     ACC             ;Restore accumulator
0106 117B            166            ACALL   DELAY
0108 C2ED            167            CLR     MCO
010A D2EF            168            SETB    MDO             ;Clear acknowledge bit.
010C 117B            169            ACALL   DELAY
010E C2EE            170            CLR     MDE
                     171    
0110 22              172            RET
                     173    
                     174    ;----------------------------------------------------------------------
MASTER                                                                                                        PAGE 4

                     175    ; RCVDATA: receives one or more bytes of data from an I2C slave device.
                     176    ;----------------------------------------------------------------------
                     177    
0111 0532            178    RCVDATA:   INC     SLAVEADD       ;Set for READ of slave.
0113 11A9            179               ACALL   BITSTART       ;Acquire bus and send slave address.
0115 204007          180               JB      NoAck,RDEX     ;Check for slave not responding.
                     181    
0118 11E2            182    RDLoop:    ACALL   RCVBYTE        ;Receive next data byte.
011A F7              183               MOV     @R1,A          ;Save data byte in buffer.
011B 09              184               INC     R1             ;Advance buffer pointer.
011C D530F9          185               DJNZ    BYTECNT,RDLoop ;Repeat untill all bytes received.
                     186    
011F 117D            187    RDEX:      ACALL   SENDSTOP       ;Done, send an I2C stop.
0121 22              188               RET
                     189    
                     190    ;======================================================================
                     191    ; Main program
                     192    ;======================================================================
                     193    
0122                 194    START:
                     195    
0122 758140          196            MOV     SP,#040h                
0125 C240            197            CLR     NOACK
0127 753288          198            MOV     SLAVEADD,#088H
012A 753003          199            MOV     BYTECNT,#3
012D 75E8A8          200            MOV     I2CCON,#0A8h
                     201    
                     202    ; code for a write mode ( master-transmitter to slave-receiver )
                     203    
                     204    ;       MOV     DPTR,#080H      ; master transmits to slave
                     205    ;       MOV     A,#055H         ; datas which are located in
                     206    ;       MOVX    @DPTR,A         ; the external memory
                     207    ;       MOV     DPTR,#081H
                     208    ;       MOV     A,#044H
                     209    ;       MOVX    @DPTR,A
                     210    ;       MOV     DPTR,#082H
                     211    ;       MOV     A,#033H
                     212    ;       MOVX    @DPTR,A
                     213    
                     214    ;       MOV     DPTR,#080h
                     215    ;       ACALL   SENDATA
                     216    
                     217    ; code for a read mode ( master reads immediately after first byte )
                     218    
0130 7935            219            MOV     R1,#035h
0132 3111            220            ACALL   RCVDATA
                     221    
                     222    END

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
MASTER                                                                                                        PAGE 5

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
BITCNT . . . . . . . . . . . . .  D ADDR  0008H  
BITSTART . . . . . . . . . . . .  C ADDR  00A9H  
BUSY . . . . . . . . . . . . . .  B ADDR  0041H  
BYTECNT. . . . . . . . . . . . .  D ADDR  0030H  
DELAY. . . . . . . . . . . . . .  C ADDR  007BH  
ERROR. . . . . . . . . . . . . .  B ADDR  0042H  
FAULT. . . . . . . . . . . . . .  C ADDR  00BDH  
FLAGS. . . . . . . . . . . . . .  D ADDR  0028H  
I2CCON . . . . . . . . . . . . .  D ADDR  00E8H  PREDEFINED  
I2CRS. . . . . . . . . . . . . .  B ADDR  00EAH  PREDEFINED  
LOOP . . . . . . . . . . . . . .  C ADDR  0093H  
LOOP2. . . . . . . . . . . . . .  C ADDR  00E9H  
MCO. . . . . . . . . . . . . . .  B ADDR  00EDH  PREDEFINED  
MDE. . . . . . . . . . . . . . .  B ADDR  00EEH  PREDEFINED  
MDI. . . . . . . . . . . . . . .  B ADDR  00ECH  PREDEFINED  
MDO. . . . . . . . . . . . . . .  B ADDR  00EFH  PREDEFINED  
MISTAKE. . . . . . . . . . . . .  B ADDR  00B4H  
NACK . . . . . . . . . . . . . .  C ADDR  0102H  
NEXT . . . . . . . . . . . . . .  C ADDR  00A6H  
NEXT1. . . . . . . . . . . . . .  C ADDR  00D5H  
NOACK. . . . . . . . . . . . . .  B ADDR  0040H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RCVBYTE. . . . . . . . . . . . .  C ADDR  00E2H  
RCVDATA. . . . . . . . . . . . .  C ADDR  0111H  
RDEX . . . . . . . . . . . . . .  C ADDR  011FH  
RDLOOP . . . . . . . . . . . . .  C ADDR  0118H  
RETOUR . . . . . . . . . . . . .  C ADDR  00E1H  
SACK . . . . . . . . . . . . . .  C ADDR  0100H  
SENDATA. . . . . . . . . . . . .  C ADDR  00C4H  NOT USED  
SENDBYTE . . . . . . . . . . . .  C ADDR  008AH  
SENDSTOP . . . . . . . . . . . .  C ADDR  007DH  
SLAVEADD . . . . . . . . . . . .  D ADDR  0032H  
SLOOP. . . . . . . . . . . . . .  C ADDR  00CBH  
SP . . . . . . . . . . . . . . .  D ADDR  0081H  PREDEFINED  
START. . . . . . . . . . . . . .  C ADDR  0122H  

⌨️ 快捷键说明

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