给个简单的。
main()
{
//初始化串口
SCON=0x50;
TMOD=0x20;
TH1=TL1=0xff;//视Fosc,给实际波特率发生器初值。
TR1=1;
while(1)
{
while(RI==0);RI=0;
switch(SBUF)
{
case 0x55:
SBUF=0x31;while(TI==0);TI=0;
SBUF=0x31;while(TI==0);TI=0;
SBUF=0x31;while(TI==0);TI=0;
SBUF=0x31;while(TI==0);TI=0;
SBUF=0x31;while(TI==0);TI=0;
break;
case 0x66:
SBUF=0x32;while(TI==0);TI=0;
SBUF=0x32;while(TI==0);TI=0;
SBUF=0x32;while(TI==0);TI=0;
SBUF=0x32;while(TI==0);TI=0;
SBUF=0x32;while(TI==0);TI=0;
break;
}
}
}
实际情况:
1串口的初始化,波特率和通信模式设置。
2更详尽的协议还包括:输入的数据格式、返回的数据格式。(这里,我只是把55当做了0x55处理,返回的内容是ASCII字符,六个数字1)
3当输入数据不止一个字节进行判断时,需要考虑串口接收的缓冲数组。同时对数组进行数据接收和判断。并考虑用中断处理接收过程。
4返回数据,考虑发送缓冲数组。用中断考虑发送过程。
如果你愿意的话,大家更喜欢阅读程序,修改或提出建议。以上只是个简单的例子。
用不着数组。
只要增加一个数字vlaue,再让 key 从keyscan()函数中,得到0~9,
最后如下计算到vlaue中: vlaue = vlaue 10 + key;
以后,每得到一个按键数值(0~9),都执行一遍上面的算式,即可。
以上就是关于求一个51单片机c语言程序,当串口输入一个数,然后单片机返回指定的数字全部的内容,包括:求一个51单片机c语言程序,当串口输入一个数,然后单片机返回指定的数字、51单片机键盘输入、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)