当前位置:首页 > MCU > CT107D > 正文内容

CT107D-串口通信

chanra1n4年前 (2020-09-11)CT107D4733

串口通信能用到的寄存器:SCON PCON TMOD


SCON Serial Control Register 串口控制寄存器 0x98H

SCON的各位定义及作用

SM0    SM1    SM2    REN    TB8    RB8    TI    RI

SM0-SM2 控制着串口工作的方式,REN接收控制位,如果REN为1,则运行接收串口数据

image.png

TB8和RB8分别为发送和接收数据位8,在方式2和3中它会被发送或接收

TI是发送中断标志位,每当发送完成一次数据之后,该位会被硬件置1,需要手动清零,才能继续发送数据

RI是接收中断标志位,每当接收完成一次数据之后,该位会被硬件置1,需要手动清零,才能继续接收数据


PCON Power Control Register 功率控制寄存器 0x87H

PCON的各位定义及作用

SMOD    SMOD0    LVDF    POF    GF1    GF0    PD    IDL

SMOD——S可以被认为是Serial,也就是串口,该位与串口通信有关,该位为0时波特率正常,为1时翻倍


TMOD TIMER/COUNTER MODE CONTROL REGISTER 定时器、计数器模式控制寄存器 0x89H

TMOD分为两半,从第7位至第4位为控制定时器1的GATE C/T M1 M0 从第4位至第0位控制定时器0

GATE位是定时器/计数器控制位,当该为为1时才有效

C/T位为功能选择位,C/T为0时为T模式,即计时器模式,当该位为1时为C模式,即计数器模式

M0和M1为工作方式位,对应如下

image.png


void UartInit(void)		//[email protected]
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	AUXR &= 0xBF;		//定时器1时钟为Fosc/12,即12T
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//清除定时器1模式位
	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
	TL1 = 0xFD;		//设定定时初值
	TH1 = 0xFD;		//设定定时器重装值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
}


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://world.myfpga.cn/index.php/post/138.html

分享给朋友:

“CT107D-串口通信” 的相关文章

CT107D 你好!

CT107D 你好!

照片里面的这个单片机开发板是以 IAP15F2K61S2 为核心的开发板,是北京国信长天科技有限公司开发的板子,板子采用的很棒的PCB制作技术,美中不足就是没有用“黑胶”,板子大方美观,算了,不瞎掰了。这个是从CSDN上面“借来的MCU原理图”,LQFP44封装,看着这么漂亮的板子,我已经忍不住“蹂...

CT107D-让我们先从亮第一个LED灯开始吧!

CT107D-让我们先从亮第一个LED灯开始吧!

我们从官方的SCH文件中,可以看到LED相关电路:上面还很贴心的给标注了D1~D8连接的相应MCU引脚,真是非常方便,从原理图上可以看出,假如我们想让LED(L1)亮起来,由于LED组为共阳结构,需给Q1端推送一个低电平,才能使得L1亮起来。于是我信心满满的打开keil,然后编写C程序:#inclu...

CT107D-爆闪LED的实现

CT107D-爆闪LED的实现

#include <reg52.h> #include <intrins.h> #define pl 1000 //爆闪频率,单位ms sbit relay=P0^4;   //继...

CT107D ADC 光敏电阻

CT107D ADC 光敏电阻

#include<iic.h> #include "reg52.h" #include "intrins.h" typedef unsigned char BYTE; typedef&nbs...