单片机串口232通信c语言

将int array[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe};这组数据通过串口发送
实现和上位机的通讯

我写的串口通信代码比较长,给几个关键函数你吧,可实现PC与单片机的双工通信
/*串口通讯 单片机晶振:11.0592MHz
T1工作于方式2 波特率=2^smod*fosc/32/12/(256-X)*/
#include<common.h>
void do_uart(void); //串口接收执字符时的操作
/*串口发送字符串 */
void sendstr(uchar *p)
{
while(*p!='\0')
{ SBUF=*p; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI=0; //清零发送标志位
p++; //指针加1
cnt_s++; //发送计数
}
}
/*串口接收中断函数*/
void int_rec(void) interrupt 4 using 2
{
if(RI) //查询接收标志位(有数据发送过来时置为1)
{
RI = 0; //接收标志位清零
// sendchar(SBUF);//让从电脑上传到单片机的数据,传回的电脑显示
do_uart();//对接受到得字符操作
}
}
/*串口初始化*/
void com_init(uint baud)
{
SCON = 0x50; //串口工作方式为1,串行允许接受
TMOD = 0x21; //定时器1工作在方式2 定时器0工作在方式1
//PCON = 0x80; //SMOD = 1; 波特率加倍
TH1=256-fosc/32/12/baud;
TL1=TH1;
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
EA = 1; //开总中断
}

void sendchar(uchar uart_dat) //串口发送字符函数
{
SBUF = uart_dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
cnt_s++; //发送计数
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-31
可以的 什么时候要?

求RS232串口通信程序(C语言版)
; 程序名称:单片机串口发送中文字符实验,232通信程序 ; 硬件说明:打开《串口调试助手》,波特率设为9600速率,11.0592晶体 ; 注 意:《串口调试助手》要设置好COM号(请核对是否和设备管理器的COM编号一致); 操作说明:下载程序后打开串口调试助手sscom32.exe即可显示,或按一下复位开关 ;***\/ O...

求一个51单片机C语言程序编程
实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb\/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发...

关于单片机通讯的问题,用的是232,但只有当数组num设置为uchar code...
主要是头文件里一多导致的 由于51单片机内存少的特点,以前基本上用汇编语言,因为汇编语言占用内存很少,当程序大一点能装下,由于现在52(RAM256,ROM8K),56(ROM12K)甚至516(ROM32K)产品导致内存已经很大了,完全能够装的下,所以不必要用汇编而用C语言之类,C语言比汇编容易的多,不过占内存比汇编...

单片机端口用C语言怎么定义?
单片机的接口是指连接到单片机系统的所有外部通道,比如RS232接口等等;而端口指的是单片机引脚这些单片机的直接输出输入口。因此通常对端口的定义就是直接定义每一个引脚。以51为例:51单片机的端口分类方法:P0、 P1、 P2、 P3.这分别代表一组引脚,每组有8个引脚;如 P0 是由 P0.0、P0.1、P0....

单片机上的数据发送到电脑上的显示
单片机和电脑都有串口,而且需要配置的东西也差不多。区别在于,单片机输出的TTL电平,电脑输出的是232信号。所以单片机需要再接一个232芯片(全双工)转换。还有另一种简单的方式单片机接一个RS485芯片(半双工)。去市场买个USB转485转换线,装上驱动,把USB插头插到电脑上,就会虚拟一个串口出来。软件...

一道51单片机的C语言程序,关于串口通讯的,很简单...
if(flag==1) \/\/等待flag标志位置位,当接收到数据的时候在串口接收中断中置位 { ES=0; \/\/禁止串口中断,但是注意发送中断标志位的置位仍然正常 for(i=0;i<18;i++) \/\/for循环为了一个个把之前定义的字符串 { SBUF=table[i]; \/\/向串口收发缓冲器中写入回应的内容“I receive...

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

单片机c语言
1. 单片机C语言的基本概念:单片机C语言是针对单片机这一特定硬件平台所使用的一种编程语言。单片机是一种集成电路,内部集成了处理器、存储器、输入输出接口等硬件部件,通过C语言可以实现对这些部件的直接控制。2. 单片机C语言的特点:高效性:C语言是一种高级语言,相较于低级语言,它提供了更高效的...

C语言与单片机C语言的区别 急求
单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。2、C是...

请大神帮忙编写一个单片机C语言程序,串行通信的。
这是基于STC12C5A60S2 单片机编写的程序,应该也兼容51单片机。这里只是串口的收发,和数码管显示,由于我的数码可能和你的不一样所以需要更改。include<stc.h> define uchar unsigned char define uint unsigned int \/\/unsigned char code dofly[16]={0,0x3f,0x79,0x5e,0x07,0x7f,0x6f,0x39,...

相似回答