?? uart.c
字號:
/*
**********************************************************************************************
* Project: TK7821
* File: uart.c
* Contents: The serial communication
* 程序描述:把收到的數(shù)據(jù)發(fā)送回去
* 目 的:Motorola 08 系列 子程序移植到51系列MCU
* $Date: 09/07/2006
* Writen by xudong
***********************************************************************************************
*/
#include "reg51.h"
typedef unsigned char BYTE;
//函數(shù)聲明
void InitSerial(void);
extern unsigned char SCIRe1(unsigned char *p); //接收1字節(jié)
extern unsigned char SCIReN(unsigned char n,unsigned char ch[]); //接收n字節(jié)
extern void SCISend1(unsigned char o); //發(fā)送1字節(jié)
extern void SCISendN(unsigned char n,unsigned char ch[]); //發(fā)送n字節(jié)
//**************************中斷方式*************************************
void main()
{
EA=0; // 開中斷
InitSerial(); //初始化
EA=1; // 關中斷
ES=1; //允許串口接收中斷
//主循環(huán)
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]; //存放接收數(shù)據(jù)的數(shù)組
unsigned char i;
EA = 0; // 開中斷
//接收1個數(shù)據(jù)
i=SCIReN(1,SerialBuff);
//若收到數(shù)據(jù),則發(fā)送接到的數(shù)據(jù)
if(i==0) SCISendN(1,SerialBuff);
EA = 1; // 關中斷
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -