单片机第12课:串口通信---中断方式--从计算机接收数据

JP3和P0口连接。用中断的方式来接收数据。

#include<reg51.h>

//声明初始化子函数
void initSer();
void main()
{
	//初始化子函数调用
	initSer();
	while(1)
	{
	 	//一句话都没有
	}
}

//定义初始化子函数
void initSer()
{
 	//定时器工作方式为2
	TMOD = 0x20;
	//波特率9600,SMOD=0
	TH1 = 0xfd;
	TL1 = 0xfd;
	//启动定时器
	TR1 = 1;
	//串口工作方式1
	SM0 = 0;
	SM1 = 1;
	//允许接收数据
	REN = 1;

	//开启中断允许
	ES = 1;
	EA = 1;
}

//中断服务程序
void ser() interrupt 4
{
	//接收到数据就会来这里,这是要软件清零
	RI = 0;
	//从缓冲器中读取数据
	P0 = SBUF;
}

串口通信的中断方式---从计算机接收数据步骤

1---确定定时器T1的工作方式为2,并装初值,并启动

2---串口的工作方式为1,允许接收为REN为1,开启中断允许位

3----写中断服务程序,不需要重新装初值,是因为这是自动重装的,注意RI软件清零

时间: 2024-10-20 14:44:25

单片机第12课:串口通信---中断方式--从计算机接收数据的相关文章

单片机第11课:串口通信查询方式---从计算机接受数据

如何用计算机给单片机发送数据,单片机如何接收数据呢? JP3与P0口相连接.从计算机给单片机发送一个十六进制数据,然后看数码管的显示. #include<reg51.h> /* *给单片机发送一个十六进制的数据,用来显示数码管 */ void initSer(); void main() {<span> </span>initSer(); while(1) { //查询RI的值,如果是1,那么接收到了数据,此时应该软件清零,RI = 0 if(RI == 1) { RI

Java实现RS485串口通信,发送和接收数据进行解析

最近项目有一个空气检测仪,需要得到空气检测仪的实时数据,保存到数据库当中.根据了解得到,硬件是通过rs485进行串口通讯的,需要发送16进制命令给仪器,然后通过轮询来得到数据. 需要先要下载RXTX的jar包,win64位下载地址:http://pan.baidu.com/s/1o6zLmTc):将解压后的rxtxParallel.dll和rxtxSerial.dll两个文件放在%JAVA_HOME%/jre/bin目录下,这样该包才能被正常的加载和调用. 代码如下: package com.g

51单片机GPIO口模拟串口通信

51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于: 分类: 深入C语言(20) 作者同类文章X 1 #include "reg52.h" 2 #include "intrins.h" 3 #include "math.h" 4 #include "stdio.h" 5 sbit BT_SND =P1^5; 6 sbit

奶爸业余单片机学习之:UART串口通信学习笔记(二)

/************************************** 串口通信实验* 晶振11.0592MHz* 波特率9600bps* 中断方式实现:单片机接收电脑数据,加1后发送回电脑***************************************/ #include<reg52.h> unsigned char dat; /**********串口通信配置*******************/void UART_CONFIG(unsigned long baud

奶爸业余单片机学习之:UART串口通信学习笔记(一)

UART串口通信,全名:异步串口通信 UART的四种工作模式:(0,1,2,3) 模式1:SM0 = 0; SM1 = 1;REN = 1  //由SCON(串行口控制寄存器)控制,可位寻址.10位异步收发(8位数据),波特率可变(由定时器1的溢出率控制) 模式1功能:以TXD为例,平时没数据时,TXD为高电平,需要发送数据时,先发送一个起始位0,然后发送八位数据位(一个字节),最后发送一位停止位1: REN位为允许串行接收位:REN = 1:允许串行口接收数据:REN = 0:禁止串行口接收数

S5PV210 串口实验(中断方式)

结合之前的串口实验(轮询方式)与中断体系分析,我们来做下中断方式的串口接收实验. start.S .global _start .global IRQ_handle _start: /* 关 Watch Dog */ ldr r0, =0xE2700000 mov r1, #0 str r1, [r0] /* 设置系统模式栈指针 */ ldr sp, =0x40000000 /* 开 IRQ 总中断开关 */ mov r0, #0x53 msr CPSR_cxsf, r0 /* 时钟初始化 */

stm32RS485串口通信——中断接收发送数据

功能:通过PC机的串口调试助手发送数据给串口A,串口B接收到串口A发送的数据,再由串口B将接收到的数据返回给PC机的串口调试助手. PC->串口A->串口B->PC. 实验平台:stm32f407 /********************************************************************* 本平台具有六个串口: com1  485 com2 com3  232 需一个管脚控制DTU com4 485 com5  调试串口  TTL com6

串口通信参数错误导致接收字节并不是想要的结果

在编写串口通信时设置一下参数,导致接收的字节与单片机发送的字节对不上, serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_SPACE ); 经过测试后把最后一个参数设置为SerialPort.PARITY_NONE就不存在这个问题了

单片机第10课:定时器中断

JP3接P0口. #include<reg51.h> #define uchar unsigned char uchar flag,num; uchar code smg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //声明子函数 void init(); void initTimer0(); void main() { init(); initTimer0(); while(1) { //一句代码都没有 } } voi