七段数码管的使用_第1页
七段数码管的使用_第2页
七段数码管的使用_第3页
七段数码管的使用_第4页
七段数码管的使用_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.1 数码管简介同学们!相信你的流水灯也做的不错了吧,现在能玩出几种花样了?但是工程师们设计这么一个单片机,并不是只为了让它做流水灯的,那样也太浪费点了吧 . _。数码管的一种是半导体发光器件,7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示09等10个数字和小数点,使用非常广泛,数码管可以分为一位和多位它的外观如图5-1所示。图5-15.2 数码管的显示原理数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,使用时com接正5伏电源,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是

2、把所有LED的阴极连接到共同接点com,使用时com要将其接地。而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),8个LED的分布方式如图5-2所示。图中的8个LED分别与上面那个图中的ADP各段相对应,通过控制各个LED的亮灭来显示数字。那么,实际的数码管的引脚是怎样排列的呢?对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为110脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。它对应的引脚分布为图5-3所示。图5-2图5-3数码管的8段,对应一个字节的8位,a对应最低位,dp

3、(小数点)对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。如图5-4所示。图5-4那么,一位数码管要显示字符0F,则对应的编码如表2所示。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。5.3 一位数码管的显示请实现:让一位数码管依次显示字符0F,每个字符显示1秒,如此反复。一般情况下,为了计

4、算或取码的方便,我们把a-dp依次接到单片机某个口上的Px.0-Px.7上。x表示0,1,2,3其中的一个。这样我们只要给某个口,赋一个值,则相应的LED段就被点亮,但是在硬件连接上要注意了:单片机可能不能直接驱动LED,所以我们可以通过控制三级管的导通或截止,或者使用共阳极数码管(以灌电流的方式)、或者使用锁存器来驱动。来控制LED的亮与灭!硬件的选择与仿真电路的设计1.打开Proteus,选择“File/NewDesign”菜单选项,新建一个“设计项目”。并将项目保存为“SEG7_1”。2.选择“P”按钮或菜单“Library/Pick Divice/Symbol P”菜单,从“元件库”中

5、选取元件。依次添加其他元件。其名称和位置见下表。元件名称CategorySub-CategoryResultsAT89C52Microprocessor ICs8051 FamilyAT89C527SEG-MPX1-CA(注1)Optoelectronics7-Segment Displays7SEG-MPX1-CARX8(注2)ResistorsResistor PacksRX8RESPACK-8(注3)ResistorsResistor PacksRESPACK-8注1:7SEG表示7段数码管(Proteus还提供了14段和16段数码管)MPX1表示1位(Proteus还提供了2位、4位、

6、6位和8位数码管)CA表示共阳极(CC表示共阴极)注2:RX8表示电阻排,它实际相当于8个电阻并排摆放在一个容器内。在这里是作为限流电阻来使用的。注3:RESPACK-8表示电阻排,它实际相当于8个电阻并排摆放在一个容器内,但是这8个电阻的一段是连接在一起作为公共端的。在这里是作为P0口的上拉电阻来使用的。依次从备选元件库中摆放器件,连线,画出仿真电路图,如图5-5所示。图5-5注意:在Proteus中,实际上,51单片机是不需要晶振、复位电路和电源就可以仿真的,因此,为了方便我们教学,以后,我们将不再画上述51的外围电路。程序的设计1.新建一个keil项目,并命名为“SEG7_1”并添加一个

7、名为“”的源代码文件,然后键入如下代码。如所示。#include #define SegPort P0 /定义数码管连接的端口#define uchar unsigned char /宏定义 将unsigned char 替换为较为简单的uchar写法#define uint unsigned int/宏定义 将unsigned int 替换为较为简单的uint写法/用一个数组来定义字符0f共阳极数码管编码uchar code seg7ca= 0xc0,0xf9,0xa4,0xb0,/030x99,0x92,0x82,0xf8,/470x80,0x90,0x88,0x83,/8b0xc6,0x

8、a1,0x86,0x8e /cf;/延时函数ms毫秒void DelayMs(uint ms)uint i,j;for(i=0;ims;i+)for(j=0;j124;j+);void main()while(1)/无限大循环/这段代码将字符0F轮流显示一遍,每个字符显示1秒uchar i=0;/从数组第一个元素开始显示for(i=0;i16;i+) SegPort=seg7cai;/按次序显示字符0F DelayMs(1000); /延时1秒 l 知识点:数组seg7ca的定义格式:数据类型(数组位置)数组名称= 数组元素1,数组元素2,;l 知识点:code关键字“code”是C51所定义

9、的关键字,他的含义是定义将代码放在ROM中,由于51的RAM很小,因此,为了节约有限的RAM,我们通常会把一些不会变化的数据(比如数码管的编码、参数表等等)放在ROM中,这样,我们就可以多空出一些RAM供程序来使用。那么怎样把这些常量放在ROM中呢,即给定义语句前添加一个“code”关键字,告诉编译器,这些常量要放在ROM中,如果没有添加“code”,那么这些编码就会放在RAM中。同学们可以通过删除“code”关键字,重新build程序,然后查看程序占用RAM的大小,来验证“code”关键字的作用。l 知识点:数组元素的访问数组元素是通过他的序号来访问的。例如数组seg7ca= 0xc0,0x

10、f9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e一共有16个元素,其中0xc0的序号为0(请记住,数组中的第一个元素序号为0),0xf9的序号为1,0x8e的序号为15,以此类推。那么当我们想要使用0xc0时,我们可以使用“seg7ca0”这种方式。因此,代码“SegPort=seg7cai”;/按次序显示字符0Fl 程序代码说明uchar i=0;/从数组第一个元素开始显示for(i=0;i16;i+)SegPort=seg7cai;/按次序显示字符0FDelayMs(1000); /延时1秒这段

11、代码将字符0F轮流显示一遍,每个字符显示1秒当for循环开始时,i=0,因此,SegPort=seg7ca0;由于SegPort是P0,seg7ca0=0xc0,因此,P0=0xc0,即P0口送出0xc0,由于0xc0是共阳极数码管字符“0”的编码,因此,数码管显示字符“0”。当for第二次循环时,i=1,因此,SegPort=seg7ca1;即,P0=0xf9,即P0口送出0xf9,由于0xf9是共阳极数码管字符“1”的编码,因此,数码管显示字符“1”。以此类推,随着for循环,P0口送出数组seg7ca所定义的16个元素,从而在数码管上显示对应的十六个字符。5.4 多位数码管的显示想必大家

12、已经可以把0-F显示出来了吧!但是如果要你显示两位数,三位数呢?让我们实现如下功能:让两位数码管显示数字“15”。或许,有的朋友会这么想:在P0口上接一个数码管,再在P1口上接个数码管!但是,如果要显示4位、5位的数字呢?那岂不是一块AT8951都接不过来!难到就不能接4位或5位以上的吗?肯定不是的!说到这里,我们来讲讲数码管的显示方式,可分为两种:动态扫描和静态显示。上面我们所说的即为静态显示。但是如果我们采用动态扫描显示,那么就可以解决上面的问题,动态扫描是指每隔一段时间循环点亮每个数码管,每次只有一个数码管被点亮。细心的朋友会问这样的问题:是让数码管一个一个亮,那还是不能控制数码管一起亮

13、或灭嘛!怎么解决? 其实,人的眼睛有视觉暂留效应,黑夜里,拿着一支烟,在你面前快速的晃动,你会发现什么样的现象?是不是原本不连续的点变成了一条看上去连续的曲线或者直线!再回过头来,仔细想想我们的数码管!原理是一样的,只要我们快速的循环显示每个数码管,人的眼睛看起来就好像是它们同时被点亮了,关键是速度。比如点亮6位数码管,硬件连接可以这样解决:a-dp还是接至P0.0-P0.7上,还有6个COM脚再接至另外口的P2.0-P2.5。P0口作段选(控制数字字符),P2口作位选(选通哪个数码管被点亮)这样我们控制P0和P2口就可以控制6个数码管了。5.4.1硬件的选择与仿真电路的设计1.打开Prote

14、us,选择“File/NewDesign”菜单选项,新建一个“设计项目”。并将项目保存为“SEG7_2”。“P”按钮或菜单“Library/Pick Divice/Symbol P”菜单,从“元件库”中选取元件。依次添加其他元件。其名称和位置见下表。元件名称CategorySub-CategoryResultsAT89C52Microprocessor ICs8051 FamilyAT89C527SEG-MPX2-CC(注1)Optoelectronics7-Segment Displays7SEG-MPX2-CCRX8ResistorsResistor PacksRX8RESPACK-8Re

15、sistorsResistor PacksRESPACK-874HC573(注2)TTL 74HC seriesFlip-Flops & latches74HC573注1:7SEG表示7段数码管、MPX2表示2位、CC表示共阴极(CC表示共极)注2:74HC573是一个8位锁存器,在这里主要是提供锁存和驱动功能。依次从备选元件库中摆放器件,连线,画出仿真电路图,如图5-6所示。图5-6“LE”引脚相连,方法如下:“LE”引脚各用鼠标延长一段。(2)点击Proteus侧边工具栏的“LBL(Wire Label Mode)”按钮,如图5-7所示。Wire Label Mode 按钮图5-7图5-8

16、(3)将鼠标移动到51的P1.2引脚点一下,出现如下“Edit Wire Label”窗口,在“Edit Wire Label”窗口的“string”编辑框中填入该引脚的名称,比如“P12”,然后点击“OK”。如果5-8所示。(4)再将将鼠标移动到74HC573的“LE”引脚点一下,再在“Edit Wire Label”窗口的“string”编辑框中填入该相同的名称,比如“P12”,然后点击“OK”。(5)这样,引脚标号相同的引脚就会被物理的连接在一起了。2.74HC573的使用74HC573为8位3态非反转透明锁存器。数据从D0D7引脚输入,从Q0Q7引脚输出。他的真值表如图5-9所示。图5

17、-9OE为输出使能端,低电平有效,当OE为高电平时,D和Q不通,即所谓的输出高阻态。LE为锁存端,当LE为高电平时,D和Q是直通的,当LE为低电平时,不管D端输入是什么,Q端保持上一次的输出,即开启锁存功能。3.电路说明因为我们使用了两位数码管,因此,我们需要轮流点亮数码管的各位和十位。由于数码管是共阴极的,因此,我们需要在P0口送出数码管共阴极的编码,同时,给要点亮数码管位选线一个低电平,由于51的驱动能力不足以直接驱动数码管,因此,我们通过74HC573这个锁存器来驱动,它的输出电流足够大,能够很好的驱动数码管发光。5.4.2程序的设计1.新建一个keil项目,并命名为“SEG7_2”并添

18、加一个名为“”的源代码文件,然后键入如下代码。如代码5.2所示。#include #define SegPort P0 /定义数码管连接的端口#define uchar unsigned char /宏定义 将unsigned char 替换为较为简单的uchar写法#define uint unsigned int/宏定义 将unsigned int 替换为较为简单的uint写法/用一个数组来定义字符0f共阴极数码管编码uchar code seg7cc=0x3f,0x06,0x5b,0x4f, /030x66,0x6d,0x7d,0x07, /470x7f,0x6f,0x77,0x7c,

19、/8b0x39,0x5e,0x79,0x71 /cf;sbit GeWei=P11; /定义数码管个位的位选线sbit ShiWei=P10; /定义数码管十位的位选线sbit le573=P12; /定义573LE引脚的位选线/延时函数ms毫秒void DelayMs(uint ms)uint i,j;for(i=0;ims;i+)for(j=0;j124;j+);void main()GeWei=1; /先将数码管个位显示关闭ShiWei=1; /先将数码管十位显示关闭while(1)/无限大循环le573=1; /将锁存器设置为直通模式SegPort=seg7cc5; /将5的编码送出G

20、eWei=0; /先显示个位,将十位关闭le573=0; /将锁存器设置为锁存模式DelayMs(1);GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁le573=1; /将锁存器设置为直通模式SegPort=seg7cc1; /将1的编码送出ShiWei=0;/再显示十位,将个位关闭le573=0; /将锁存器设置为锁存模式DelayMs(1);GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁l 程序代码说明1.初始化 GeWei=1; /先将数码管个位显示关闭ShiWei=1; /先将数码管十位显示关闭通过这两行代码将数码管的个位和十位位选线都置为高电平,对于共

21、阴极数码管来讲,那么个位和十位都不能显示了,即先将两位都关闭。2.我们现在想让个位数码管显示字符“5”,我们需要做的是:(1)LE引脚拉高,使74HC573进入直通模式。(2)P0口送出字符“5”共阴极编码“0x6d”(3)GeWei (即)引脚送出低电平,选中数码管个位,此时数码管个位显示字符“5”。(4)LE引脚拉低,使74HC573进入锁存模式,此时,74HC573的Q端始终保持输出“0x6d”,则数码管个位始终保持显示字符“5”把上述伪代码翻译为C51代码就是:le573=1; /将锁存器设置为直通模式SegPort=seg7cc5; /将5的编码送出GeWei=0; /先显示个位,将

22、十位关闭le573=0; /将锁存器设置为锁存模式为了防止数码管闪烁,我们需要消隐操作,即将两位数码管都关闭,代码如下:DelayMs(1);GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁再用相同的方法让十位数码管显示字符“1”。5.通过循环操作,使两位数码管快速轮流显示字符“1”和“5”,由于视觉暂留效应,我们看到的就是字符“1”和“5”同时显示出来了。5.5多位数码管显示秒数据让我们实现如下功能:让两位数码管依次显示数字“0059”,每个数字显示1秒,显示完59后,回到00,如此反复。5.5.1实现原理分析1.我们使用一个变量second表示当前的秒数,让second从0开

23、始,每隔一秒钟加1,当second增加到59时,让它回到0,重新开始。这样,second就在059之间反复变化。2.从second中拆分出它的个位和十位呢?我们可以使用以下方法。提取个位:tmp=second%10;/例如second=45,second%10=5提取十位:tmp=second/10;/例如second=45,second/10=43.我们让数码管的个位显示second的个位,数码管的十位显示second的十位。5.5.2 硬件电路的设计不变。5.5.3程序的设计1.新建一个keil项目,并命名为“SEG7_3”并添加一个名为“”的源代码文件,然后键入如下代码。如代码5.3所示

24、。/代码5.3#include #include commmon.h /包含#define uchar unsigned char等定义#include function.h /包含DelayMs函数#define SegPort P0 /定义数码管连接的端口sbit GeWei=P11; /定义数码管个位的位选线sbit ShiWei=P10; /定义数码管十位的位选线sbit le573=P12; /定义573LE引脚的位选线/用一个数组来定义字符0f共阴极数码管编码unsigned char code seg7cc=0x3f,0x06,0x5b,0x4f, /030x66,0x6d,0x

25、7d,0x07, /470x7f,0x6f,0x77,0x7c, /8b0x39,0x5e,0x79,0x71 /cf;void main()uchar tmp,second; /second为当前的秒数GeWei=1; /先将数码管个位显示关闭ShiWei=1; /先将数码管十位显示关闭second=0; /second将从0开始增加while(1)/无限大循环tmp = second%10;/提取个位数le573=1; /将锁存器设置为直通模式SegPort=seg7cctmp; /将second个位的编码送出GeWei=0; /先显示个位,将十位关闭le573=0; /将锁存器设置为锁存

26、模式DelayMs(500);GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁tmp = second/10;/提取十位数le573=1; /将锁存器设置为直通模式SegPort=seg7cctmp; /将second十位的编码送出ShiWei=0;/再显示十位,将个位关闭le573=0; /将锁存器设置为锁存模式DelayMs(500); /延时500毫秒,连同前面延时的500毫秒,刚好是1秒GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁if(second59) /second 增加到59后,将重新从0开始增加second+;elsesecond=0;l 程序代

27、码说明1.让second就在059之间反复变化。代码如下:if(second59) /second增加到59后,将重新从0开始增加second+;elsesecond=0;second中拆分出它的个位和十位。提取个位:tmp=second%10;/例如second=45,second%10=5提取十位:tmp=second/10;/例如second=45,second/10=43. 我们让数码管的个位显示second的个位,数码管的十位显示second的十位。SegPort=seg7cctmp; /将second个位的编码送出SegPort=seg7cctmp; /将second十位的编码送出

28、4.second每隔一秒钟加1我们使用两次DelayMs(500),则总的延时时间就是1秒l 实际代码执行的效果我们看到,实际代码执行的效果其实不太理想,秒数的显示不是同时显示出来的,问题出在哪里呢?其实,问题出在second的增加和数码管扫描的速度要求不一致。second增加的速度要求很慢,1秒钟增加一次,而数码管扫描要求速度很快,几毫秒就要动态显示一遍。而我们在一个程序序列中是无法同时满足这个快速和慢速两个要求的。5.6多位数码管显示秒数据改进版(定时器的使用)5.6.1实现原理分析1.如果我们能使用一个方法使second值1秒钟增加一次,同时能让数码管很快的动态显示,那么就能解决我们的问

29、题了。使用什么方法呢,答案就是使用定时器。定时器可以实现在一定的时间间隔重复执行某个任务。例如,我们想每隔1秒执行一次second值加1的操作,我们就应该使用定时器。51单片机内部有两个定时器(52有三个),即T0和T1。2.我们在主程序循环中做快速的数码管动态扫描,同时在定时器中断中做second每秒加1的操作就可以了。l 知识点:定时器中断什么是中断呢?讲个比较通俗的例子:比如你正在家中看电视,突然电话响了,你的第一反应是什么?是不是先跑过去接电话!接完电话后,继续看电视。这就是个中断的例子,电话打断了你看电视这件事(所以叫做中断源),你跑过去就是响应中断,接电话就是中断的处理!接完电话后

30、,接续看电视,即恢复中断!但是这个好象和单片机没什么联系呀?类比一下:比如单片机正在执行某个任务(比如数码管的显示),突然要有任务,要求单片机响应(比如1秒时间到了,second要加1),单片机就会应答响应,去执行该任务(即中断处理),原来的任务(数码管的显示)就会暂停。等执行完中断任务后,继续执行原来的任务(继续数码管的显示)。由于中断处理很快,因此你实际是感觉不到数码管的显示曾经暂停过。5.6.2 硬件电路的设计不变。5.6.3程序的设计1.新建一个keil项目,并命名为“SEG7_4”并添加一个名为“”的源代码文件,然后键入如下代码。如代码5.4所示。#include #include

31、commmon.h /包含#define uchar unsigned char等定义#include function.h /包含DelayMs函数#define SegPort P0 /定义数码管连接的端口sbit GeWei=P11; /定义数码管个位的位选线sbit ShiWei=P10; /定义数码管十位的位选线sbit le573=P12; /定义573LE引脚的位选线/用一个数组来定义字符0f共阴极数码管编码unsigned char code seg7cc=0x3f,0x06,0x5b,0x4f, /030x66,0x6d,0x7d,0x07, /470x7f,0x6f,0x7

32、7,0x7c, /8b0x39,0x5e,0x79,0x71 /cf;uchar tmp,second;/定义一个全局变量,second为当前的秒数uchar count;/定义一个全局变量,count为定时器中断执行的次数void main()/*定时器T0的初始化*TMOD=0x01; /设置定时器T0工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;/设置定时器中断时间间隔为50毫秒EA=1; /开总中断ET0=1; /开定时器T0中断TR0=1; /定时器开始运行/*GeWei=1; /先将数码管个位显示关闭ShiWei=1; /先将数

33、码管十位显示关闭second=0; /second将从0开始增加count=0; /count将从0开始增加while(1)/无限大循环tmp = second%10;/提取个位数le573=1; /将锁存器设置为直通模式SegPort=seg7cctmp; /将second个位的编码送出GeWei=0; /先显示个位,将十位关闭le573=0; /将锁存器设置为锁存模式DelayMs(1);GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁tmp = second/10;/提取十位数le573=1; /将锁存器设置为直通模式SegPort=seg7cctmp; /将second十

34、位的编码送出ShiWei=0;/再显示十位,将个位关闭le573=0; /将锁存器设置为锁存模式DelayMs(1); GeWei=1;ShiWei=1; /消隐操作,防止数码管闪烁/定时器T0的中断处理函数,本例中,该中断函数每隔50毫秒执行一次,则执行20次后,累积的时间为1秒void T0_Timer() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256; /因为方式1中,TH和TL值会清零,因此需要重新设置定时器中断时间间隔为50毫秒count+; /中断执行的次数加1 if(count=20) /注意,中断20次后,累计的时

35、间为50*20=1000毫秒,即一秒,此时,second该加1了count=0; /先将count重新置零/*每秒钟second加1*if(second59) /second 增加到59后,将重新从0开始增加second+;elsesecond=0; /*l 知识点:中断处理函数的格式C51的中断处理函数的格式如下:void 函数名() interrupt 中断号中断处理的代码例如 void T0_Timer() interrupt 1其中T0_Timer是函数名(可以自己取名)interrupt 是C51的关键字,表示该函数是中断处理函数中断号表示该中断的种类。52系列 的单片机共有6个中断

36、源,分别为:外中断INT0(中断号0) 、定时器T0中断(中断号1)、外中断INT1(中断号2)、定时器T1中断(中断号3)、串口中断(中断号4)、定时器T2中断(中断号5)。又如 void T1_Timer() interrupt 3表示该函数是处理定时器T1的中断处理函数,也即当T1发生中断时,会进入该函数来处理中断。l 知识点:定时器的初始化(1)定时器的工作方式51的定时器有4种工作方式,本例中使用方式1,即16位定时器模式,要让定时器工作在工作方式1,需要设置寄存器TMOD(高四位管T1,低四位管T0)的值,设置方式如下:TMOD=0x01; /设置定时器T0工作在方式1TMOD=0

37、x10; /设置定时器T1工作在方式1TMOD=0x11; /设置定时器T0、T1都工作在方式1注:TMOD的详细设置,请参看单片机课本。(2)工作方式1模式下,我们通常通过如下代码设置其中断时间间隔THx=(65536-N)/256;TLx=(65536-N)%256; /x=0表示设置定时器0,x=1表示设置定时器1代码中的“N”值就是定时器的中断时间间隔。一般分为两种情况:u 当51采用12MHz的晶振时,计时单位为1us,则N=t/1us,其中t为要设置的实际中断间隔。例如我们想设置T0中断时间间隔为50ms,则N=50ms/1us=50000。u 当51采用11.0592MHz的晶振

38、时,计时单位为1.085us,则N=t/1.085us,其中t为要设置的实际中断间隔。例如我们想设置T0中断时间间隔为50ms,则N=50ms/1.085us46083。由于我们采用的是12MHz的晶振,因此,本例中,T0的中断时间间隔为50毫秒,即每隔50毫秒,进入中断处理程序一次。(3)设置中断允许只用当单片机允许响应中断时,中断发生时,才会进入中断处理程序,利用这个特性,我们可以打开和切断中断的响应。中断的响应允许分为两个级别:特定中断开关和总中断开关。例如本例中EA=1; /开总中断,当EA=0即关闭总中断时,所有类型的中断都不会被响应ET0=1; /开定时器T0中断其中,EA为总中断开关,EA=1为打开总中断,EA=0,表示关闭总中断,此时,系统发生的所有类型的中断都不会被响应,因此,我们可以利用EA=0来切断所有的中断响

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论