当前位置:首页 > 单片机 > 单片机
[导读] 本期主要知识点为单片机定时计数器、中断和串行口的学习。单片机对于初学者来说确 实很难理解,不少学过单片机的同学或电子爱好者,甚至在毕业时仍旧是一无所获。基于此,电子发烧友网将整合《单片机

 

本期主要知识点为单片机定时计数器中断串行口的学习。单片机对于初学者来说确 实很难理解,不少学过单片机的同学或电子爱好者,甚至在毕业时仍旧是一无所获。基于此,电子发烧友网将整合《单片机学习知识点全攻略》,共分为四个系列, 以飨读者,敬请期待!此系列对于业内电子工程师也有收藏和参考价值。

  15、单片机位操作指令

 

前面那些流水灯的例程,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运 算、移位等等。用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,能直接用数值来表在。可是如果用它来控制一些开关的打开和合 上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例程吗?我们知道送往P1口的数值后并不能马上知道哪个灯亮和来灭,而是要化成二进制才知 道。工业中有很多场合需要处理这类开关输出,继电器吸合,用字节来处理就显示有些麻烦,所以在8031单片机中特意引入一个位处理机制。

位寻址区

在8031中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,能直接用这个地址来对此进行操作。

内部RAM的20H-2FH这16个字节,就是8031的位寻址区。看图1。可见这里面的每一个RAM中的每个位我们都可能直接用位地址来找到它们,而不必用字节地址,然后再用逻辑指令的方式。

能位寻址的特殊功能寄存器

8031中有一些SFR是能进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存 器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON(定时器/计数器控制寄存器)、P0-P3(I/O端口锁存器)。以上的一些 SFR我们还不熟,等我们讲解相关内容时再作详细解释。

位操作指令

MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集。在进行位处理时,CY(就是我们前面讲的进位位) 称“位累加器”。有自已的位RAM,也就是我们刚讲的内部RAM的20H-2FH这16个字节单元即128个位单元,还有自已的位I/O空间(即 P0.0…。.P0.7,P1.0…….P1.7,P2.0……。.P2.7,P3.0……。.P3.7)。当然在物理实体上它们与原来的以字节寻址用的 RAM,及端口是完全相同的,或者说这些RAM及端口都能有两种使用办法。

位传送指令

  MOV C,BIT

  MOV BIT,C

这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。

例:MOV P1.0,CY ;将CY中的状态送到P1.0管脚上去(如果是做算术运算,我们就能通过观察知道现在CY是多少啦)。

  MOV P1.0,CY ;将P1.0的状态送给CY。

位修正指令

位清0指令

  CLR C ;使CY=0

  CLR bit ;使指令的位地址等于0。例:CLR P1.0 ;即使P1.0变为0

位置1指令

  SETB C ;使CY=1

  SETB bit ;使指定的位地址等于1。例:SETB P1.0 ;使P.0变为1

  位取反指令

  CPL C ;使CY等于原来的相反的值,由1变为0,由0变为1。

  CPL bit ;使指定的位的值等于原来相反的值,由0变为1,由1变为0。

  例:CPL P1.0

以我们做过的实验为例,如果原来灯是亮的,则执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。

位逻辑运算指令

位与指令

  ANL C,bit ;CY与指定的位地址的值相与,结果送回CY

  ANL C,/bit ;先将指定的位地址中的值取出后取反,再和CY相与,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。

 

例:ANL C,/P1.0

设执行本指令前,CY=1,P1.0等于1(灯灭),则执行完本指令后CY=0,而P1.0也是等于1。

可用下列程序验证:

  ORG 0000H

  AJMP START

  ORG 30H

  START: MOV SP,#5FH

  MOV P1,#0FFH

  SETB C

  ANL C,/P1.0

  MOV P1.1,C ;将做完的结果送P1.1,结果应当是P1.1上的灯亮,而P1.0上的灯还是不亮

位或指令

  ORL C,bit

  ORL C,/bit

  这个的功能大家自行分析吧,然后对照上面的例程,编一个验证程序,看看你相得对吗?

位条件转移指令

判CY转移指令

  JC rel

  JNC rel

第一条指令的功能是如果CY等于1就转移,如果不等于1就次序执行。那么转移到什么地方去呢?我们能这样理解:JC 标号,如果等于1就转到标号处执行。这条指令我们在上节课中已讲到,不再重复。

第二条指令则和第一条指令相反,即如果CY=0就转移,不等于0就次序执行,当然,我们也同样理解: JNC 标号

判位变量转移指令

  JB bit,rel

  JNB bit,rel

第一条指令是如果指定的bit位中的值是1,则转移,不然次序执行。同样,我们能这样理解这条指令:JB bit,标号

第二条指令请大家先自行分析

下面我们举个例程说明:

  ORG 0000H

  LJMP START

  ORG 30H

  START:MOV SP,#5FH

  MOV P1,#0FFH

  MOV P3,#0FFH

  L1: JNB P3.2,L2 ;P3.2上接有一只按钮,它按下时,P3.2=0

  JNB P3.3,L3 ;P3.3上接有一只按钮,它按下时,P3.3=0

  LJM P L1

  L2: MOV P1,#00H

  LJMP L1

  L3: MOV P1,#0FFH

  LJMP L1

  END

把上面的例程写入片子,看看有什么现象………

按下接在P3.2上的按钮,P1口的灯全亮了,松开或再按,灯并不熄灭,然后按下接在P3.3上的按钮,灯就全灭了。这像什么?这不就是工业现场经常用到的“启动”、“停止”的功能吗?

怎么做到的呢?一开始,将0FFH送入P3口,这样,P3的所有引线都处于高电平,然后执行L1,如果P3.2是高电平(键没有按下),则次序执行 JNB P3.3,L3语句,同样,如果P3.3是高电平(键没有按下),则次序执行LJMP L1语句。这样就不停地检测P3.2、P3.3,如果有一次P3.2上的按钮按下去了,则转移到L2,执行MOV P1,#00H,使灯全亮,然后又转去L1,再次循环,直到检测到P3.3为0,则转L3,执行MOV P1,#0FFH,例灯全灭,再转去L1,如此循环不已。大家能否稍加改动,将本程序用JB指令改写?

16、单片机定时器与计数器

一、计数概念的引入

从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生 产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的 办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。

二、计数器的容量

从一个生活中的例程看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。 录音机上的计数器最多只计到999…。那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由 两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。

三、定时

8031中的计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?

一个闹钟,我将它定时在1个小时后闹响,换言之,也能说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。

  

《单片机定时器记数器结构》

结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定 时器则是由单片机供给一个非常稳定的计数源。那么供给组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶体震荡器经过12分频后获得的一个脉冲 源。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

PLC(可编程逻辑控制器)和单片机是两种不同的控制设备,它们之间存在明显的区别:

关键字: 单片机 plc 控制器

74LS192是一款广泛应用在数字电子系统中的同步十进制可逆计数器集成电路,属于美国德州仪器(TI)早期推出的7400系列TTL逻辑家族的一员。该芯片设计为四位二进制计数器,并因其特殊的十进制计数特性以及双向计数能力而广...

关键字: 74ls192 计数器

Holtek隆重推出全新一代32-bit Arm® Cortex®-M0+ 5V CAN MCU - HT32F53231/HT32F53241/HT32F53242/HT32F53252。这一系列单片机带有来自Bosc...

关键字: MCU 工业自动化 单片机
关闭
关闭