單片機這么久,還不會(huì )計算定時(shí)器初值就out了。
在學(xué)習單片機的時(shí)候,我們發(fā)現很多功能都是通過(guò)中斷來(lái)實(shí)現的。之前也舉過(guò)燒水的例子來(lái)闡述中斷,今天就講解一下定時(shí)器賦初值的方法。8位的定時(shí)器最大可計數2的8次方為256,16位的定時(shí)器最大可計數2的16次方為65536。由于單片機的定時(shí)器是遞加式的,所以最大值減去所要定時(shí)的值就是初值,舉例如下:
本文引用地址:http://dyxdggzs.com/article/201711/371645.htm

最大值為100,我們只需要38,怎么辦呢,由于是遞加的,我們只需要在62時(shí)開(kāi)始計時(shí)就可以了。
以proteus仿真為例簡(jiǎn)單講解定時(shí)器賦初值

用proteus搭建的電路圖如下,晶振為12M,P2.0每10ms翻轉一次,即P2.0輸出的頻率為100HZ。
這里使用16位的定時(shí)器,那單片機定時(shí)器0的最大計數就是65536.晶振為12M,那單片機的一個(gè)機器周期就是1us,定時(shí)器 0工作在方式1時(shí)最大定時(shí)65.536ms。
定時(shí)器的定時(shí)時(shí)間T = (65536-X),單位是us;
定時(shí)器初值X = 65536-T;
假設定時(shí)時(shí)間T=10ms=10000us,
那定時(shí)器初值X=65536-10000=55536us,也就是定時(shí)器0從55536開(kāi)始遞加到65536就是10ms,所以55536就是定時(shí)器的初值,55536轉化為十六進(jìn)制為0Xd8f0,所以定時(shí)器的初值為:
TH0 = 0XD8;
THL = 0XF0;

用虛擬示波器抓到的波形如下:



只需要支付硬件成本的STM32單片機學(xué)習板正在集資眾籌,價(jià)格129元,。這款學(xué)習板包含了GPIO應用、RS232通訊、RS485通訊、CAN總線(xiàn)通訊、USB通訊、IIC總線(xiàn)、SPI總線(xiàn)、JTAG在線(xiàn)調試、SW在線(xiàn)調試、ISP自動(dòng)下載、RTC實(shí)時(shí)時(shí)鐘、TFT真彩屏應用等豐富的外設資源,詳情請加個(gè)人微信號liuzhx2000了解。
評論