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

📄 main.ls1

📁 C code for using 8051 to control philiphs I2C FM tuner (use keil c compiler)
💻 LS1
📖 第 1 页 / 共 4 页
字号:
------                  196             RSEG  ?PR?I2C_Start?MAIN
000000                  197     I2C_Start:
                        198             USING   0
                        199                             ; SOURCE LINE # 53
                        200     ; {
                        201                             ; SOURCE LINE # 54
                        202     ;       I2C_SDA_SET;
                        203                             ; SOURCE LINE # 55
000000 438002           204             ORL     P0,#02H
                        205     ;       I2C_SCL_SET;
                        206                             ; SOURCE LINE # 56
000003 438001           207             ORL     P0,#01H
                        208     ;       I2C_NOP();
                        209                             ; SOURCE LINE # 57
000006 1100       F     210             ACALL   I2C_NOP
                        211     ;       I2C_SDA_CLR;
                        212                             ; SOURCE LINE # 58
000008 5380FD           213             ANL     P0,#0FDH
                        214     ;       I2C_NOP();
                        215                             ; SOURCE LINE # 59
00000B 1100       F     216             ACALL   I2C_NOP
                        217     ;       I2C_SCL_CLR;
                        218                             ; SOURCE LINE # 60
00000D 5380FE           219             ANL     P0,#0FEH
                        220     ;       I2C_NOP();
                        221                             ; SOURCE LINE # 61
000010 0100       F     222             AJMP    I2C_NOP
                        223     ; END OF I2C_Start
                        224     
                        225     ; }
                        226     ; 
                        227     ; /* Generate the stop condition */
                        228     ; void I2C_Stop()
                        229     
------                  230             RSEG  ?PR?I2C_Stop?MAIN
000000                  231     I2C_Stop:
                        232             USING   0
                        233                             ; SOURCE LINE # 65
                        234     ; {
                        235                             ; SOURCE LINE # 66
                        236     ;       I2C_SCL_CLR;
                        237                             ; SOURCE LINE # 67
000000 5380FE           238             ANL     P0,#0FEH
                        239     ;       I2C_SDA_CLR;
                        240                             ; SOURCE LINE # 68
000003 5380FD           241             ANL     P0,#0FDH
                        242     ;       I2C_NOP();
                        243                             ; SOURCE LINE # 69
000006 1100       F     244             ACALL   I2C_NOP
                        245     ;       I2C_SCL_SET;
                        246                             ; SOURCE LINE # 70
000008 438001           247             ORL     P0,#01H
                        248     ;       I2C_NOP();
                        249                             ; SOURCE LINE # 71
00000B 1100       F     250             ACALL   I2C_NOP
                        251     ;       I2C_SDA_SET;
                        252                             ; SOURCE LINE # 72
00000D 438002           253             ORL     P0,#02H
                        254     ;       I2C_NOP();
                        255                             ; SOURCE LINE # 73
000010 0100       F     256             AJMP    I2C_NOP
AX51 MACRO ASSEMBLER  MAIN                                                                  08/22/07 12:34:21 PAGE     5

                        257     ; END OF I2C_Stop
                        258     
                        259     ; }
                        260     ; 
                        261     ; /* Master send a byte to the slave device */
                        262     ; void I2C_Send_Byte(unsigned char byte)
                        263     
------                  264             RSEG  ?PR?_I2C_Send_Byte?MAIN
000000                  265     _I2C_Send_Byte:
                        266             USING   0
                        267                             ; SOURCE LINE # 77
000000 8F00       F     268             MOV     byte?240,R7
                        269     ; {
                        270                             ; SOURCE LINE # 78
                        271     ;       unsigned char mask;
                        272     ; 
                        273     ;       /* Send the byte from MSB to LSB */
                        274     ;       for (mask = 0x80 ; mask > 0 ; mask = mask >> 1 )
                        275                             ; SOURCE LINE # 82
000002 750080     F     276             MOV     mask?241,#080H
000005                  277     ?C0003:
000005 E500       F     278             MOV     A,mask?241
000007 D3               279             SETB    C
000008 9400             280             SUBB    A,#00H
00000A 401E             281             JC      ?C0004
                        282     ;       {
                        283                             ; SOURCE LINE # 83
                        284     ;               if (byte & mask)
                        285                             ; SOURCE LINE # 84
00000C E500       F     286             MOV     A,byte?240
00000E 5500       F     287             ANL     A,mask?241
000010 6005             288             JZ      ?C0006
                        289     ;                       I2C_SDA_SET;
                        290                             ; SOURCE LINE # 85
000012 438002           291             ORL     P0,#02H
000015 8003             292             SJMP    ?C0007
000017                  293     ?C0006:
                        294     ;               else
                        295     ;                       I2C_SDA_CLR;
                        296                             ; SOURCE LINE # 87
000017 5380FD           297             ANL     P0,#0FDH
00001A                  298     ?C0007:
                        299     ; 
                        300     ;               I2C_SCL_SET;
                        301                             ; SOURCE LINE # 89
00001A 438001           302             ORL     P0,#01H
                        303     ;               I2C_NOP();
                        304                             ; SOURCE LINE # 90
00001D 1100       F     305             ACALL   I2C_NOP
                        306     ;               I2C_SCL_CLR;
                        307                             ; SOURCE LINE # 91
00001F 5380FE           308             ANL     P0,#0FEH
                        309     ;       }
                        310                             ; SOURCE LINE # 92
000022 E500       F     311             MOV     A,mask?241
000024 C3               312             CLR     C
000025 13               313             RRC     A
000026 F500       F     314             MOV     mask?241,A
000028 80DB             315             SJMP    ?C0003
00002A                  316     ?C0004:
                        317     ; 
                        318     ;       /* Check the Acknowledge from slave device */
                        319     ;       I2C_SDA_SET;
                        320                             ; SOURCE LINE # 95
00002A 438002           321             ORL     P0,#02H
                        322     ;       I2C_SCL_SET;
AX51 MACRO ASSEMBLER  MAIN                                                                  08/22/07 12:34:21 PAGE     6

                        323                             ; SOURCE LINE # 96
00002D 438001           324             ORL     P0,#01H
                        325     ;       I2C_NOP();
                        326                             ; SOURCE LINE # 97
000030 1100       F     327             ACALL   I2C_NOP
                        328     ;       I2C_SCL_CLR;
                        329                             ; SOURCE LINE # 98
000032 5380FE           330             ANL     P0,#0FEH
                        331     ;       I2C_NOP();
                        332                             ; SOURCE LINE # 99
000035 0100       F     333             AJMP    I2C_NOP
                        334     ; END OF _I2C_Send_Byte
                        335     
                        336     ; }
                        337     ; 
                        338     ; /* Master send the slave address */
                        339     ; void I2C_Send_Addr(unsigned char addr, unsigned char dir)
                        340     
------                  341             RSEG  ?PR?_I2C_Send_Addr?MAIN
000000                  342     _I2C_Send_Addr:
                        343             USING   0
                        344                             ; SOURCE LINE # 103
                        345     ;---- Variable 'dir?343' assigned to Register 'R5' ----
                        346     ;---- Variable 'addr?342' assigned to Register 'R7' ----
                        347     ; {
                        348                             ; SOURCE LINE # 104
                        349     ;       I2C_Send_Byte(addr + dir);
                        350                             ; SOURCE LINE # 105
000000 EF               351             MOV     A,R7
000001 2D               352             ADD     A,R5
000002 FF               353             MOV     R7,A
000003 0100       F     354             AJMP    _I2C_Send_Byte
                        355     ; END OF _I2C_Send_Addr
                        356     
                        357     ; }
                        358     ; /* Master get a byte from the slave device */
                        359     ; #if 0
                        360     ; unsigned char I2C_Get_Byte()
                        361     ; {
                        362     ;       unsigned char mask;
                        363     ;       unsigned char retVal;
                        364     ; 
                        365     ;       I2C_SDA_SET;    /* configure the pin for input */
                        366     ;       retVal  = 0;    /* initial the return value */
                        367     ; 
                        368     ;       for (mask = 0x80 ; mask != 0 ; mask = mask >> 1)
                        369     ;       {
                        370     ;               I2C_NOP();
                        371     ;               I2C_SCL_SET;
                        372     ;               if(I2C_SDA_GET)
                        373     ;                       retVal = retVal | 1;
                        374     ;               I2C_NOP();
                        375     ;               I2C_SCL_CLR;
                        376     ;       }
                        377     ; 
                        378     ;       I2C_SDA_SET; /* No Acknowledge */
                        379     ;       I2C_NOP();
                        380     ;       I2C_SCL_SET;
                        381     ;       I2C_NOP();
                        382     ;       I2C_SCL_CLR;
                        383     ; 
                        384     ;       return retVal;
                        385     ; }
                        386     ; #endif
                        387     ; /* Master get the data from the slave device */
                        388     ; #if 0
AX51 MACRO ASSEMBLER  MAIN                                                                  08/22/07 12:34:21 PAGE     7

                        389     ; unsigned char I2C_Get_Data()
                        390     ; {
                        391     ;       return I2C_Get_Byte();
                        392     ; }
                        393     ; #endif
                        394     ; 
                        395     ; /* Hold the voltage level of the signal */
                        396     ; void I2C_NOP()
                        397     
------                  398             RSEG  ?PR?I2C_NOP?MAIN
000000                  399     I2C_NOP:

⌨️ 快捷键说明

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