求一个51单片机c语言程序,当串口输入一个数,然后单片机返回指定的数字

比如:输入55,返回11111
输入66,返回22222

给个简单的。
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】返回数据,考虑发送缓冲数组。用中断考虑发送过程。
如果你愿意的话,大家更喜欢阅读程序,修改或提出建议。以上只是个简单的例子。
温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机串口通信c语言编程
void sinti(void){ SCON = 0x50;TMOD |= 0x20;TH1 = 0xFD;TR1 = 1;EA = 1;ES = 1;} void delay(int cnt){ while(--cnt);} \/\/主程序 int main (void){ int i;sinti(); \/\/串口初始化程序 ring=1;while(1){ while (1){ if(CASE1==0){ send('a')...

C语言51单片机串口通信程序求教
串口通讯,首先设置波特率,再设置串口模式,之后就可以收发数据了。比如:init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SCON=0x50;}send(unsigned char dat){SBUF=dat;while(TI==0);TI==0;}unsigned char recive(){unsigned char dd;if(RI) { dd=SBUF; RI=0; } return(...

求一个51单片机C语言程序编程
void main(void) \/* 主函数*\/ { SCON=0x40; \/*方式1只发送,不接收*\/ TMOD=0x20;TH1=0xfd; \/*给定时器T1赋初值,波特率为9600*\/ TL1=0xfd;TR1=1;k=1;NO=0;while(1){ if(k==0){while(k==0);NO=(NO+1)%4;} switch (NO){case 0 :P0=0xff;break;case 1 :P00...

请c语言高手帮忙,写一个程序,51单片机显示1234,2S后显示5678 ,一直循环...
delay(2);P2_1=1;P0=tab[k+2];P2_2=0;delay(2);P2_2=1;P0=tab[k+3];P2_3=0;delay(2);P2_3=1;} void t0init(){ TMOD=0x01;TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} void main(){ t0init();while(1)disp();} void t0int() interrupt...

用C编写51单片机的串口打印程序
void UART0_Init (void){ unsigned char T1_PRESCALE;unsigned char T1_RELOAD;unsigned long BAUD;BAUD = 38400;if ((SYSCLK\/BAUD\/32\/1)<256){ T1_PRESCALE = 0x10;T1_RELOAD = -((SYSCLK\/BAUD\/16\/1+1)\/2);} else if ((SYSCLK\/BAUD\/32\/4)<256){ T1_PRESCALE = 0x01;T1_...

一道51单片机的C语言程序,关于串口通讯的,很简单...
void serial() interrupt 4 \/\/串口中断服务程序,优先级为4 { RI=0; \/\/当接收完成之后RI被置一,发生串口中断,清标志位 a=SBUF; \/\/读取收到的字符,并赋给变量a flag=1; \/\/置接收完成标志flag为一,便于主程序中发送响应 } ...

51单片机按键计数器C语言编程
include<reg51.h>#define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到fuchar number,dat,dis[4];void t0isr() interrupt 1{TH0=(65536-5000)\/256;TL0=(65536-5000)%256;number++...

用C语言如何开51单片机的计数器,最好编个实例程序
void main(){ uint k;TMOD=0X50;\/\/设置模式为1,计数模式 TH1=0X00;TL1=0X00;\/\/初始值设定 IE=0X00;\/\/关全局中断 TR1=1;\/\/开定时计数器1运行 while(1){ if(TL1==16)\/\/进行判断,为16时,计数值归零 TL1=0X00;k=TL1;P0=LED7Code[k];\/\/数码管进行显示 } } 此程序目的见http:\/...

51单片机 C语言 串口数组赋值问题
void fh_zi(uchar a)\/\/返回字符到串口 { ES=0;SBUF=a;while(!TI);TI=0;ES=1;} void init(){ TMOD=0x20;TH1=0xfd;TL1=0Xfd;\/\/TH0=(65536-45872)\/256;\/\/TL0=(65536-45872)%256;TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;} void main(){ i_index=0;xia=2;init();while(1...

51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计...
void InitUART(void) \/\/串口初始化 9600bps { TMOD = 0x20;SCON = 0x50;TH1 = 0xFD;TL1 = TH1;PCON = 0x00;EA = 1;ES = 1;TR1 = 1;} void Send(uint8 c){ SBUF = c;while(!TI);TI = 0;} void main(void){ char j;InitUART();while(1){ if(flag) \/\/是否接收到...

相似回答