51微控制器程式狀態字PSW 5的具體用法,能舉個c語言的列子

2021-05-28 10:43:16 字數 5699 閱讀 7261

1樓:藏在水中的人

psw^5,f0是psw暫存器的使用者可程式設計通用標誌位,他是一個使用者可以自己設定的狀態位,比如在兩片微控制器之間進行通訊時,我們可以用這一位的狀態來判斷是否準備好接收,或是傳送。因此可以作為你設定的標誌位,你的程式可以根據需要對這個位進行置位或者清零、或者對這個位進行測試。

例如:if(a>=5)

f0=1;

if(f0)

//省掉程式

與你自定義一個bit flag;意義差不多。只不過f0是個通用標誌位,不需要定義

2樓:匿名使用者

psw的d5位是f0,常 作為一個標誌位。

c語言裡就簡單多了,隨便定義一個位,比如bit flag; 程式中可判斷glag是0還是1,來決定程式的走向。

微控制器程式狀態字psw的ov位到底是怎麼判斷溢位的?有cy位不就夠了麼?

3樓:津人依夢趣談體育

微控制器程式狀態字psw的ov位是溢位標誌,當進行算數運算時,如果產生溢位,則硬體將ov置1,否則清0。執行有符號加、減法指令的時候,當d6位有向d7位的進位或借位時c6y=1時,而d7位沒有向cy位的進位或借位c7y=0時,ov=1或c6y=0,c7y=,1時,則ov=1。

溢位的邏輯表示式:ov=c6y⊕c7y。cy位是累加器的進位或借位標誌,對於無符號數可以用cy來判斷溢位,但是對有符號數就無法判斷了,所以只有cy位是不夠的。

psw各位的定義如下:

cy(psw.7):d7位,進位、借位標誌。進位、借位cy=1;否則cy=0.

ac(psw.6):d6位,輔助進位、借位標誌。當d3向d4有借位或進位時,ac=1;否則ac=0.

f0(psw.5):d5位,使用者標誌位;

rs1、rs0(psw.4及psw.3):d4、d3位,暫存器組選擇控制位;

ov(psw.2):溢位標誌。有溢位ov=1,否則ov=0;

f1(psw·1):d1位,使用者標誌位;

p(psw·0):奇偶校驗標誌位;累加器acc中的運算結果有奇數個1時p=1,否則p=0。

擴充套件資料

資料型別:

sfr也是一種擴充資料型別,佔用一個記憶體單元,值域為0~255。利用它可以訪問51微控制器內部的所有特殊功能暫存器。如用sfr p1 = 0x90這一句定p1為p1埠在片內的暫存器,在後面的語句中我們可以用p1 = 255(對p1埠的所有引腳置高電平)之類的語句來操作特殊功能暫存器。

4樓:匿名使用者

cy位是累加器的進位、借位標誌。下文的敘述按16位機來舉例說明,如果是8位機或其它字長,則可換一個例子,但道理相似。

對於無符號數的運算,cy位就可以表示其是否溢位。但如果是有符號數,則不能按cy標誌來判斷了。為此,設了另一個標誌ov,其含義就是「假如是有符號數運算,是否出現了溢位」。

例如對於16位運算器,65534 + 3,(即二進位制的1111111111111110 + 0000000000000011),

本該得65537,(即二進位制的10000000000000001),但因為暫存器只有16位,最高位的那個1丟掉了(進入了cy標誌)。結果暫存器中只剩下了1,(即二進位制的0000000000000001)。

此時,我們可以說,16位的無符號數加法,65534+3溢位了,溢位後的答案成了1。

但是對於有符號整數,情況就不同了。有符號整數採用補碼錶示法。16位有符號整數不可能表示65534,此時如果機內二進位制是1111111111111110,程式中認為它是-2,故:

機內的二進位制的1111111111111110 + 0000000000000011,代表的是(-2) + 3。

請注意,此時的(-2)+3和上文的無符號數65534+3,在cpu的運算器硬體上完全相同,都是得到和為1,而cy標誌也為1。

但是,有符號數(-2)+3=1並無溢位。故此時的cy標誌不能代表它溢位了。

另外再舉一例:

無符號數32763 + 8 = 32771,沒有進位,cy標誌為0。此時並不溢位。

但是,如果是有符號數32763 + 8,這就是溢位了,因為32773的二進位制為1000000000000011,作為有符號數會被看成負數-32765。16位有符號數不可能表示32773的。

不管是有符號數還是無符號數,cpu的二進位制運算器機器加、減操作是一樣的,但其「溢位」的條件不同。

現在大多數的計算機中,如果是無符號數,都可以用cy標誌來判斷其是否溢位;而如果是有符號數,則需要用ov標誌來判斷其是否溢位。

至於ov標誌在邏輯上又是根據什麼產生的呢?則不同的計算機上有不同的實現方法,但效果都是一樣。

這裡介紹一種道理比較容易懂的方法:「雙符號位法」。具體是:

作加、減法前,先將兩個運算數都按照有符號數的規則擴充成17位。即:符號位是0的前面添一位0,符號位是1的前面添一位1。

然後按17位的機器加、減,得出17位的結果。

如果17位結果的高兩位(即雙符號位)不同,就置ov標誌為1,否則,ov標誌為零。

然後取其低16位作為最後結果。

5樓:匿名使用者

cy(carry): 用於表示加法進算中的進位和減法運算中的借位,加法運算

中有進位或減法運算中有借位則cy位置1,否則為0

ov: 表示運算過程中是否發生了溢位,若運算結果超過了8位二進位制數所能表示資料的範圍即有符號數-128~+127,則標誌位置1。

6樓:做而論道

微控制器程式狀態字psw的ov位到底是怎麼判斷溢位的?

----

溢位,是cpu判斷的。

發生了溢位,cpu就令ov=1。

程式狀態字psw有什麼作用,各位的含義是什麼?

7樓:男九十九號

程式狀態字(program status word, psw)又稱狀態暫存器,主要用於反映處理器的狀態及某些計算結果以及控制指令的執行。

程式狀態字(program status word, psw)又稱狀態暫存器,主要用於反映處理器的狀態及某些計算結果以及控制指令的執行。用一個專門的暫存器來指示處理器狀態。

程式狀態字通常包括以下狀態**:

cpu的工作狀態碼——指明管態還是目態,用來說明當前在cpu上執行的是作業系統還是一般使用者,從而決定其是否可以使用特權指令或擁有其它的特殊權力

條件碼——反映指令執行後的結果特徵

中斷遮蔽碼——指出是否允許中斷

各位的含義如下**:

8樓:匿名使用者

psw即程式狀態字(有些教材也叫程式狀態暫存器),program status word

程式狀態暫存器psw是計算機系統的核心部件——運算器的一部分,psw用來存放兩類資訊:一類是體現當前指令執行結果的各種狀態資訊,稱為狀態標誌,如有無進位(cf位),有無溢位(of位),結果正負(sf位),結果是否為零(zf位),奇偶標誌位(pf位)等;另一類是存放控制資訊,稱為控制狀態,如允許中斷(if位),跟蹤標誌(tf位),方向標誌(df)等。有些機器中將psw稱為標誌暫存器fr(flag register)。

在8086/8088cpu中,psw是一個16位暫存器,用於寄存單籤指令執行後的某些狀態,即反映指令執行結果的一些特徵資訊。在debug程式中,可以使用r命令來檢視psw的值,除了tf沒有顯示之外,其它8個標誌的值顯示方式如下:

標誌名設定 nv(清除) ov(溢位)

方向 dn(減) up(增)

中斷 ei(啟用) di(禁用)

正負 ng(負) pl(正)

零 zr(0) nz(非0)

輔助進位 ac(進位) na(不進位)

奇偶校驗 pe(偶校驗) po(奇校驗)

進位 cy(進位) nc(不進位)

如:ov dn ei ng zr ac pe cy依次表示of df if sf zf af pf cf都為1;

nv up di pl nz na po nc依次表示of df if sf zf af pf cf都為0.

psw各位的定義如下:

cy(psw.7):即psw的d7位,進位、借位標誌。進位、借位cy=1;否則cy=0.

ac(psw.6):即psw的d6位,輔助進位、借位標誌。當d3向d4有借位或進位時,ac=1;否則ac=0.

f0(psw.5及psw.1):即psw的d5位,使用者標誌位;

rs1及rs0(psw.4及psw.3):即psw的d4、d3位,暫存器組選擇控制位;

ov(psw.2):溢位標誌。有溢位ov=1,否則ov=0;

f1(psw·1):保留位,無定義;

p(psw·0):奇偶校驗標誌位,由硬體置位或清0;存在acc中的運算結果有奇數個1時p=1,否則p=0。

9樓:匿名使用者

微控制器書上寫的那麼詳細,自己看吧。建議

10樓:匿名使用者

用來儲存指令執行結果的標誌,供程式查詢和判別

若mcs-51微控制器的程式狀態字psw中的rs1,rs0=11,那麼工作暫存器r0-r7的直接地址為多少

11樓:螞蟻叼骨頭

它不是分為四組嗎:00,01,10,11. 你的11也就是第四組咯

12樓:

18h-1fh 每本51微控制器書都有

89c51的程式狀態字暫存器psw是一個8位的專用暫存器,用於存程式執行的各種狀態資訊? 對還是錯啊?

13樓:吳勇一家人

對的!!

下面是介紹:

psw各位定義:

psw.7 psw.6 psw.

5 psw.4 psw.3 psw.

2 psw.1 psw.0

cy ac f0 rs1 rs0 ov ---- p

程式狀態字暫存器psw是一個8位暫存器,用於存放程式執行中各種狀態資訊。其中,f0\rs1\rs0可以由使用者自己程式設計設定,其他位的狀態是根據程式執行結果,由硬體自動設定的。下面分別介紹。

cy:進位標誌,是psw中最常用的標誌位

功能有二:

一、存放算術運算的進位標誌,在進行加減運算時,若操作結果的最高位有進位或借位,則自動置1,否則為0。

二、在位操作中,作位累加器c使用。

ac:輔助進位標誌

在加減運算時,低4位向高4位進位或借位時,自動置1,否則為0。在bcd碼調整中也要用到ac位的狀態。

f0:使用者標誌位

使用者可以程式設計對這個標誌位置位或復位,使用最為靈活,常用作資料收發標誌或準備好的標誌。

rs1&rs0:暫存器組選擇位

選擇cpu當前使用的工作暫存器組,微控制器中共有四組工作暫存器,每次上電或復位後rs被置0,使用者可以程式設計選擇當前工作暫存器,達到保護某一區r0~r7中資料的目的。

ov:溢位標誌位

在帶符號的加減運算中,若運算超出了累加器a所能表示的符號數的有效範圍(-128~127),則自動置1,表示產生了溢位,說明運算結果是錯誤的。否則為0。

乘法運算中,ov=1表示乘積超過255,即乘積分別在a和b中;否則為0,表示乘積只在a中。

除法運算中,ov=1表示除數為0。

p:奇偶標誌位

表明累加器a中資料的奇偶性。若a中有奇數個「1」,則自動置1,否則為0。此標誌位常用於序列通訊中的奇偶校驗。

若MCS 51微控制器的程式狀態字PSW中的RS1,RS

rs1,bairs0 11,即工作暫存器du3組 rs1,rs0的作用就是決zhi定使用哪一組工作暫存器dao r1的地版址即為19h 0組 權00h 07h 1組 08h 0fh 2組 10h 17h 3組 18h 1fh 這是硬體結構決定的,沒有什麼 解題步驟 mcs 51微控制器的程式狀態字p...

51微控制器程式賦值順序問題 問題在程式的下面)

首先,微控制器復位之後一般都會清空資料暫存器的,所以不賦初始值,也是0 其次,就算i的值不確定,也不會出現什麼問題的,i初始值大於50則直接跳過while,i變成0,i小於50則自增到50也變成0,只不過會讓第一次按鍵堵塞時間縮短,一般也看不出來。但是好的習慣應該是在使用變數前給變數賦值。這條 wh...

為什麼51微控制器的工作電壓要是5v

4.5到5.5v都可以 這些問題你總要問個為什麼的話 那就得需要去問設計的人員了 我們只是使用者 不必要擔心這些問題 不一定是5v,也有3.3v的。stc12le5a60s2,就是3.3v,還是雙uart那 51微控制器供電電壓是5v,那電流是多少?不要用分壓 分壓的方式得到的電壓不穩定,電流小,效...