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

CT107D-串口通信

chanra1n4年前 (2020-09-11)CT107D4554

串口通信能用到的寄存器: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)		//9600bps@11.0592MHz
{
	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://myfpga.cn/index.php/post/138.html

分享给朋友:

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

CT107D-流水灯(跑马灯的简单实现)

CT107D-流水灯(跑马灯的简单实现)

#include <reg52.h> #include <intrins.h> sbit relay=P0^4;   //继电器 sbit buzzer=P0^6;  //蜂鸣器...

CT107D-按键的使用(查询法)

CT107D-按键的使用(查询法)

#include <reg52.h> sbit S4=P3^3; sbit S5=P3^2; sbit S6=P3^1; sbit S7=P3^0; sbit buzzer=P0^6;  //蜂鸣器...

CT107D DS1302

CT107D DS1302

使用官方的ds1302.h和ds1302.c,下方有核心代码讲解main.c#include<reg52.h> #include<intrins.h> #include<ds1302.h> typedef unsigned char&nb...

CT107D DS18B20

CT107D DS18B20

先贴上核心代码unsigned char get_temp(void) { unsigned char TH,TL; init_ds18b20(); Write_DS18B20(0xCC); Write_DS18B20(0x44); De...