PIC16F877A与PC机串行通信C语言源程序.docx

PIC16F877A与PC机串行通信C语言源程序.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PIC16F877A与PC机串行通信C语言源程

//*******串口通信程序*********

//*******定义变量*************#include;

#defineuncharunsignedchar#defineuint

unsignedintunchar

RC_label;//标志位起始位为1结束位为0unchar

caiji_label;//采集帧格式标志位正确为1错误为0

unchar

data

RC[100];//存储接收到的数据

unchar

data

TX1[100];//存储自身参数

unchar

data

TX2[100];//存储出错指示ERROR

int

int

RC_buff;//

i=0,j=0,k=0;//

//*****变量定义完毕************

//*****子程序区****************

//*****串口初始化程序开始**********voidinitRS232()

{

//设置TXSTACSRC=0;//

TX9=0;//8位数据发送TXEN=1;//发送使能SYNC=0;//选择异步模式BRGH=1;//高速TRMT=1;//发送寄存器空TX9D=0;//

//设置RCSTASPEN=1;//允许串口工作RX9=0;//接收8位数据SREN=1;//

CREN=1;//使能连续接收ADDEN=0;//

FERR=0;//

OERR=0;//无超速错误RX9D=0;//TRISC=0X80;//设置C口

SPBRG=0X19;//设置波特率为9600

}

//*******初始化232完毕********

//*******延时子程序开始*********voiddelay(inti)

{for(i;--i;)continue;}

//******延时子程序完毕*******

//******中断初始化子程序开始******voidint_interrupt(void)

{GTE=1;//PEIE=1;//RCIE=1;//

}

//*******中断初始化子程序完毕********

//********中断服务子程序开始*********voidinterruptreceive(void)

{

if(OERR==1)//判断有无超速错误

{CREN=0;CREN=1;

}

if(RCIF==1)

{

RC_buff=RCREG;

if(RC_buff==0x2a)//判断是否是起始标志*

{

RC_label=1;

}

if(RC_buff==0x23)//判断是否是结束标志#

{

RC_label=0;

}

}

if(RC_label==1)

RC[k++]=RC_buff;//将接收到的数据存储在数组中elseif(RC_label==0)

k=0;if(RC[1]==0XFE&&RC[2]==0XC0&&RC[3]==0X34&&RC[5]==

0X12)//判断数据采集帧格式是否正确

caiji_label=1;elsecaiji_label=0;

//********中断服务子程序完毕**********

//********参数发送子程序开始**********voidTX_serve(void)

{

TX1[]={0X2A,0XFD,0X26,0X30,0X31,0X32};//自身

参数存储在TX1中

TX2[]={0X56,0X52,0X52,0X4F,0X52};//出错指示存

储在TX2中

if(caiji_label==1)//如果数据采集帧格式正确则发送自身参数帧

{

for(j=0;j<6;j++)

{

TXREG=TX1[j];

delay(20);

}

}

if(caiji_label==0)//如果数据采集帧格式错误则发送出错指示

{

for(j=0;j<5;j++)

{

TXREG=TX2[j];

delay(20);

}

}

}

//********参数发送子程序完毕**********

//********主程序开始**************voidmain()

{

int_interrupt();initRS232();TX_serve();

end

}

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档