189 8069 5689

linux显示命令找不到,linux输入任何命令都找不到

51单片机串口通信c语言编程

#include REG52.H

成都创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为凌云企业提供专业的做网站、成都网站设计凌云网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

#define uchar unsigned char

#define uint unsigned int

sbit ring=P3^7;

sbit CASE1=P2^0;

sbit CASE2=P2^1;

sbit CASE3=P2^2;

sbit CASE4=P2^3;

uchar se=0,re=0;

uchar temp=0;

void wait(uint cnt)

{

while(--cnt);

}

//串口发送程序

void send(uchar se)

{

SBUF=se; //发送数据

while(TI == 0);

TI = 0;

}

//串口接收程序

uchar receive(void)

{

re=SBUF; //接收数据

while(RI==0);

RI=0;

return re;

}

//串口初始化

void sinti(void)

{

SCON = 0x50;

TMOD |= 0x20;

TH1 = 0xFD;

TR1 = 1;

EA = 1;

ES = 1;

}

void delay(int cnt)

{

while(--cnt);

}

//主程序

int main (void)

{

int i;

sinti(); //串口初始化程序

ring=1;

while(1)

{

while (1)

{

if(CASE1==0)

{

send('a');

ring=0;

break;

}

if(CASE2==0)

{

send('b');

ring=0;

break;

}

if(CASE3==0)

{

send('c');

ring=0;

break;

}

if(CASE4==0)

{

send('d');

ring=0;

break;

}

}

if(ring==0)

{

wait(60000);

ring=1;

}

for(i=0;i10000;i++);

}

}

//串口中断程序

void UART_SER (void) interrupt 4 //串行中断服务程序

{

if(RI) //判断是接收中断产生

{

RI=0; //标志位清零

temp=SBUF;

}

if(TI) //如果是发送标志位,清零

TI=0;

}

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

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

//-----头文件

#includereg52.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语言例程

/*   甲机串口程序:甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit LED1=P1^0;

sbit LED2=P1^3;

sbit K1=P1^7;

uchar Operation_No=0;  //操作代码

//数码管代码

uchar codeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延时

void DelayMS(uint ms)

{

uchari;

while(ms--)for(i=0;i120;i++);

}

//向串口发送字符

void Putc_to_SerialPort(uchar c)

{

SBUF=c;

while(TI==0);

TI=0;

}

//主程序

void main()

{

LED1=LED2=1;

P0=0x00;

SCON=0x50;         //串口模式1,允许接收

TMOD=0x20;        //T1工作模式2

PCON=0x00;         //波特率不倍增

TH1=0xfd;

TL1=0xfd;

TI=RI=0;

TR1=1;

IE=0x90;        //允许串口中断

while(1)

{

DelayMS(100);

if(K1==0)      //按下K1时选择操作代码0,1,2,3

{

while(K1==0);

Operation_No=(Operation_No+1)%4;

switch(Operation_No)    //根据操作代码发送A/B/C或停止发送

{

case0:     Putc_to_SerialPort('X');

LED1=LED2=1;

break;

case1:     Putc_to_SerialPort('A');

LED1=~LED1;LED2=1;

break;

case2:     Putc_to_SerialPort('B');

LED2=~LED2;LED1=1;

break;

case3:     Putc_to_SerialPort('C');

LED1=~LED1;LED2=LED1;

break;

}

}

}

}

//甲机串口接收中断函数

void Serial_INT() interrupt   4

{

if(RI)

{

RI=0;

if(SBUF=0SBUF=9)P0=DSY_CODE[SBUF];

elseP0=0x00;

}

}

/* 乙机程序接收甲机发送字符并完成相应动作:乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作。*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit LED1=P1^0;

sbit LED2=P1^3;

sbit K2=P1^7;

uchar NumX=-1;

//延时

void DelayMS(uint ms)

{

uchari;

while(ms--)for(i=0;i120;i++);

}

//主程序

void main()

{

LED1=LED2=1;

SCON=0x50;         //串口模式1,允许接收

TMOD=0x20;        //T1工作模式2

TH1=0xfd;            //波特率9600

TL1=0xfd;

PCON=0x00;         //波特率不倍增

RI=TI=0;

TR1=1;

IE=0x90;

while(1)

{

DelayMS(100);

if(K2==0)

{

while(K2==0);

NumX=++NumX%11;   //产生0~10范围内的数字,其中10表示关闭

SBUF=NumX;

while(TI==0);

TI=0;

}

}

}

void Serial_INT() interrupt 4

{

if(RI)      //如收到则LED则动作

{

RI=0;

switch(SBUF)//根据所收到的不同命令字符完成不同动作

{

case'X':   LED1=LED2=1;break;          //全灭

case'A':   LED1=0;LED2=1;break;       //LED1亮

case'B':   LED2=0;LED1=1;break;       //LED2亮

case'C':   LED1=LED2=0;                  //全亮

}

}

}

c语言怎么实现串口通信

编程原理

程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom()函数初始化COM1(此函数实际调用BIOS

INT

14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存

单片机串口232通信c语言

我写的串口通信代码比较长,给几个关键函数你吧,可实现PC与单片机的双工通信

/*串口通讯 单片机晶振:11.0592MHz

T1工作于方式2 波特率=2^smod*fosc/32/12/(256-X)*/

#includecommon.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++; //发送计数

}


新闻名称:linux显示命令找不到,linux输入任何命令都找不到
文章分享:http://jkwzsj.com/article/hchgps.html

其他资讯