|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
抄都抄错,请帮我看看这个I2C |
作者:dragontan 栏目:单片机 |
大家好,我这里有一段I2C的底层函数... ...对不起ZLG的工程师了,我是抄你们的:( 可惜没抄好。 写完之后,向I2C从设备发送(地址+读/写)字节,设备无应答!! 源程序如下,虽然不光彩,但是还是想请各位达人帮我看看。我这程序究竟是错在哪里了??? 在下叩首! ;-------------------------------------------------------------- ;-----IIC_HAL.ASM Version 1.0 ;-----Amended by DragonTan @Shenzhen ;-----date 2005-04-12 ;-----Fosc= 16.5MHz (12 Clock)T_machine=12/Fosc=0.7us ;-----Especially for FM1073 SHI @100KHZ I2C Compatible ;-----include function: START STOP MACK MNACK CACK WRBYTE RDBYTE ;-------------------------------------------------------------- SDA EQU P1.6 SCL EQU P1.7 ACK EQU 13H ;启动I2C总线子程序 START: SETB SDA NOP SETB SCL ;起始条件建立时间大于4.7us NOP NOP NOP NOP NOP NOP NOP CLR SDA NOP ;起始条件锁定时大于4us NOP NOP NOP NOP NOP CLR SCL ;钳住总线,准备发数据 NOP RET ;结束总线子程序 STOP: CLR SDA NOP SETB SCL ;发送结束条件的时钟信号 NOP ;结束总线时间大于4us NOP NOP NOP NOP NOP SETB SDA ;结束总线 NOP ;保证一个终止信号和起始信号的空闲时间大于4.7us NOP NOP NOP NOP NOP NOP RET ;发送应答信号子程序 MACK: CLR SDA ;将SDA置0 NOP NOP NOP NOP NOP NOP NOP SETB SCL NOP ;保持数据时间,即SCL为高时间大于4.7us NOP NOP NOP NOP NOP NOP CLR SCL NOP NOP ;SETB SDA RET ;发送非应答信号 MNACK: SETB SDA ;将SDA置1 NOP NOP SETB SCL NOP NOP ;保持数据时间,即SCL为高时间大于4.7us NOP NOP NOP NOP NOP< |
2楼: | >>参与讨论 |
作者: dragontan 于 2005/5/30 14:19:00 发布:
PS:I2C的速度最高是100K,低于这个速度也可以。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |