51单片机如何模拟串口之计数法

eefocus · 电子工程世界·2021-06-11 00:00

1.5k

简介:51的计数器在每指令周期加1,直到溢出,同时硬件置溢出标志位。这样我们就可以通过预置初值的方法让机器每96个指令周期产生一次溢出,程序不断的查询溢出标志来决定是否发送或接收下一位。


计数法

分 析: 51的计数器在每指令周期加1,直到溢出,同时硬件置溢出标志位。这样我们就可以通过预置初值的方法让机器每96个指令周期产生一次溢出,程序不断的查询溢出标志来决定是否发送或接收下一位。


接收的程序,可以参考下一种方法,不再写出。这种办法个人感觉不错,接收和发送都很准确,另外不需要计算每条语句的指令周期数。


view plaincopy to clipboardprint?

//计数器初始化

void S2INI(void)

{

TMOD |=0x02; //计数器0,方式2

TH0=0xA0; //预值为256-96=140,十六进制A0

TL0=TH0;

TR0=1; //开始计数

TF0=0;

}

//查询计数器溢出标志位

void WaitTF0( void )

{

while(!TF0);

TF0=0;

}

//向串口发送一个字节数据

void WByte(uchar input)

{

//发送启始位

uchar i=8;

TR0=1;

TXD=(bit)0;

WaitTF0();

//发送8位数据位

while(i--)

{

TXD=(bit)(input&0x01);//先传低位

WaitTF0();

input=input>>1;

}

//发送校验位(无)

//发送结束位

TXD=(bit)1;

WaitTF0();

TR0=0;

}


关键字: 51单片机 模拟串口 计数法 编辑:什么鱼 引用地址: http://news.eeworld.com.cn/mcu/ic538391.html

广告

eefocus · 电子工程世界·2021-06-11 00:00

1.5k
  • 单片机
  • 计数器
  • 用户热评
    打开摩尔芯球APP,查看更多评论

    重大事件及时推送,更流畅的沉浸式阅读体验

    参与评论

    0/200字

    登录后即可发布评论

    发布评论

    请使用浏览器自带的分享按钮,
    将你这篇文章分享出去吧。
    +86
    获取验证码
    登 录

    邮箱登录

    未注册过的用户将直接为你创建摩尔账号