资料介绍
I2C汇编程序:/*****
;FileName: IicSMasU.a51
;Describe: 51 系列vwin
I2C 总线主控器驱动程序
;Date: 2003/11/12
;*****/
$include (IicSMasU.inc)
public _IicTxdRxd
public SlvAddr
public SubAddr
/**************
*
;Name: bit _IicTxdRxd(TxdByte,RxdByte,&IicDataBuf)
;Describe: 发送数据给被控器/接收来自被控器的数据
;Input: TxdByte=要发送数据的字节数
; RxdByte=要接收数据的字节数
; IicDataBuf=发送/接收缓冲区的首字节
; (SlvAddr(被控器地址),SubAddr(单元地址))
;Output: C(Retry=1):操作失败标志
; IicDataBuf=接收到的数据的首字节(主接收时有效)
;调用说明:
; A.现行地址写: SlvAddr(写) !!!(带SubAddr 的器件不能使用该子程序)
; TxdByte=(发送数据字节数(SubAddr 为第一个要发送的数据))
; RxdByte=0
; B.指定地址写: SlvAddr(写),SubAddr
; TxdByte=(1+发送数据字节数)
; RxdByte=0
; C.现行地址读: SlvAddr(读)
; TxdByte=0
; RxdByte=要接收数据的字节数
; D.指定地址读: SlvAddr(读),SubAddr
; TxdByte=1
; RxdByte=要接收数据的字节数
;Nesting level: 1
;Change: A,C,R1, R4~R7
;*********************
****/
BitSegIicSM SEGMENT BIT overlayable
RSEG BitSegIicSM
Retry: dbit 1 指明I2C 最后的数据传送失败应该重复操作
BITEA: DBIT 1 存中断状态
DataSegIicSM SEGMENT DATA overlayable
RSEG DataSegIicSM
SlvAddr: ds 1 被控器地址
SubAddr: ds 1 单元地址
TxdByte equ r7 要发送数据的字节数(第一传递参数)
RxdByte equ r5 要接收数据的字节数(第二传递参数)
WaitXTm macro X 延时X 个机器周期
if X=0
exitm
endif
if X=1
nop
endif
if X=2
nop
nop
endif
if X=3
nop
nop
nop
endif
if X>255
error "the number of X is too much"
else
mov r6,#X/2
DJNZ r6,$
endif
endm
CodeSegIicSM SEGMENT CODE
RSEG CodeSegIicSM
_IicTxdRxd:
SETB Retry 设置错误标志位
/*****
;发送起动条件
;*****/
SendStart:
SETB SDA
SETB SCL
WaitXTm IicDelay
CLR SDA 产生起始信号
WaitXTm IicDelay
CLR SCL 结束起动条件
/*****
;送被控器地址地址,数据
;*****/
SendSlaAdr:
MOV A,SlvAddr
CJNE TxdByte,#0,SendSlaAdr1
SETB ACC.0 TxdByte=0 时进行读操作
SendSlaAdr1:
SETB C 检测应答位时释放SDA 线
CALL XmByte
JC IicErr 无应答出错
JB ACC.0,ReceiveData SlaAdr.0=1 时进行读操作
;写操作
MOV A,SubAddr
SendData:
SETB C 检测应答位时释放SDA 线
CALL XmByte
JC IicErr 无应答出错
MOV A,@R1
INC R1
DJNZ TxdByte,SendData
DEC R1
MOV A,RxdByte
JNZ SendStart RxdByte>0 时进行读操作
JMP SendStop
/*****
;Name: RcvByte
;Describe: 接收1 字节数据(接收8 位,发送+1 位(非)应答位)
;Input: C=1:发送非应答位(通知slave 停止通信)
; C=0:发送应答位(通知slave 继续发送后续字节)
;Output: A=接收到的数据, C=(非)应答位
;Use: A,R4,C,R6(WaitXTm)
;*****/
RcvByte:
MOV A,#0FFH 释放SDA 线允许输入
/*****
;Name: XmByte
;Describe: 发送1 字节数据(发送8 位,接收1 位(非)应答位)
;Input: A=待发送的数据, C=1(检测应答位时释放SDA 线)
;Output: C=1:slave 非应答(slave 不响应)
; C=0:slave 应答(slave 接收成功)
;Use: A,R4,C,R6(WaitXTm)
- 微机的汇编语言及汇编程序设计学习课件免费下载 6次下载
- 汇编程序设计的教程课件免费下载 17次下载
- 如何使用KEIL C51和proteus实现C51汇编程序的设计实例
- DSP设计与应用教程之汇编程序设计举例的资料说明 19次下载
- 51单片机汇编程序有哪些?51单片机汇编程序集详细资料免费下载 55次下载
- DSP汇编程序优化方法的探讨 5次下载
- 虚拟I2C总线汇编程序软件包 19次下载
- MSP430 C和汇编程序 22次下载
- 51单片机汇编程序包 16次下载
- AD和DA转换的c程序和对应的汇编程序 27次下载
- 汇编程序100例 95次下载
- PCF8563汇编程序
- KeilC51中C51程序与汇编程序的接口方法
- 汇编程序编写
- 51 系列汇编程序设计的优化1
- I2C地址跳变问题的调试案例 1115次阅读
- I2C通信协议及其工作原理 4481次阅读
- Linux I2C驱动入门知识科普 1515次阅读
- 什么是I2C通信协议? 7569次阅读
- 51单片机的汇编程序库 9414次阅读
- i2c总线用来做什么_i2c总线数据传输过程 7086次阅读
- I2C总线驱动的C语言源程序详细说明 5050次阅读
- DS18B20和51单片机连接的汇编程序免费下载 4463次阅读
- 混合编程的基本方式, 在C51中嵌入汇编程序 9574次阅读
- 80C51单片机模拟I2C总线的主机程序分享 3232次阅读
- 如何在c51程序中调用汇编函数 4105次阅读
- 基于嵌入式Linux下的I2C设备驱动的总体思路与框架设计 3671次阅读
- 一分钟看懂51控制的MT8880双音频收发器的汇编程序及源代码 3028次阅读
- C语言程序内存布局该关注哪些内容 878次阅读
- 详细讲解RT-Thread I2C设备驱动框架及相关函数 2w次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多