当前位置:首页>科技 >内容

单片机工作的原理,单片机工作原理详解

2023-12-04 15:45:01科技漂亮的斑马

很多朋友对单片机工作的原理,单片机工作原理详解不是很了解,六月小编刚好整理了这方面的知识,今天就来带大家一探究竟。图1乍一看这张图

单片机工作的原理,单片机工作原理详解

很多朋友对单片机工作的原理,单片机工作原理详解不是很了解,六月小编刚好整理了这方面的知识,今天就来带大家一探究竟。

图1乍一看这张图可能会让人觉得麻木,但仔细想想,其实并不复杂。以定时器中断T0为例。首先,看图2。定时器(即计数器)T0到达PT0H之前,必须经过TF0、开关ET0、开关EA。其实TF0也是一个开关,所以为了定时器T0的中断顺利到达PT0H,三个开关都必须闭合。

为什么TF0也是交换机?请注意,TF0所在的列共有8位,只能由一个寄存器保存和控制,该寄存器称为定时器控制寄存器:

图3图3和TF0所在的列不完全一样,先不去管它。这个TF0实际上是定时器0的溢出中断标志位。当T0从初始值加1开始计数以产生溢出时,硬件将TF0设为1。也就是说,当TF0等于1(相当于开关被打开)时,意味着T0(一个8位寄存器)通过用1计数,已经从8个0变成了8个1,加1会产生溢出。这时CPU硬件会复位,T0又变成八个零。

然后,TF0等于1,实际上相当于将寄存器T0复位为0。当然,复位0后,开关再次关闭。

看ET0所在的列。该列也由一个寄存器控制,称为中断许可控制寄存器IE:图4。然后,只需关闭开关ET0,并在寄存器IE中设置该位。ET0置1后,表示定时器T0引起的操作已经被CPU允许。

查看图1中EA所在的列。该列中的所有开关要么完全打开,要么完全关闭。完全断开时,CPU不响应任何中断;当它完全关闭时,CPU响应完全中断。因此,EA称为中断使能控制位。至此,图1左侧的三个开关已经解释清楚了。右边的那个呢?

右边的更简单。我们注意到图1中有六个不同的中断源:定时器T0、T1和T2,外部中断0和外部中断1,以及一个串行中断。如果这六个不同的中断源同时产生中断请求怎么办?这时候就出现了优先级的问题,所以图5的优先级由PT0H和PT0设置:图6。

也就是说,六个不同中断源中的任何一个都可以通过这两个位设置为0到3的任意优先级。查看图1中任意优先级的左侧。图7中有6个连接吗?通过上面的解释,图1可以简单理解为:一个中断源要想得到CPU的响应,必须先闭合左边的三个开关,然后按照设定的优先级顺序进行响应。简单吗?

当定时器T0的中断经过左边的三个开关和优先级设置,到达图7所示的位置时,此时要将定时器T0的中断服务程序的入口地址放入CPU的PC寄存器中,执行这个中断程序。最后,用一个简单的定时器程序来说明:MOVTMOD,A;将工作模式控制字写入TMODMOV 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是为了开始该过程。

这里:SJMP在这里;循环等待,当计数器T0没有变成全1时,重复执行这条指令意味着空转;定时器T0的中断服务程序CTC0:当计数器T0变为全1时,将中断程序CTC0的入口地址发送到PC寄存器CPL P1.7这个程序的作用是在P1.7引脚输出一个周期为200 s的方波,所以中断程序只有一句话,就是不断否定P1.7引脚的电压。

上述程序的编程思路是:在主程序中设置所有中断的条件,即闭合闭合的开关,然后启动定时器,等待定时器计数,当定时器计数未满时,主程序空闲;当计数器满时,相当于图1中最左边开关的开关TF0闭合,从而将中断程序的入口地址CTC0发送给PC供CPU执行,同时将计数器清零。当中断程序执行完毕(CPL P1.7指令执行一次),CPU返回主程序的空闲指令。

这里:SJMP在这里;继续等。此时由于计数器已经被重置为零并开始重新计数(定时器只需要启动一次),开关TFo已经再次关闭,所以主程序会在那里等待下一次计数器满时溢出,以此类推。回顾唐子红

以上就是关于单片机工作的原理,单片机工作原理详解的知识,希望能够帮助到大家!

声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们

Top