A. MCS-51系列單片機中的定時器有哪幾個專用寄存器它們各自的作用是什麼
要講定時離不開中斷,兩者結合使用的。定時計數器主要用到TMOD工作模式寄存器,TCON定時器的控制寄存器,EA中斷允許控制寄存器,IP中斷優先順序寄存器 定時器控制寄存器TCON (88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCONTF0/TF1:定時器0/定時器1溢出中斷申請標志位: =0:定時器未溢出; =1:定時器溢出申請中斷,進中斷後自動清零。TR0/TR1:定時器運行啟停控制位: =0:定時器停止運行; =1:定時器啟動運行。TCON:Timer控制寄存器,是管理定時器工作的SFR(其中低4位管外部中斷)定時器控制寄存器TCON (88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCONIE0/IE1:外部中斷申請標志位: =0:沒有外部中斷申請; =1:有外部中斷申請。IT0/IT1:外部中斷請求的觸發方式選擇位: =0:在INT0/INT1端申請中斷的信號低電平觸發; =1:在INT0/INT1端申請中斷的信號負跳變觸發.TCON:Timer控制寄存器,低4位管理外部中斷�8�4在CPU已經開放了外部中斷允許的前提下:�8�4在INT0/INT1引腳輸入一個負脈沖或低電平, �8�4TCON寄存器中的IE0/IE1標志位自動變「1」, 檢測到IE0/IE1變「1」後,將產生指令:執行中斷服務程序,�8�4並將IE0/IE1標志位自動清「0」,以備下次申請。外部中斷(INT0,INT1)申請過程 單片機的定時/計數器定時器計數器的概念一、計數的概念
選票:畫「正」。這就是計數,生活中計數的例子處處可見。比如一個水盆在水龍頭下,水龍沒關緊,水一滴滴地滴入盆中。水滴持續落下,盆的容量是有限的,過一段時間之後,水就會逐漸變滿。51單片機中有兩個計數器,分別稱之為T0和T1,這兩個計數器分別是由兩個8位的RAM單元組成的,即每個計數器都是16位的計數器,最大的計數量是65536。
二、定時
計數器是如何作為定時器來用的呢?比如一個鬧鍾,將它定時在1個小時後響鬧,我們也能說成是秒針走了(3600)次,所以時間就轉化為秒針走的次數的,也就是計數的次數了,可見,計數的次數和時間之間十分相關。那麼它們的關系是什麼呢?也就是秒針每一次走動的時間要正好是1秒。
只要計數脈沖的間隔相等,則計數值就代表了時間的流逝。由此,單片機中的定時器和計數器是同一個東西,只不過計數器是記錄的外部的觸發脈沖,而定時器則是由單片機供給一個非常穩定的計數源。供給定時器的是計數源是機器周期也就是由單片機的晶體震盪器經過12分頻後獲得的一個脈沖源(機器周期)。晶振的頻率是很准確的,所以這個計數脈沖的時間間隔也很准。一個12M的晶振,它供給給計數器的脈沖時間間隔是1微秒。計數脈沖的間隔與晶振有關,12M的晶振,計數脈沖的間隔是1微秒。這是邏輯圖,可以看到T1是一個單刀雙擲開關,說明定一個定時/計數器同一時刻要麼作定時用,要麼作計數用,不能同時用;接通T1引腳時作為外部計數用。(T0的引腳是P3.4,T1的引腳是P3.5)。
比如滴水的例子,當水持續落下,盆中的水逐漸變滿,最終會有一滴水使得盆中的水全滿了。這個時候如果再有一滴水落下,水會漫出來,用術語來講就是「溢出」,而每一滴水落下,用術語來說就是發出一個計數脈沖。 水溢出是流到地上,而計數器溢出後就會引發一個定時中斷事件,就象定時的時間一到,鬧鍾就會響一樣。 現在另一個問題是:要有多少個計數脈沖才會產生事件。 剛才已研究過,計數器的容量是16位,也就是最大的計數值到65536,因此計數計到65536就會產生溢出。這個沒有問題,問題是我們現實生活中,經常會有少於65536個計數值的要求,如制葯廠包裝線上,一瓶葯片為100粒,500瓶為一箱 那麼怎麼樣來滿足這個要求呢?舉例 如果是一個空的水盆要1萬滴水滴進去才會滿,我在開始滴水之前就先放入一勺水,還需要10000滴嗎?對了,這時我們就採用預置數的辦法,我要計 100,那我就先放進65436,再來100個脈沖,不就到了65536了嗎。定時也是如此,每個脈沖是1微秒,則計滿65536個脈沖需時65.536 毫秒,但現在我只要10毫秒,怎麼辦?10個毫秒為10000個微秒,所以,只要在計數器裡面放進55536就可以了。溢出的概念和設置任意定時計數的方法3個16位定時器/計數器 ——(51系列有2個16位Timer少一個T2)定時器:對片內機器時鍾(周期方波)進行計數計數器:對Tx引腳輸入的負脈沖進行計數與Timer工作有關的特殊功能寄存器: TCON 和 TMODAT89S52單片機的定時器/計數器單片機定時/計數器內部結構單片機定時/計數器內部結構圖定時器的2個特殊功能寄存器(TCON)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0定時器控制寄存器TCON (88H)TF0/TF1: 定時器0/1計數溢出標志位。 =1 計數溢出; =0 計數未滿 TF0/TF1標志位可用於申請中斷或供CPU查詢。 在進入中斷服務程序時會自動清零;但在 查詢方式時必須軟體清零。TR0/TR1: 定時器0/1運行控制位。 =1 啟動計數; =0 停止計數TR0/TR1:定時器0/1運行控制位: TR0/TR1 =0 時,Timer0/1停止計數 TR0/TR1 =1 時,Timer0/1啟動計數定時器T0/T1 中斷申請過程�8�4 在已經開放T0/T1中斷允許且已被啟動的前提下:�8�4 T0/T1加滿溢出時 TF0/TF1標志位自動置「1」 �8�4 檢測到TCON中TF0/TF1變「1」後,將產生指令: 執行中斷服務程序,�8�4 TF0/TF1標志位會自動清「0」,以備下次中斷申請。 定時/計數器可按片內機器周期定時,也可對由T0/T1引腳輸入一個負脈沖進行加法計數TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON (88H)GATE C / T M1 M0 GATE C / T M1 M0定時器方式寄存器TMOD (89H)T1T0M1,M0:工作方式定義位 ( 定義4 種方式 ):C/T :計數器/定時器選擇位 = 1 外部事件計數器。對T0/T1引腳的負脈沖計數; = 0 片內時鍾定時器。對機器周期脈沖計數定時0 0:13位 定時器——幾乎不用0 1:16位 定時器——經常用到1 0:可自動重裝的 8位 定時器——經常用到1 1:T0 分為2個8位 Timer;T1 此時不工作 ——幾乎不用GATE C / T M1 M0 GATE C / T M1 M0T1T0GATE門控位: Timer可由軟體與硬體兩者控制 �8�4 GATE = 0 ——普通用法 Timer的啟/停由軟體對TRx位寫「1」/「0」控制定時器方式寄存器TMOD(89H)�8�4 GATE = 1 ——門控用法 Timer的啟/停由軟體對TR0/TR1位寫「1」/「0」 和在INT0/INT1引腳上出現的信號的高/低共同控制GATE=0時,定時/計數是否工作,只取決於TR0是否為1。GATE=1,只有TR0為1,且INT0管腳也是高電平,定時/計數才工作。 從電路上看到GATE是一個非門,它與INTx組成一個或門,這個或門與TR0又組成一個與門。當GATE=0時,則~GATE=1(非門),此時無論INT0為高或低,它們相或之後必然為1,此時只要TR0=1,則工作,TR0=0則不工作,不受INT0的影響。當GATE=1時,~GATE=0,則INT0=1時,它們相或為1,此時定時器是否工作受TR0影響;若INT0=0,則無論TR0為什麼,定時器都不能工作,即當GATE=0時,定時器受INT0和TR0共同的作用。 所以,GATE位的狀態決定定時器運行控製取決於TR0的一個條件還是TR0和INT0引腳這兩個條件。當GATE=1時,由於GATE信號封鎖了與門,使引腳 INT0信號無效。而這時候如果TR0=1,則接通模擬開關,使計數器進行加法計數,即定時/計數工作。而TR0=0,則斷開模擬開關,停止計數,定時 /計數不能工作。 當GATE=0時,與門的輸出端由TR0和INT0電平的狀態確定,此時如果TR0=1,INT0=1與門輸出為1,允許定時/計數器計數,在這 種情況下,運行控制由TR0和INT0兩個條件共同控制,TR0是確定定時/計數器的運行控制位,由軟體置位或清「0」。振盪器�8�112TLx THx (8位) (8位)TFx申請中斷Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制 開關或門與門非門定時器結構與工作方式工作方式1:——16位的定時/計數器在工作方式1下,計數器的計數值范圍是: 1~65536(216)
當為定時工作方式1時,定時時間的計算公式為:
(216—計數初值)╳晶振周期╳12或 (216—計數初值)╳機器周期
其時間單位與晶振周期或機器周期相同。
�8�4 THx/TLx賦初值:THx賦高8位,TLx賦低8位工作方式1 的編程要點: �8�4 TMOD選方式: 寫「M1,M0」=01 選方式1�8�4 若不用門控位,直接用軟體寫TRx控制啟/停�8�4 若使用門控位,先置位TRx,然後由INTx端 的高/低電平來控制其啟/停�8�4 若要允許中斷,還須先置位ETx、EA等中斷 允許控制位,並編寫中斷服務程序�8�4 若不用中斷,可查詢「計數溢出標志TFx」 的方式工作,但溢出標志TFx須軟體清0工作方式2:——8 位自動重裝的定時/計數器振盪器�8�112TLx (8位)TFx申請中斷Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制 =1開關接通或門與門THx (8位)溢出位門開�7�4 THx/TLx賦相同初值 在TLx計數達到0FFH 再加「1」時,TL0 將溢出,進位位直接進入「TFx」去申請 中斷,同時打開三態門,使THx中的值 自動重裝(Copy)進TLx工作方式 2 的編程:�7�4 TMOD寄存器選方式: 寫「M1,M0」 = 10選中方式2�7�4 其他用法與各種方式1完全相同T0: 組織成TL0和TH0兩個8位定時/計數器Timer工作方式 3 ——幾乎無用T1: 不再是定時/計數器了 T1 的TR1和TF1出借給TH0當控制位使用, 剩下的TH1/TL1寄存器只能當作普通寄存 器用。振盪器�8�112TL0 (8位)TF0申請中斷T0端TR0位GATE位INT0端≥1&C/T=0C/T=1控制 =1開關接通或門與門TH0 (8位)TF1申請中斷TR1位控制 =1Timer工作方式 3 結構:�7�4T0成為雙 8位Timer �7�4T1不再有Timer功能 �7�4TF1,TR1出借給TH0 定時器小結: (2個16位加法計數器)�7�4運行/停止由TRx位控制,(當GATE=1時: 由TRx位和Tx引腳上的信號共同控制)�7�4工作方式由TMOD決定; 計數/定時由C/T位決定 工作方式0(13位) 永遠不用 工作方式3(T0拆為雙8位) 幾乎無用 工作方式1(16位) 經常用到 工作方式2(8位自動重裝) 經常用到�7�4從初值按機器周期或外部脈沖遞加,溢出位 TFx申請中斷;中斷允許由ETx位和EA位控制,定時器/計數器的定時/計數范圍 工作方式0:13位定時/計數方式,因此,最多能計到2的13次方,也就是8192次。 工作方式1:16位定時/計數方式,因此,最多能計到2的16次方,也就是65536次。 工作方式2和工作方式3,都是8位的定時/計數方式,因此,最多能計到2的8次方,也說是256次。 預置值計算:用最大計數量減去需要的計數次數即可
B. 51單片機中的4個工作寄存器組,什麼時候用到怎麼用,請舉個簡單例子,謝謝了
一般情況下,都是用的是第一個寄存器組,即R0~R7對應00H~07H,當使用中斷的時候,為了避免使用工作寄存器造成的相互影響,常常使用其他工作寄存器組。比如:
void t0isr() interrupt 1 using 2 就是使用10H~17H這一組工作寄存器。
C. 單片機中,ROM,RAM,和各種寄存器的功能是什麼,地址和數據存放的地方在哪裡
打個比方吧!假如要搞個什麼活動,有兩塊地方,一個叫ROM.一個叫RAM,和一個老大叫cpu。其中人們規定rom這個地方的所有東西你老大cpu都不能改動它,裡面放著活動的方案,也就相當於你編寫的程序,cpu必須要按照這個方案去主持搞這個活動。這個地方允許放一些其它東西,〔單片機中也就是數據!〕。當這個活動開始的時候,老大cpu就會到rom這里復制裡面的全部內容〔有特別標明的除外,一般是不常用的數據〕放到RAM裡面運行。當需要用要標明的不常用數據時,老大根據數據的編號,也就是地址,去讀回來那個數,再繼續運行!當你要終止這次活動時,ram裡面的東西,就全部扔掉,不保留。下次再需要的時候,再去rom這個地方復制回來,從新開始運行。
寄存器,要說功能的話,每個寄存器都有它的功能!建議你搜索一下單片機寄存器功能,有很多的出來。他們介紹的都很好!在這里我就不說了打字累啊。呵呵
D. msp430單片機到底有哪些寄存器,分別幹嘛用
你要是想知道MSP430寄存器的話,我的建議是去看書,看那種比較基礎的,因為430的寄存器太多了,無論你是想了解還是想知道怎麼用,都不是一下子能懂的。
E. 51單片機的四組寄存器各自的作用是什麼,都用得到嗎
是R0~R7吧,通過對psw設置可以指定它們的位置,其餘純枯猜剩下來的三組可以自己對其敗孫進行定義,為自己所用,比如R0~R7位置位於00H~07H,那麼你就可以做型定義ABC DATA 08H,作為自己用的寄存器了
F. 說明avr單片機i\o口3個寄存器的名稱和作用是什麼,當 I\O口用於輸入和輸出時,如何設置和應用這三個寄存器
樓主你好:
AVR單片機的每組I/O口都嫌隱配備有三個8位寄存器,分別是:方向控制寄存器DDRx、數據寄存器PORTx、輸入引腳冊飢寄存器PINx(x=A/B/C/D).I/O口的工作方式和表現特徵由這三個I/O寄存器控制。
方向控制寄存器DDRx用於控制I/O口的輸入輸出方向,及控制I/O口的工作方式為輸出方式還是輸入方式。
DDRx=1時,I/O口處於輸出工芹姿廳作方式;此時數據寄存器PORTx中的數據輸出到外部引腳。
DDRx=0時,I/O口處於輸入工作方式;此時輸入引腳寄存器PINx中的數據就是外部引腳的實際電平,通過讀I/O指令可將物理引腳的真實數據讀入MCU。
此外,當I/O口定義為輸入時(DDRx=0),通過PORTx的控制,可使用或不使用內部的上拉電阻。
G. 怎麼理解單片機的寄存器比如51單片機~想知道寄存的作用,和用法
寄存器的單片機(計算機)的存儲單元,是存取數據較為方便、快速地方
寄存器常用於存放使用比較頻繁的數據,再參與運算,都很容易
例如:
R2中存有數據,A中存有被加數
ADD
A,R2
;就是R2、A單元的數據相加,結果在A中
A也是寄存器,是一個很特殊的接觸器,使用率最高
B寄存器主要用於乘除運算。
H. MCS-51單片機有多少個特殊功能寄存器它們的名稱和功能
MCS-51單片機內的I/O口鎖存器、定時器、串列口緩沖梁派雀器以橡早及各種控制寄存器和狀態寄存器都以特殊功能寄存器的形式出現 。它們位於片內數據存儲器之上,離散地分布在80H~FFH的地址空間范圍內。MCS-51單片機特殊功能寄存器的總個數為26個 。其中有12個可以位定址,用戶可以通過位功能標記對這12個寄存器的任意一個有效位進行操作。
這些特殊功能寄存器頒在以羨羨下各個功能部件中:
(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH兩個8位寄存器組成);
(2)中斷系統:IP、IE;
(3)定時器/計數器:TMOD、TCOM、TL0、TH0、TL1、TH1;
(4) 並行I/O口:P0、P1、P2、P3;
(5) 串列口:SCON、SBUF、PCON。
51單片機的寄存器基本上都是8位的,而16位都是由兩個組裝起來的,例如DPTR以及定時器T0與T1
摘抄自:https://..com/question/498261582.html