如何看懂单片机原理图

如何看懂单片机原理图

这张图第一眼看过去,可能会让人觉得头皮发麻,但稍微想一下,其实并不复杂。

这里以定时器中断T0为例。先看

如何看懂单片机原理图

定时器(也就是计数器)T0到达PT0H之前,先要经过TF0,开关ET0和开关EA。事实上,TF0也是一个开关,那么,为了让定时器T0的中断顺利到达PT0H,这三个开关就必须都闭合。

为什么说TF0也是一个开关呢?注意到TF0所在的那一列,一共有8位,这8位刚好可以用一个寄存器来保存和控制,这个寄存器就叫做定时器控制寄存器:

如何看懂单片机原理图

图3和TF0所在的那一列不是完全相同,我们暂且不管。这个TF0其实是定时器0的溢出中断标志位 ,当T0从初值开始加1计数到产生溢出时,由硬件使TF0置1,也就是说,TF0等于1的时候(相当于这个开关接通),表示T0(一个8位寄存器)这个定时器(计数器)已经由8个0通过加1计数变成了8个1,再加1将产生溢出。这个时候就会引起CPU硬件复位,让T0重新变成8个0。那么,TF0等于1的作用其实相当于把T0这个寄存器重新置0,当然,重新置0之后这个开关又重新断开。

再看ET0所在的那一列。这一列同样由一个寄存器来控制,叫做中断允许控制寄存器IE:

如何看懂单片机原理图

那么,将ET0这个开关闭合,就只要将寄存器IE中的那一位置1就可以了。ET0置1以后,就相当于定时器T0所引起的操作已经被CPU允许了。

再看图1中EA所在的那一列。这一列的所有开关要么全断开,要么全闭合。全断开的时候,CPU不响应任何中断;全闭合的时候,CPU响应全部中断。所以,EA叫做中断允许控制位。至此,图1中左边的三个开关已经解释清楚了,那么右边的呢?

右边的更简单了。我们注意到,图1中一共有六个不同的中断源:定时器T0,T1和T2,外中断0和外中断1,还有一个串口中断。这六个不同的中断源要是同时产生中断请求怎么办呢?这个时候就有一个优先级的问题,那么

如何看懂单片机原理图

优先级就由PT0H和PT0这两位来设置:

如何看懂单片机原理图

也就是说,六个不同的中断源中的任何一个,都可以通过这两位设置成0到3中的任何一个优先级。再看图1中任何一个优先级的左边

如何看懂单片机原理图

是不是都有6根连线?

通过上述解释,图1就可以这样简单理解:

一个中断源如果想得到CPU的响应,就必须先闭合左边的三个开关,再按照被设定的优先级顺序进行响应。

是不是很简单?

当定时器T0中断经过左边三个开关以及优先级设定后,到达图7的位置以后,这个时候就要把定时器T0的中断服务程序的入口地址放到CPU的PC寄存器里边以便执行这个中断程序。

最后以一个简单的定时器程序来说明:

MOV TMOD,A ; 将工作方式控制字写入TMOD

MOV TL0, #9CH ; 送初值

MOV TH0, #9CH ; 送重装初值,这个程序的前三句是设定定时器T0的初值,可以不管

SETB ET0 ; 图1中的ET0开关闭合,允许定时器T0中断

SETB EA ; 图1中EA开关闭合,CPU允许全部中断

SETB TR0 ; 启动定时器T0,这一句和图1中的TF0开关闭合不同,可以这样理解:TF0开关 闭合是让计数器T0重新变成0,这个过程是自动进行的;而计数器T0重新变成0 以后,要重新开始计数,TR0置1就是启动这个过程。

HERE: SJMP HERE ; 循环等待,当计数器T0没有变成全1的时候重复执行这个指令,就是 空转

; 定时器T0的中断服务程序

CTC0: 当计数器T0变成全1的时候 ,将 CTC0这个中断程序的入口地址送人PC寄存 器

CPL P1.7

这个程序的作用是在P1.7引脚输出周期为200 μs的方波,所以中断程序只有一句,就是对P1.7引脚的电压不断进行取反操作。

上面程序的编写思路是这样的:主程序中设置好中断发生的所有条件,即把该闭合的开关闭合,然后启动定时器,等待定时器计数,当定时器计数未满时,主程序空转;当计数器满了以后,相当于图1中最左边的那个开关TF0闭合,从而将中断程序的入口地址CTC0送入PC让CPU执行,并同时将计数器清0。

当中断程序执行完成以后(执行了一遍CPL P1.7指令),CPU又回到主程序的空转指令

HERE: SJMP HERE ;继续等待,这个时候因为计数器已经重新清0并已经开始重新计数(定时器只要启动一次),并且TFo这个开关已经重新断开,所以主程序就在那里等待计数器下一次计满溢出,如此周而复始。

本文【如何看懂单片机原理图】由作者: 外键 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4509.html

(0)
上一篇 2023-03-14 08:58:22
下一篇 2023-03-14 09:00:56

相关推荐

  • 动态链接库dll初始化失败怎么弄

    首先在本机上安装了solid works软件,打开出现这样的情况,可以尝试重新启动在打开,还是没有效果的话不要慌张,这样的小问题是可以解决的! 不管是重启还是修复等一系列解决方法都没有解决的话,不妨试试我的解决方法吧! 不敢保证每个人都可以解决类似问题,但本人就是这样解决的 好了,不废话了,看下面的解决方法吧! 1:打开i控制面板上的电源选项 2:进入到选择…

    2023-03-09
    500
  • asp编程教程 java可视化界面编程

    经典 ASP – Active Server Pages(动态服务器页面) ASP ,全称 Active Server Pages(动态服务器页面),也被称为经典 ASP ,是在1998年作为微软的第一个服务器端脚本引擎推出的。 ASP 是一种使得网页中的脚本在因特网服务器上被执行的技术。 ASP 页面的文件扩展名是 .asp ,通常是用 VBS…

    2023-03-20
    000
  • 学生信息管理系统代码_学生信息管理系统报告

    目 录 第一章 产品与服务介绍 第二章 软件工具的介绍 第三章 市场分析及定位介绍 第四章 商业模式 第五章 营销策略 第六章 财务分析 第七章 风险控制 第八章 团队介绍 第一章 产品与服务介绍 项目背景: 随着互联网用户群的越来越大,当前,全球互联网发展正进入泛在普及、深度融合、变革创新、引领转型的新阶段,对各国经济社会运行、生产生活方式、公共服务模式正…

    2023-03-11
    700
  • 操作系统的作用和地位,计算机系统的概念

    说到操作系统,它是一个与计算机科学相关的专业名词。详细的解释,我们一般人或许无法说出,但大家都熟知windows系统它就是操作系统的其中一个下属分支,说起操作系统,它的历史也是由来已久,自从1946年,我们人类历史上第一台电子计算机问世以来,就在促使操作系统的出现,虽然刚开始还没有操作系统这一说,但计算机的发展不得不催生出操作系统,有了它计算机才能实现越来越…

    2023-03-21
    000
  • javajdk环境变量配置不成功_java安装后环境变量配置

    JDK的安装与环境变量的配置 1.jdk的安装: jdk的安装,傻瓜式安装,一路下一步 jdk中的两个文件夹 lib bin lib:存放的打包好的jar包 bin:所有可执行的文件 2.环境变量的配置 : 右键单击此电脑—属性—高级系统设置—高级—环境变量 在下方系统变量中–新建 新建后输入变量名称:JAVA_HOME 之后,找到java中jdk所在的文件…

    2023-03-09
    500
  • 冒泡排序算法c语言代码_输入n个数进行冒泡排序C语言

    C语言是过去几十年软件和硬件两个阵营之间,签署的最坚实的契约。硬件为C语言的语义提供了最能发挥其性能的基础构件,而软件虽然搞了很多的圆环套圆环般的层次,但最终都以C语言作为最后的沉淀收尾。—-后面也会有C版的迷你程序!!! 之所以起头写这样系列的文档,主要是锻炼自己的编码能力,类似于leetcode吧。 浅话到此,C版的迷你程序、Python版的…

    2023-03-09
    500
  • administrator账户默认密码(怎样取消administrator账户)

    很多用户想要关闭Windows 10 的开机密码,但不知道如何操作,本篇文章教大家如何操作。 方法一:设置 打开电脑左下角的开始菜单,找到齿轮图标,点击进入设置。如下图: 进入设置以后,在弹出的界面里找到帐户。如下图: 点击进入帐户,在弹出的界面左侧找到并点击登录选项,右侧界面会自动切换,在切换的界面里找到密码,点击密码会看到更改。如下图: 点击更改以后,会…

    2023-03-18
    100
  • css是什么软件

    大家在使用电脑的时候,接触最多的应该就是Adobe,那Adobe到底是什么呢? 对于这个问题相信不少学设计的小伙伴们对于adobe都不陌生,特别是对于从事ui设计、平面设计、影视后期制作等行业的人们,毕竟大家在学习过程中以及工作中使用所的很多软件,都是由adobe开发的。 Adobe是什么? 简而言之adobe就是一家美国的跨国软件公司,专注于多媒体创作和创…

    2023-03-10
    800
  • linux系统基础入门教程

    一 Linux简介 Linux是基于Unix的开源免费的操作系统 由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境 Linux是由Linus Torvalds(林纳斯 托瓦兹) 起初开发的 由于源代码的开放性 现在已经衍生出了成千上百种不同的Linux系统 最最最常见的发行版本是CentOS 二 Linux目录结构 三 Linux基本命令 1. 目…

    2023-03-12
    200
  • MATLAB假设检验的例题_概率论假设检验例题

    两类错误存在此消彼长的情况,一般通过控制α来制约β 一共有双侧假设检验、左侧假设检验、右侧假设检验三类问题。

    2023-03-19
    000

发表回复

登录后才能评论
返回顶部
错说博客上线啦!