📄 serial.c
字号:
/******************************************************************
* copyright 2004 *
*******************************************************************
文件名称: serial.c
文件版本: 1.00
创建人: 郭志雪
创建日期: 2004.05.19
功能描述: 串口驱动
相关硬件: AT89S52,11.0592M晶震
*******************************************************************/
#include "serial.h"
unsigned char xdata aa[10] _at_ 0x2000;
/*******************************************************************
* 函数名称: init_serial
* 创建人员: gloria
* 函数版本: 1.00
* 创建日期: 2004.5.19
* 功能描述: 初始化串口2
* 入口参数: 无
* 返回值: 无
定时器2做为波特率发生器时
定时方式 BAUT=Fosc / (2*16*(65536-(RCAP2H,RCAP2L)))
计数方式 BAUT=外部时钟频率/(16*(65536-(RCAP2H,RCAP2L)))
定时器1做为波特率发生器时
smod
BAUT=2 * 定时器/计数器溢出速率 /32
*******************************************************************/
void init_serial()
{
/* TH2=0xff;
TL2=0xdc;
RCAP2H=0XFF;
RCAP2L=0XDC; //;ffb2 12m, 4800
// ;ffb8 11.0592 4800; ffdch 11.0592 9600
SCON=0x50; //SM0 SM1 SM2 REN TB8 RB8 TI RI
// 0 1 0 1 0 0 0 0
T2CON=T2CON|0X30; //TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
// 0 0 1 1 0 0 0 0
TR2=1;
ES=1;*/
TMOD=0X20; //设置波特率为9600,通过设置定时器1的工作方式和初始值
TL1=0xfd;
TH1=0xfd;
SCON=0x50;
PCON=0x00; //设置串行口工作方式,工作为方式1,10位异步收发。
TR1=1; //启动定时器1
ES=1;
}
unsigned char index=0;
void main()
{ unsigned char i;
init_serial( );
EA=1;
while(1){}
}
void serial(void) interrupt 4
{ uchar temp;
if(TI)
{
TI=0;
}
if(RI)
{
RI=0;
temp=SBUF;
SBUF=temp;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -