pic16f877a对24c01的读写程序

发布者:数字探险家最新更新时间:2017-12-10 来源: eefocus关键字:pic16f877a  24c01  读写程序 手机看文章 扫描二维码
随时随地手机看文章

#i ncludeIC.h>
#i nclude
#define uchar  unsigned char
#define uint   unsigned int

static volatile unsigned char aCC @ 0x20;            //发收数据暂存器

static volatile bit acc0     @ (unsigned)&acc*8+0;   //接收
static volatile bit acc7     @ (unsigned)&acc*8+7;   //发送
static volatile unsigned char err @ 0x21;            //
static volatile bit err0     @ (unsigned)&err*8+0;
static volatile bit err3     @ (unsigned)&err*8+3;
static volatile bit err6     @ (unsigned)&err*8+6;
static volatile bit err7     @ (unsigned)&err*8+7;   //应答位暂存位


void  Cack();        //应答位检查
void  Mnack();       //发送非应答位
void  Mack();        //发送应答位
void  Stop();        //停止IC总线
void  Sta();        //启动IC总线
void  Wrbyt (uchar x) ;     //写一字节
      uchar Rdbyt( );      //读一字节
void  Rdnbyt ();       //读n个数据
void  Wrnbyt(uchar SLAwtemp );   //写n个数据
void initial();       //I/O初始化子程序
void LED ();      //
void delay(uint a);
void delay1();


#define  SCL  RB4 //4  ;24C01-6
#define  SDA  RB5 //5  ;24C01-5
#define  SCLIO  TRISB4 //4
#define  SDAIO  TRISB5 //5
#define  SLAW   0x0A0//寻址字节写
#define  SLAR   0x0A1//寻址字节读
uchar numer=1;  //数码管数据暂存区


unsigned char sun[10] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//////////////24C01/////////////////
//--------应答位检查---------
void  Cack()

SCL=1;
SDAIO=1;//输入1
SCLIO=0;
delay1();
err7=SDA;//c=1错误ERR
SCL=0;
}
///--------发送非应答位---------- 
void  Mnack()
{
 SDA=1;
 SCLIO=0;
 SDAIO=0;//输出
 SCL=1;
 delay1();
 SCL=0;
 SDA=0;
}
//-------发送应答位---------------
void  Mack()
{
SDA=0;
SCLIO=0;
SDAIO=0;//输出
SCL=1;
delay1();
SCL=0;
SDA=1;
}
//--------停止IC总线---------------
void  Stop()
{
 SDAIO=0;//输出
 SCLIO=0;
 SDA=0;
 delay1();
 SCL=1;
 delay1();
 SDA=1;
 delay1();
}
//--------;启动IC总线-------------
void  Sta()

SDAIO=0;//输出
SCLIO=0;
SDA=1;
delay1();
SCL=1;
delay1();
SDA=0;
delay1();
SCL=0;
}
//--------写一字节------------------------ 
void  Wrbyt(uchar x) 
{
uchar i;
acc=x;
SCLIO=0;
SDAIO=0;
for(i=8;i>0;i--)
{
 SDA=acc7;
 SCL=1;
 delay1();
 SCL=0;
 SDA=0; 
 acc=acc<<1;
 }
}
//---------读一字节-----------------
uchar   Rdbyt( )
{
uchar i;
SCLIO=0;
SDAIO=1;//;输入
for(i=8;i>0;i--)
 {
 acc=acc<<1;//接收数据左移寄存器 
 SCL=1;
 delay1();
 acc0=SDA;
 SCL=0;
 delay1();
 }
 return(acc); 

////---------读n个数据----------------
void  Rdnbyt () //传送数据个
{
 Sta(); //启动IC总线 
 delay1();
 numer = Rdbyt();///读一字节
 delay1();
 Stop(); //停止IC总线
}
//---------写n个数据---------------
void  Wrnbyt(uchar SLAwtemp )
{

 err7=1;
 if(err7==1)///c=1E0,ERR
 {
 Sta(); //启动IC总线
 delay1();
 Wrbyt(SLAwtemp); //写一字节 
 delay1();
 Cack();//应答位检查-
 }
 delay1();
 while(err7==1);
 Stop(); //停止IC总线
}

//*************************************//
//系统 各I/O初始化子程序
void initial()
{
 TRISC=0;
 TRISA=0;
 TRISB1=1;
 TRISB2=1;
}

//LED

void LED ()
{
PORTA=0X1f;
PORTC=sun[numer];
}

void delay(uint a)
{
uint b=100;
while(a--)
{
 while(b--);
}
}

void delay1()
{
NOP();
NOP();
NOP();
NOP();
}

void main()
{
initial();//系统 各I/O初始化子程序
LED();
delay(100);
Wrnbyt (SLAW);//寻址字节写#0A0
delay1();
Wrnbyt (0x05);//写地址0x05
delay1();
Wrnbyt (0x06);//写数据0x06
delay1();
Wrnbyt (SLAR);//寻址字节读#0A1
delay1();
Wrnbyt (0x05);//读地址0x05
delay1();
Rdnbyt (); //读数据
delay(5);
while(1)
{LED();}
}


关键字:pic16f877a  24c01  读写程序 引用地址:pic16f877a对24c01的读写程序

上一篇:两机串口通讯程序
下一篇:877A软件模拟SPI通信读写93C46

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

STM32 AT24C128简单读写程序
目前个人测试过AT24C02-AT24C128,感觉还可以。里面没有页写函数,有兴趣的伙伴可以补充一下,该程序仅供参考 单片机源程序如下: #include led.h #include delay.h #include sys.h #include usart.h #include key.h #include 24cxx.h #include myiic.h //要写入到24c128的字符串数组 const u8 TEXT_Buffer ={ STM32 AT24c128 }; #define SIZE sizeof(TEXT_Buffer) #define ADDRESS 163 //读
[单片机]
PIC16F877A单片机实现HT1621液晶显示控制
简介:本文使用PIC16F877A单片机实现HT1621液晶显示控制,该硬件电路具有硬件少,体积小,结构简单,稳定性高,能准确地显示多功能全自动智能开关的漏电、过载、欠压等指示显示。 HT1621液晶显示控制器是多功能全自动智能开关的显示部件,能实时、准确、在线监控供电线路的运行情况。一旦线路出现漏电、过载、短路、过压、欠压和缺相时,智能安全用电开关能立刻启动保护程序,并显示在HT1621液晶显示控制器上。在智能化楼宇、中高档家庭住宅、电力系统、工矿企业、国家重点消防单位以及石油化工、文教卫生、金融、电信等领域。基于单片机的HT1621液晶显示控制器应用广泛,其原理框图如图1所示。 美国MICROCHIP公司的PIC系列
[单片机]
<font color='red'>PIC16F877A</font>单片机实现HT1621液晶显示控制
基于PIC16F877A单片机的一种车载红外夜视仪设计
0 引言 随着汽车市场的快速发展和安防意识的日益强化,人们对汽车安全保障技术的要求越来越高,而现有汽车照明系统在雪夜、雪天或大雾等能见度较低情况下视距不远、效果不佳的弊病成为汽车行驶的安全隐患之一。更严重的是在夜晚行车时,驾驶员通常会被对方车辆的灯光干扰出现盲区,容易发生车祸。夜视系统却可以在黑暗中帮助驾驶员导航,使驾驶员在有灯光和黑暗两种情况下都能看清驾驶环境。因此开发一种结构简单、性能稳定、可靠性好、适用性强的汽车红外夜视系统,具有重要的市场应用前景。 1 系统总体设计 1)系统原理 根据工作原理的不同,红外夜视系统分为被动红外夜视系统和主动红外夜视系统。主动红外夜视系统利用其所携带的红外光源主动照射目标,由光学系
[单片机]
基于<font color='red'>PIC16F877A</font>单片机的一种车载红外夜视仪设计
PIC16 单片机 LCD1602 驱动 程序 PIC16F877A PIC16F887
/* LCD显示相关 */ #define DATA 1 /* LCD写数据时为1 */ #define COM 0 /* LCD写命令时为0 */ #define LINE1 0b10000000 #define LINE2 0b11000000 #define LCD_E RD6 #define LCD_RW RD5 #define LCD_RS RD4 void LCD_WRITE_4( unsigned char R1, unsigned char FLAG ); void LC
[单片机]
PIC16 单片机 LCD1602 驱动 程序 <font color='red'>PIC16F877A</font> PIC16F887
PIC16F877A单片机PPM调制的激光通信Proteus仿真及源程序
软件: MPLAB X IDE v4.15编译 proteus 8.6仿真. 1、仿真电路图; 2、发送和接收源程序加注释。 请看注释。 原理: 1)ADC读取并用led显示ADC读数,并通过usart进行输出。 2)通过PPM原理进行通讯传输到另外一个单片机,LED显示接收的值。 具体请看附件 希望大家顶一下。 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 1、发送模块:读取ADC数值,LED显示10位ADC值。并通过PPM发送。 2、接收模块:PPM接收到的数据。LED显示接收的ADC值(10bits) 基于PIC单片机的PPM调制激光通信收发器 PPM (pulse position modulati
[单片机]
<font color='red'>PIC16F877A</font>单片机PPM调制的激光通信Proteus仿真及源程序
PIC16F877A例程---PWM(2)
#include //------------------------------------------------------------ // 使用PIC16F887芯片,输出50khz占空比50%的方波 //------------------------------------------------------------ //系统配置 //__CONFIG(HS&PWRTEN&BOREN&PROTECT&WDTDIS); __CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & UNPROTECT & BORDIS & LVPDIS & IESODIS & FCMDIS); //--
[单片机]
PIC16f877A单片机读写93LC46B的汇编程序
由于在使用时,找了很久也没找到相关的程序,因此把自己后来编写的程序贴出来,希望能给后来者借鉴参考! (此程序配合 WWW.PIC16.COM 单片机学习网的QL200开发板使用) ;实验目的:熟悉SPI总线以及9346EEPROM的读写 ;RBO键按下时把DATA和DATA2写入到EEPROM中以EE ADDR为地址的单元内, ;完成后,单个数码观显示 9 做为完成标志 ;RB1键按下时,读取EEPROM中以EE ADDR为地址的单元,并送数码管显示 ;硬件要求:S3、S5、S6拨码管置ON,S1第7、8位置ON。 LIST P=16F877A, R=DEC include P16F877A.inc ;包含头文
[单片机]
一种采用曼码调制的非接触IC卡读写程序编制
   简 介 非接触IC卡技术有十分良好的应用前景。本文从应用角度介绍了e5550/ U2270B器件组构成的一种低频非接触IC卡系统,并对采用曼彻斯特码调制进行信息交互时的读写操作做了详尽分析,最后给出用C语言编写的相应源程序。    关键词 非接触IC卡 曼码调制 非接触IC卡的读写操作                      导 言   非接触IC卡技术已广泛应用于诸如电子交易,医疗保健凭证,驾车授权凭证,车辆加油管理系统,家居、公司办公通道,各种限权进入场所的门禁,各类电、水、热能和煤气计量表具的预付费系统,乃至宠物识别等。因其使用便
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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