当前位置:首页 > 单片机 > 单片机
[导读]自从开始学习单片机起,就觉得I2C是个很有用的东西,它能大大节省我们的端口,现把软件模拟的I2C程序写出来,既是给大家分享,也是为自己做一下备份.下面的程序是用I2C存储24C02: INCLUDE ;同样可用于其他型号;**********

自从开始学习单片机起,就觉得I2C是个很有用的东西,它能大大节省我们的端口,现把软件模拟的I2C程序写出来,既是给大家分享,也是为自己做一下备份.下面的程序是用I2C存储24C02:

INCLUDE ;同样可用于其他型号

;*************************定义变量************************
STATUS EQU 3H
PORTBEQU 6H
PORTCEQU 7H
EEPROM EQU 08H
ADDR EQU 09H
BUFINEQU 0AH
BUFOUT EQU 0BH
SLAVEEQU 0CH
TXBUFEQU 0DH
BIT EQU 0EH
DLY1 EQU 0FH
DLY2 EQU 10H
DI EQU 7
DO EQU 6
SDAEQU 7
SCLEQU 6
ACKF EQU 0
;**********************程序开始***************************
ORG7FFH
GOTO MAIN
ORG000H
;**********************启动信号***************************************
BSTART
BSFPORTB,SDA
BSFPORTB,SCL
MOVLWB'00111111'
TRIS PORTB
NOP
NOP
NOP
NOP
NOP
NOP
BCFPORTB,SDA
NOP
NOP
NOP
NOP
NOP
BCFPORTB,SCL
NOP
NOP
RETLW0
;***********************停止信号********************************
BSTOP
BCFPORTB,SDA
MOVLWB'00111111'
TRIS PORTB
BCFPORTB,SDA
NOP
NOP
NOP
BSFPORTB,SCL
NOP
NOP
NOP
BSFPORTB,SDA
NOP
NOP
BCFPORTB,SCL
NOP
NOP
RETLW0
;**********************发送一个字节**************************
TX
MOVLWD'8'
MOVWFBIT
TXLP BCFEEPROM,DO
BTFSCTXBUF,7
BSFEEPROM,DO
CALL BITOUT
RLFTXBUF
DECFSZ BIT
GOTO TXLP
CALL BITIN
BTFSCEEPROM,DI
BSFPORTC,ACKF
RETLW0
;************************接收一个字节*****************************
RX
CLRF BUFIN
MOVLWD'8'
MOVWFBIT
BCFSTATUS,0
RXLP RLFBUFIN
BCFBUFIN,0
CALL BITIN
BTFSCEEPROM,DI
BSFBUFIN,0
DECFSZ BIT
GOTO RXLP
BSFEEPROM,DO
CALL BITOUT
RETLW0
;**********************发送********************************
BITOUT
MOVLW B'00111111'
trisPORTB
BTFSS EEPROM,DO
GOTOBITLOW
BSF PORTB,SDA
GOTOCLKOUT
BITLOW BCF PORTB,SDA
CLKOUT BSF PORTB,SCL
NOP
NOP
NOP
NOP
BCF PORTB,SCL
RETLW 0
;**********************接收****************************
BITIN
BSF EEPROM,DI
MOVLW B'10111111'
TRISPORTB
BSF PORTB,SCL
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB,SDA
BCF EEPROM,DI
BCF PORTB,SCL
RETLW 0
;***********************主程序**********************
MAIN
MOVLWB'00000000'
TRIS PORTC
CLRF PORTC
WRITE ;写存储器
CLRF PORTC
MOVLWB'10100000'
MOVWFSLAVE
MOVLWB'10101010'
MOVWFBUFOUT
CLRF ADDR
LOOP0CALL BSTART
MOVF SLAVE,0
MOVWFTXBUF
CALL TX
MOVF ADDR,0
MOVWFTXBUF
CALL TX
MOVF BUFOUT,0
MOVWFTXBUF
CALL TX
CALL BSTOP
DELAY10MS
MOVLWD'13'
MOVLWDLY1
MOVLW0FFH
MOVWFDLY2
LP0DECFSZ DLY2
GOTO $-1
DECFSZ DLY1
GOTO $-5
READ ;读存储器
CLRF PORTC
MOVLWB'10100000'
MOVWFSLAVE
CLRF ADDR
LOOP1CALL BSTART
MOVF SLAVE,0
MOVWFTXBUF
CALL TX
MOVF ADDR,0
MOVWFTXBUF
CALL TX
CALL BSTART
MOVLWB'10100001'
MOVWFTXBUF
CALL TX
CALL RX
CALL BSTOP
NOP
NOP
NOP
NOP
NOP
NOP
MOVF BUFIN,0
MOVWFPORTC
LOOP2NOP
GOTO $-1
;************************
END

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本文中,主要在于讲解如何利用pic单片机实现红外夜视仪设计。如果你对本文内容具有兴趣,不妨继续往下阅读哦。

关键字: pic单片机 指数 红外夜视仪

为帮助大家解决pic单片机应用难点,本文将对pic单片机硬件死锁问题予以讲解。

关键字: pic单片机 指数 死锁

电子相关专业的朋友对于pic单片机自然十分熟悉,为增进大家对pic单片机的认识,本文将继续为大家介绍pic单片机。本文中,小编将对pic单片机的PAGE和BANK予以阐述。

关键字: pic单片机 指数 单片机

    本文主要介绍的就是基于DM642的视频采集处理系统中I2C模块的正确初始化,以及通过I2C总线正确地对视频解码芯片SAA7115的寄存器读/写程序。   1 I

关键字: dm642 i2c 视频采集

    串行总线和并行总线相比具有结构简单、占用引脚少、成本低的优点。常见的串行总线有USB、IEEE1394、I2C等,其中I2C总线具有使用简单的特点,在单片机、串行E2P

关键字: vhdl i2c 串行总线

对于pic单片机,大家都很熟悉,pic单片机是诸多类型单片机中最为受用的一款。本文是《pic单片机实际应用,基于pic单片机实现IC卡读写器(上)》的余下内容。如果你对pic单片机具有兴趣,抑或对pic单片机的应用充满好...

关键字: ic卡读写器 pic单片机 指数

为帮助大家增进对pic单片机的认识,本文将介绍如何基于pic单片机实现IC卡读写器。本文仅为上篇,剩余内容请翻阅下篇。

关键字: pic单片机 指数 ic卡读写器

为增进大家对pic单片机的了解,本文将对pic单片机开发环境以及pic单片机的引脚3状态予以讲解。如果你对pic单片机具有兴趣,不妨继续往下阅读哦。

关键字: pic单片机 开发环境 指数

  I2C简介   I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开

关键字: Arduino i2c
关闭