|
发表于 2009-9-24 20:03:45
|
显示全部楼层
这是我帮别人写的其中一个低音炮用到PT2313,2314应该也差不多的功能吧。通信很简单的。下面是汇编的。看不懂就帮不上忙了。指令是松翰的单片机。因为用到内部时钟16M。所以多了很多jmp 这些廷时指令
;;==============================================;;
;;----------IIC-2313通信--------------
;;==============================================;;
IIC_2313_SEND:
B0BCLR FGIE
IIC_2313_START:
B0BSET SDA_2313
B0BSET SCL_2313
B0BCLR SDA_2313
IIC_2313_3BYTE_ADD_ADN_2DATA:
MOV A,#88H
MOV SEND_BUF,A
CALL IIC_2313_BYTE_SEND
CALL IIC_2313_ACK
MOV A,SEND_2313_BUF
MOV SEND_BUF,A
CALL IIC_2313_BYTE_SEND
CALL IIC_2313_ACK
IIC_2313_STOP:
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
B0BSET SCL_2313
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
B0BSET SDA_2313
B0BSET FGIE
RET
;;==============================================;;
IIC_2313_BYTE_SEND:
B0BCLR SCL_2313
MOV A,#8
MOV SEND_COUNT,A
JMP $+1
JMP $+1
IIC_2313_BYTE_SEND1:
RLCM SEND_BUF
B0BTS0 FC
B0BSET SDA_2313
B0BTS1 FC
B0BCLR SDA_2313
JMP $+1
JMP $+1
B0BSET SCL_2313
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
B0BCLR SCL_2313
DECMS SEND_COUNT
JMP IIC_2313_BYTE_SEND1
B0BSET SDA_2313
JMP $+1
JMP $+1
JMP $+1
RET
IIC_2313_ACK:
B0BCLR SDA_2313_DIR
B0BSET SCL_2313
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
B0BCLR SCL_2313
B0BSET SDA_2313_DIR
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
B0BCLR SDA_2313
RET |
|