kbys.net
当前位置:首页 >> 如何用VB通过串口和51单片机通讯使得单片机能够在I... >>

如何用VB通过串口和51单片机通讯使得单片机能够在I...

while(1) { do { while(in);delayms(10); }while(in); while(!in); SBUF=0x42;//将16进制的字符01发送到串口去 while (!TI); TI = 0; } 用这个试试,串口通讯晶振最好用11.0592M

#include #include unsigned char ch; bit read_flag= 0 ; void init_serialcom( void ) //串口通信初始设定 { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ; //SMOD=1; TH1 = 0...

1、串口用作串行通信,通信包括IIC,RS485,RS232等,它也是输出是定速度的0-1-0-之类变化。 2、I/O口是指来关量的输入或输出,输入就是在该脚加高电平,即为1,低电平为0,输出也是如此。 简单来说:指I/O口是输入\输出接口,串行口是通讯接口。

bit busy=0; unsigned char i; void com_isr(void) interrupt 4 { if(RI){ RI=0;//将寄存器复位等待接收下一个 ldata=SBUF;//将接收的数据存于变量中 } if(TI)//我在定时器中断里面把ti置1,但是不行。 { TI=0; busy=1; } } main() { ...........

#include //头文件,c语言一样 #define uchar unsigned char //定义unsigned char为uchar #define uint unsigned int unsigned char flag,a,i; //定义unsigned char变量,其实这里用uchar也行 uchar code table[]="I receive, thanks "; //定义一...

是你串口中断接收数据溢出了。应该改为 if(RI) { receive[i]=SBUF; i++; //此处的i需要定义为全局变量,不然你每次都会被清零,也就是数据永 远都是recive[0]=SBUF; if(i>?) //此处填写你的数据最大长度,主程序中数据分析完自后要对i清零。 {...

可能要释放CPU的时间片,试试用DoEvents代替MsgBox(i),最好再sleep一下。 另外你这种设计是主动查询串口,很耗CPU的,为什么不用串口事件通知来实现呢(就像单片机中查询与中断的区别)。

char string[10]='I get +'; Uart0SendString(string); /*UART0发送数据 -------------------------------------------------------*/ void Uart0Send(unsigned char data) { while(U0CSR&0x01); //等待UART空闲时发送数据 U0DBUF = data; } /*U...

具体程序可以参考楼下的例程 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通...

先在内部下载个自定协议bootloader

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