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

📄 ex8-5.sdi

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 SDI
字号:
,,,ACK             BIT     10H             ;应答标志位
,,,SLA             DATA    50H             ;器件地址字
,,,SUBA            DATA    51H             ;器件子地址
,,,NUMBYTE         DATA    52H             ;读/写字节数
000B,,,SDA             BIT     P3.1
000B,,,SCL             BIT     P3.0            ;I2C总线定义
,,,MTD             EQU     30H             ;发送数据缓存区首地址(30H-3FH)
,,,MRD             EQU     40H             ;接收数据缓存区首地址(40H-4FH)
,,,                ORG     0000H
0000,01 D2,,                AJMP    MAIN
,,,                ORG     0030H
,,,
,,,;*********************************************************************
,,,;名称:STRRT
,,,;描述:启动I2C总线子程序—发送I2C总线起始条件
,,,;*********************************************************************
0030,D2 B1,START,START:          SETB    SDA             ;发送起始条件数据信号
0032,00,,                NOP                     ;起始条件建立时间大于4.7us
0033,D2 B0,,                SETB    SCL             ;发送起始条件的时钟信号
0035,00,,                NOP
0036,00,,                NOP
0037,00,,                NOP
0038,00,,                NOP
0039,00,,                NOP                     ;起始条件锁定时间大于4.7us
003A,C2 B1,,                CLR     SDA             ;发送起始信号
003C,00,,                NOP
003D,00,,                NOP
003E,00,,                NOP
003F,00,,                NOP                     ;起始条件锁定时间大于4.7us
0040,C2 B0,,                CLR     SCL             ;钳住I2C总线,准备发送或接收数据
0042,00,,                NOP
0043,22,,                RET
,,,
,,,;*********************************************************************
,,,;名称:STOP
,,,;描述:停止I2C总线子程序—发送I2C总线停止条件
,,,;*********************************************************************
0044,C2 B1,STOP,STOP:           CLR     SDA             ;发送停止条件的数据信号
0046,00,,                NOP
0047,00,,                NOP
0048,D2 B0,,                SETB    SCL             ;发送停止条件的时钟信号
004A,00,,                NOP
004B,00,,                NOP
004C,00,,                NOP
004D,00,,                NOP
004E,00,,                NOP                     ;起始条件建立时间大于4.7us
004F,D2 B1,,                SETB    SDA             ;发送I2C总线停止信号
0051,00,,                NOP
0052,00,,                NOP
0053,00,,                NOP
0054,00,,                NOP
0055,00,,                NOP                     ;延迟时间大于4.7us
0056,22,,                RET
,,,
,,,;*********************************************************************
,,,;名称:MACK
,,,;描述:发送应答信号子程序
,,,;*********************************************************************
0057,C2 B1,MACK,MACK:           CLR     SDA             ;将SDA置0
0059,00,,                NOP
005A,00,,                NOP
005B,D2 B0,,                SETB    SCL
005D,00,,                NOP
005E,00,,                NOP
005F,00,,                NOP
0060,00,,                NOP
0061,00,,                NOP                     ;保持数据时间,大于4.7us
0062,C2 B0,,                CLR     SCL
0064,00,,                NOP
0065,00,,                NOP
0066,22,,                RET
,,,
,,,;*********************************************************************
,,,;名称:MNACK
,,,;描述:发送非应答信号子程序
,,,;*********************************************************************
0067,D2 B1,MNACK,MNACK:          SETB    SDA             ;将SDA置1
0069,00,,                NOP
006A,00,,                NOP
006B,D2 B0,,                SETB    SCL
006D,00,,                NOP
006E,00,,                NOP
006F,00,,                NOP
0070,00,,                NOP
0071,00,,                NOP
0072,C2 B0,,                CLR     SCL             ;保持数据时间,大于4.7us
0074,00,,                NOP
0075,00,,                NOP
0076,22,,                RET
,,,
,,,;*********************************************************************
,,,;名称:CACK
,,,;描述:检查应答位子程序,返回值:ACK=1时表示有应答
,,,;*********************************************************************
0077,D2 B1,CACK,CACK:           SETB    SDA
0079,00,,                NOP
007A,00,,                NOP
007B,D2 B0,,                SETB    SCL
007D,C2 10,,                CLR     ACK
007F,00,,                NOP
0080,00,,                NOP
0081,A2 B1,,                MOV     C,SDA
0083,40 02,,                JC      CEND
0085,D2 10,,                SETB    ACK             ;判断应答位
0087,00,CEND,CEND:           NOP
0088,C2 B0,,                CLR     SCL
008A,00,,                NOP
008B,22,,                RET
,,,
,,,;*********************************************************************
,,,;名称:WRBYTE
,,,;描述:发送字节子程序,字节数据放入ACC
,,,;*********************************************************************
008C,78 08,WRBYTE,WRBYTE:         MOV     R0,#08H
008E,33,WLP,WLP:            RLC     A               ;取数据位
008F,40 06,,                JC      WRI
0091,80 12,,                SJMP    WRO             ;判断数据位
0093,D8 F9,WLP1,WLP1:           DJNZ    R0,WLP
0095,00,,                NOP
0096,22,,                RET
0097,D2 B1,WRI,WRI:            SETB    SDA             ;发送1
0099,00,,                NOP
009A,D2 B0,,                SETB    SCL
009C,00,,                NOP
009D,00,,                NOP
009E,00,,                NOP
009F,00,,                NOP
00A0,00,,                NOP
00A1,C2 B0,,                CLR     SCL
00A3,80 EE,,                SJMP    WLP1
00A5,C2 B1,WRO,WRO:            CLR     SDA             ;发送0
00A7,00,,                NOP
00A8,D2 B0,,                SETB    SCL
00AA,00,,                NOP
00AB,00,,                NOP
00AC,00,,                NOP
00AD,00,,                NOP
00AE,00,,                NOP
00AF,C2 B0,,                CLR     SCL
00B1,80 E0,,                SJMP    WLP1
,,,
,,,
,,,;*********************************************************************
,,,;名称:ADC517
,,,;描述:启动MAX517进行D/A转换子程序,转换数据位于40H
,,,;*********************************************************************
00B3,12 00 30,DAC517,DAC517:         LCALL   START
00B6,74 58,,                MOV     A,#58H
00B8,12 00 8C,,                LCALL   WRBYTE
00BB,12 00 67,,                LCALL   MNACK
00BE,74 00,,                MOV     A,#0
00C0,12 00 8C,,                LCALL   WRBYTE
00C3,12 00 67,,                LCALL   MNACK
00C6,E5 40,,                MOV     A,40H
00C8,12 00 8C,,                LCALL   WRBYTE
00CB,12 00 67,,                LCALL   MNACK
00CE,12 00 44,,                LCALL   STOP
00D1,22,,                RET
,,,
,,,;*********************************************************************
,,,;名称:MAIN
,,,;描述:主程序
,,,;*********************************************************************
00D2,75 81 60,MAIN,MAIN:           MOV     SP,#60H
00D5,75 40 00,,                MOV     40H,#00H
00D8,12 00 B3,LOOP,LOOP:           LCALL   DAC517
00DB,05 40,,                INC     40H
00DD,80 F9,,                SJMP    LOOP
,,,
000E,,,                END

⌨️ 快捷键说明

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