标题:
自己理解的一个串口中断函数,大神指点,初学者可以看看比较
[打印本页]
作者:
bai850107
时间:
2017-9-26 20:28
标题:
自己理解的一个串口中断函数,大神指点,初学者可以看看比较
#include<reg52.h>
typedef unsigned char num;
void UsartInit() //初始化串口
{
TMOD=0X20; //确定T1定时器计数器工作方式——工作方式1
SCON=0X50; //确定串口工作方式——工作方式1 波特率=(2^SMOD/32)*T1溢出率
PCON=0X80; //SMOD 倍频选择 SMOD=0 波特率正常,SMOD=1波特率加倍
TH1=0XF3; //根据已知波特率、晶振频率、串口工作方式计算初值
TL1=0XF3;
EA=1; //开总中断
ES=1; //开串口中断
TR1=1; //开启计数模式
}
void main()
{
UsartInit();//初始化串口
while(1);//等待中断
}
void serialopen() interrupt 4 //中断函数,选择中断源 4
{
num receivedata; //receivedata 接受和发送的数据
receivedata=SBUF; //接受数据写入SBUF
RI=0; //必须软件清零RI。硬件置1,CPU响应中断,下一帧数据写入SBUF。
SBUF=receivedata; //发送数据到SBUF
while(!TI); //!TI不是0既是1,说明数据还没发送完。TI不是1,便是0,跳出while函数,说明数据发送完毕。
TI=0; //必须软件清零
}
作者:
信阳职院
时间:
2017-9-27 08:45
在串行中断函数内,首先判断是哪种中断,然后在进行相关操作。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1