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

/*************************************
* 串口通信实验
* 晶振11.0592MHz
* 波特率9600bps
* 中断方式实现:单片机接收电脑数据,加1后发送回电脑
*
**************************************/

#include<reg52.h>

unsigned char dat;

/**********串口通信配置*******************/
void UART_CONFIG(unsigned long baud,cy)//baud波特率,cy晶振
{
  TMOD = 0x20;//定时器1工作方式2,8位初值自动重装
  TH1 = 256-(cy/(12*32*baud));
  TL1 = 256-(cy/(12*32*baud));
  TR1 =1;
  SM0 = 0;//SM0,SM1的值确定串口工作方式
  SM1 = 1;
  REN = 1;//允许接收数据
  EA = 1;//开总中断
  ES = 1;//开串口中断
}

/********发送延时函数*****************/

int main()
{
  UART_CONFIG(9600,11059200);
  while(1)
  {
  }
  return 0;
}

void interrupt_UART() interrupt 4
{
  if(RI)//检测如果RI==1,则收到数据,
  {
    RI = 0;//软件置0
    dat = SBUF;//读取接收到的数据到dat;
    dat++;//数据加1
    SBUF = dat;//数据发送到SBUF,自动发送出去
    REN = 0;//接收禁止(发送数据时,禁止接收数据)
  }
  if(TI)//检测如果TI==1,则发送数据完成
  {
    TI = 0;//TI置0
    REN = 1;//打开接收允许
  }
}

时间: 2024-08-05 23:13:13

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

奶爸业余单片机学习之: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:禁止串行口接收数

奶爸业余单片机学习之:定时器使用方法——非中断,TF值软件重置法

============定时器使用方法——非中断,TF值软件重置法======== 第一:设置特殊功能寄存器TMOD,配置好工作模式. 第二:设置计数寄存器TH0和TL0的初值. 第三:设置TCON,通过TR0置1来让定时器开始计数. 第四:判断TCON寄存器的TF0位,监测定时器溢出情况.  实例: //LED由三极管及73HC138控制//用定时器0实现亮与灭之间的1秒时 # include <reg52.h> sbit led2 = P0^0; sbit addr0 = P1^0;sbi

奶爸业余单片机学习之:用数码管及LED实现交通灯(初版)

/* * 人行道交通灯程序:LED2(红灯).LED3(黄灯).LED4(绿灯)* 红灯30秒,绿灯3秒,绿灯15秒,倒计时 灯亮时间显示在数码管上* 晶振11.0592MHz,LED.数码管由三八译码器控制,T0中断 *程序思路:由于三八译码器每次只能输出一个低电平,因此必须用动态扫描方式点亮数码管及LED,中断间隔1ms *亮灯时间倒数,红灯60秒,绿灯20秒,黄灯3秒,顺序:红 - 绿 -黄 -红循环,因此每经历1000次中断,实现数字递减. */ #include<reg52.h>un

奶爸业余单片机学习之:C语言基础——指针(指针变量)学习笔记

指针变量的定义: 存放地址的变量称为指针变量 1. 定义指针变量的一般形式如下: 类型名 * 指针变量名1,* 指针变量名2,... * 指针变量名n ; 例如:  int * X, *Y, *Z; 等同于: int * X; int * Y; int * Z; 实例: #include<stdio.h>void main(){    int x = 1;    int y = 2;    int* A;        //声明一个指向整形变量的指针变量A    int* B;        

奶爸业余单片机学习之:定时器中断的使用方法——进入中断TF0(TF1)值硬件自动重置

/*============定时器中断的使用方法—---TF0(TF1)值硬件重置法======== 第一:打开总中断第二:打开定时器 中断第三:设置特殊功能寄存器TMOD,配置好工作模式. 第四:设置计数寄存器TH0和TL0的初值. 第五:设置TCON,通过TR0置1来让定时器开始计数.*/ //LED由三极管及73HC138控制//用定时器0实现亮与灭之间的1秒延时 # include <reg52.h> sbit led2 = P0^0; sbit addr0 = P1^0;sbit a

【C51】UART串口通信

我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑,  单片机<-->单片机之间通信. 串行通信 versus 并行通信 并行传输:将字节的各个 bit 用多条传输线路同时发送出去.每个bit使用一条线路. 优点:速度相对快,控制简单. 缺点:控制线路多,耗费的硬件资源多. 串行传输:将一个字节的数据的各个 bit 在一条线路上 分时发送.一个字节8位,则至少需要分8次发送完. 优点:需要的线路少,成本低. 缺点:控制复杂,因为它

嵌入式Linux裸机开发(七)——UART串口通信

嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER, 它用来传输串行数据.发送数据时, CPU 将并行数据写入UART,UAR按照一定的格式在一根电线上串 行发出:接收数据时, UART检测另一根电线的信号,将串行收集在缓冲区中, CPU 即可读取 UART 获得这些数据. 在 S5PV210中, UART提供了 4 对独立的异步串口I/O端口,

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

Win10 IoT C#开发 4 - UART 串口通信

原文:Win10 IoT C#开发 4 - UART 串口通信 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug功能可以进行断点追踪调试.C#语言本身也有很好的用户基础,相信Win10 IoT 不远的将来会火起来.上个月帮朋友解决了关于Win10 IoT 的一些技术问题,当前也有很多公司在尝试采用Win10 IoT进行开发,可能也会遇到这些问题,