历史上的今天
今天是:2025年07月12日(星期六)
2018年07月12日 | 51单片机中用中断方式实现串口数据发送与接收
2018-07-12 来源:eefocus
/*
Description:用中断方式实现串口数据发送
Author:Jcy
Date:2012-5-2
*/
#include
#define uint unsigned int
#define uchar unsigned char
uchar receive_ser; //串口接收到的数据
uchar flag=0;
uchar receivebuf[ ]="Jcy";
uchar i=0;
uchar j;
void init_ser()
{
TMOD=0X20;//定时器1工作在方式2
TH1=0XFD;
TL1=0XFD; //波特率9600,51单片机大多用这个
TR1=1; //定时器/计数器1启动
EA=1; //开放总中断
SM0=0;
SM1=1; //串行口方式1
REN=1;//允许串口接收
ES=1;//开串口 中断
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void ser_int() interrupt 4 //中断函数不用声明
{
if(RI==1)
{
RI=0;
receive_ser=SBUF;
if(receive_ser!='\0')
{
receivebuf[i]=receive_ser;
i++;
if(i==12)
{
i=0;
flag=1;
}
}
}
}
void main()
{
init_ser();
while(1)
{
if(flag==1)
{
ES=0; //关闭中断
flag=0; //重置
for(j=0;j<12;j++)
{
SBUF=receivebuf[j]; //发送
while(!TI); //如果一直没发送完毕
TI=0; //为下次发送做准备
delay(10); //此处可以不用延迟
}
ES=1;
}
}
}
上一篇:51单片机中断和软件仿真
下一篇:51单片机的中断与定时计数器尝试
史海拾趣
|
請問可以同時插兩只CSR的Bluetooth dongle么? 現正在學習BCHS Application Demo,通信時需要兩臺PC,各插一只dongle,很不方便。請問可以在同一臺PC上插兩只dongle么。理論上是完全可行的,而且從設備管理器中也可以找到兩個設備(dongle),但不知道如何與應用程序關聯起來,應用程序只能同時打 ...… 查看全部问答> |
|
各位朋友,本人有一些Windows平台的C++开发经验,现在想做嵌入式,自己也有一块ARM的板子,搞过linux的bootloader和内核移植,但是却没有项目可以去学习。本来想去参加培训,可是没有时间。不知哪位朋友现在是否在开发什么项目,能否带小弟一起学习 ...… 查看全部问答> |
|
公司最近有一个项目,用到EP3C55这个器件,希望能把FPGA配置文件SOF和NIOS的程序文件一并烧写的EPCS芯片上! 在SOPC中添加了EPCS CONTROLLER,并在NIOS的RESET ADDRESS设定为EPCS CONTROLLER的地址!现在有两上问题没有想清楚: ...… 查看全部问答> |
|
#define EALLOW asm(\\" EALLOW\\" #define EDIS asm(\\" EDIS\\" #define ESTOP0 asm(\\" ESTOP0\\" 在上面定义的 指令中,不知道三个汇编指令的含义,还请高手赐教,谢谢!! ...… 查看全部问答> |
|
刚刚下了个3.41a的4K限制版在用 发现了几个问题 我用的是MSP430F1121A 我创建了一个C的项目,他提供了一个一条#include "io430.h",如果我加上这句话#include <msp430x11x1.h> 就报错 说很多变量已经定义了 于是我把#include "io430.h ...… 查看全部问答> |




