/*
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单片机中用中断方式实现串口数据发送与接收
推荐阅读最新更新时间:2024-03-16 16:08
51单片机I/O端口的结构和工作原理
1.概述 单片机的I/O端口是输入信号和输出信号的通道。8051单片机有P0、P1、P2、P3四组I/O 端口,每组端口有8个引脚。 2.P0端口 2.1 概述 P0端口有P0.0~P0.7共8个引脚,这些引脚除了可用作输入引脚和输出引脚外,在外接存储器时,还可用作地址/数据总线引脚。P0端口每个引脚的内部电路结构都相同,其内部电路结构如图1所示。 图1 P0端口的内部电路结构图 2.2 P0端口用作输出端口的工作原理 下面讲解单片机需要从P0.x 引脚输出高电平“1”。如图1所示,单片机内部相关电路通过控制线送出“0(低电平)”到与门的一个输入端和电子开关的控制端,控制线上的“0”一方面使与门
[单片机]
基于51单片机的流水灯实验
K1键流水灯交替闪烁。 K2键流水灯从两边向中间移动闪烁。 K3键流水灯全部闪烁。 K4键流水灯从LED7到LED0流水闪烁。 单片机源程序如下: #include reg51.h sbit S5=P1^4; sbit S6=P1^5; sbit S7=P1^6; sbit S8=P1^7; unsigned char keyval; void key_scan(void); void forward(void); void backward(void); void Alter(void); void blink(void); void led_delay(void); void delay10ms(void);
[单片机]
WPF与51单片机之间的串口通信
WPF部分: (1)建立WPF工程,步骤略 下面是MainWindow.xaml.cs的内容 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Windows; 5 using System.Windows.Controls; 6 using System.Windows.Data; 7 using System.Windows.Documents; 8 using System.Windows.Input; 9 using System.Windows.Media; 10
[单片机]
「51单片机」收发一体超声波测距模块分析+代码
我用的超声波型号是US-020,四个接口的超声波用法基本相同。 一、概述 US-020超声波模块测距范围:2cm~7m 供电电压5V,静态功耗低于3mA 二、实物图 尺寸:45mm*20mm*1.6mm 三、接口 1.VCC 电源,直流5V 2.Trig 向此管脚输入10us以上高电平,可触发模块测距 3.Echo 测距结束时会输出高电平,电平时长为超声波信号往返时间之和 4.GND 接地 四、测距工作原理 只要在Trig管脚输入10us以上高电平,系统会自动发出8个40KHz的超声波脉冲,然后检测回波信号。检测到后通过Echo管脚输出。 计算方式:(Echo高电平时间*340m/s)/2 :利用计数器
[单片机]
51单片机实习-数码管动态显示4399(模块化编程)
#include reg52.h sbit wei0=P1^0; sbit wei1=P1^1; sbit wei2=P1^2; sbit wei3=P1^3; int zxm ={0x98,0x98,0xb0,0x99}; void delay(int i) { while(i--) { int j=0; for(;j 115;j++); } } void display() { int i; for( i=0;i 4;i++) { switch(i) { case 0: wei0=0,wei1=1,wei2=1,wei3=1;break; case
[单片机]
MCS51单片机专用功能寄存器
MCS-51单片机内的锁存器、定时器、串行口数据缓冲器以及各种控制寄存器和状态寄存器都是以专用功能寄存器(或称特殊功能寄存器)的形式出现的,它们分散地分布在内部RAM地址空间范围(80H~FFH)内,表 2-5列出了这些专用功能寄存器(SFR)的助记标识符、名称及地址。
其中,凡字节地址可以被8整除的专用功能寄存器都可以位寻址。其位地址见表2-6。
大部分寄存器的应用将在后面有关章节中评述,这里仅作简单介绍。
·累加器ACC
累加器是一个最常用的专用寄存器。大部分单操作数指令的操作取自累加器。很多双操作数指令的一个操作数取自累加器。加、减、乘、除算术运算指令的运算结果都存放在累加器A或AB寄存器对中。指令系
[单片机]
C51单片机模拟I2C总线驱动程序设计(2)
/************************************ I2C_RcvB ******************************** 函数名:uchar I2C_RcvB() 入口: 出口:uchar 型数据 功能描述: 接收从器件传来的数据,并判断总线错误(不发应答信号),收完后需要调用应答函数。 调用函数: 全局变量: ******************************************************************************* uchar I2C_RcvB() { uchar retc;
[单片机]
80c51单片机串口通讯实验总结
SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志,在我的学习过程中,选用了方式1来实现串口通信(SM0=0 SM1=1)这种方式波特率可变而且为发送8为数据的工作方式。 REN为接收控制位,软件置1后,允许接收; TI为发送中断位,RI为接收中断位,均由软件置1方可继续工作; 由于物理地址上存在两个SBUF寄存器……但软件地址上只存在一个,所以串行口的收发均由SBUF控制。设所要发送的字符为“a”,“a”的ACSII码为0x98H,则发送所用的命令行为SBUF=“a”;,计算机接收端就会收到98H;相反接收时方式则为b=SBUF;(b为无符号char型变量).在实际操作时由于单片机发送
[单片机]