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

📄 i2c.lst

📁 基于PROTEUS和Keil做的I2C仿真程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
0128 00              147                     NOP
0129 C294            148                     CLR             SCL                     ;保持数据时间,大于4.7us
012B 00              149                     NOP
012C 00              150                     NOP
012D 22              151                     RET
                     152     ;*********************************************************************
                     153     ;名称:CACK
                     154     ;描述:检查应答位子程序,返回值:ACK=1时表示有应答
                     155     ;*********************************************************************
012E D295            156     CACK:   SETB    SDA
0130 00              157                     NOP
0131 00              158                     NOP
0132 D294            159                     SETB    SCL
0134 C210            160                     CLR             ACK
0136 00              161                     NOP
0137 00              162                     NOP
0138 A295            163                     MOV             C,SDA
013A 4002            164                     JC              CEND
013C D210            165                     SETB    ACK                     ;判断应答位
013E 00              166     CEND:   NOP
013F C294            167                     CLR             SCL
0141 00              168                     NOP
0142 22              169                     RET
                     170     ;*********************************************************************  
                     171     ;名称:WRBYTE
                     172     ;描述:发送字节子程序,字节数据放入ACC
                     173     ;*********************************************************************
0143 7808            174     WRBYTE: MOV             R0,#08H
0145 33              175     WLP:    RLC             A                       ;取数据位
0146 4006            176                     JC              WRI
0148 8012            177                     SJMP    WRO                     ;判断数据位
014A D8F9            178     WLP1:   DJNZ    R0,WLP
014C 00              179                     NOP
014D 22              180                     RET
014E D295            181     WRI:    SETB    SDA                     ;发送1
0150 00              182                     NOP
0151 D294            183                     SETB    SCL
0153 00              184                     NOP
0154 00              185                     NOP
0155 00              186                     NOP
0156 00              187                     NOP
0157 00              188                     NOP
0158 C294            189                     CLR             SCL
015A 80EE            190                     SJMP    WLP1
A51 MACRO ASSEMBLER  I2C                                                                  08/25/2006 15:57:59 PAGE     4

015C C295            191     WRO:    CLR             SDA                     ;发送0
015E 00              192                     NOP
015F D294            193                     SETB    SCL
0161 00              194                     NOP
0162 00              195                     NOP
0163 00              196                     NOP
0164 00              197                     NOP
0165 00              198                     NOP
0166 C294            199                     CLR             SCL
0168 80E0            200                     SJMP    WLP1
                     201     ;*********************************************************************
                     202     ;名称:RDBYTE
                     203     ;描述:读取字节子程序,读出的数据存放在ACC
                     204     ;*********************************************************************
016A 7808            205     RDBYTE: MOV             R0,#08H
016C D295            206     RLP:    SETB    SDA
016E 00              207                     NOP
016F D294            208                     SETB    SCL                     ;时钟线为高,接收数据位
0171 00              209                     NOP
0172 00              210                     NOP
0173 A295            211                     MOV             C,SDA           ;读取数据位
0175 EA              212                     MOV             A,R2
0176 C294            213                     CLR             SCL                     ;将SCL拉低,时间大于4.7us
0178 33              214                     RLC             A                       ;进行数据位的处理
0179 FA              215                     MOV             R2,A
017A 00              216                     NOP
017B 00              217                     NOP
017C 00              218                     NOP
017D D8ED            219                     DJNZ    R0,RLP          ;未够8位,继续读入
017F 22              220                     RET
                     221                                     
                     222     
0180 7CF0            223     MAIN:   MOV             R4,#0F0H        ;延时,等待其它芯片复位完成
0182 DCFE            224                     DJNZ    R4,$
                     225     ;发送数据缓存区初始化,将16个连续字节分别赋值为00H到0FH          
0184 7400            226                     MOV             A,#0
0186 7830            227                     MOV             R0,#30H
0188 F6              228     S1:             MOV             @R0,A
0189 08              229                     INC             R0
018A 04              230                     INC             A
018B B840FA          231                     CJNE    R0,#40H,S1
                     232     ;向24C01C中写数据,数据存放在24C01C中30H开始的16个字节中
018E 7550A0          233                     MOV             SLA,#0A0H       ;24C01C地址字,写操作
0191 755130          234                     MOV             SUBA,#30H       ;目标地址
0194 755210          235                     MOV             NUMBYTE,#16     ;字节数
0197 120080          236                     LCALL   IWRNBYTE        ;写数据
                     237     ;从24C01C中读数据,数据送AT89C51中40H开始的16个字节中
                     238     
                     239     
019A 7D14            240     delay:  mov             r5,#20
019C 7EF8            241     d3:             mov             r6,#248
019E 7FF8            242     d2:             mov             r7,#248
01A0 DFFE            243                     djnz    r7,$
01A2 DEFA            244                     djnz    r6,d2
01A4 DDF6            245                     djnz    r5,d3
                     246     
                     247     
                     248     
01A6 7550A0          249                     MOV             SLA,#0A0H       ;24C01C地址字,伪写入操作
01A9 755130          250                     MOV             SUBA,#30H       ;目标地址
01AC 755210          251                     MOV             NUMBYTE,#16     ;字节数
01AF 1200AB          252                     LCALL   IRDNBYTE        ;写数据
                     253     
                     254                     END
A51 MACRO ASSEMBLER  I2C                                                                  08/25/2006 15:57:59 PAGE     5

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACK. . . . . . . .  B ADDR   0022H.0 A   
CACK . . . . . . .  C ADDR   012EH   A   
CEND . . . . . . .  C ADDR   013EH   A   
D2 . . . . . . . .  C ADDR   019EH   A   
D3 . . . . . . . .  C ADDR   019CH   A   
DELAY. . . . . . .  C ADDR   019AH   A   
IRDNBYTE . . . . .  C ADDR   00ABH   A   
IWRNBYTE . . . . .  C ADDR   0080H   A   
MACK . . . . . . .  C ADDR   010EH   A   
MAIN . . . . . . .  C ADDR   0180H   A   
MNACK. . . . . . .  C ADDR   011EH   A   
MRD. . . . . . . .  N NUMB   0040H   A   
MTD. . . . . . . .  N NUMB   0030H   A   
NUMBYTE. . . . . .  D ADDR   0052H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
RDBYTE . . . . . .  C ADDR   016AH   A   
RETRDN . . . . . .  C ADDR   00DDH   A   
RETWRN . . . . . .  C ADDR   00A7H   A   
RLP. . . . . . . .  C ADDR   016CH   A   
RON1 . . . . . . .  C ADDR   00D4H   A   
S1 . . . . . . . .  C ADDR   0188H   A   
SACK . . . . . . .  C ADDR   00E1H   A   
SCL. . . . . . . .  B ADDR   0090H.4 A   
SDA. . . . . . . .  B ADDR   0090H.5 A   
SLA. . . . . . . .  D ADDR   0050H   A   
START. . . . . . .  C ADDR   00E7H   A   
STOP . . . . . . .  C ADDR   00FBH   A   
SUBA . . . . . . .  D ADDR   0051H   A   
WLP. . . . . . . .  C ADDR   0145H   A   
WLP1 . . . . . . .  C ADDR   014AH   A   
WRBYTE . . . . . .  C ADDR   0143H   A   
WRDA . . . . . . .  C ADDR   009AH   A   
WRI. . . . . . . .  C ADDR   014EH   A   
WRO. . . . . . . .  C ADDR   015CH   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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