当前位置: 首页 > 原理解释

单片机编程器原理-单片机编程器原理

老张手里那台老式单片机编程器,看着就是个铁盒子,敲敲打打能修不少芯片。但实际搞个明白,里面比换灯泡还复杂。
这玩意儿能干活,全靠它肚子里那点“大脑”——也就是译码器和振荡器在吵架,硬生生把二进制转化成机器能读懂的那套汇编指令。 先把这块黑乎乎的电路板拆开,别急着拆。电路板表面密密麻麻全是细小的针脚,那是给芯片“喂饭”的地方。最关键的几个针脚,电压方向不同,干的事就天差地别。有四个电源脚,其中最上面那个 BCK 脚是编程器给自己供血的。电流从 5V 一路跌到 3.3V,跑进去后,要经过一个内阻降到 2-3 欧姆的电阻,最终变成 2.5V 的模拟电压。
这个电压不是用来点亮电路的,而是用来给时钟起跳的。时钟起跳了,频率设好了,时钟脉冲就跟着飞,带着程序一步步跑起来。 时钟频率这事儿,老张平时玩多了也就记不得个位数,但原理得讲清楚。单片机编程器用的频率,得跟它配套的“大脑”——也就是那个 IC 芯片的晶振频率匹配。
要是你把时钟设得忒快,要么忒慢,程序根本跑不完,要么一卡死,要么把内存当硬盘用,乱写乱改,最终直接写死程序。
这才是程序员最好办踩的坑。 说到频率,咱们就拿个常见的 Atmel 单片机来说。
这类单片机,比如型号为 ATMega128L16,它本身的晶振频率是 8MHz。
这意味着只要编程器设置时钟为 8MHz,整个系统就齐了。
这时候,你需求把单片机从复位状态唤醒,让它启动跑这个 8MHz 的节拍。唤醒的过程,就是通过时钟脉冲让内部寄存器一个个翻转,把执行状态从 0 变成 1。 程序跑起来了,紧接着就要把二进制指令变成机器能识别的指令码。
这中间有个叫“译码器”的坏家伙。译码器的功能是把 0 和 1 当成二进制数,再翻译成十进制数,最终变成机器能理解的那几张“身份证”,也就是指令码。
要是不搞这个,芯片接收到一段乱码,它就是傻站在原地不动。译码器的核心逻辑实际上挺好办,只要把二进制输入信号通过逻辑门电路处理,就能输出对应的指令码。 当指令码从译码器出来,它要去哪儿?自然是去单片机内部。
这得有个地方落。单片机内部最忙的地方是累加器,出于加加减减运算都在那儿转。
故此,译码器的输出口,务必连接到累加器。
这就好比把一张写着算式的小纸条,塞进了算盘里。
然后,单片机内部还有一个管住信号,叫“使能信号”,它的另一端连到译码器的输出端。
这个信号一拉,上面的指令就启动“干活”了。 这可是关键中的关键。在这之前,指令还没来得及在累加器里折腾,那个使能信号就已经松开了。结局就是,指令卡在了那里,一辈子等不到下一条指令来喂它。
这就好比你要去灶台间做饭,喊了一声“开门”,但厨师还不理你,你就白喊了。
这个使能信号,实际上就是告诉芯片:“目前能够执行指令了”,“目前启动干活”。差这一秒,程序就少跑了一半步。 好了,指令跑起来了,接下来就是把数据送进去。数据从输入接口进来,要经过一个叫做“数据保持寄存器”的管子。
这个管子有个特性,叫“置位”。
只要你给这个寄存器拉高电平,它就“记住”了输入的数据,然后一直保持这个状态,直到下一条指令来覆盖它。
要是数据没经过这个寄存器,直接连到累加器上,那数据就在芯片内部乱晃,充满了噪声,根本没法用来做加法要么乘以几。 数据在寄存器里待得久一点,风险就大。寄存器别看能保存数据,但工夫一长,数据就会慢慢变不清楚。
特别是那些数字信号,在传输过程中要是受到干扰,挺好办出错。
这时候,输入接口的信号得经过“数据保持寄存器”的“置位”功能,确保数据在写入寄存器之前就固定下来,再慢慢传那会儿。
要是不如此做,数据在芯片内部传输时,可能还在不断被修改,害得结局彻底不对。 最终,当你写完程序,拔掉编程器的线,芯片里的指令就启动自动跑起来了。
这时候,编程器就能够松手了。它不再干扰芯片,只是静静地在旁边看着。芯片根据自己内部的程序表和指令表,启动按照我们刚刚给它设定的节奏,自动执行代码。 整个过程实际上挺神秘的。你把它当成一个黑盒子,往里面塞代码,它就变成一台超级计算机。
只要把时钟设对,把使能拉起来,数据稳当,编译过程就搞定了。所有的逻辑,实际上就在那片小小的硅片上,靠无数根线和几个好办的逻辑门在跳舞。
只要你不触碰那些敏感的引脚,不转变频率,哪怕你不懂汇编,这玩意儿也能帮你写出可执行代码。
相关标签:

猜你喜欢

热门阅读

  • 赖柴尔定理-赖柴尔定理
  • 迪拜哪个国家的城市?-迪拜在哪国城市
  • 李毅吧番号及出处-李毅吧番号及出处
  • 贴春联的由来简介50字-春联由来简述
  • 思乡的名言和出处-思乡名言及出处

其他分站