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

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

#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...

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

#include#include#define uchar unsigned char#define uint unsigned intsbit SPK=P3^7;uchar FRQ=0x00;//延时void DelayMS(uint ms){uchar i;while(ms--) for(i=0;i

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

#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 "; //定义一...

如果你想让串口显示0000,那么送到单片机串口的代码就应该按照ASCII码编码。ASCII码也用16进制表示。 也就是说,代码中:SBUF=i; 之前要将i转成ASCII码。 例如:0的ASCII码是30H,1的ASCII码31H,以此类推。ASCII码表百度一个吧。

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 #define uchar unsigned char uchar txt[] = "hello"; uchar i = 0; void main(void) { PCON = 0X00; SCON = 0X50; TMOD = 0X20; TH1 = 0XFD; TL1 = 0XFD; TR1 = 1; EA = 1; ES = 1; TI = 1; while(1...

程序采用了查询式发送,for(i=0;i

可以用延时来判断,例如波特率9600b/s, 其2个字节之间间隔50000) {i=0;flag=1;break;}RI=0;j=SBUF;}

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