51单片机笔记

本文介绍了51单片机的编程区域,包括用户应用程序区和ISP监控程序区,详细讲解了单片机如何通过UART和USB与电脑通信,以及硬件连接和UART通信配置。同时,讨论了定时器/计数器的工作模式,以及时钟配置。最后,阐述了STC89C516中断配置,包括中断定义、中断优先级和中断处理方法,提供了中断配置的实例。
摘要由CSDN通过智能技术生成

51单片机笔记

在这里插入图片描述

一、编程区域

1.1 用户应用程序区(AP区)

是指用户自己编写的程序区

1.2 ISP监控程序区:

ISP区是指芯片出厂时就已经固化在单片机内部的一段程序,STC单片机可以进行ISP串行下载程序,这就是因为芯片在出厂时已经在单片机内部固化了ISP引导码,程序首次上电时先会从ISP区开始执行代码,体现在实际实验中时,就是我们在下载程序时,先要点击下载软件界面上的下载,然后再开启单片机电源,当单片机检测到上位机有下载程序的需要时,便启用ISP下载功能给单片机下载程序。若经过短暂的时间没有检测到上位机有下载程序的需求,单片机便会从用户应用程序区(AP区)开始执行代码。

存储类型的分类

在这里插入图片描述

ROM中存放程序、数据和表格。ROM的开始部分是中断响应区,用来存放无条件转移指令,指向真正的中断程序空间。
RAM中存放中间结果和过程数据。

二、单片机UART与电脑的USB通信

先有波特率再有晶振频率,为了保证有效通讯,根据电、传输介质等的物理特性结合串口设备使用的要求,确定RS232最大传输速率只能是115200,然后逐级二分得到57600,28800,19200……为适应这些速率,设计相应的晶振频率。
如果时钟不合适,就会导致存在误差,误差过高,就会产生乱码。此时,需要增加校验位,出现错误的数据要重新发送。
串口试验主要是,实现单片机UART与电脑的RS232通信,或者单片机UART与电脑的USB通信。

2.1 硬件连接

单片机UART与电脑的USB通信硬件原理图如下所示。图中,J44和J39端子的2、3要相接。这样单片机就能通过CH340芯片和电脑USB接口实现通信。

在这里插入图片描述

2.2 UART通信配置

UART工作模式主要包含:传输特性、接收缓冲器操作、中断函数。

51的UART有四种工作模式,决定了传输特性。

在这里插入图片描述

2.2.2 模式1

在这里插入图片描述

其中Timer1的溢出率就是Timer1溢出的速率,例如T1定时50ms,溢出率就是速率就是频率即1/50ms=20hz。

2.2.3模式0

在这里插入图片描述
在这里插入图片描述

三、定时器/计数器模块信息

3.1相关寄存器

在这里插入图片描述

先要了解寄存器的复位值。

3.2工作模式

Timer0/Counter0有4种工作模式,Timer1/Counter1有3种工作模式。

练习:Timer0/Counter0的工作模式0,定时100ms

配置过程:

  1. Timer0/Counter0选择是否采用外部使能信号(INT0);TOMD

  2. 选择工作模式,时钟来源于sysclk时模块作为Timer0,时钟来源于T0时模块作为Counter0;TOMD

  3. 如果Timer0,选择是12分频还是6分频,设置初值;软件设置

  4. 定时器中断设置

  5. 中断优先级设置;

  6. 中断允许

  7. 中断处理函数;

  8. 使能模块工作;

PS:计算初值时,由于初值是由低位的5位,加高位的8位组成的。所以高位=初值/32,低位=初值%32(TL0是低5位)。其中32是25。

四、STC89C516中断配置模块信息

4.1中断定义和整体结构图

中断的作用就是:根据中断源和对应激励,程序(PC指针),跳转并执行中断函数,执行完之后,再回到原位置继续执行。

STC89C516的中断结构图如下:

在这里插入图片描述

结构图是结合数电的逻辑门以及电路中断开关符号,来表示不同寄存器组合,会产生什么样的输出,对应模块实现什么功能。

当然出发中断的条件,可以用更简单的表格来提示:

在这里插入图片描述

4.2中断相关寄存器

在这里插入图片描述

详见《STC89C52》数据手册page 162。需要特别注意复位值。

4.3中断优先级与中断处理

4.3.1优先级

在这里插入图片描述

中断优先级和查询次序是两件事。查询次序是指相同级别的中断时中断执行的优先级,只有查询次序最高的才执行,只有退出中断且其他中断激励还存在才会执行下一个次序的中断,且查询次序本身是不能修改的。

4.3.2 中断处理

在这里插入图片描述

练习:使用INT0,控制led翻转

配置过程:

1.优先级设置;

2.中断触发条件设置;

3.中断允许;

4.中断处理函数,需要查看中断标志位时硬件清0还是需要软件清0;

根据上述过程,程序如下:

  1. void Priority_Setting()实现优先级设置,设置INT0时较低优先级;

  2. 设置下降沿触发中断,设置IT0=1;

  3. 允许中断,EA=1;EX0=1;

  4. 写中断处理函数,void exint0() interrupt 0,其中进中断函数时,中断标志位IE0会被硬件清0;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值