串口发送接收程序中断法
串口 用中断法写的 发送和接收程序
//XTAL最好f=11.0592
//SCON=0x50(接收数据) (T1做bps发生器)
// =0x40(不接收数据) TMOD=0x20(T1 定时 方式2)
// → →TR1=1 →RI/TI==1? → 中断法(事先开EA,ES,软件清零)
// PCON=0x80(SMOD加倍) TL1=TH1=X;↓ ↓
// =0x00(不加倍)(做发生器不能开T1中断) 查询法 → 处理SBUF(核心)
//发数据格式:SBUF=。。;
// while(!TI);TI=0;
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar idata trdata[]={0xfc,0xec,0xe4,0xee};
sbit K1=P3^2; //对应开发板K1按键
sbit K2=P3^3;
/*-------------------------------------------------------------*/
//串口初始化
void UART_Init(void)
{
//T1做波特率发生器
/*
SCON = 0x50; //串口工作方式为1 , 串行允许接收
//SM0=0;
//SM1=1;
//REN=1;
TMOD = 0x20; //定时器1 工作在方式2
//PCON = 0x80; //SMOD = 1; 波特率加倍
TH1 = 0xfd; //波特率 9600bps fosc="11".0592MHz
TL1 = 0xfd;
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
EA = 1; //开总中断
*/
/*T2做波特率发生器 */
SCON = 0x50; //串口工作方式为1 , 串行允许接收
T2CON = 0x00; //定时器2
RCLK=1;
TCLK=1;
TH2=RCAP2H =0xff; //波特率 9600bps fosc="11".0592MHz 波特率=fosc/(32X[65536-X]) X是RCAP2H/L所对应的初值
TL2=RCAP2L =0xDC;
ES = 1; //开串口中断
TR2 = 1; //允许定时器2工作
EA = 1; //开总中断
}
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++) //1ms基准延时程序
{
;
}
}
}
/*-------------------------------------------------------------*/
//串口发送一个字节
void Uart_SendChar(unsigned char dat)
{
SBUF = dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
}
/*-------------------------------------------------------------*/
//串口发送一个字符串
void Uart_SendString()
{ uchar i=0;
while(trdata[i]!=0x00)
{
SBUF=trdata[i];
while(!TI);
TI=0;
i++;
}
}
/*-------------------------------------------------------------*/
//主函数
void main(void)
{
UART_Init(); //初始化串口
while(1)
{
if(K1==0)
{
delay1ms(20);
if(K1==0)
{
Uart_SendString(); //发送数据
delay1ms(100);
while(!K1);//等待按键释放
}
}
if(K2==0)
{
delay1ms(15);
if(K2==0)
{
Uart_SendChar(0x00); //发送数据
delay1ms(100);
while(!K2);//等待按键释放
}
}
}
}
/*-----------------------------
--------------------------------*/
//串口接收中断函数
void INT_UartRcv(void) interrupt 4
{
if(RI) //查询接收标志位(有数据发送过来时置为1)
{
RI = 0; //接收标志位清零
P0
串口 用中断法写的 发送和接收程序
= SBUF; //存储缓冲区的数据
Uart_SendChar(SBUF); //让从计算机上传到单片机的数据 , 传回的计算机显示
}
}
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




