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

📄 i2cslave.lst

📁 ADuc812的例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     121                                    ; address => no need to store it.
0083 3000FD          122            JNB     GO,$            ; wait for the interrupt. If it is in 
                     123                                    ; recieve mode, it will wait here for
                     124                                    ; a second interrupt, when it 
                     125                                    ; recieves the data bit
0086 C200            126            CLR     GO              ; flag cleared for the next interrupt
0088 2002F6          127            JB      TR,RESET        ; if the slave has just transmitted, 
                     128                                    ; wait for another interrupt. If it has 
                     129                                    ; recieved a data byte send it out the UART
                     130            
008B                 131    SENDUART:       
008B B2B4            132            CPL     LED             ; LED changes each time one byte has been 
                     133                                    ; recieved and another transmitted
                     134    
008D E531            135            MOV     A,INPUT         ; send value recieved out the UART
008F 1200BA          136            CALL    SENDVAL
0092 740A            137            MOV     A,#10
0094 1200A6          138            CALL    SENDCHAR        ; send LF + CR
0097 740D            139            MOV     A,#13
0099 1200A6          140            CALL    SENDCHAR
                     141    
009C 3098E2          142            JNB     RI, RESET       ; repeat (unless UART data received)
                     143    
                     144    
                     145    ; WHEN UART DATA RECEIVED, MOVE DATA TO I2C OUTPUT...
                     146    
009F 859932          147            MOV     OUTPUT, SBUF    ; update OUTPUT byte to new value
00A2 C298            148            CLR     RI              ; must clear RI
00A4 80DB            149            JMP     RESET           ; back to main loop
                     150    
                     151    
                     152    
                     153    ;======================================================================
                     154    ;                             SUBROUTINES
                     155    ;======================================================================
                     156    
                     157    ;____________________________________________________________________
                     158                                                               ; SENDCHAR
                     159    ; sends ASCII value contained in A to UART
                     160    
00A6                 161    SENDCHAR:       
                     162    
00A6 3099FD          163            JNB     TI,$            ; wait til present char gone
00A9 C299            164            CLR     TI              ; must clear TI
00AB F599            165            MOV     SBUF,A
00AD 22              166            RET
                     167    
                     168    
                     169    ;____________________________________________________________________
                     170                                                              ; HEX2ASCII
                     171    ; converts A into the hex character representing the value of A's 
                     172    ; least significant nibble
                     173    
00AE                 174    HEX2ASCII:      
I2CSLAVE                                                                                                      PAGE 4

                     175    
00AE 540F            176            ANL     A,#00Fh
00B0 B40A00          177            CJNE    A,#00Ah,$+3
00B3 4002            178            JC      IO0030
00B5 2407            179            ADD     A,#007h
00B7 2430            180    IO0030: ADD     A,#'0'
00B9 22              181            RET
                     182    
                     183            
                     184    ;____________________________________________________________________
                     185                                                                ; SENDVAL
                     186    ; converts the hex value of A into two ASCII chars, and then spits 
                     187    ; these two characters up the UART. does not change the value of A.
                     188    
00BA                 189    SENDVAL: 
00BA C0E0            190            PUSH    ACC
00BC C4              191            SWAP    A
00BD 11AE            192            CALL    HEX2ASCII
00BF 11A6            193            CALL    SENDCHAR        ; send high nibble
00C1 D0E0            194            POP     ACC
00C3 C0E0            195            PUSH    ACC
00C5 11AE            196            CALL    HEX2ASCII
00C7 11A6            197            CALL    SENDCHAR        ; send low nibble
00C9 D0E0            198            POP     ACC
                     199    
00CB 22              200            RET
                     201    ;____________________________________________________________________
                     202    
                     203    END

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

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
BYTECNT. . . . . . . . . . . . .  D ADDR  0030H  NOT USED  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
ENDINT1. . . . . . . . . . . . .  C ADDR  0052H  
ENDINT2. . . . . . . . . . . . .  C ADDR  0054H  NOT USED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
FIRST. . . . . . . . . . . . . .  B ADDR  0001H  
GO . . . . . . . . . . . . . . .  B ADDR  0000H  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00AEH  
I2CADD . . . . . . . . . . . . .  D ADDR  009BH  PREDEFINED  
I2CCON . . . . . . . . . . . . .  D ADDR  00E8H  PREDEFINED  
I2CDAT . . . . . . . . . . . . .  D ADDR  009AH  PREDEFINED  
I2CI . . . . . . . . . . . . . .  B ADDR  00E8H  PREDEFINED  
I2CTX. . . . . . . . . . . . . .  B ADDR  00E9H  PREDEFINED  
IE2. . . . . . . . . . . . . . .  D ADDR  00A9H  PREDEFINED  
INPUT. . . . . . . . . . . . . .  D ADDR  0031H  
IO0030 . . . . . . . . . . . . .  C ADDR  00B7H  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
MAIN . . . . . . . . . . . . . .  C ADDR  0060H  
OUTPUT . . . . . . . . . . . . .  D ADDR  0032H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RECEIVE. . . . . . . . . . . . .  C ADDR  003EH  NOT USED  
RESET. . . . . . . . . . . . . .  C ADDR  0081H  
RI . . . . . . . . . . . . . . .  B ADDR  0098H  PREDEFINED  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  00A6H  
SENDUART . . . . . . . . . . . .  C ADDR  008BH  NOT USED  
SENDVAL. . . . . . . . . . . . .  C ADDR  00BAH  
TH1. . . . . . . . . . . . . . .  D ADDR  008DH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  
TMOD . . . . . . . . . . . . . .  D ADDR  0089H  PREDEFINED  
TR . . . . . . . . . . . . . . .  B ADDR  0002H  
TR1. . . . . . . . . . . . . . .  B ADDR  008EH  PREDEFINED  
TRANSMIT . . . . . . . . . . . .  C ADDR  004BH  

⌨️ 快捷键说明

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