STM32与51单片机串口1连接

这篇博客介绍了单片机51系列通过串口进行通信的基本配置,包括RX连接TX,TX连接RX,GND连接GND以及电源接入。文章详细阐述了如何设置中断系统,使用定时器T0进行波特率设置,并展示了简单的数据接收和发送示例。同时,还涉及到了按键控制LED的状态改变,实现了串口交互控制硬件的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rx连接tx,tx连接rx,gnd连接gnd,两个都要插上电源

#include<reg52.h>//51
#include<stdio.h>
sbit s4=P3^2;
typedef unsigned int uint;
void t0()
{
  EA=1;
  ES=1;
  SM0=0;
  SM1=1;
  REN=1;
  TR1=1;
  TMOD=0X20;
  TL1=0XFD;
  TH1=0XFD;
  TI=1;
}
void delay(uint z)
{
  uint i,j;
  for(i=0;i<z;i++)
  for(j=0;j<114;j++);
}
uint num;
void t0fw()interrupt 4
{ 
  if(RI)
  {

	num=SBUF; 	
	puts("您发送的消息为:");
	SBUF=num;
	puts("\n");
	RI=0;

  }
   

}
void main()
{
   t0();
  
   while(1)
   {
    if(num=='1') 
	P1=0x00;
	else
	P1=0xff;

	
	if(s4==0)
	{
	  SBUF='1';
	  while(!s4);
	  delay(10);
	}
   }
}
//32
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"

 int main(void)
 {		
 
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600);	 //串口初始化为
 	LED_Init();			     //LED端口初始化
	KEY_Init();          //初始化与按键连接的硬件接口
 	while(1)
	{
			if(USART_RX_BUF[0]=='1')
			{
						LED1=!LED1;
				    LED0=!LED0;
				USART_RX_BUF[0]='0';
			}
	
			USART_RX_STA=0;
		
		
	if(KEY0==0)
		{
			USART_SendData(USART1, '0');//向串口1发送数据
			while(!KEY0);
			delay_ms(100);
	
		}
		if(KEY1==0)
		{
			USART_SendData(USART1,'1');//向串口1发送数据
			while(!KEY1);
			delay_ms(100);
		
			
		}
		
	}	 
 }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值