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

📄 i2cshiyan.txt

📁 这是一个i2c总线在2051中的一个实验程序。
💻 TXT
字号:
org 00h
vscl equ p3.0
vsda equ p3.1
mtd equ 30h
mrd equ 40h
slaw equ 3fh
slar equ 4fh
numbyt equ 3eh
subadr equ 4eh
ajmp start
start:jnb p1.2,key1
     jnb p1.3,key2
     jmp start
key1: lcall delay
     jb p1.2,start
     jnb p1.2,$
     mov mtd,#4
     lcall write
     clr p1.4
     mov r3,#0ffh
     djnz r3,$
     setb p1.4
     jmp start
key2: lcall delay
     jb p1.3,start
     jnb p1.3,$
     clr mrd
     lcall read
     lcall work 
     jmp start
work:mov r4,mrd
  red:cpl p1.4
     lcall delay1
     djnz r4,red
     ret
delay:mov r5,#20
      d1:mov r6,#255
      d2:djnz r6,$
       djnz r5,d1
      ret   
delay1:mov r5,#30
      d11:mov r6,#0ffh
      d21:mov r7,#30h
          djnz r7,$
          djnz r6,d21
          djnz r5,d11
      ret
write:mov slaw ,#0a0h
      mov subadr,#00h
      mov numbyt,#1
      lcall wrnbyt
      ret
read:mov slaw,#0a0h
     mov slar,#0a1h
     mov subadr,#00h
     mov numbyt,#1
     lcall rdnbyt
     ret
sta:setb vscl;启动IIC总线子程序
      setb vsda
      nop
      nop
      nop
      nop
      clr vsda
      nop
      nop
      nop
      nop
      clr vscl
      ret
stop:clr vsda;停止IIC总线子程序
     nop
     nop
     nop
     nop
     setb vscl
     nop
     nop
     nop
     nop
     setb vsda
     ret
mack:clr vsda;应答位
     setb vscl
     nop
     nop
     nop
     nop
     clr vscl
     clr vsda
     ret
mnack:setb vsda;非应答位
      setb vscl
      nop
      nop
      nop
      nop
      clr vscl
      clr vsda
      ret
cack:setb vsda
     setb vscl
     clr f0
     mov c,vsda
     jnc cend
     setb f0
cend:clr vscl
     ret
wrbyt:mov r0,#08h
wlp:rlc a
    jc wr1
    ajmp wr0
wlp1:djnz r0,wlp
    ret
wr1:setb vsda;发送‘1’程序段
    setb vscl
    nop
    nop
    nop
    nop
    clr vscl
    clr vsda
    ajmp wlp1
wr0:clr vsda
    setb vscl
    nop
    nop
    nop
    nop
    clr vscl
    setb vsda
    ajmp wlp1
rdbyt:mov r0,#08h
rlp:setb vsda
    setb vscl
    mov c,vsda
    rlc a
    clr vscl
    mov r2,#10h
    djnz r2,$
    ret
wrnbyt:mov r3,numbyt
       lcall sta
       mov a,slaw
       lcall wrbyt
       lcall cack
       jb f0,wrnbyt
       mov r1,#mtd
       wrda:mov a,@r1
            lcall wrbyt
            lcall cack
            jb f0,wrnbyt
            inc r1
            djnz r3,wrda
            lcall stop
       ret
rdnbyt:mov r3,numbyt
       lcall sta
       mov a,slaw
       lcall wrbyt
       lcall cack
       jb f0,rdnbyt
       mov a,subadr
       lcall wrbyt
       lcall cack
       jb f0,rdnbyt
       lcall sta
       mov a,slar
       lcall wrbyt
       lcall cack
       jb f0,rdnbyt
       mov r1,#mrd
       rdn:lcall rdbyt
           mov @r1,a
           djnz r3,ack
           lcall mnack
           lcall stop
        ret
ack:lcall mack
    inc r1
    sjmp rdn
    end

⌨️ 快捷键说明

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