c语言 串口编程源代码,模拟串口的C语言源程序代码

void JieShou(void)  //接收函数,每4次调用接收一位

{

if((KaiShi==0) && (JieShou_D==0))  //串行开始位到来

{

DingShiJiShu=0;     //开始定时计数

KaiShi=1;

JieShou_T=0xffff;   //接收临时寄存器置全1

}

else if((KaiShi==1) && (DingShiJiShu==1))  //第2次调用,串行数据采样时间到来

{

JieShou_T >>= 1;

if(JieShou_D) JieShou_T |=0x8000;

}

else if(JieShou_T & 0x807f ==0x803f)  //接收完成 JieShou_T=1xxx_xxxx_x011_1111

{

KaiShi=0;

DingShiJiShu=0;

JieShou_h = JieShou_T >> 7; //右移7位得到串行数据

JieShou_b=1;

}

if(KaiShi)

{

DingShiJiShu++;          //只在开始接收时定时计数+1

DingShiJiShu &=0x03;     //每4次调用接收一位

}

}

//发送部分

sbit FaSong_D=   ;//定义发送端口

uint16 FaSong_h;   //发送缓冲区

bit FaSong_b;    //发送完成标志

void KaiShiFaSong(uint8 fs) //设置发送数据,开始发送

{

FaSong_h = fs;

FaSong_h <<= 1;

FaSong_h |= 0x0200;  //FaSong_h=0000_001x_xxxx_xxx_0

FaSong_b=0;  //发送标志=0 表示正在发送中

}

void FaSong(void) //发送函数,每调用一次发一位

{

if(FaSong_h)  //发送未完成

{

if(FaSong_h & 0x0001)

FaSong_D=1;

else   FaSong_D=0;

FaSong_h >>= 1;

}

else

FaSong_b =1;  //发送完成标志=1 表示发送完成

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值