【STC8G1K08A串口使用】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


STC8G1K08A单片机

在这里插入图片描述

stc8g1k08a单片机引脚功能:

在这里插入图片描述

1.实际接线

在这里插入图片描述
因为内置晶振,所以不需要外接晶振。图中VCC,GND跨接电容起到退耦作用,在通断电时保护单片机。CH340N模块的TX跟RX分别接到STC8G1K08A的RX(5号引脚,也就是程序中的P3.0)跟TX(6号引脚,也就是程序中的P3.1)上,下面是实物接线图:
在这里插入图片描述
在这里插入图片描述

一、使用串口前先配置串口

这里我们使用宏晶的STC-ISP软件进行波特率配置

在这里插入图片描述

1.系统频率选择11.0592MHz(STC8G1k08a的运行频率可以在下载程序的时候进行设置,最大为35MHz)
2.波特率设置为9600bps
3.定时器时钟为1T
4.使能串口中断
5.生成c代码复制到keil

二、使用步骤

1.添加STC库

在这里插入图片描述
选择
在这里插入图片描述

添加后就可以使用<stc8g.h>了

例程完整代码

代码如下:

#include<stc8g.h>
#include<stdio.h>
void setup();
void loop();
void Uart1_Init(void);
void Sendbyte(unsigned char dat);
void delayms(unsigned int delay_time_ms);
char putchar(char c);
void main(){setup();while(1)loop();}//主程序

unsigned char recv;//收到的8位数据

void setup(){//初始化函数
  Uart1_Init();
  
}

void loop(){//循环执行函数
  delayms(1000);
  printf("Hello World");
}



void Uart1_Init(void)	//9600bps@11.0592MHz
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xE0;			//设置定时初始值
	TH1 = 0xFE;			//设置定时初始值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
	ES = 1;				//使能串口1中断
	EA = 1;       //使能总中断
}


void Sendbyte(unsigned char dat){//发送8位数据到串口
  SBUF = dat;
  while(!TI);
  TI=0;
}


void delayms(unsigned int delay_time_ms){//延时X毫秒函数
  while(delay_time_ms){
	  unsigned char data i, j;

	  i = 15;
	  j = 90;
	  do
	  {
		  while (--j);
  	} while (--i);
    delay_time_ms--;
	}
}



char putchar(char c){//重定义printf()函数,用于串口打印信息
  Sendbyte(c);
  return c;
}

void Read_UART()interrupt 4{//串口中断时执行
  if(RI){
	  RI=0;
		recv = SBUF;
	  switch(recv){
		  case '0':printf(" recv:0 \n");break;
		  case '1':printf(" recv:1 \n");break;
			case '2':printf(" recv:2 \n");break;
			case '3':printf(" recv:3 \n");break;
			default:printf("NO\n");break;
		}
	}
}

下载程序后打开串口监视器每秒会收到一次“Hello world”
在这里插入图片描述

发送0,1,2,3这四个数,单片机会回复:“recv”。
在这里插入图片描述
发送其他数,回复“NO”
在这里插入图片描述

  • 21
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值