PIC16f877A读写24c02程序

发布者:心有所属最新更新时间:2017-12-07 来源: eefocus关键字:PIC16f877A  读写24c02 手机看文章 扫描二维码
随时随地手机看文章

PIC16f877A读写24c02程序

#include  
#include  
#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  读写24c02 引用地址:PIC16f877A读写24c02程序

上一篇:PIC单只数码管循环显示0-9
下一篇:pic16f877双机通信lcd1602液晶显示

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

pic16f877a 万年历程序
说明: 1.本数字始时钟可以显示日期,时间,并具有农历与星期查询功能 2.具有环境温度检测功能。 3.三组闹钟设置。 使用方法: 1.使用 设置 键可以方便切换要设置的对象,并配合+、-键使之设置成你要的数值。 2.当设置闹钟时,当调到想要设置的时间时,按存储键即可存入第一组闹钟,以此类推共可以设置三组。 /*************************************************** * 标题:万年历 * * 作者: * * 日期:2008年1月13日 * * 说明:包含文件 ziku.h ,
[单片机]
<font color='red'>pic16f877a</font> 万年历程序
PIC16F877A的光伏并网发电装置设计
引言 新能源是21世纪世界经济发展中最具决定力的五大技术领域之一。太阳能是一种清洁、高效和永不衰竭的可再生能源,是满足未来全球电力需求的法宝。能源短缺、环境污染等问题的日益突出使太阳能电池备受青睐。当前太阳能光伏产业发展迅速,利用现代电能变换技术实行光伏逆变控制,具有很好的潜力。本文将单片机技术与SPWM技术相结合,设计了一种用软件产生SPWM波的方法。结合功率器件具有高速、大电流的特点,研制出光伏并网的逆变电源,通过改变调制深度(即采用不同的脉宽组)实现了良好的稳压控制。系统能够实现频率相位跟踪,具有过流、过压、短路保护(报警并停止输出SPWM波)等功能,自动稳压性能好,输出波形失真小,可为工业上实现光伏并网提供参考。 研究电
[单片机]
<font color='red'>PIC16F877A</font>的光伏并网发电装置设计
基本I/O口操作
//单片机I/O口的使用 //★★★★★★★★★单片机I/O口的使用★★★★★★★★★★★\\ //单片机型号:PIC16F877A //功能描述:让RC0口灯闪烁 #include pic.h //包含单片机内部资源预定义 __CONFIG(0XF73A); //芯片配置字 void delay(); //delay函数申明 //=============================================================================== //函数功能:主函数 //函数名称:void main() void main() /
[单片机]
PIC16F877A一路舵机参数化控制程序
;** 日期: 2010年.10月 ;** 描述: 一路舵机参数化控制 ;** 功能: 用Time1中断,RD6口输出 ;** 晶振 : 12M ;** 适用机型: PIC16F877A,TowerPro MG995 *********************************************************************************/ #include pic.h #define uchar unsigned char #define uint unsigned int uint f; uchar servo_angle_H; uchar servo_ang
[单片机]
PIC16F877A PICC AD转换程序
//软件思路:选择RAO做为模拟输入通道; // 连续转换4次再求平均值做为转换结果 // 最后结构只取低8位 // 结果送数码管的低3位显示 #include pic.h //包含内部资源预定义 __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 const char TABLE ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90}; //定义常数0-9的数据表格 void DELAY(); //delay函数申明
[单片机]
PIC16F877A单片机 (中断与定时器Timer2)
1 基本原理 2 实现代码 主要根据定时器2的逻辑框图和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解。但有些寄存器在框图中可能没有说明,所以也需要仔细阅读定时器0的官方文档,即基本原理部分。 /*----------------函数功能: 中断 定时器2 --------------------------*/ #include pic.h // 调用PIC16f87XA单片机的头文件 //#include delay.h //调用延时子函数 __CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关 //__CONFIG(HS&WDTDIS&LVPD
[单片机]
<font color='red'>PIC16F877A</font>单片机 (中断与定时器Timer2)
PIC16F877A的EEPROM使用
unsigned char eeprom_read(unsigned char addr); void eeprom_write(unsigned char addr, unsigned char value); 这两个函数是PIC内部函数,可以直接调用; -----------------------------以下内容是baidu空间的一位博主写的------- http://hi.baidu.com/wxg923/item/17d65d23942ea9fd50fd8788 --------- -上周在做一个项目时,需要对测试数据实时的保存,以被重新上电后读取.采用了PIC的内部EEPROM,正常读取时没有什么问题.反
[单片机]
PIC16F877A动态数码时钟显示实验参考程序
;动态数码时钟显示实验参考程序 ;使用资源: ;1,TMRO定时器。确定显示的位,及显示延时。 ;2,TMR1定时器。秒信号产生。 ;3,PORTA端口。六共阳极位数码管的位选信号,低电平有效 ;4,PORTC端口。数码管的七段,RC7不用。 ;功能说明: ;1.六位数码管动态扫描显示时间(格式为:HHMMSS,24小时制)。 ;2.时钟信号由单片机内部定时器硬件单元编程产生。 ;本实战的目的是让大家进一步熟悉定时器的编程,多位数码管动态扫描显示的编程。 ;硬件接法: ;1.实验板上拨码开关S4、S5的所有位必须置ON,其他都可以关闭。 ;2.最好把93C46跟24CXX存储器从板上取下。 ;本实例原提供者:p
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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