博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16F877A和24C02通信汇编语言,PIC16f877A读写24c02程序
阅读量:1532 次
发布时间:2019-04-21

本文共 3058 字,大约阅读时间需要 10 分钟。

PIC16f877A读写24c02程序

来源:--

作者:--

浏览:389

时间:2016-08-10 14:18

标签:

摘要:

PIC16f877A读写24c02程序

#include  #include  #define uchar  unsigned char  #define uint   unsigned int

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();}

}

分享到:

10e8228c7d9c48ff5d812b53005e0bae.png

转载地址:http://emkdy.baihongyu.com/

你可能感兴趣的文章
The Beauty Of A Woman
查看>>
解读SAP Hybris为何获国内B2B用户青睐?
查看>>
Hybris 体系结构
查看>>
抽水马桶结构图及工作原理
查看>>
丑闻使股票波动
查看>>
肿瘤标志物检测一般有哪些项目
查看>>
2017你该买房,还是卖房?
查看>>
9种蔬菜吃不对胜似砒霜
查看>>
怎样修改电脑时间同步北京时间
查看>>
转载:分享这五年电商网站网络推广的深刻经历
查看>>
神经性皮炎
查看>>
SAP会计期间设置
查看>>
SAP后台执行大数据量报表(鹦鹉学舌篇)
查看>>
涨姿势时间:为什么飞机的往返时间会不一样?
查看>>
出去旅行带上这些常用日语就够啦!
查看>>
SAP ABAP:获取汇率的完整实现之一
查看>>
三大军阀
查看>>
ABAP基础类型温习
查看>>
第三只眼看财务-留存收益与职业道德
查看>>
SAP中Product Orders(生产订单)相关函数BAPI
查看>>