串口
串口号需要一致
串口的介绍
总线的概念
总线是计算机系统中用于在各个组件之间传输数据、地址和控制信号的一种集成电路或物理连接。它是计算机内部各个部件之间进行通信和数据传输的重要途径。
总线可以分为数据总线、地址总线和控制总线三种类型。数据总线用于传输数据,地址总线用于指定内存或者I/O设备的地址,控制总线用于传输控制信号。这三种总线协同工作,使得不同的系统组件能够相互通信,协同工作,从而实现数据传输和协同操作。
在计算机系统中,总线连接着各个重要的组件,如中央处理器(CPU)、内存、输入输出设备(如键盘、鼠标、显示器等),使得它们能够相互通信和协同工作。总线的性能和速度直接影响了整个计算机系统的运行效率和性能。
总线的概念也在其他领域得到应用,比如在汽车电子系统中,各种传感器、执行器和控制单元之间通过总线进行通信和数据传输。总线的概念是计算机和电子系统中一个非常重要的概念,它为各种设备提供了一种统一的通信方式。
中断程序的编写
eg1:使用串口实现秒++的功能
#include <REGX52.H>
#include <INTRINS.H>
unsigned char Sec;
void UART_Init(){
SCON = 0X40;
PCON |= 0X80;
TMOD &= 0X0F; // 设置定时器模式
TMOD |= 0X20; // 设置定时器模式
TL1 = 0XF3; // 设置定时器的初始值
TH1 = 0XF3; // 设置定时器的初始值
ET1 = 0; // 禁止定时器1中断
TR1 = 1; // 启动定时器1
}
// 串口发送函数
void UART_SendByte(unsigned char Byte){
SBUF = Byte;
while(TI == 0){
}
TI = 0;
}
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms){
i = 2;
j = 239;
do{
while(--j);
}while(--i);
xms--;
}
}
void main(){
// 串口初始化
UART_Init();
while(1){
// 发送一个数据
UART_SendByte(Sec);
Sec++;
Delay(1000);
}
}
eg2:使用串口发送数据
eg2:电脑通过串口控制LED(使用模块化编程方式)
main函数文件
#include <REGX52.H>
#include <INTRINS.H>
#include "UART.H"
void main(){
// 串口初始化
UART_Init();
while(1){
}
}
// 串口中断,中断服务子函数
void UART_Routine() interrupt 4{
if(RI == 1){
P1 = ~SBUF;//读取寄存器中的数据,并存储到P2中
UART_SendByte(SBUF);// 函数不能同时在主函数中写然后右在中断函数中写,可能会导致函数的重入
RI = 0;
}
//P1 = 0x00;
}
函数头文件
#ifndef __UART_H__
#define __UART_H__
void Delay(unsigned int xms);
void UART_Init();
void UART_SendByte(unsigned char Byte);
#endif
函数c语言文件
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms){
i = 2;
j = 239;
do{
while(--j);
}while(--i);
xms--;
}
}
// 串口初始化
void UART_Init(){
SCON = 0X50; // 接收数据
PCON |= 0X80;
TMOD &= 0X0F; // 设置定时器模式
TMOD |= 0X20; // 设置定时器模式
TL1 = 0XF3; // 设置定时器的初始值
TH1 = 0XF3; // 设置定时器的初始值
ET1 = 0; // 禁止定时器1中断
TR1 = 1; // 启动定时器1
EA = 1; // 启动总中断
ES = 1; // 启动串口中断
}
// 串口发送函数:发送一个字数据
void UART_SendByte(unsigned char Byte){
SBUF = Byte;
while(TI == 0){
}
TI = 0;
}
串口波特率的计算补充