-
看别人写的汇编程序,我头都大了,:L
眼都看花了~~~~
-
这里有一个程序,这个我曾使用过,你可以试试看~~~
汇编写的24C01 单字节读写程序
; =======================================================
; 24C01存储器I2C总线实验 汇编语言例子
; =======================================================
;
; ew51仿真编程器 配套实验板学习例程
;
; 中山单片机学习网 诚电科技 站长:逸风
;
; http://www.zsMCU.com
; E-mail:ew51@zsmcu.com
; =======================================================
SDA EQU P2.0
SCL EQU P2.1
Address EQU 08H
I2CData EQU 09H
ORG 0000H
START:
MOV SP,#60H
MOV Address,#00H
MOV I2CData,#55H
CALL I2C_WRITE ;写入数据
MOV I2CDATA,#0AAH ;
MOV Address,#00H
CALL I2C_READ
MOV I2CData,A ;读出数据
NOP
NOP
MAIN:
JMP MAIN
/*=======================================================
写一个字节 Address地址 I2CDatata写入的数据
=======================================================*/
I2C_WRITE:
I2C_WRITE_A:
LCALL I2C_START
MOV A,#10100000B
LCALL I2C_SEND8BIT
LCALL I2C_ACK
JC I2C_WRITE_A ;=1,表示无确认,再次发送
MOV A,Address
LCALL I2C_SEND8BIT
LCALL I2C_ACK
MOV A,I2CData
LCALL I2C_SEND8BIT
LCALL I2C_ACK
LCALL I2C_STOP
RET
/*=======================================================
读一个字节 Address地址 Data读出的数据
=======================================================*/
I2C_READ:
I2C_READ_A:
LCALL I2C_START
MOV A,#10100000B
LCALL I2C_SEND8BIT
LCALL I2C_ACK
JC I2C_READ_A ;=1,表示无确认,再次发送
MOV A,Address
LCALL I2C_SEND8BIT
LCALL I2C_ACK
I2C_READ_B:
LCALL I2C_START
MOV A,#10100001B
LCALL I2C_SEND8BIT
LCALL I2C_ACK
JC I2C_READ_B
LCALL I2C_RECEIVE8BIT
MOV I2CData,A
LCALL I2C_ACK
LCALL I2C_STOP
RET
;=======================================================
;发送开始信号
I2C_START:
SETB SCL
SETB SDA
NOP
NOP
CLR SDA
NOP
NOP
CLR SCL
RET
;=======================================================
;发送结束信号
I2C_STOP:
CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
SETB SDA
RET
;=======================================================
;发送接收确认信号
I2C_ACk:
SETB SDA
SETB SCL
NOP
NOP
JB SDA,I2C_ACK0
CLR C
SJMP I2C_ACK_END
I2C_ACK0:
SETB C
I2C_ACK_END:
CLR SCL
RET
;=======================================================
;送八位数据
I2C_SEND8BIT:
MOV B,#08H
I2C_SEND8BIT_A:
RLC A
MOV SDA,C
SETB SCL
NOP
NOP
CLR SCL
DJNZ B,I2C_SEND8BIT_A
RET
;=======================================================
;接收八位数据
I2C_RECEIVE8BIT:
MOV B,#08H
CLR A
SETB SDA
I2C_RECEIVE8IT_A:
SETB SCL
NOP
NOP
MOV C,SDA
RLC A
CLR SCL
DJNZ B,I2C_RECEIVE8IT_A
RET
-
用数字电路来做,太累~~~~~~
基本上等于用数字逻辑来设计一个单片机了!
-
资料收到了,非常感谢 ZQK !!
-
这是发送写指令操作:
MOV A,#0A0H;送器件地址 10100000(0A0H)
如果你要读的话,要用:
MOV A,#0A1H;送器件地址 10100001(0A0H)
-
能否上个照片来啊???
-
本帖最后由 paulhyde 于 2014-9-15 09:23 编辑 这个引脚好像有点不对啊,
应该是1地2入3输出的~~~~
-
楼主费心了~~~~
请给我来一份看看,最近想做个模拟2272的解码器玩玩---------------
我的邮箱是:huchuan987@hotmail.com
谢谢!!!!
-
哦,这也有可能是电阻太大了,引起干扰,把电阻减小一点试试????
-
这个地方弄不好会短路的吧~~~~~~
电路将无法工作
-
本帖最后由 paulhyde 于 2014-9-15 09:14 编辑 羡慕你们啊,我们什么都没得:) :)
-
LCD上面板上怎么来连接?????
没有专业的工具不好整~~~
-
本帖最后由 paulhyde 于 2014-9-15 09:14 编辑 真好,:loveliness:
-
这个球是不错,只是那首歌也太没劲了~~~~
-
呵呵,现在最关心的是他们是利用什么东西来达到同步呢????
好像当时并没有什么提示的音乐或其它的声音什么的~~
-
呵呵,老谋子这几年的惯用手法~~~~~
人多,“大场面”
在看印象刘三姐的时候就见识过了~~~~~~~~~~~
-
这个电路太危险了,没有什么保护措施....
-
这种继电器是有的,你得到卖继电器的地方去看,具体是哪个型号不好说,
因为各个厂家的标法不大一样.
-
最好的办法就是把东西做出来,一上电就知道对不对了~~~~