蓝桥杯国信长天单片机--串口程序设计(十)

实验目的:

  • 1.掌握51单片机串口工作模式及相关寄存器配置方法
  • 2.了解51单片机波特率的计算方法
  • 3.掌握单片机串口接收中断服务函数的设计方法
    程序说明:
  • 1.通过USB连接线连接PC机,在计算机硬件管理器中查看串口号
  • 2.打开串口调试工具软件,并将串口通讯波特率设定为2400
  • 3.将跳线J13配置为MM模式
  • 4.输入1-8字符,控制8个LED指示灯状态

基于国信长天单片机竞赛实训平台的串口程序设计如下

#include "reg52.h"  //定义51单片机特殊功能寄存器
#include "absacc.h"

#define BAUD	     2400  		//波特率
#define SYSTEMCLOCK  11059200L  //系统时钟频率

sfr AUXR  = 0x8e;

bit rxc = 0;
char rx = '1';
void uart_sendstring(unsigned char *str);

//主函数
void main(void)
{
    SCON = 0x50;

    AUXR = 0x40;                //1T
    TMOD = 0x00;                //
    TL1 = (65536 - (SYSTEMCLOCK/4/BAUD));   //
    TH1 = (65536 - (SYSTEMCLOCK/4/BAUD))>>8;
    TR1 = 1;
    ES = 1;
    EA = 1;

    while(1)
    {
        if(rxc == 1) {
            rxc = 0;
            switch(rx) {
            case '1':
                XBYTE[0x8000] = 0xFE;
                break;
            case '2':
                XBYTE[0x8000] = 0xFD;
                break;
            case '3':
                XBYTE[0x8000] = 0xFB;
                break;
            case '4':
                XBYTE[0x8000] = 0xF7;
                break;
            case '5':
                XBYTE[0x8000] = 0xEF;
                break;
            case '6':
                XBYTE[0x8000] = 0xDF;
                break;
            case '7':
                XBYTE[0x8000] = 0xBF;
                break;
            case '8':
                XBYTE[0x8000] = 0x7F;
                break;
            default:
                uart_sendstring("error\r\n");	//输入其他数据返回error
                break;
            }
            ES = 1;
        }
    }
}

//串口中断服务函数
void isr_uart(void) interrupt 4
{
    if(RI)
    {
        RI = 0;  //清除接收标志位
        rx = SBUF;
        ES = 0;
        rxc = 1;
    }
}

//通过串口发送字符串
void uart_sendstring(unsigned char *str)
{
    unsigned char *p;

    p = str;
    while(*p != '\0')
    {
        SBUF = *p;
        while(TI == 0);  //等待发送标志位置位
        TI = 0;
        p++;
    }
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C君莫笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值