㈠ 匯編語言中什麼指令是程序員能訪問的
程序計數器(PC),呵呵…… 選擇這個,匯編編程時可以使用PC。昨天的試題。
為了保證程序(在操作系統中理解為進程)能夠連續地執行下去,CPU必須具有某些手段來確定下一條指令的地址。而程序計數器正是起到這種作用,所以通常又稱為指令計數器。在程序開始執行前,必須將它的起始地址,即程序的一條指令所在的內存單元地址送入PC,因此程序計數器(PC)的內容即是從內存提取的第一條指令的地址。當執行指令時,CPU將自動修改PC的內容,即每執行一條指令PC增加一個量,這個量等於指令所含的位元組數,以便使其保持的總是將要執行的下一條指令的地址。由於大多數指令都是按順序來執行的,所以修改的過程通常只是簡單的對PC加1。
當程序轉移時,轉移指令執行的最終結果就是要改變PC的值,此PC值就是轉去的地址,以此實現轉移。有些機器中也稱PC為指令指針IP(Instruction Pointer)。
㈡ 計數器有哪些作用。
1.定時/計數 在計算機系統、工業控制領域、乃至日常生活中,都存在定時、計時和計數問題,尤其是計算機系統中的定時技術特別重要。①定時 ②計數 ③定時與計數的關系2.頻率-聲音-音樂 從定時、計數問題還可以引出或派生出一些其他的概念和術語。例如,如果把計數和定時聯系起來,就會引出頻率的概念。如上述,採集數據的次數,再加上時間,就會引出每秒鍾採集多少次,即采樣頻率。由頻率可以引出聲音,頻率高,聲音的音調高;頻率低,聲音的音調低。如果不僅考慮發聲頻率的高低,還考慮發聲所佔時間的長短,就會引出音樂的概念。把音調的高低和發聲的長短巧妙地結合起來,便產生了美妙動聽的音樂。 所以,定時/計數技術與頻率、聲音以及音樂之間有密切的聯系,本章將對8253在發聲系統中的應用作詳細介紹。3.微機系統中的定時4.定時方法 為獲得所需要的定時,要求有準確而穩定的時間基準,產生這種時間基準通常採用兩種方法—軟體定時和硬體定時。 ↑本章概述 ↓§6.2 可編程定時計數器的工作原理
㈢ FIQ模式下,程序計數器(PC)最低二位的數值是多少,為什麼
F模式下的程序員就是數據,pc的話第二位數是指四個數值的話,一般都是在十位或者是百位上。
㈣ 匯編程序中,程序員可以訪問的寄存器 A程序計數器(PC) B指令寄存器(IR) C存儲器數據寄存器(MDR)
選A。
程序計數器,也叫IP(EIP),用來存儲下一條指令的地址。可以通過call,jmp等跳轉指令間接改變,可以用Move,push等讀出其值,但是不可寫。
指令寄存器(IR )用來保存當前正在執行的一條指令。當執行一條指令時,先把它從內存取到內存數據寄存器(MDR)中,然後再傳送至IR。
主存與CPU之間的硬連接:主存與CPU的硬連接有三組連線:地址匯流排(AB)、數據匯流排(DB)和控制匯流排(CB)。把主存看作一個黑盒子,存儲器地址寄存器(MAR)和存儲器數據寄存器(MDR)是主存和CPU之間的介面。MAR可以接收由程序計數器(PC)的指令地址或來自運算器的操作數的地址,以確定要訪問的單元。MDR是向主存寫入數據或從主存讀出數據的緩沖部件。MAR和MDR從功能上看屬於主存,但通常放在CPU內。
㈤ 計數器的java代碼
Java技術與Java虛擬機中文JAVA技術網g0cVV+]
中文JAVA技術網I5Zz[ }'Og G6Y
說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Java應用程序介面(Java API)。它們的關系如下圖所示:
[)|)k3b9M#\)w%Q{~r0中文JAVA技術網:cP+] _2tRtm*K
中文JAVA技術網yz;_Y0FB
圖1 Java四個方面的關系
,YW&x ^L |Q0運行期環境代表著Java平台,開發人員編寫Java代碼(.java文件),然後將之編譯成位元組碼(.class文件)。最後位元組碼被裝入內存,一旦位元組碼進入虛擬機,它就會被解釋器解釋執行,或者是被即時代碼發生器有選擇的轉換成機器碼執行。從上圖也可以看出Java平台由Java虛擬機和Java應用程序介面搭建,Java語言則是進入這個平台的通道,用Java語言編寫並編譯的程序可以運行在這個平台上。這個平台的結構如下圖所示:
&x[+DX0\:W-o@a0中文JAVA技術網"? c3Y6bj-_
中文JAVA技術網P @+O3lf_pJ b
中文JAVA技術網5h:OY TyL2\|Z
在Java平台的結構中, 可以看出,Java虛擬機(JVM) 處在核心的位置,是程序與底層操作系統和硬體無關的關鍵。它的下方是移植介面,移植介面由兩部分組成:適配器和Java操作系統, 其中依賴於平台的部分稱為適配器;JVM 通過移植介面在具體的平台和操作系統上實現;在JVM 的上方是Java的基本類庫和擴展類庫以及它們的API, 利用Java API編寫的應用程序(application) 和小程序(Java applet) 可以在任何Java平台上運行而無需考慮底層平台, 就是因為有Java虛擬機(JVM)實現了程序與操作系統的分離,從而實現了Java 的平台無關性。
h6l-v;HV1SvYO0中文JAVA技術網-G5cAK(e w}
那麼到底什麼是Java虛擬機(JVM)呢?通常我們談論JVM時,我們的意思可能是:中文JAVA技術網,T,Y5d(B5r
中文JAVA技術網yWv~s;J
對JVM規范的的比較抽象的說明;
b0r[/o_k+p0對JVM的具體實現;中文JAVA技術網Xdt8M1sP T_"_s
在程序運行期間所生成的一個JVM實例。中文JAVA技術網H k0g,~ hO\
中文JAVA技術網C3@ w6O-a
對JVM規范的的抽象說明是一些概念的集合,它們已經在書《The Java Virtual Machine Specification》(《Java虛擬機規范》)中被詳細地描述了;對JVM的具體實現要麼是軟體,要麼是軟體和硬體的組合,它已經被許多生產廠商所實現,並存在於多種平台之上;運行Java程序的任務由JVM的運行期實例單個承擔。在本文中我們所討論的Java虛擬機(JVM)主要針對第三種情況而言。它可以被看成一個想像中的機器,在實際的計算機上通過軟體模擬來實現,有自己想像中的硬體,如處理器、堆棧、寄存器等,還有自己相應的指令系統。中文JAVA技術網&nC/D IHP,|
A)R-DFw o2X0JVM在它的生存周期中有一個明確的任務,那就是運行Java程序,因此當Java程序啟動的時候,就產生JVM的一個實例;當程序運行結束的時候,該實例也跟著消失了。下面我們從JVM的體系結構和它的運行過程這兩個方面來對它進行比較深入的研究。
Z6?gXm!~0Java虛擬機的體系結構
2XFZ@"I I,\0
e-i'_;P X a0剛才已經提到,JVM可以由不同的廠商來實現。由於廠商的不同必然導致JVM在實現上的一些不同,然而JVM還是可以實現跨平台的特性,這就要歸功於設計JVM時的體系結構了。中文JAVA技術網{ v2T&tMlG?"]*N
中文JAVA技術網,HK3YQN k
我們知道,一個JVM實例的行為不光是它自己的事,還涉及到它的子系統、存儲區域、數據類型和指令這些部分,它們描述了JVM的一個抽象的內部體系結構,其目的不光規定實現JVM時它內部的體系結構,更重要的是提供了一種方式,用於嚴格定義實現時的外部行為。每個JVM都有兩種機制,一個是裝載具有合適名稱的類(類或是介面),叫做類裝載子系統;另外的一個負責執行包含在已裝載的類或介面中的指令,叫做運行引擎。每個JVM又包括方法區、堆、Java棧、程序計數器和本地方法棧這五個部分,這幾個部分和類裝載機制與運行引擎機制一起組成的體系結構圖為:中文JAVA技術網BW0EZCI
2o\d oz0中文JAVA技術網%K1Hl:f ~(@Y(U
圖3 JVM的體系結構中文JAVA技術網0P/b(jt U$x
7{F*d8f7ySt:Q0JVM的每個實例都有一個它自己的方法域和一個堆,運行於JVM內的所有的線程都共享這些區域;當虛擬機裝載類文件的時候,它解析其中的二進制數據所包含的類信息,並把它們放到方法域中;當程序運行的時候,JVM把程序初始化的所有對象置於堆上;而每個線程創建的時候,都會擁有自己的程序計數器和Java棧,其中程序計數器中的值指向下一條即將被執行的指令,線程的Java棧則存儲為該線程調用Java方法的狀態;本地方法調用的狀態被存儲在本地方法棧,該方法棧依賴於具體的實現。中文JAVA技術網 t?!Pz!B]
"^x1MT5qj0下面分別對這幾個部分進行說明。
/}C2v7b:]%vo[|0中文JAVA技術網'z/@1RG7[E1`8B
執行引擎處於JVM的核心位置,在Java虛擬機規范中,它的行為是由指令集所決定的。盡管對於每條指令,規范很詳細地說明了當JVM執行位元組碼遇到指令時,它的實現應該做什麼,但對於怎麼做卻言之甚少。Java虛擬機支持大約248個位元組碼。每個位元組碼執行一種基本的CPU運算,例如,把一個整數加到寄存器,子程序轉移等。Java指令集相當於Java程序的匯編語言。中文JAVA技術網 ^s&H2X*b,Z
q3[ OT`z"M4V0Java指令集中的指令包含一個單位元組的操作符,用於指定要執行的操作,還有0個或多個操作數,提供操作所需的參數或數據。許多指令沒有操作數,僅由一個單位元組的操作符構成。
P.R.Uxbfc0
o"o qq9_0虛擬機的內層循環的執行過程如下:中文JAVA技術網3Hn8B r,xE
MjHj(zBG t"m P0do{
l$I&z V!M9[0取一個操作符位元組;中文JAVA技術網7[?3o?,v A|3b+O R
根據操作符的值執行一個動作;
I(^e)G)Hf6`0}while(程序未結束)中文JAVA技術網y}0J/|:so
中文JAVA技術網c|%L(ud
由於指令系統的簡單性,使得虛擬機執行的過程十分簡單,從而有利於提高執行的效率。指令中操作數的數量和大小是由操作符決定的。如果操作數比一個位元組大,那麼它存儲的順序是高位位元組優先。例如,一個16位的參數存放時佔用兩個位元組,其值為:
0H.w`wb}.X0中文JAVA技術網y{X;n.u4PT+e)D7\&E
第一個位元組*256+第二個位元組位元組碼。中文JAVA技術網"V[]J!_0v+D
5^t6E[3aW![0指令流一般只是位元組對齊的。指令tableswitch和lookup是例外,在這兩條指令內部要求強制的4位元組邊界對齊。
#Rop'v6w FS0中文JAVA技術網g8Ai _)iw8r
對於本地方法介面,實現JVM並不要求一定要有它的支持,甚至可以完全沒有。Sun公司實現Java本地介面(JNI)是出於可移植性的考慮,當然我們也可以設計出其它的本地介面來代替Sun公司的JNI。但是這些設計與實現是比較復雜的事情,需要確保垃圾回收器不會將那些正在被本地方法調用的對象釋放掉。
&~:Jin+U$zE SI7Y0
"j1lJ`7Dd0v"v0Java的堆是一個運行時數據區,類的實例(對象)從中分配空間,它的管理是由垃圾回收來負責的:不給程序員顯式釋放對象的能力。Java不規定具體使用的垃圾回收演算法,可以根據系統的需求使用各種各樣的演算法。中文JAVA技術網'z/wgb.s
中文JAVA技術網\TMY&[:H)Z#@ tr
㈥ 程序計數器到底什麼時候加一,是cpu將指令從內存取出後,還是指令完成後
程序計數器是CPU每取一個指令碼就加一,是cpu將指令從內存取出一個位元組後就加一的,因為,一條指令有幾個位元組組成,所以,每取一個位元組就加一,才能連續取出一條指令的幾個位元組代碼。這不能等指令執行完成後才加一,只取出一個位元組也不夠一條指令,怎麼執行?更不可能執行完成。
㈦ 8253的門控信號GATE對計數過程有什麼影響當GATE=0時,哪幾種計數方式會暫停計數
微機系統常常需要處理機和外設提供時間標記,或對外部事件進行計數。例如,分時系統的程序切換,向外設定時、周期性地輸出控制信號,外部事件的發生次數達到規定值後產生中斷,以及統計外部事件發生的次數等,因此,需要解決系統的定時問題。
微機系統中的定時,可分為兩類:一類是計算機本身運行的時間基準――內部定時,因而使計算機每種操作都是按照嚴格的時間節拍執行的;另一類是外部實現某種功能時,在外設與CPU之間或外設與外設之間的時間配合――外部定時。前者,計算機內部定時,已由CPU硬體結構確定了,有固定的時序關系,無法更改;後者,外部定時,由於外設或被控對象的任務不同,功能各異,無一定模式,因此,往往需要用戶自己設定。當然,用戶在考慮外設和CPU時,不能脫離計算機的定時要求,即應以計算機的時序關系為依據來設計外部定時機構,以滿足計算機的時序要求,這叫做時序配合。至於在一個過程式控制制或工藝流程或監測系統中,各個控制環節或控制單元之間的定時關系完全取決於被處理、加工、製造和控制的對象的性質,可以按各自的規律獨立地進行設計。由於定時的本質是計數,把若干小片的計時單元累加起來,就獲得一段時間,因此,我們把計數作為定時的基礎來討論。目前用於定時/計數的可編程集成電路的晶元種類很多,在IBM PC系列微機中使用Intel 8253系列定時/計數器(記作T/C),下面對其進行介紹。
7.3.1 可編程定時/計數器晶元8253(JAVA動畫圖說明)
1.外部特性與內部邏輯
(1)8253的特點
①有3個獨立的16位計數器;
②每個計數器均可按二進制或者BCD碼計數;
③每個計數器的計數速率:8253(2MHZ)、8253-5(5MHZ)、8254(8MHZ)、8254-5(5MHZ)、8254-2(10MHZ);
④各計數器都有6種不同的工作方式(由程序設定);
⑤24隻管腳,雙列直插式,單+5V電源;
⑥所有輸入/輸出都與TTL兼容。
其引腳見圖7-13。
各引腳的功能定義如下:
數據匯流排D0~D7:它們為三態輸入/輸出線,用於將8253與系統數據匯流排相連,是8253與CPU介面數據線,供CPU向8253讀寫數據、命令和狀態信息。
讀信號RD:它為輸入信號,低電平有效。它由CPU發出,用於對8253寄存器讀操作。
寫信號WR:它為輸入信號,低電平有效。它由CPU發出,用於對8253寄存器寫操作。
地址解碼線A1A0:這兩根線接到系統地址匯流排的A1A0上。當CS=0,8253被選中時,A1A0用於選擇8253內部寄存器,以便對它們進行讀寫操作。8253內部寄存器與地址碼A1A0的關系如表7-3所示。
時鍾信號CLK:CLK為輸入信號。3個計數器,各有一獨立的時鍾輸入信號,分別為CLK0、CLK1、CLK2。時鍾信號的作用是在8253定時或計數工作時,每輸入一個時鍾信號CLK,便使定時或計數值減1。它是計量的基本時鍾。
門選通信號GATE:GATE信號為輸入信號。3個通道,每一個都有自己的門選通信號,分別為GATE0、GATE1、GATE2。GATE信號的作用是用來禁止、允許或開始計數過程。對8253的6種不同工作方式,GATE信號的控制不同(參見後面的表7-4)。
計數器輸出信號OUT:OUT是8253向外輸出信號。3個獨立通道,每一個都有自己的計數器輸出信號,分別為OUT0、OUT1、OUT2。OUT信號的作用是,計數器工作時,當定時或計數值減為0時,即在OUT線上輸出OUT信號,用以指示定時或計數已到。這個信號可作為外部定時、計數控制信號引到I/O設備用來啟動某種操作(開/關或啟/停),也可作為定時、計數已到的狀態信號供CPU檢測,或作為中斷請求信號使用。
(2)內部邏輯結構(JAVA動畫圖說明)
8253內部有6個模塊,其結構框圖如圖7-14所示。
①數據匯流排緩沖器:數據匯流排緩沖器是一個三態雙向8位寄存器,用於將8253與系統數據匯流排D7~D0相連。CPU通過數據匯流排緩沖器向8253寫入數據、命令或從數據匯流排緩沖器讀取數據和狀態信息。
數據匯流排緩沖器有3個基本功能:向8253寫入確定8253工作方式的命令;向計數寄存器裝入初值;讀出計數器的初值或當前值。
②讀/寫邏輯:讀/寫邏輯由CPU發來的讀、寫信號和地址信號,選擇讀出或寫入寄存器,並且確定數據傳輸的方向:是讀出還是寫入。
③控制字寄存器:控制字寄存器接受CPU送來的控制字。這個控制字用來選擇計數器及相應的工作方式。控制字寄存器只能寫入,不能讀出,其內容將在後面討論。
④計數器:82533個獨立的計數通道,每個通道的內部結構完全相同,如圖7-15所示。該圖表示計數通道由16位減1計數器、16位計數初值寄存器和16位輸出鎖存器組成。初始化時,首先是將計數通道裝入的計數初值送到計數初值寄存器中保存,然後送到減1計數器。計數器啟動後(GATE允許),在時鍾脈沖CLK的作用下,進行減1計數,直至計數值減到0,輸出OUT信號,計數結束。計數初值寄存器的內容,在計數過程中保持不變。因此,若要了解計數初值,則可從計數初值寄存器直接讀出。而如果要想知道計數過程中的當前計數值,則必須將當前鎖存後,從輸出鎖存器讀出,不能直接從減1計數器中讀出當前值。
2.讀寫操作及編程命令
CPU對8253晶元的讀寫操作有以下3種情況:
(1)寫操作――晶元初始化
晶元加電後,其工作方式是不確定的,為了正常工作,要對晶元進行初始化。初始化的工作有兩點:一是向控制寄存器寫入方式控制字,以選擇計數器(三個中之一個),確定工作方式(六種方式之一),指定計數器計數初值的長度和裝入順序以及計數值的碼制(BCD碼或二進制碼);二是向已選定的計數器按方式控制字的要求寫入計數初值。
工作方式命令字的格式如下:
①D7D6(SC1SC0):用於選擇計數器。其中:
SC1SC0=00――選擇0號計數器 SC1SC0=01――選擇1號計數器
SC1SC0=10――選擇2號計數器 SC1SC0=11――非法
②D5D4(RL1RL0):用來控制計數器讀/寫的位元組數(1或2個位元組)及讀寫高低位元組的順序。其中:
RL1RL0=00――為一特殊命令(即鎖存命令),把由SC1SC0指定的計數器的當前值鎖存在鎖存寄存器中,以便隨時去讀取它
RL1RL0=01――僅讀/寫一個低位元組
RL1RL0=10――僅讀/寫一個高位元組
RL1RL0=11――讀/寫2個位元組,先是低位元組,後是高位元組
③D3~D1(M2~M0):用來選擇計數器的工作方式。其中:
M2M1M0=000――方式0 M2M1M0=011――方式3
M2M1M0=001――方式1 M2M1M0=100――方式4
M2M1M0=010――方式2 M2M1M0=101――方式5
④D0(BCD):用來指定計數器的碼制,是按二進制數還是按二-十進制數計數。其中:
BCD=0(二進制) BCD=1(二-十進制)
例如,選擇2號計數器,工作在方式2,計數初值為533H(2個位元組),採用二進制計數,其程序段為:
TIMER EQU 040H ;0號計數器埠地址
MOV AL,10110100B ;2號計數器的方式控制字
OUT TIMER+3,AL ;寫入控制寄存器
MOV AX,533H ;計數初值
OUT TIMER+2,AL ;先送低位元組到2號計數器
MOV AL,AH ;取高位元組
OUT TIMER+2,AL ;後送高位元組到2號計數器
(2)讀當前計數值――鎖存後讀操作
在事件計發器的應用中,需要讀出計數過程中的計數值,以便根據這個值作計數判斷。為此,8253內部邏輯提供了將當前計數值鎖存後讀操作功能。具體作法是,先發一條鎖存命令(即方式控制字中的RL1RL0=00),當前計數值鎖存到輸出鎖存器;然後,執行讀操作,即可得到鎖存器的內容。
例如,要求讀出並檢查1號計數器的當前計數值是否是全「1」(假定計數值只有低8位),其程序段為:
L:MOV AL, 01000000B ;1號計數器的鎖存命令
OUT TIMER+3,AL ;寫入控制寄存器
IN AL, TIMER+1 ;讀1號計數器的當前計數值
CMP AL, 0FFH ;比較
JNE L ;非全「1」,再讀
HLT ;是全「1」,暫停
(3)讀裝入的計數值――直接讀操作
8253內部還提供了一種功能,使程序員能在不幹擾實際計數過程的情況下,讀出裝入的計數值,這只需對選定的計數器發現IN指令即可。分兩次讀,第1次從計數寄存器讀出裝入計數值的低位元組,第2次讀出高位元組。但要注意的是:為了保證能穩定地讀出裝入計數值,所選的計數器的工作方式必須能被GATE電平輸入禁止或者能禁止時鍾輸入的外部邏輯所禁止。
3.工作方式及特點
8253晶元的每個計數通道都有6種工作方式可供選用。區分這6種工作方式的主要標志有3點:一是輸出波形不同;二是啟動計數器的觸發方式不同;三是計數過程中門控信號GATE對計數操作的影響不同。現結合各種操作實例,分別討論不同工作方式的特點及編程方式。例如8253的3個計數器及控制器的埠地址分別是304H、305H、306H和307H。
(1)方式0――計數結束時中斷
方式0有如下3個特點:
①當向計數器寫完計數值時,開始計數,相應的輸出信號OUT就開始變成低電平。當計數器減到零時,OUT立即輸出高電平。
②當門控信號GATE為高電平時,計發器工作;當GATE為低電平時,計數器停止工作,其計數值保持不變。
③在計數器工作期間,如果重新寫入新的計數值,則計數器將按新寫入的計數值重新工作。
方式0的上述工作特點可用如圖7-16所示的時序來表示。
(2)方式1――程序可控單穩
方式1為可編程的單穩態工作方式。此方式設定後,輸出OUT就變成高電平;寫入計數值後,計數器並不立即開始工作,直到門控信號GATE出現之後的一個時鍾周期的下降沿,才開始工作,使輸出OUT變成低電平。計數值回零後,輸出變高,見圖7-17中的①。
在計數器工作期間,當GATE又出現一個負脈沖的上升沿時,計數器重新裝入原計數初值並重新開始計數,見圖7-17中的②。如果工作期間對計數器寫入新的計數值,則要等到當前的計數值計滿回零且門控信號再次出現上升沿後,才按新寫入的計數值開始工作,見圖7-17中的③。
程序中把T2設定成僅讀/寫低8位計數初值,高8位自動補0。
(3)方式2――頻率發生器
方式2是一種具有自動裝入時間常數的N分頻器。其工作特點如下:
①計數器計數期間,輸出OUT為高電平,計數器回零後,輸出為代電平並自動重新裝入原計數值,低電平維持一個時鍾周期後,輸出又恢復高電平,並重新作減法計數。
②在計數器工作期間,如果向此計數器寫入新的計數值,則計數器仍按原計數值計數,直到計數器回零並在輸出一個時鍾周期的低電平之後,才按新寫入的計數值計數。
③門控信號GATE為高電平時允許計數。若在計數期間,門控信號變為低電平,則計數器停止計數,待GATE恢復高電平後,計數器將按原設定的計數值重新開始計數,工作時序如圖7-18所示。
(4)方式3――方波頻率發生器
工作方式3與工作方式2基本相同,也具有自動裝入時間常數的能力,不同之處在於:
①工作在方式3對OUT引腳輸出的不是一個時鍾周期的低電平,而是占空比為1:1或近似於1:1的方波,當計數初值為公里數時,輸出在前一半的計數過程中為高電平,在後一半的計數過程中為低電平。
②當計數初值為奇數時,在前一半加1的計數過程中,輸出為高電平,後一半減1的計數過程中為低電平。例如,若計數初值設為5,則在前3個時鍾周期中,引腳OUT輸出高電平,而在後2個時鍾周期中則輸出低電平。8253的方式2和方式3都是最為常用的工作方式,工作時序如圖7-19所示。
(5)方式4――軟體觸發
方式4是一種由軟體啟動的閘門式計數方式,即由寫入計數值觸發工作。其特點是:
①此方式設定後,輸出OUT就開始變成高電平;寫完計數值後,計數器開始計數,計數完畢,計數回零結束時,輸出變為低電平;低電平維持一個時鍾周期後,輸出又恢復高電平,但計數器不再計數,輸出也一直保持高電平不變。
②門控信號GATE為高電平時,允許計數器工作;為低電平時,計數器停止計數。在其恢復高電平後,計數器又從原設定的計數值開始作減1計數,工作時序如圖7-20所示。
③計數工作期間,若向計數器寫入新的計數值,則不影響當前的計數狀態,僅在當前計數值計完回零時,計數器才接新寫入的計數值開始計數,一旦計數完畢,計數器將停止工作。
(6)方式5――硬體觸發
方式5的工作特點在於由外部上升沿觸發計數器,即:
①在工作方式5下,寫入計數初值後,計數器並不立即開始計數,而要由門控信號出現的上升沿啟動計數。計數器計數回零後,將在輸出一個時鍾周期的低電平後恢復高電平。
②在計數過程中(或者計數結束後),如果門控再次出現上升沿,則計數器將從原設定的計數初值重新計數。其他特點基本與方式4相同,工作時序如圖7-21所示。
(7)6種工作方式的比較(JAVA動畫圖說明)
上面分別說明了8253六種方式的工作過程,現在來對比分析這6種方式的特點和彼此之間的差別,以便在應用時,有針對性地加以選擇。
①方式0(計數結束中斷)和方式1(可控單穩)
這兩種方式的輸出波形類似,它們的OUT在計數開始變為低電平,在計數過程中保持低電平,計數結束立即變為高電平,此輸出作為計數結束的中斷請求信號,或作單穩延時,兩者均無自動重裝能力。它們的不同點主要在於啟動計數器的觸發信號,方式0由寫信號WR的上升沿觸發,方式1由門控信號GATE上升沿觸發。
②方式2(頻率發生器)和方式3(方波發生器)
這兩種方式共同的特點是具有自動再載入(裝入)能力。即減1至0時初值寄存器的內容又被自動裝入減1計數器繼續計數,於是OUT可輸出連續的波形。輸出信號的頻率都是(fCLK/初值)。兩者的區別在於:方式2在計數過程中輸出高電平,而在每當減1至0時輸出寬度為1TCLK的負脈沖。方式3是在計數過程中,輸出1/2初值×TCLK(若初值為奇數,則是1/2(初值+1)×TCLK)的高電平,然後輸出1/2初值×TCLK(若初值為奇數,則是1/2(初值-1)×TCLK)的低電平,於是,OUT的信號是占空比為1:1的方波(或近似方波)。
③方式4(軟體觸發延時選通)和方式5(硬體觸發延時選通)
這兩種方式的OUT輸出波形相同,在計數器過程中OUT為高電平,在計數結束後OUT輸出一個寬度為1 TCLK的負脈沖,這個脈沖可作為在延時(初值×TCLK)後的選通脈沖。它們無自動重新裝入能力。兩者的區別是計數啟動的觸發信號不同,前者由寫信號WR啟動計數;後者從GATE的上升沿開始計數。
從以上對比分析可知,一般,方式0、1和方式4、5選作計數器用(輸出一個電平或一個脈沖),而方式2、3選作定時器用(輸出周期脈沖或周期方波)。
<<back topnext>>
上翻 下翻
㈧ 程序計數器PC內容代表是什麼他是怎樣完成工作的
代表的是程序下條指令的地址,是在取完當前指令後,系統自動增加的,可有跳轉登指令進行修改
㈨ win7自帶計算器切換到「程序員」模式時為什麼無法進行計算
計算器想必大家都用過,不過大多停留在簡單的加減乘除上,不過對於那些經常要和數字打交道的同學們肯定不僅僅限於此,例如三角函數、求和等計算肯定會經常用到,對於這類計算往往有專業的計算器支持,不過價格不菲,也就讓很多人望而卻步。
其實這類專業的計算器一直就在我們的身邊,在我們的眼前,就是正版Win7中自帶的計算器。而下面我們就來介紹一下Win7自帶計算器的功能。
首先在附件中我們可以找打「計算器」程序,打開後發現,Win7自帶的計算器與之前的版本相比還是有些差別的,精緻的視覺效果,顯得更為簡潔大方。
外觀的變化只是Win7計算器中最簡單的一面,而更深層的變化在於其除了有「標准型」和「科學型」兩種計算模式之外,還有「程序員」、「統計信息」等模式,而且值得一提的是,Win7自帶的計算器還具有日期計算、單位轉換、工作表等多種實用計算工具。
那麼如何切換我們想要的計算模式呢?一種方法是直接從「查看」菜單中選擇,另外,我們還可以通過快捷方式「Alt+數字1/2/3/4」來更快速的切換,非常方便。
科學計算器
在科學模式下使用計算器,可以精確到32位數,並可使用運算符來控制優先順序,另外,對於數學函數的功能大致可以分為三類;
三角函數:主要包含了正弦、餘弦等快速計算,另外,按INV功能鍵後,還可以計算其反函數等。
代數函數:這里可以計算我們高中時學過的冪函數、對數函數、指數函數等。
其他:其餘的函數則相對用的比較少一些,比如取整(Int)、圓周率等。
注意事項:
對於需要一個輸入值的函數值時,一般先要輸入參數,再按相應的函數進行計算,而對於有兩個參數需要輸入的情況,則一般先輸入第一個參數,按函數之後再輸入第二個參數之後,按=獲得記過。
程序員計算器
在這個模式下,結果可以精確到64位,不過需要注意的是,該模式下僅支持整數模式,小數則被舍棄。而進制在這里也可以自由更改,而且每一個數字都會在下方用二進制來表示,十分貼心。
工作表計算器
相信有一些用戶日常還會用到汽車租金、油耗等方面的問題,Win7自帶的計算器都能解決,只要切換到工作表模式,然後選擇自己需要的工作表,就可以相應的計算了。
這里我們以油耗計算為例,選擇油耗工作表後(記得選擇公里為單位的模式),只需要輸入相應的公里數和已經使用的燃料,就可以快速的算出每百公里需要的油耗了。
這里簡單介紹了下Win7自帶計算器的使用方法,雖然僅僅是一個小小的計算器,也讓Win7增色不少,同時為大家帶來了更為全面、人性化的使用效果。
㈩ 單片機中的看門狗是什麼東西
看門狗實際上是一計數器,在程序運行中,你得抽空去清看門狗,不能讓計數器計滿.一但程序在干擾下跑飛了,沒去清看門狗,看門狗數值計滿後,就會發出一清0脈沖,是程序從0地址開始運行.