一张图基本搞清楚单片机的工作原理
图1
这张图第一眼看过去,可能会让人觉得头皮发麻,但稍微想一下,其实并不复杂。
这里以定时器中断T0为例。先看
图2
定时器(也就是计数器)T0到达PT0H之前,先要经过TF0,开关ET0和开关EA。事实上,TF0也是一个开关,那么,为了让定时器T0的中断顺利到达PT0H,这三个开关就必须都闭合。
为什么说TF0也是一个开关呢?注意到TF0所在的那一列,一共有8位,这8位刚好可以用一个寄存器来保存和控制,这个寄存器就叫做定时器控制寄存器:
图3
图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:
图4
那么,将ET0这个开关闭合,就只要将寄存器IE中的那一位置1就可以了。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寄存器里边以便执行这个中断程序。
最后以一个简单的定时器程序来说明:
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这个开关已经重新断开,所以主程序就在那里等待计数器下一次计满溢出,如此周而复始。
分享两种单片机编程思想
一个经典的单片机供电电路,电路的原理图如下图所示:
上图,开关电路简化后的电路。
在电路上电之前。开关"TEST"断开,单片机也没有通过VCC加电。此时,T1的基极通过R9(100k)接地,处于截止状态。T3的基级电阻R7所连接的Test,T1都处于截止状态,所以T3也处于截止状态。
电源+9V被T3隔离,没有加载稳压芯片IC2上,IC2的输出VCC保持低电平。
上图,电路关闭状态。
按动按钮“TEST”启动电路,T3的基极通过R7,Test,T2的b-e接地,从而使得T3导通。此时+9V通过T3加到IC2稳压芯片。IC2输出VCC是加到单片机上。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取: 加微信领取资料
单片机工作后,通过IO2输出高电压,通过R8使得T1导通。此时即使Test松开,T3的基极也可以通过R7,LED1,T1接地,实现电源自锁打开。
上图,按动TEST,启动电路。
上图,电路启动后,由MCU提供T1基极电压,从而维持T3导通。
之后,单片机软件可以来使得IO2端口重新变成低电平,使得T1截止,进而使得T3截止。
可以根据IO1端口,读取T2的开关状态,进而判断用户是否按动功能键。判断用户按动Test之后,等到用户释放Test之后,便可以将IO2置低电平。
也可以根据软件功能,实现自动延迟掉电,进而减少对供电电源的消耗。
原文链接:https://mp.weixin.qq.com/s/PbijtR5F3QsriszcetOnDg
转载自:STM32嵌入式开发
原文链接:经典单片机供电电路原理图
本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
相关问答
帮忙解释下这 单片机 电子钟 原理图 ,谢谢-ZOL问答这个电路估计是一个计时器,右边那三个按键是控制按键,可能控制计时器的开始、结束、暂停。74LS47(不是74L147)是七段数码管译码器,可以将P1.0~P1.3四位引脚输出...
单片机 是怎么通过pwm波来 控制 电机运转的,工作 原理 是什么?[最佳回答]三、单片机PWM控制原理现在很多单片机都有PWM功能,一般情况下,单片机的PWM功能是通过定时器来实现的,在使用时,需要对定时器的寄存器进行PWM功能的设置。...
基于 单片机 的电梯 控制 系统难不难做?[最佳回答]总结:上图只是一个使用单片机模拟的电梯控制系统,原理功能上并不难,外围电路也很常用。在实际应用中,难点在于安全可靠性方面,系统遇突发状况时如何通过算...
51 单片机 ,电路 原理图 ,看不懂k1是什么,如果是按键,怎么使用??...使用LM7805或LM1117-5.0芯片求电路原理图啊?详见附件!我有,控制电路容易理解,电路板3525驱动电路和锁相电路图,留下邮箱
求基于 单片机控制 的9999秒倒计时器的设计 原理图 〔PROTEL电子...[最佳回答]在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善...
单片机控制 电路 原理 ?[最佳回答]你好,单片机控制电路原理是指利用单片机作为控制核心,通过输入输出接口与外部电路相连接,实现对外部电路的控制和监测。其原理如下:1.单片机选择:根据实际...
求大神看看这个 图 , 单片机控制 220V电铃求工作 原理 ?[最佳回答]当电流达到饱和,线圈无电磁感应,开关断开,电铃回路断开,电铃不响。此时需要将I/O口复位以准备下一次响铃。二极管起到给线圈稳压作用。
单片机控制 大电流器件,如何实现电路隔离?[最佳回答]上图中,单片机I∕O口输出的控制信号加至光电耦合器MOC3041的输入端,使其内部的发光二极管工作,将单片机输出的电信号转为光信号,并通过输出端去控制双向可控...
单片机 复位电路,按下k键电容C11为什么能放电?[最佳回答]高电平复位单片机像51单片机,复位引脚是低电平有效,当复位引脚(RST)高电平(电压需要大于复位所...
单片机控制 24V电磁阀 电路图 _汽配人问答[最佳回答]单片机I/O-逻辑驱动-光耦-三极管-24V继电器,这样就可以驱动24V的电炉了,或者直接使用MOS管来驱动也可以。