用FEELING单片机读写24C02
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用FEELING单片机读写24C02
FEELING单片机跟51等主流单片机相比,虽硬件功能不比强大,但也有其独特的优点,如体积小,价格低,没有功能堆积等,因此有广泛的应用。
下面用FEELING读写24C02,有关FEELING单片机和IIC原理可参考相关资料。
写一个字节到24C02,然后读出来。
#include <8PS53.ASH>
#define SCL PORTB,1
#define SDA PORTB,2
TEMP0 EQU 0X10
TEMP1 EQU 0X11
TEMP2 EQU 0X12
MOVIA 0B11111001
IOST IOSTB
;发送起始信号
BSTART:
BSR SDA
NOP
NOP
BSR SCL
NOP
NOP
BCR SDA
NOP
NOP
BCR SCL
NOP
NOP
RETURN
;停止信号
BSTOP:
BCR SDA
NOP
NOP
BSR SCL
NOP
NOP
NOP
BSR SDA
NOP
NOP
RETURN
;要写入的数据保存在TEMP1
I2C_TX:
MOVIA 0X08 ; 一字节8位
MOV AR R_COUNT
I2C_TX_LP:
BTRSS TEMP1,7
GOTO I2C_BIt0
BSR SDA
GOTO I2C_CLK1
I2C_BIt0:
BCR SDA
I2C_CLK1:
NOP
NOP
BSR SCL ;
NOP
NOP
NOP
NOP
BCR SCL
NOP
NOP
NOP
NOP
RLR TEMP1,1
DECRSZ R_COUNT,1
GOTO I2C_TX_LP
BSR SDA ;
NOP
NOP
NOP
NOP
BSR SCL
NOP
NOP
BCR SCL
NOP
NOP
NOP
NOP
RETURN
;接受到的数据保存在TEMP1
I2C_RX:
MOVIA 0X08
MOV AR R_COUNT
CLRR TEMP1
BCR F_C
MOVR 0B11111001
IOST IOSTB
BSR SDA
NOP
NOP
I2C_RX_LP:
RLR TEMP1,1
BSR SCL
NOP
NOP
BTRSC SDA
BSR TEMP1,0
NOP
NOP
BCR SCL
NOP
NOP
DECRSZ R_COUNT,1
GOTO I2C_RX_LP
RETURN
; 要读的地址信息在TEMP0,返回的读取数据在TEMP2中
I2C_READ:
CALL BSTART
MOVIA 0b10100000 ; 发送命令字节(10100000B),
MOV AR TEMP1
CALL I2C_TX
MOVR TEMP0,0 ; 发送24C01首地址
MOV AR TEMP1
CALL I2C_TX
CALL BSTART
MOVIA 0B10100001 ; 发送命令字节(10100001B)
MOV AR TEMP1
CALL I2C_TX
NOP
NOP
NOP
NOP
NOP
NOP
CALL I2C_RX
MOVR TEMP1,0
MOV AR TEMP2
CALL BSTOP
RETURN
;*****************************************
;要写的数据在TEMP2 ,地址在TEMP0
I2C_WRITER:
CALL BSTART
MOVIA 0B10100000 ; 发送命令字节(10100000B)
MOV AR TEMP1
CALL I2C_TX
MOVR TEMP0,0 ; 发送24C01首地址
MOV AR TEMP1
CALL I2C_TX
MOVR TEMP2,0
MOV AR TEMP1
CALL I2C_TX
CALL BSTOP
RETURN。