#include
#include
#include “config.h”
#defineucharunsigned char
#define uintunsigned int
#define BEEPP0_5
ucharReceiveBuf;//界说承受缓冲区
ucharSendBuf[] = {11, 22};//将发送的数组放在数组SendBuf[]中
// 延时函数
void delay(uint n)
{
uint i, j;
for(i = n; i > 0; i–)
for(j = 115; j > 0; j–);
}
//串行口的初始化函数
void series_init()
{
SCON = 0X50;//串口工作方法1,答应接纳
TMOD = 0X20;//守时器T1工作方法2
TH1 = 0XFD; TL1 = 0XFD;//守时初值
PCON &= 0X00;//SMOD=0
TR1 = 1;//敞开守时器1
EA = 1;//开总中止
ES = 1;//开串行中止
}
void main(void)
{
series_init();
for(;;){//等候中止
}
}
void series() interrupt 4
{
RI = 0;//接纳中止清零
ES = 0;//暂时封闭串口中止
ReceiveBuf = SBUF;//将接纳到得数据保存到ReceiveBuf中
if(islower(ReceiveBuf) || isupper(ReceiveBuf) || isdigit(ReceiveBuf)){
SBUF = ReceiveBuf;//将接纳到的字符发送出去
while(!TI);//等候发送结束
TI = 0;//发送结束,TI(发送中止标志)清0
BEEP = 1;
delay(100);
BEEP = 0;
}
ES = 1;//翻开串口中止
}
串行中止程序的编写过程:
1. 设置串行口工作方法
2. 设置守时器T1工作方法,守时器T1作为波特率发生器,一般选用方法2,由于其能够主动装入初值功用,能够使波特率愈加安稳
3. 设置守时初值
4. 设置波特率倍增位,不能位寻址,能够经过PCON设置,最高位便是SMOD倍增位,1时倍增
5. 开守时器和中止
6. 串行中止程序中,首要接纳中止清零,封闭串口中止
7. 取出接纳到 的数据进行处理然后发送
8.发送完后翻开串行中止持续接纳数据
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/259944.html