您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页奇偶校验

奇偶校验

来源:筏尚旅游网


甲单片机:

#include

#define uchar unsigned char

#define uint unsigned int

sbit start=P0^0;//发光二极管,用来检测数据是否在发送

unsigned char a=0xff,i=100,b,jieshou;

void delay(unsigned int m) //延时程序

{

unsigned int i,j;

for(i=0; ifor(j=0; j<110; j++);

}

bit jiaoyan(uchar m)//奇校验

{

int i;

bit tmp;

for(i=0;i<8;i++)

{

tmp=tmp^m&0x01;

m>>=1;

}

tmp=~tmp;

return tmp;

}

void main()

{

SCON=0xd0;//串口通信方式3

TMOD=0x20;//设置定时器1为工作方式2

TH1=0xfd;

TL1=0xfd;

TR1=1;//开计数器

EA=1;

ES=1;//开串口中断

TI=0;

RI=0;

while(jieshou!=0x50)

{

TB8=jiaoyan(0x60);

SBUF=0x60;

delay(1100);

start=0;

delay(1100);

start=1;

}

start=0;

while(1);

}

void ser0() interrupt 4//串口中断

{

uchar temp;

ES=0;

if(TI==1)

{ TI=0;

}

if(RI==1)

{

temp=SBUF;

if(RB8==jiaoyan(temp))

{

jieshou=temp;

}

// else

// {jieshou=0xff;}

RI=0;

}

ES=1;

}

乙单片机:

#include

#define uchar unsigned char

#define uint unsigned int

sbit start=P0^0;//发光二极管,用来检测数据是否在发送

unsigned char a=0xff,i=100,b,jieshou,xh=1;

void delay(unsigned int m) //延时程序

{

unsigned int i,j;

for(i=0; ifor(j=0; j<110; j++);

}

bit jiaoyan(uchar m)//奇校验

{

int i;

bit tmp;

for(i=0;i<8;i++)

{

tmp=tmp^m&0x01;

m>>=1;

}

tmp=~tmp;

return tmp;

}

void main()

{

SCON=0xd0;//串口通信方式3

TMOD=0x20;//设置定时器1为工作方式2

TH1=0xfd;

TL1=0xfd;

TR1=1;//开计数器

EA=1;

ES=1;//开串口中断

TI=0;

RI=0;

while(jieshou!=0x60);

while(jieshou==0x60)(这个语句总是判断不到,当接收到甲的信号后,就直接跳到下一个语句停在while(1);处了,而不是进行循环发送,而我如果改成while(i--);就能进行循环,但要在发送几十次后才能成功让甲单片机收到信号)

{

TB8=jiaoyan(0x50);

SBUF=0x50;

start=0;

delay(2200);

start=1;

delay(1100);

}

start=0;

while(1);

}

void ser0() interrupt 4//串口中断

{

uchar temp;

ES=0;

if(TI==1)

{ TI=0;

}

if(RI==1)

{

temp=SBUF;

if(RB8==jiaoyan(temp))

{

jieshou=temp;

}

// else

// {jieshou=0xff;}

RI=0;

}

ES=1;

}

PCB打样找华强 http://www.hqpcb.com 样板2天出货

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务