knrt.net
当前位置:首页 >> 串口收发字符串 >>

串口收发字符串

#include #define uchar unsigned char #define uint unsigned int uchar data table[10]; //暂存数组,可以将10改为你需要的数值 /*********************************************** 串行口初始化波特率9600,定时器1,工作方式2 *************...

uchar idata SystemBuf[10]; //用于接收 uchar Rx=0; //接收数据条数 uchar code AT[]="YES,IT IS"; void UART_init (void) { TMOD=0x20;//用定时器1 PCON=0x00; //波特率不加倍 SCON=0x50;//串行方式1 TH1=0xFD;//9600 TL1=0xFD;// EA=1;// ES...

可以的,定义一个缓冲区(数组)接收,到时单片机把字符串顺序处理一下就行了,一般/n来代表字符串的结束标志。

#include #include unsigned char a[16],b[16]="0123456789ABCDEF",i,pr; void ser_isr(void) interrupt 3 { if(RI==1) { RI=0; a[pr]=SBUF; pr++; pr&=0x0f; } } main() { TI=1; EA=1; pr=0; while(1){ for(i=0;i

我把你的程序做了些修改,并在PROTEUS中仿真,是正确的,图中的上面是仿真的发送,我输入了“How Are You?"并按回车键,单片机收到回车后,先输出"OK !!!"及回车,再把收到的数回送出去。 这里加了宏定义。有些内容请见北航的《PIC16系列单片机C...

void main() { UARTinit(); sc ('\n') ; ss("---------\n") ; while(1); } 原因是向单片机下载程序时会在程序尾部自动填充了无条件跳转指令到起始位置,也就是程序在发送一遍后并没有停止,而是返回起始地址又重新开始了

只能分时接收了 比如 char rev_buf[1024] 现接收1024个 在循环判断 rev[i]=='A' rev[i+4]=='Z' 则为有效数字 另外:你的仪器为一台 这种单工通信还行 如果不止一台 则会有干扰 还不如不要上位机 当然 这只是我的想法而已

首先SBUF只有8位 即一字节,而"adcd"有4字节+‘\0’个,你这把temp和“abcd”比较永远只能为假。所以LED1=!LED1;这条语句不能执行。正确的做法是建立一个变量,将SBUF接受到的字符存入变量,然后再比较

串口发送时,并不区分什么类型的变量。 *p,它无论是字符 'A',还是数字 28,它都可以发送出去。 串口发送时,每次仅仅能发送一个字节。 超过一个字节的变量,就需要分解。

应该不会吧,在事件OnComEvent中处理,按下面的方法循环处理 我给军方写的程序代码就是下面这样写的,没问题的。mocom是com控件 dim sAll as string sA = moCom.Read Do While sA "" sAll = sall & sA sA = moCom.Read Loop

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com