PIC单片机应用专题三:I2C读写24C02

发布者:大头玩家最新更新时间:2016-11-02 来源: eefocus关键字:PIC单片机  I2C  读写24C02 手机看文章 扫描二维码
随时随地手机看文章
自从开始学习单片机起,就觉得I2C是个很有用的东西,它能大大节省我们的端口,现把软件模拟的I2C程序写出来,既是给大家分享,也是为自己做一下备份.下面的程序是用I2C存储24C02:

   INCLUDE ;同样可用于其他型号

;*************************定义变量************************
                        STATUS   EQU 3H
                        PORTB    EQU 6H
                        PORTC    EQU 7H
                        EEPROM   EQU 08H
                        ADDR     EQU 09H
                        BUFIN    EQU 0AH
                        BUFOUT   EQU 0BH
                        SLAVE    EQU   0CH
                        TXBUF    EQU   0DH
                         BIT       EQU    0EH
                        DLY1     EQU   0FH
                        DLY2     EQU   10H
                         DI       EQU      7
                         DO       EQU     6
                         SDA      EQU    7
                         SCL      EQU    6
                         ACKF     EQU   0
;**********************程序开始***************************
       ORG    7FFH
       GOTO   MAIN
       ORG    000H
;**********************启动信号***************************************
BSTART 
       BSF    PORTB,SDA
       BSF    PORTB,SCL 
       MOVLW  B'00111111'
       TRIS   PORTB
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF    PORTB,SDA
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF    PORTB,SCL
       NOP
       NOP
       RETLW  0
;***********************停止信号********************************
BSTOP
       BCF    PORTB,SDA
       MOVLW  B'00111111'
       TRIS   PORTB
       BCF    PORTB,SDA
       NOP
       NOP
       NOP
       BSF    PORTB,SCL
       NOP
       NOP
       NOP
       BSF    PORTB,SDA
       NOP
       NOP
       BCF    PORTB,SCL
       NOP
       NOP
       RETLW  0
;**********************发送一个字节**************************
TX     
       MOVLW  D'8'
       MOVWF  BIT
TXLP   BCF    EEPROM,DO
       BTFSC  TXBUF,7
       BSF    EEPROM,DO
       CALL   BITOUT
       RLF    TXBUF
       DECFSZ BIT
       GOTO   TXLP
       CALL   BITIN
       BTFSC  EEPROM,DI
       BSF    PORTC,ACKF
       RETLW  0
;************************接收一个字节*****************************
RX
       CLRF   BUFIN
       MOVLW  D'8'
       MOVWF  BIT
       BCF    STATUS,0
RXLP   RLF    BUFIN
       BCF    BUFIN,0
       CALL   BITIN
       BTFSC  EEPROM,DI
       BSF    BUFIN,0
       DECFSZ BIT
       GOTO   RXLP
       BSF    EEPROM,DO
       CALL   BITOUT
       RETLW  0
;**********************发送********************************
BITOUT
       MOVLW   B'00111111'
       tris    PORTB
       BTFSS   EEPROM,DO
       GOTO    BITLOW
       BSF     PORTB,SDA
       GOTO    CLKOUT
BITLOW BCF     PORTB,SDA
CLKOUT BSF     PORTB,SCL
       NOP
       NOP
       NOP
       NOP
       BCF     PORTB,SCL
       RETLW   0
;**********************接收****************************
BITIN
       BSF     EEPROM,DI
       MOVLW   B'10111111'
       TRIS    PORTB
       BSF     PORTB,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       BTFSS   PORTB,SDA
       BCF     EEPROM,DI
       BCF     PORTB,SCL
       RETLW   0
;***********************主程序**********************
MAIN
       MOVLW  B'00000000'
       TRIS   PORTC
       CLRF   PORTC
WRITE                                 ;写存储器
       CLRF   PORTC
       MOVLW  B'10100000'
       MOVWF  SLAVE
       MOVLW  B'10101010'
       MOVWF  BUFOUT
       CLRF   ADDR
LOOP0  CALL   BSTART
       MOVF   SLAVE,0
       MOVWF  TXBUF
       CALL   TX
       MOVF   ADDR,0
       MOVWF  TXBUF
       CALL   TX
       MOVF   BUFOUT,0
       MOVWF  TXBUF
       CALL   TX
       CALL   BSTOP
DELAY10MS
       MOVLW  D'13'
       MOVLW  DLY1
       MOVLW  0FFH
       MOVWF  DLY2
LP0    DECFSZ DLY2
       GOTO   $-1
       DECFSZ DLY1
       GOTO   $-5
READ                                ;读存储器
       CLRF   PORTC
       MOVLW  B'10100000'
       MOVWF  SLAVE
       CLRF   ADDR
LOOP1  CALL   BSTART
       MOVF   SLAVE,0
       MOVWF  TXBUF
       CALL   TX
       MOVF   ADDR,0
       MOVWF  TXBUF
       CALL   TX
       CALL   BSTART
       MOVLW  B'10100001'
       MOVWF  TXBUF
       CALL   TX
       CALL   RX
       CALL   BSTOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       MOVF   BUFIN,0
       MOVWF  PORTC
LOOP2  NOP
       GOTO   $-1
;************************
       END

关键字:PIC单片机  I2C  读写24C02 引用地址:PIC单片机应用专题三:I2C读写24C02

上一篇:PIC单片机实例二:基于I2C的SAA1064数码管显示
下一篇:PIC单片机应用专题二:显示接口及编程

推荐阅读最新更新时间:2024-03-16 15:19

I2C总线学习(一)--信号类型
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器,由总线上接收数据的器件则为接收器。 在CPU与被控IC 之间、IC 与IC 之间进行双向传送,高速IIC 总线一般可达400kbps以上。 I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。   开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始
[单片机]
<font color='red'>I2C</font>总线学习(一)--信号类型
触摸传感器QST108与PIC单片机的接口设计
    1 概 述        QST108是意法半导体公司针对人机界面的触摸按键控制而推出的电容触摸传感器。其工作原理采用了美国昆腾公司的电荷转移电容专利技术(QProx),支持8个独立按键,且可选择按键状态检测输出或I2C总线控制2种正常工作方式;同时,通过软件命令可使其进入低功耗模式,当有按键按下时可被唤醒。QST108特有的相邻按键抑制算法使得一个按键在按下未松开时,其他按键处于无效状态;自校准和自动漂移补偿功能使其无须人工校准,从而进一步降低了QST108的应用难度。引脚配置如图1所示,各引脚功能如表1所列。        2 QST108的工作方式        2.1 按键状态检测输出方式     
[嵌入式]
I2C串行EEPROM应用系统的健壮性设计
引言 在嵌入式控制系统中,通常要用到非易失性存储器。无论是掉电时维持需要保存的设置,还是存储重要记录,可靠的非易失性存储器都是一种理想的选择。非易失性存储常常采用外部串行存储器来实现,其中I2C接口产品是最常用的一种类型。然而,这种产品和其他EEPROM存储器一样,在使用时也存在着一些条件会潜在地导致其产生某些非标准的甚至是错误的操作。因此在进行I2C串行EEPROM存储器的应用设计时,除了应考虑数据手册规范之外,还必须考虑更多的因素,这样才能实现更健壮的总体设计,确保系统具有优良的质量特性。 1 防意外写措施 器件在上电/掉电期间或者SDA/SCL线的噪声过大时都有可能导致意外写操作。为了解决这一问题,一方
[单片机]
Microchip向中国电表制造商林洋电子交付第50亿颗PIC单片机
全球领先的单片机和模拟半导体供应商 ——Microchip Technology Inc. (美国微芯科技公司)近日将其第 50 亿颗 PIC 单片机交付给中国电表制造商江苏林洋电子有限公司。 Microchip 于去年 9 月交付了第 40 亿颗单片机。仅相隔一年即再传捷报,交付了第 50 亿颗型号为 PIC18LF8720-I/PT 的单片机。    此举足以证明 Microchip 的 PIC 单片机一直深受业界青睐,成为嵌入式控制设计中首选的高性能、高成本效益解决方案,特别是在发展迅猛的中国市场不断绽放异彩。   Microchip
[焦点新闻]
PIC单片机抗静电处理解决方案
PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 1:MCLR上拉10k、串联一个1k电阻,0.1uf电容到地。 2:MCLR上拉1k、串联一个200电阻,0.1uf电容到地。 3:MCLR上拉1k、0.1uf电容到地。 4:MCLR上拉4.7k、串联一个1k电阻,0.1uf电容到地。 5:禁止MCLR,MCLR脚下拉一个1k电阻到地,电阻并一0.1uf电容。
[单片机]
<font color='red'>PIC单片机</font>抗静电处理解决方案
基于STM32F103的GPIO模拟I2C操作AT24C02S-ST E2prom调试日志
基于STM32F103的GPIO模拟I2C操作E2prom芯片AT24C02S-ST: 1、硬件环境初始化:Stm32管脚配置,管脚操作 typedef struct _PIN_CFG { GPIO_TypeDef *Port; uint16_t Pin; } PIN_CFG; typedef struct _E2PROM_CFG { PIN_CFG SCL; PIN_CFG SDA; } E2PROM_CFG; E2PROM_CFG E2prom_Cfg; //初始化 void E2prom_Chip_Init(void) { GPIO_InitTypeDef GPIO_InitSt
[单片机]
基于STM32F103的GPIO模拟<font color='red'>I2C</font>操作AT24C02S-ST E2prom调试日志
P87LPC764利用I2C总线扩展LCD显示器
1 引言    I2C总线是Philips公司推出的芯片间串行传输总线。它仅用串行数据线(SDA)和串行时钟线(SCL)两根连线便实现了完善的全双工同步数据传送,并可很方便地构成多机系统和外围器件扩展系统。    本文介绍在P87LPC764单片机中利用I2C总线系统中典型的LCD驱动控制器件PCF8577C来扩展256段静态LCD的电路设计方法。 2 硬件电路设计 2.1 P87LPC764单片机的I2C总线接口    P87LPC764是Philips公司生产的一种小封装、低成本、高性能的单片机(具体内容见参考文献2)。它采用80C51加速处理器结构,片内带有支持I2C总线的硬件接口。当激活I2C总线时,P87LPC7
[单片机]
P87LPC764利用<font color='red'>I2C</font>总线扩展LCD显示器
PT2262/2272编解码器及应用在PIC单片机中干扰的处理源
BTFSS PORTB,VT ; 判断VT管脚高低 GOTO KEY_DOWN ; 为低 BTFSC SYS_FLAG,VT_UP ; 为高,判断标志位VT_UP是否为低 GOTO UP_UP ; 为高,进入按键高处理 BSF SYS_FLAG,GR_UP ; 为低,设高干扰标志 BTFSC SYS_FLAG,GR_DOWN ; 是否有低干扰标志 CLRF GR_TIME ; 有则清干扰计数器 BTFSS SYS_FLAG,MS1
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved