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

📄 i2c.lst

📁 T103的开发程序 能兼容很多屏 可根据需要修改定义
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  I2C                                                                  11/23/2007 00:57:18 PAGE     1


MACRO ASSEMBLER A51 V8.00d
OBJECT MODULE PLACED IN .\Object\I2C.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SourceFile\I2C.asm SET(LARGE) DEBUG PRINT(.\List\I2C.lst) OBJECT(.\Object\
                      I2C.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     ;---------------------------------------------------------------------------
                       2     ; Terawins Inc. Company Confidential Strictly Private
                       3     ;
                       4     ; $Archive: $
                       5     ; $Revision: 0.9 $
                       6     ; $Author: Bruce $
                       7     ; $Date: 2007/02/084 22:34:39 $
                       8     ;
                       9     ; --------------------------------------------------------------------------
                      10     ; >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                      11     ; --------------------------------------------------------------------------
                      12     ; Copyright 2007 (c) Terawins Inc.
                      13     ;
                      14     ; Functions:
                      15     ;       void StartCondition(void)
                      16     ;       void StopCondition(void)
                      17     ;       uCHAR Send_Byte(uCHAR cData)
                      18     ;       uCHAR Read_Byte(uCHAR cNum)
                      19     ;       void twdWr_Burst_D(uCHAR cData)
                      20     ;
                      21     
                      22     $nomod51 
                      23     
                      24     NAME    I2C
                      25     
  00E7                26     bSDA_MSB        BIT     0E0H.7
  0080                27     P0      DATA    080H
  0090                28     P1      DATA    090H
  00A0                29     P2      DATA    0A0H
  00B0                30     P3      DATA    0B0H
  00D6                31     AC      BIT     0D0H.6
  00B4                32     T0      BIT     0B0H.4
  00B5                33     T1      BIT     0B0H.5
  00AF                34     EA      BIT     0A8H.7
  00A8                35     IE      DATA    0A8H
  00B7                36     RD      BIT     0B0H.7
  00AC                37     ES      BIT     0A8H.4
  00B8                38     IP      DATA    0B8H
  0098                39     RI      BIT     098H.0
  00D7                40     CY      BIT     0D0H.7
  00B2                41     INT0    BIT     0B0H.2
  00B3                42     INT1    BIT     0B0H.3
  0099                43     TI      BIT     098H.1
  00BC                44     PS      BIT     0B8H.4
  0081                45     SP      DATA    081H
  00D2                46     OV      BIT     0D0H.2
  00B6                47     WR      BIT     0B0H.6
  0099                48     SBUF    DATA    099H
  0087                49     PCON    DATA    087H
  0098                50     SCON    DATA    098H
  0089                51     TMOD    DATA    089H
  0089                52     IE0     BIT     088H.1
  008B                53     IE1     BIT     088H.3
  00F0                54     B       DATA    0F0H
  00E0                55     ACC     DATA    0E0H
  00A9                56     ET0     BIT     0A8H.1
  00AB                57     ET1     BIT     0A8H.3
A51 MACRO ASSEMBLER  I2C                                                                  11/23/2007 00:57:18 PAGE     2

  008D                58     TF0     BIT     088H.5
  008F                59     TF1     BIT     088H.7
  009A                60     RB8     BIT     098H.2
  008C                61     TH0     DATA    08CH
  00A8                62     EX0     BIT     0A8H.0
  0088                63     IT0     BIT     088H.0
  008D                64     TH1     DATA    08DH
  00AA                65     EX1     BIT     0A8H.2
  009B                66     TB8     BIT     098H.3
  008A                67     IT1     BIT     088H.2
  00D0                68     P       BIT     0D0H.0
  009F                69     SM0     BIT     098H.7
  008A                70     TL0     DATA    08AH
  009E                71     SM1     BIT     098H.6
  008B                72     TL1     DATA    08BH
  009D                73     SM2     BIT     098H.5
  00B9                74     PT0     BIT     0B8H.1
  00D3                75     RS0     BIT     0D0H.3
  00BB                76     PT1     BIT     0B8H.3
  00D4                77     RS1     BIT     0D0H.4
  008C                78     TR0     BIT     088H.4
  008E                79     TR1     BIT     088H.6
                      80     
  0096                81     SDA     BIT     090H.6 
                      82     
  00B8                83     PX0     BIT     0B8H.0
  00BA                84     PX1     BIT     0B8H.2
  0083                85     DPH     DATA    083H
  0082                86     DPL     DATA    082H
                      87     
  0095                88     SCL     BIT     090H.5  
                      89     
  009C                90     REN     BIT     098H.4
  00B0                91     RXD     BIT     0B0H.0
  00B1                92     TXD     BIT     0B0H.1
                      93     
  00D7                94     F0      BIT     0D0H.7  
                      95                                              
  00D0                96     PSW     DATA    0D0H
                      97     ?PR?StartCondition?I2C                   SEGMENT CODE 
                      98     ?PR?StopCondition?I2C                    SEGMENT CODE 
                      99     ?PR?_Send_Byte?I2C   SEGMENT CODE 
                     100     ?PR?_Read_Byte?I2C   SEGMENT CODE 
                     101     ?PR?_twdWr_Burst_D?I2C                   SEGMENT CODE 
                     102             PUBLIC  _twdWr_Burst_D
                     103             PUBLIC  _Read_Byte
                     104             PUBLIC  _Send_Byte
                     105             PUBLIC  StopCondition
                     106             PUBLIC  StartCondition
                     107     ; #pragma SRC
                     108     ; #include "reg51.h"
                     109     ; #include "i2c.h"
                     110     ; 
                     111     ; 
                     112     ; //----------------------------------------
                     113     ; // Start_Condition for TWD protocol
                     114     ; //----------------------------------------
                     115     ; 
                     116     ; void StartCondition(void)
                     117     
----                 118             RSEG  ?PR?StartCondition?I2C
0000                 119     StartCondition:
                     120             USING   0
                     121     ;     uCHAR cTWtrytime=0;
0000 E4              122             CLR     A
0001 FF              123             MOV     R7,A
A51 MACRO ASSEMBLER  I2C                                                                  11/23/2007 00:57:18 PAGE     3

                     124     ;     EA=0;
0002 C2AF            125             CLR     EA
0004                 126     ?C0001:
                     127     ;     while(++cTWtrytime) {
0004 0F              128             INC     R7
0005 EF              129             MOV     A,R7
0006 6012            130             JZ      ?C0004
0008 D296            131             SETB    SDA
000A D296            132             SETB    SDA
000C D295            133             SETB    SCL
000E D295            134             SETB    SCL
0010 C296            135             CLR     SDA
0012 C296            136             CLR     SDA
0014 3095ED          137             JNB     SCL,?C0001
0017 2096EA          138             JB      SDA,?C0001
                     139     ;     }
001A                 140     ?C0004:
001A 22              141             RET     
                     142     ; END OF StartCondition
                     143     
                     144     ; 
                     145     ; //----------------------------------------
                     146     ; // Stop_Condition for TWD protocol
                     147     ; //----------------------------------------
                     148     ; void StopCondition(void)
                     149     
----                 150             RSEG  ?PR?StopCondition?I2C
0000                 151     StopCondition:
                     152             USING   0
                     153     ;     uCHAR cTWtrytime=0;
0000 E4              154             CLR     A
0001 FF              155             MOV     R7,A
                     156     ;     Set_SDA_Low;
0002 C296            157             CLR     SDA
0004 C296            158             CLR     SDA
                     159     ;     Set_SCL_High;
0006 D295            160             SETB    SCL
0008 D295            161             SETB    SCL
000A                 162     ?C0005:
                     163     ;     while(SCL_Low && ++cTWtrytime) {};
000A 209504          164             JB      SCL,?C0006
000D 0F              165             INC     R7
000E EF              166             MOV     A,R7
000F 70F9            167             JNZ     ?C0005
0011                 168     ?C0006:
                     169     ;     Set_SDA_High;
0011 D296            170             SETB    SDA
0013 D296            171             SETB    SDA
                     172     ;       EA=1;
0015 D2AF            173             SETB    EA
0017 22              174             RET     
                     175     ; END OF StopCondition
                     176     
                     177     ; 
                     178     ; //--------------------------------------------------
                     179     ; // Send_Byte
                     180     ; //    Send a byte to master with a acknowledge bit
                     181     ; //--------------------------------------------------
                     182     ; uCHAR Send_Byte(uCHAR cData)
                     183     
----                 184             RSEG  ?PR?_Send_Byte?I2C
0000                 185     _Send_Byte:
                     186             USING   0
                     187     ;     cAcknowledge = 0;
                     188     ;       CLR     A
0000 7E00            189             MOV     R6,#0
A51 MACRO ASSEMBLER  I2C                                                                  11/23/2007 00:57:18 PAGE     4

                     190     ;       ACC=cData;
0002 EF              191             MOV     A,R7
                     192     ;     for(ix = 0; ix < 8; ix++)
0003 7F00            193             MOV     R7,#0
0005                 194     ?C0008:
                     195     ;     {
                     196     ;         Set_SCL_Low;
0005 C295            197             CLR     SCL
0007 C295            198             CLR     SCL
                     199     ;         Setting SDA
0009 33              200             RLC     A
000A 9296            201             MOV     SDA,C
000C 9296            202             MOV     SDA,C
                     203     ;         Set_SCL_High;
000E D295            204             SETB    SCL
0010 D295            205             SETB    SCL
                     206     ;     }
                     207                             ; SOURCE LINE # 75
0012 0F              208             INC     R7
0013 BF08EF          209             CJNE    R7,#08H,?C0008
0016                 210     ?C0009:
                     211     ;     Set_SCL_Low;
0016 C295            212             CLR     SCL
0018 C295            213             CLR     SCL
                     214     ;     Set_SDA_High;                /* release data line for acknowledge */
001A D296            215             SETB    SDA
001C D296            216             SETB    SDA
                     217     ;     Set_SCL_High;                /* Send a clock for Acknowledge */
001E D295            218             SETB    SCL
0020 D295            219             SETB    SCL
0022                 220     ?C0011:
                     221     ;     while(SCL_Low)   { };
0022 3095FD          222             JNB     SCL,?C0011
0025                 223     ?C0012:
                     224     ; 
                     225     ;     if(SDA_High) cAcknowledge = 1; /* No Acknowledge */
0025 309602          226             JNB     SDA,?C0013
0028 7E01            227             MOV     R6,#01H
002A                 228     ?C0013:
                     229     ;     Set_SCL_Low;                   /* Finish Acknoledge */
002A C295            230             CLR     SCL
002C C295            231             CLR     SCL
                     232     ;     return(cAcknowledge);
002E AF06            233             MOV     R7,AR6
                     234     ; }
0030                 235     ?C0014:
0030 22              236             RET     
                     237     ; END OF _Send_Byte
                     238     
                     239     ; 
                     240     ; 
                     241     ; 
                     242     ; //--------------------------------------------------
                     243     ; // Read_Byte
                     244     ; //    Read a byte from master with a acknowledge bit
                     245     ; //--------------------------------------------------
                     246     ; uCHAR Read_Byte(uCHAR cNum)
                     247     
----                 248             RSEG  ?PR?_Read_Byte?I2C
0000                 249     _Read_Byte:
                     250             USING   0
                     251     ; cNum -> 'R1'
0000 A907            252             MOV     R1,AR7
                     253     ; {
                     254     ;     uCHAR ix; 'R4'
                     255     ;     uCHAR cRetval=0; 'R5'
A51 MACRO ASSEMBLER  I2C                                                                  11/23/2007 00:57:18 PAGE     5

0002 E4              256             CLR     A
0003 FD              257             MOV     R5,A
                     258     ; 
                     259     ;     for(ix=0;ix<8;ix++){
0004 FC              260             MOV     R4,A
0005                 261     ?C0015:

⌨️ 快捷键说明

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