51单片机学习记录(二)

文章目录

  • 1、按键
  • 2、串口

前面的文章提到了关于51单片机使用EIDE进行开发的基本功能的实现,下面继续完善相关教程,完成其他相关外设的开发学习记录。

1、按键

先来看下按键的连接图吧,可以看到这里按键按下是变为低电平,开始的电平是不确定的
51单片机学习记录(二)_第1张图片
下面是按键的驱动函数,抄的普中科技的代码,加入了延时消抖,实测还是比较稳定的
51单片机学习记录(二)_第2张图片
下面是按键在主函数中的调用,如下所示:
51单片机学习记录(二)_第3张图片
最终效果如下所示

后面将继续开发按键的功能,加入定时器或者中断等功能。

2、串口

串口这里其实挺好配置的,先还是打开一个普中的程序,如下所示,可以看到就是配了一波定时器,之后写了一个串口接收中断的函数,经过接收中断这里将接收到的数据发送出去,就这样实现了一个串口的回显功能。
51单片机学习记录(二)_第4张图片
那么下面就来跑下普中提供的例程吧,下载到开发板,可以看到实现了串口回显的功能:
51单片机学习记录(二)_第5张图片
源码如下

void uart_init(u8 baud)
{
	TMOD|=0X20;	//设置计数器工作方式2
	SCON=0X50;	//设置为工作方式1
	PCON=0X80;	//波特率加倍
	TH1=baud;	//计数器初始值设置
	TL1=baud;
	ES=1;		//打开接收中断
	EA=1;		//打开总中断
	TR1=1;		//打开计数器		
}

void uart() interrupt 4 //串口通信中断函数
{
	u8 rec_data;

    //下面的部分实现了串口回显
	RI = 0;			//清除接收中断标志位
	rec_data=SBUF;	//存储接收到的数据
	SBUF=rec_data;	//将接收到的数据放入到发送寄存器
	while(!TI);		//等待发送数据完成
	TI=0;			//清除发送完成标志位	
    			
}

那么如果我们要使用应该怎么使用呢,其实官方这里提供了相关的工具可以方便我们使用,这个工具就是官方的下载工具,其实官方的下载工具还是一个很强大的查询工具,这里调节到波特率计算器部分,可以看到波特率的配置部分如下所示,这里我们可以按照自己的设定来配置波特率(这里要注意就是使用串口的话晶振要选用11.0592Mhz的,不然会产生误差)。
51单片机学习记录(二)_第6张图片
同时我们下面来修改定时器的收发函数,如下所示:
51单片机学习记录(二)_第7张图片
源码如下

void uart() interrupt 4 //串口通信中断函数
{
    //下面的部分实现了串口回显
    // u8 rec_data;
	// RI = 0;			//清除接收中断标志位
	// rec_data=SBUF;	//存储接收到的数据
	// SBUF=rec_data;	//将接收到的数据放入到发送寄存器
	// while(!TI);		//等待发送数据完成
	// TI=0;			//清除发送完成标志位	

    if (RI) //收到数据了
    {
        RI = 0;             //Clear receive interrupt flag
        P0 = SBUF;          //P0 show UART data
    }
    if (TI)
    {
        TI = 0;             //Clear transmit interrupt flag
        busy = 0;           //Clear transmit busy flag
    }			
}

void SendData(u8 dat)
{
    while (busy);          
    ACC = dat;   
    TB8 = 1; 

    busy = 1;
    SBUF = ACC;             
}
void SendString(char *s)
{
    while (*s)             
    {
        SendData(*s++);    
    }
}

void delay_100ms()
{
    unsigned char i, j;

    i = 195;
    j = 138;
    do
    {
        while (--j)
            ;
    } while (--i);
}

将程序下载到开发板测试,效果如下,可以实现串口的收发配置
51单片机学习记录(二)_第8张图片
本章讲的还是偏应用的,很多原理都没有说清楚,下一章我将详细介绍51单片的中断系统。

你可能感兴趣的:(51单片机,单片机,51单片机,学习,嵌入式硬件,c语言)