历史上的今天
返回首页

历史上的今天

今天是:2025年01月10日(星期五)

正在发生

2018年01月10日 | 51单片机与上位机串口通信程序设计

2018-01-10 来源:eefocus

51 单片机 与上位机串口通信程序设计 
1. 发送:向总线上发命令 
2. 接收:从总线接收命令,并分析是地址还是数据。 
3. 定时发送:从内存中取数并向主机发送. 
经过调试,以上功能基本实现,目前可以通过上位机对 单片机 进行实时控制。 
程序如下: 
//这是一个 单片机 C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收  

 

//和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的  
#include< reg51.h> 
#include< stdio.h> 
#include< string.h> 
#define INBUF_LEN 4 //数据长度 
unsigned char inbuf1[INBUF_LEN]; 
unsigned char checksum,count3 , flag,temp,ch; 
bit read_flag=0; 
sbit cp=P1^1; 
sbit DIR=P1^2; 
int i; 
unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ 
unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; 

void init_serialcomm(void) 

SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收 
PCON=0x00; 
ES=1; 
TMOD=0x21; //定时器工作于方式2,自动装载方式 
TH0=(65536-1000)%256; 
TL0=(65536-1000)/256; 
TL1=0xfd; 
TH1=0xfd; 
ET0=1; 
TR0=1; 
TR1=1; 
// TI=0; 
EA=1; 
// TI=1;  
RAMDATA=0x1F45; 

void serial () interrupt 4 using 3  
{  
if(RI) 
{ RI=0; 
ch=SBUF; 
TI=1; //置SBUF空 
switch(ch) 

case 0x01 :printf("A"); TI=0;break; 
case 0x02 :printf("B"); TI=0;break; 
case 0x03 :printf("C"); TI=0;break; 
case 0x04 :printf("D"); TI=0;break; 
default :printf("fg"); TI=0;break; 



//向串口发送一个字符  
void timer0() interrupt 1 using 3{ 
// char i;  
flag++; 
TH0=0x00; 
TL0=0x00; 
if(flag==10) 
{// cp=!cp; 
// for(i=0;i<6;i++) 
P2=0x25; 
TI=1; 
temp=*RAMDATA; 
printf("%c",temp); 
TI=0; 
// RAMDATA--; 
flag=0; 



//主程序 
main() 
{  
init_serialcomm(); //初始化串口  
//向6264中送数据 
{  
*RAMDATA=0x33; 



while(1) 
{  

*RAMDATA=0x33;;  



调试过程中遇到的问题: 
1. 发送过程:在发送时必须保证TI=1:即发送缓冲器为空,否则将导致数据发不出去,如果想强制发送可以用:TI=1.具体发送数据:利用printf(“akjdfaklfj”);函数直接发送即可。 
2. 接收过程:在接收时多选用中断方式,这样可以节约CPU的时间,提高效率. 


推荐阅读

史海拾趣

Denyo Europa Gmbh公司的发展小趣事

Denyo Europa Gmbh公司始终认为企业是社会的一部分,应该承担起相应的社会责任。公司积极参与各种公益活动,为当地社区的发展贡献力量;同时,公司还关注弱势群体的需求,为他们提供力所能及的帮助。这种对社会责任的担当精神,使公司在社会中树立了良好的企业形象。

Federal Custom Cable公司的发展小趣事

在电缆产品性能和质量得到提升的同时,Federal Custom Cable也积极开拓新的市场领域。他们深入了解不同行业对电缆的需求特点,针对不同行业推出了一系列定制化的电缆产品。这些产品广泛应用于通信、医疗、航空等领域,并赢得了客户的一致好评。同时,Federal Custom Cable还加强了品牌建设和市场推广力度,提高了品牌知名度和美誉度。

ETTINGER公司的发展小趣事

Ettinger与英国著名汽车品牌Bentley建立了长期合作伙伴关系。作为Bentley汽车皮件配饰和皮具产品的指定供应商,Ettinger为Bentley提供了高品质的皮具产品,进一步提升了品牌的知名度和影响力。这种合作伙伴关系的建立,也为Ettinger带来了更多的商业机会和发展空间。

Esico-Triton公司的发展小趣事

进入XXXX年代,Esico-Triton开始将目光投向国际市场。公司积极参加国际电子展会,与世界各地的潜在客户和合作伙伴建立联系。通过不断的市场调研和产品调整,Esico-Triton成功打入欧洲和亚洲市场,产品的国际知名度逐渐提升。

Gustav Klauke GmbH公司的发展小趣事

随着科技的不断进步,电子行业也在快速变革。为了应对这一挑战,Esico-Triton不断加强研发投入,特别是在人工智能和物联网领域。公司推出了一系列智能家居和工业自动化产品,以适应市场的需求。同时,Esico-Triton还与多所知名大学和研究机构合作,共同研发新技术,确保公司在行业中的领先地位。

Gould Fiber Optics公司的发展小趣事
可能是散热不良、负载过大或内部元件短路。

问答坊 | AI 解惑

品佳集团力顶Skype Mouse和USB Speaker解决方案

随着网络日益发达,免费网络语音通话也越来越受青睐,如果您目前是使用最原始的耳麦进行通话,除需忍受通讯质量不佳外,也会随着通话时间增长,而感受到耳根的不舒适感及耳麦线固定的不便。现在您有更佳的选择,品佳集团近期力推和(16bit/采样率8K/ ...…

查看全部问答>

电机烧了

电动双梁桥式起重机10吨 A6 起升电动机 22KW  外围电路用万用表打过。均无任何毛病。 无缺相现象。刚开始怀疑是转子接地。用摇表打过转子对地电阻 均为20兆欧, 电阻对地电阻均正常。不清楚是什么原因,请高手指点, 控制方式KT10-100/1J 直 ...…

查看全部问答>

初学嵌入式应该看哪些书

学校发的是:嵌入式微处理结构与应用 由浅入深还应该看哪些书? 请推荐一下。…

查看全部问答>

如何将passthru抓到的包 传递给应用程序?

如何将passthru抓到的包 传递给应用程序?…

查看全部问答>

'/I' requires an argument

各位大侠:我在开发中加载了自己的触摸屏驱动,结果遇到这个错误, cl : Command line error D2004 : \'/I\' requires an argument 我从网上查到这个很有可能是sources或sources.cmn的INCLUDES问题,但我仔细察看了自己的sources文件和sources.cmn ...…

查看全部问答>

WinCE下是不是无法自己开发打印机驱动

WinCE只提供采用PCL语言的打印机的驱动 那么对于非PCL语言的打印机来说,由于不知道打印机语言的描述格式,是不是无法自己开发打印机驱动? 而对于采用PCL语言的打印机来说,WinCE已经提供了驱动,是不是就不需要自己开发了? 所以我结论是:Win ...…

查看全部问答>

【芯币兑换AVR学习板及编程器】活动专帖(活动已结束)

暑期酷学,这个名字够酷吧!用你手中的芯币,兑换AVR学习板及编程器。详情如下:   STEP 1:如何兑换AVR学习板及编程器?                    ...…

查看全部问答>

可调光使用应急灯

还想加上太阳能充电,目前还在构思中。。。希望大侠能给点意见…

查看全部问答>

新型测试仪器如何缩短开发时间?

Andrew Armutat 产品市场部 吉时利仪器公司 2602型双通道系统源表[1]   缩短开发时间。测试工程师的时间是一种宝贵的资源,一般每年的成本高达100,000美元。在复杂的测试系统中,软件开发向来就是系统总成本的主要部分之一。这在专 ...…

查看全部问答>

同样重拾msp430

记得大学毕业设计的时候,我们一个实验室的同学有人用了msp430,而当时我选了凌阳的16位单片机,一直就没真正用过msp430.现在手头上有个项目,那个技术方案上选用的是 msp430. 很幸运的是网上搜到这个板块,进来学习下板子的用途大概就是 AD对于温度信号 ...…

查看全部问答>