快捷搜索:

单片机数字逻辑门电路和定时器

单片机数字逻辑门电路和定时器

不管是数字电路,还是C语言,我们都会经常遇到逻辑运算和逻辑电路,在这里我介绍一下,大家先简单了解一下,知道有这么回事,回头遇到了,再详细研究。

本文引用地址:

首先,在“逻辑”这个概念范畴内,存在真和假这两个逻辑值,而将其对应到数字电路或C语言中,就变成了“非0值”和“0值”这两个值,即逻辑上的“假”就是数字电路或C语言中的“0”这个值,而逻辑“真”就是其它一切“非0值”。

然后,我们来具体分析一下几个主要的逻辑运算符。我们假定有2个字节变量:A和B,二者进行某种逻辑运算后的结果为F。

以下逻辑运算符都是按照变量整体值进行运算的,通常就叫做逻辑运算符:

:逻辑与,F = A B,当A、B的值都为真(即非0值,下同)时,其运算结果F为真(具体数值为1,下同);当A、B值任意一个为假(即0,下同)时,结果F为假(具体数值为0,下同)。

||:逻辑或,F = A || B,当A、B值任意一个为真时,其运算结果F为真;当A、B值都为假时,结果F为假。

! :逻辑非,F = !A,当A值为假时,其运算结果F为真;当A值为真时,结果F为假。

以下逻辑运算符都是按照变量内的每一个位来进行运算的,通常就叫做位运算符:

:按位与,F = A B,将A、B两个字节中的每一位都进行与运算,再将得到的每一位结果组合为总结果F,例如A = 0b11001100,B = 0b11110000,则结果F就等于0b11000000。

| :按位或,F = A | B,将A、B两个字节中的每一位都进行或运算,再将得到的每一位结果组合为总结果F,例如A = 0b11001100,B = 0b11110000,则结果F就等于0b11111100。

~ :按位取反,F = ~A,将A字节内的每一位进行非运算(就是取反),再将得到的每一位结果组合为总结果F,例如,A = 0b11001100,则结果F就等于0b00110011;这个运算符我们在前面的流水灯实验里已经用过了,现在再回头看一眼,是不是清楚多了。

^ :按位异或,异或的意思是,如果运算双方的值不同(即相异)则结果为真,双方值相同则结果为假。在C语言里没有按变量整体值进行的异或运算,所以我们仅以按位异或为例,F = A ^ B,A = 0b11001100,B = 0b11110000,则结果F就等于0b00111100。

我们今后要看资料或芯片手册的时候,会经常遇到一些电路符号,表1就是数字电路中的常用符号,知道这些符号有利于我们理解器件的逻辑结构,尤其重点认识以下表中的“国外流行图形符号”。在这里我们先简单看一下,后边遇到了知道到这里查阅就可以了。

表1 数字逻辑门电路

单片机数字逻辑门电路和定时器

二、定时器的学习

定时器是单片机的重点中的重点,但不是难点,大家一定要完全理解并且熟练掌握定时器的应用。

定时器的初步认识

时钟周期:时钟周期T是时序中最小的时间单位具体计算的方法就是1/时钟源,如果大家用的晶振是11.0592M,那么对于这个单片机系统来说,时钟周期=1/11059200秒。

机器周期:我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而C语言一条语句的时间是不可计算的。51单片机系列,在其标准架构下一个机器周期是12个时钟周期,也就是12/11059200秒。现在有不少增强型的51单片机,其速度都比较块,有的1个机器周期等于4个时钟周期,有的1个机器周期就等于1个时钟周期,也就是说大体上其速度可以达到标准51架构的3倍或12倍。因为我们是讲标准的51单片机,所以我们后边的课程如果遇到这个概念,全部是指12个时钟周期。

这两个概念了解即可,下边就来我们的重头戏,定时器和计数器。定时器和计数器是单片机内部的同一个模块,通过配置SFR(特殊功能寄存器)可以实现两种不同的功能,我们大多数情况下是使用定时器功能,因此我们的课程也是主要来讲定时器功能,计数器功能大家自己了解下即可。

顾名思义,定时器就是用来进行定时的。定时器内部有一个寄存器,我们让它开始计数后,这个寄存器的值每经过一个机器周期就会加1一次,因此,我们可以把机器周期理解为定时器的计数周期。我们的秒表,每经过一秒,数字加1,而这个定时器就是每过一个机器周期的时间,也就是12/11059200秒,数字加1。还有一个特别注意的地方,就是秒表是加到60后,秒就自动变成0了,这种情况在单片机和计算机里我们称之为溢出。那定时器加到多少才会溢出呢?定时器有几种模式,假如是16位的定时器,也就是2个字节,最大值就是65535,那么加到65535后,再加1就算溢出,如果有其他位数的话,道理是一样的,对于51单片机来说,溢出后,这个值会直接变成0。从某一个初值,经过计算确定的时间后溢出,这个过程就是其定时的含义。

定时器的寄存器描述

您可能还会对下面的文章感兴趣: