📄 uart.c
字号:
/*
**********************************************************************************************
* Project: TK7821
* File: uart.c
* Contents: The serial communication
* 程序描述:把收到的数据发送回去
* 目 的:Motorola 08 系列 子程序移植到51系列MCU
* $Date: 09/07/2006
* Writen by xudong
***********************************************************************************************
*/
#include "reg51.h"
typedef unsigned char BYTE;
//函数声明
void InitSerial(void);
extern unsigned char SCIRe1(unsigned char *p); //接收1字节
extern unsigned char SCIReN(unsigned char n,unsigned char ch[]); //接收n字节
extern void SCISend1(unsigned char o); //发送1字节
extern void SCISendN(unsigned char n,unsigned char ch[]); //发送n字节
//**************************中断方式*************************************
void main()
{
EA=0; // 开中断
InitSerial(); //初始化
EA=1; // 关中断
ES=1; //允许串口接收中断
//主循环
while(1);
}
/*
**************************************************************************************
* uart初始化
*
**************************************************************************************
*/
void InitSerial(void)
{
TMOD=TMOD&0x0F;
TMOD=TMOD|0x20; //定时器1 定时方式2
TL1=0xF8;TH1=0xF8; //4800 15MHz fosc
SCON=0x50; //串行方式1 允许接收
PCON=0x00; //波特率不增倍
TR1=1; //启动定时器1
}
void Int1(void) interrupt 4 // interrupt 4 表示串口中断
{
unsigned char SerialBuff[1]; //存放接收数据的数组
unsigned char i;
EA = 0; // 开中断
//接收1个数据
i=SCIReN(1,SerialBuff);
//若收到数据,则发送接到的数据
if(i==0) SCISendN(1,SerialBuff);
EA = 1; // 关中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -