谁有上位机与下位机的串口通讯代码(C语言的)

谁有上位机与下位机的串口通讯代码(C语言的),第1张

兄弟,下面是我自己写的,希望给你帮助,把数据用send_one_uart()这个函数直接发送到串口就行了!最后求采纳,哈哈!

//-----头文件

#include<reg52.h>

//-----定义全局变量

unsigned

char

temp

/***************************************************

**

函数名称:

uart_init

**

功能描述:

串口初始化函数

**

入:无

**

出:

**

明:

****************************************************/

void

uart_init(void)

{

scon

=

0x50

//-----scon:

模式

1,

8-bit

uart,

使能接收

tmod

|=

0x20

/肢弊/-----tmod:

timer

1,

mode

2,

8-bit

重装

th1

=

0xfd

//-----th1:

重装值

9600

波特率

晶振

11.0592mhz

tr1

=

1

//-----tr1:

timer

1

打开

es

=

1

//-----打开串口中断

ea

=

1

//-----打开总中断

}

/***************************************************

**

函数名称:

sendbyte

**

功能描述:

发送字节函数

**

入:无

**

出:

**

明:

****************************************************/

void

sendbyte(unsigned

char

dat)

{

sbuf

=

dat

while(!ti)

ti

=

0

}

/***************************************************

**

函数名称:

sendstr

**

功能描述:

发送字符串函数

**

入:无

**

出:

**

明:

****************************************************/

void

sendstr(unsigned

char

*s)

{

while(*s!='\0')

{

sendbyte(*s)

s++

}

}

/***************************************************

**

函数名称:

main

**

功能描述:

主函数

**

入:无

**

出:

**

明:

****************************************************/

void

main

(void)

{

uart_init()

//-----串历哗族口初始化

while(1)

{

if(temp=='h'&&'i')

{

temp=0

sendstr("hello")

}

}

}

/***************************************************

**

函数名称:

uart_ser

**

功能描述:

串口中断服务子函数

**

入:无

**

出:

**

明:

****************************************************/

void

uart_ser

(void)

interrupt

4

//-----串行中断服芦橘务程序

{

if(ri)

//-----判断是接收中断产生

{

ri=0

//-----标志位清零

temp=sbuf

//-----读入缓冲区的值

}

}

一般开发上位机软件都雹敏是带图形界面的。C也能做出图形界面的软件,但是开发周期太长也不实用。所以最好还是需要会一些其他语言,例如C++,C#,Java这些做图形界面开发周期短的语言。既然会C,那么学习其他语言也只是一个熟悉语法的过程。所以很快就能上手,因为语言都是相通的嘛。可以开阔埋伏自己的视野去学习一下新的语言。不源液枝是说只会C有什么弊端,只是想说会的多才会知道语言之间的优劣。

 #include "reg52.h"

 #define  uchar unsigned char

 #define  LLONG 30

 

 //char code table[]="Hello!"

 uchar code table[]={'F','i','r','s','t','C','h','a','r',':',0x0d,0x0a,'W','W','W','.','H','E','B','T','U','.','E','D','U','.'掘启,'C','N',0x0d,0x0a}

 uchar Flag,FirstChar=0,UARTChar[10]={0}

 

 void uart() interrupt 4

 {

  ES=0        判或如  //---- 中断暂停 ----

  RI=0          //---- 清标志位 ----

  FirstChar=SBUF

  Flag=1

  ES=1          //---- 中断开启 ----

 }

 

 void main()

 {    

  char i=0

  TH1=0xFD

  TL1=0xFD

  TMOD=0x20//T1在定时器方式

  TCON=0x40//TR1=1

  PCON=0x00//SMOD为0

  SCON=0x50//串行方式1 REN=1

  IP=0x00

  IE=0x90

  

  while(1)

  {  

   if(Flag==1)

   {

    ES=0          //---- 中断暂停 ----

    Flag=0        //---- 清标志位 ----

    for(i=0i<10i++)

    {

     SBUF=table[i]

     while(!TI)

     TI=0

    }

    SBUF=FirstChar

    while(!TI)    //---- 通讯等待 ----

    TI=0          //---- 清标志位 ----

    for(i=10i<LLONGi++)

    {

     SBUF=table[i]

     while(!TI)

     TI=0

    }

    ES=1     团凳     //---- 中断开启 ----

   }

  }

 }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12405389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存