单片机怎么通过串口发送一串数据?
展开全部
通过SBUF! 一块是接受,一块发送!还要设置工作方式。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
展开全部
通过SBUF! 一块是接受,一块发送!还要设置工作方式,去好好看下书!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*********************************************************
*
*
* 单片机发送
*
*
*
*
*
*********************************************************/
#include "REG52.H"
sbit LED01_01 = P3^6;
sbit LED02_02 = P3^7;
#define SHUMG_DAT P0
bit value_vek;
unsigned char value_temp = 0;
unsigned char value_Date = 0;
unsigned char value_Outk = 0;
unsigned char code value_table[] =
{
0xC0,
0xF9,
0xA4,
0xB0,
0x99,
0x92,
0x82,
0xF8,
0x80,
0x90
}; //共阳极0-9显示断码
/*
* 带参数的延时1ms延时子函数
*/
void Delay_1ms(unsigned int time)
{
unsigned int x, y;
for(x = time; x > 0; x--)
for(y = 120; y > 0; y--);
}
/*
* USART串口初始化子函数
*/
void Serports_Init(void)
{
TMOD = 0x20;
TH0 = 0xFD;
TL0 = 0xFD;
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
/*
* USART串口数据发送子函数
*/
void USART_Buf(unsigned char add)
{
SBUF = add;
while(!TI);
TI = 0;
}
/*
* 单片机串口发送数据
*/
void Scan_keyOutCmd(void)
{
if(Keyat_02 == 0)
{
Delay_1ms(5);
if(Keyat_02 == 0)
{
value_Date++;
if(value_Date == 9)
{
value_Date = 0;
}
}
while(Keyat_02 == 0);
}
}
/*
* 程序函数主体
*/
int main(void)
{
P0 = P2 = 0x00;
P3 = 0xFF;
Serports_Init();
while(1)
{
Display_ShumagCmd();
Scan_keyOutCmd();
switch(value_Date) //对应发送数据
{
case 0: USART_Buf(0xC0);
break;
case 1: USART_Buf(0xF9);
break;
case 2: USART_Buf(0xA4);
break;
case 3: USART_Buf(0xB0);
break;
case 4: USART_Buf(0x99);
break;
case 5: USART_Buf(0x92);
break;
case 6: USART_Buf(0x82);
break;
case 7: USART_Buf(0xF8);
break;
case 8: USART_Buf(0x80);
break;
case 9: USART_Buf(0x90);
break;
default: break;
}
}
}
/*
* USART串口中断服务程序
*/
void Serial_sports()interrupt 4
{
RI = 0; //清除接收标志
value_Outk = SBUF; //接收
}
*
*
* 单片机发送
*
*
*
*
*
*********************************************************/
#include "REG52.H"
sbit LED01_01 = P3^6;
sbit LED02_02 = P3^7;
#define SHUMG_DAT P0
bit value_vek;
unsigned char value_temp = 0;
unsigned char value_Date = 0;
unsigned char value_Outk = 0;
unsigned char code value_table[] =
{
0xC0,
0xF9,
0xA4,
0xB0,
0x99,
0x92,
0x82,
0xF8,
0x80,
0x90
}; //共阳极0-9显示断码
/*
* 带参数的延时1ms延时子函数
*/
void Delay_1ms(unsigned int time)
{
unsigned int x, y;
for(x = time; x > 0; x--)
for(y = 120; y > 0; y--);
}
/*
* USART串口初始化子函数
*/
void Serports_Init(void)
{
TMOD = 0x20;
TH0 = 0xFD;
TL0 = 0xFD;
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
/*
* USART串口数据发送子函数
*/
void USART_Buf(unsigned char add)
{
SBUF = add;
while(!TI);
TI = 0;
}
/*
* 单片机串口发送数据
*/
void Scan_keyOutCmd(void)
{
if(Keyat_02 == 0)
{
Delay_1ms(5);
if(Keyat_02 == 0)
{
value_Date++;
if(value_Date == 9)
{
value_Date = 0;
}
}
while(Keyat_02 == 0);
}
}
/*
* 程序函数主体
*/
int main(void)
{
P0 = P2 = 0x00;
P3 = 0xFF;
Serports_Init();
while(1)
{
Display_ShumagCmd();
Scan_keyOutCmd();
switch(value_Date) //对应发送数据
{
case 0: USART_Buf(0xC0);
break;
case 1: USART_Buf(0xF9);
break;
case 2: USART_Buf(0xA4);
break;
case 3: USART_Buf(0xB0);
break;
case 4: USART_Buf(0x99);
break;
case 5: USART_Buf(0x92);
break;
case 6: USART_Buf(0x82);
break;
case 7: USART_Buf(0xF8);
break;
case 8: USART_Buf(0x80);
break;
case 9: USART_Buf(0x90);
break;
default: break;
}
}
}
/*
* USART串口中断服务程序
*/
void Serial_sports()interrupt 4
{
RI = 0; //清除接收标志
value_Outk = SBUF; //接收
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<reg52.h>
void main(void)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
}
}
void UART_SER(void)interrupt 4 //串口中断函数
{
unsigned char Temp;
if(RI) //串口接收
{
RI=0;
Temp=SBUF;
P1=Temp;
}
if(TI) //串口发送
{
TI=0;
SBUF=Temp;
}
}
最简单的例程,希望你能看懂
void main(void)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
}
}
void UART_SER(void)interrupt 4 //串口中断函数
{
unsigned char Temp;
if(RI) //串口接收
{
RI=0;
Temp=SBUF;
P1=Temp;
}
if(TI) //串口发送
{
TI=0;
SBUF=Temp;
}
}
最简单的例程,希望你能看懂
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询