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

📄 i2cmem1.sdi

📁 proteus 仿真实例
💻 SDI
📖 第 1 页 / 共 2 页
字号:
,,,                 LIST    p=16F877
,,,                 #include "P16F877.INC"
,,,
,,,SDO              EQU 7
,,,CLK              EQU 6
,,,
,,,                 ORG   0
0000,291F,entrypoint,entrypoint       goto  start
,,,
,,,                 ORG   4
0004,2804,intvector,intvector        goto    intvector
,,,
,,,                 CBLOCK 0x30
,,,                    address, value, byte, bit, ack
,,,                    lc1, lc2, lc3
,,,                 ENDC
,,,
,,,
0005,1283,set_sdo_high,set_sdo_high     bcf    STATUS,RP0
0006,1387,,                 bcf    PORTC,SDO
0007,1683,,                 bsf    STATUS,RP0
0008,1787,,                 bsf    TRISC,SDO
0009,1283,,                 bcf    STATUS,RP0
000A,0008,,                 return
,,,
000B,1283,set_sdo_low,set_sdo_low      bcf    STATUS,RP0
000C,1387,,                 bcf    PORTC,SDO
000D,1683,,                 bsf    STATUS,RP0
000E,1387,,                 bcf    TRISC,SDO
000F,1283,,                 bcf    STATUS,RP0
0010,0008,,                 return
,,,
,,,;-----------------------------------------------------------
0011,1283,set_clk_high,set_clk_high     bcf    STATUS,RP0
0012,1707,,                 bsf    PORTC,CLK
0013,1683,,                 bsf    STATUS,RP0
0014,1307,,                 bcf    TRISC,CLK
0015,1283,,                 bcf    STATUS,RP0
0016,0008,,                 return
,,,
,,,;-----------------------------------------------------------
0017,1283,set_clk_low,set_clk_low      bcf    STATUS,RP0
0018,1307,,                 bcf    PORTC,CLK
0019,1683,,                 bsf    STATUS,RP0
001A,1307,,                 bcf    TRISC,CLK
001B,1283,,                 bcf    STATUS,RP0
001C,0008,,                 return
,,,
,,,;-----------------------------------------------------------
001D,3006,wait_quarter_bit,wait_quarter_bit movlw  0x06
001E,00B5,,                 movwf  lc1
001F,0BB5,wqb0:,wqb0:            decfsz lc1,F
0020,281F,,                 goto   wqb0
0021,0008,,                 return
,,,
,,,;-----------------------------------------------------------
0022,3010,wait_half_bit,wait_half_bit    movlw  0x10
0023,00B5,,                 movwf  lc1
0024,0BB5,whb0:,whb0:            decfsz lc1,F
0025,281F,,                 goto   wqb0
0026,0008,,                 return
,,,
,,,;-----------------------------------------------------------
0027,30FF,init,init             movlw 0xFF
0028,0087,,                 movwf PORTC
0029,3000,,                 movlw 0x00
002A,1683,,                 bsf   STATUS,RP0
002B,0087,,                 movwf TRISC
002C,1283,,                 bcf   STATUS,RP0
002D,0008,,                 return
,,,
,,,;-----------------------------------------------------------
002E,2011,wr_start,wr_start         call  set_clk_high
002F,2022,,                 call  wait_half_bit
0030,200B,,                 call  set_sdo_low
0031,2022,,                 call  wait_half_bit
0032,2017,,                 call  set_clk_low
0033,2022,,                 call  wait_half_bit
0034,2022,,                 call  wait_half_bit
0035,2022,,                 call  wait_half_bit
0036,0008,,                 return
,,,;-----------------------------------------------------------
0037,2022,wr_stop,wr_stop          call  wait_half_bit
0038,2017,,                 call  set_clk_low
0039,2022,,                 call  wait_half_bit
003A,200B,,                 call  set_sdo_low
003B,2022,,                 call  wait_half_bit
003C,2011,,                 call  set_clk_high
003D,2022,,                 call  wait_half_bit
003E,2005,,                 call  set_sdo_high
003F,2022,,                 call  wait_half_bit
0040,0008,,                 return
,,,
,,,;-----------------------------------------------------------
0041,2017,wr_restart,wr_restart       call   set_clk_low
0042,2022,,                 call   wait_half_bit
0043,2005,,                 call   set_sdo_high
0044,2022,,                 call   wait_half_bit
0045,2011,,                 call   set_clk_high
0046,2022,,                 call   wait_half_bit
0047,200B,,                 call   set_sdo_low
0048,2022,,                 call   wait_half_bit
0049,2017,,                 call   set_clk_low
004A,2022,,                 call   wait_half_bit
004B,0008,,                 return
,,,
,,,;-----------------------------------------------------------
004C,2017,wr_ack,wr_ack           call   set_clk_low
004D,2022,,                 call   wait_half_bit
004E,200B,,                 call   set_sdo_low
004F,2022,,                 call   wait_half_bit
0050,2011,,                 call   set_clk_high
0051,2022,,                 call   wait_half_bit
0052,2017,,                 call   set_clk_low
0053,2022,,                 call   wait_half_bit
0054,2005,,                 call   set_sdo_high
0055,2022,,                 call   wait_half_bit
0056,0008,,                 return
,,,
,,,;-----------------------------------------------------------
0057,2017,wr_no_ack,wr_no_ack        call   set_clk_low
0058,2022,,                 call   wait_half_bit
0059,2005,,                 call   set_sdo_high
005A,2022,,                 call   wait_half_bit
005B,2011,,                 call   set_clk_high
005C,2022,,                 call   wait_half_bit
005D,2017,,                 call   set_clk_low
005E,2022,,                 call   wait_half_bit
005F,2022,,                 call   wait_half_bit
0060,0008,,                 return
,,,
,,,;-----------------------------------------------------------
,,,; Generate a reset by generating a stop followed by at least
,,,; eight clock pulses.
0061,2022,wr_reset,wr_reset         call   wait_half_bit
0062,2017,,                 call   set_clk_low
0063,2022,,                 call   wait_half_bit
0064,200B,,                 call   set_sdo_low
0065,2022,,                 call   wait_half_bit
0066,2011,,                 call   set_clk_high
,,,
0067,3040,,                 movlw  0x40
0068,00B5,,                 movwf  lc1
0069,0BB5,wrr0:,wrr0:            decfsz lc1,F
006A,2869,,                 goto   wrr0
,,,
006B,2005,,                 call   set_sdo_high
,,,
006C,3040,,                 movlw  0x40
006D,00B5,,                 movwf  lc1
006E,0BB5,wrr1:,wrr1:            decfsz lc1,F
006F,286E,,                 goto   wrr1
,,,
0070,2017,,                 call   set_clk_low             ; clk 0
0071,2022,,                 call   wait_half_bit
0072,2011,,                 call   set_clk_high
0073,2022,,                 call   wait_half_bit
0074,2017,,                 call   set_clk_low             ; clk 1
0075,2022,,                 call   wait_half_bit
0076,2011,,                 call   set_clk_high
0077,2022,,                 call   wait_half_bit
0078,2017,,                 call   set_clk_low             ; clk 2
0079,2022,,                 call   wait_half_bit
007A,2011,,                 call   set_clk_high
007B,2022,,                 call   wait_half_bit
007C,2017,,                 call   set_clk_low             ; clk 3
007D,2022,,                 call   wait_half_bit
007E,2011,,                 call   set_clk_high
007F,2022,,                 call   wait_half_bit
0080,2017,,                 call   set_clk_low             ; clk 4
0081,2022,,                 call   wait_half_bit
0082,2011,,                 call   set_clk_high
0083,2022,,                 call   wait_half_bit
0084,2017,,                 call   set_clk_low             ; clk 5
0085,2022,,                 call   wait_half_bit
0086,2011,,                 call   set_clk_high
0087,2022,,                 call   wait_half_bit
0088,2017,,                 call   set_clk_low             ; clk 6
0089,2022,,                 call   wait_half_bit
008A,2011,,                 call   set_clk_high
008B,2022,,                 call   wait_half_bit
008C,2017,,                 call   set_clk_low             ; clk 7
008D,2022,,                 call   wait_half_bit
008E,2011,,                 call   set_clk_high
008F,2022,,                 call   wait_half_bit
0090,2017,,                 call   set_clk_low             ; clk 8
0091,2022,,                 call   wait_half_bit
0092,2011,,                 call   set_clk_high
0093,2022,,                 call   wait_half_bit
,,,
0094,0008,,                 return
,,,
,,,
,,,;-----------------------------------------------------------
0095,1283,wr_bit,wr_bit           bcf   STATUS,RP0
0096,201D,,                 call  wait_quarter_bit
0097,0833,,                 movf  bit,w
0098,0532,,                 andwf byte,w
0099,1903,,                 btfsc STATUS,Z
009A,289D,,                 goto  bit_is_0
,,,
009B,2005,bit_is_1,bit_is_1         call  set_sdo_high
009C,289F,,                 goto  wbit0
,,,
009D,200B,bit_is_0,bit_is_0         call  set_sdo_low
009E,289F,,                 goto  wbit0
,,,
,,,
009F,1283,wbit0,wbit0            bcf   STATUS,RP0
00A0,201D,,                 call  wait_quarter_bit
00A1,2011,,                 call  set_clk_high
00A2,2022,,                 call  wait_half_bit
00A3,2017,,                 call  set_clk_low
00A4,0008,,                 return
,,,
,,,;-----------------------------------------------------------
00A5,00B2,wr_byte,wr_byte          movwf byte
00A6,3080,,                 movlw 0x80
00A7,00B3,,                 movwf bit
,,,
00A8,2095,wbyte0,wbyte0           call  wr_bit
00A9,1003,,                 bcf   STATUS,C
00AA,0CB3,,                 rrf   bit,F
00AB,08B3,,                 movf  bit,F
00AC,1D03,,                 btfss STATUS,Z
00AD,28A8,,                 goto  wbyte0
,,,
00AE,201D,,                 call  wait_quarter_bit
00AF,2005,,                 call  set_sdo_high
00B0,201D,,                 call  wait_quarter_bit
00B1,2011,,                 call  set_clk_high
00B2,201D,,                 call  wait_quarter_bit
00B3,0807,,                 movf  PORTC,W
00B4,3980,,                 andlw (1<<SDO)
00B5,3A80,,                 xorlw (1<<SDO)
00B6,00B4,,                 movwf ack
00B7,201D,,                 call  wait_quarter_bit
00B8,2017,,                 call  set_clk_low
00B9,201D,,                 call  wait_quarter_bit
00BA,0008,,                 return
,,,
,,,;-----------------------------------------------------------
00BB,00B2,wr_halfbyte,wr_halfbyte      movwf byte
00BC,3008,,                 movlw 0x08
00BD,00B3,,                 movwf bit
,,,
00BE,2095,whbyte0,whbyte0          call  wr_bit
00BF,1003,,                 bcf   STATUS,C
00C0,0CB3,,                 rrf   bit,F
00C1,08B3,,                 movf  bit,F
00C2,1D03,,                 btfss STATUS,Z
00C3,28BE,,                 goto  whbyte0
,,,
00C4,201D,,                 call  wait_quarter_bit

⌨️ 快捷键说明

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