1樓:無線開發工程師
psw的cy是進位標誌,表示當前的運算是否產生了進位
2樓:匿名使用者
是同一個, 對位操作的累加器, 你可以去看一下布林處理機是怎麼工作的
學微控制器學得很模糊,什麼情況下用得到psw暫存器中的cy位?誰能舉一下例項
3樓:匿名使用者
add subb div mul 等都可以影響到psw的cy位,至於什麼時候得到,隨時都可以,你任何時候想知道cy都可以隨時訪問。訪問指令如:
jcjnc
4樓:珠山龍少
程式狀態字暫存器psw是一個8位暫存器,用於存放程式執行中各種狀態資訊。其中,f0\rs1\rs0可以由使用者自己程式設計設定,其他位的狀態是根據程式執行結果,由硬體自動設定的。
cy:進位標誌,是psw中最常用的標誌位
功能有二:
一、存放算術運算的進位標誌,在進行加減運算時,若操作結果的最高位有進位或借位,則自動置1,否則為0。
二、在位操作中,作位累加器c使用。
因此可以根據cy進行數值大小的判斷、或者跳轉。
微控制器程式狀態字psw的ov位到底是怎麼判斷溢位的?有cy位不就夠了麼?
5樓:津人依夢趣談體育
微控制器程式狀態字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埠的所有引腳置高電平)之類的語句來操作特殊功能暫存器。
6樓:匿名使用者
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位作為最後結果。
7樓:匿名使用者
cy(carry): 用於表示加法進算中的進位和減法運算中的借位,加法運算
中有進位或減法運算中有借位則cy位置1,否則為0
ov: 表示運算過程中是否發生了溢位,若運算結果超過了8位二進位制數所能表示資料的範圍即有符號數-128~+127,則標誌位置1。
8樓:做而論道
微控制器程式狀態字psw的ov位到底是怎麼判斷溢位的?
----
溢位,是cpu判斷的。
發生了溢位,cpu就令ov=1。
怎樣用51微控制器實現累加計時和倒計時,並用共陰極數碼管顯
剛開始上電時,system mode不是1 也不是2,不知你初始化時是否給它賦值?另外你的按鍵檢測程式沒加入到迴圈程式中,剛上電時若沒有按鍵按下,則很快跳過兩個按鍵檢測語句,然後進入迴圈顯示程式中,這是一個死迴圈,只有中斷才可打斷其執行,所以再按什麼鍵也沒反應了,建議把按鍵檢測放入顯示迴圈中,它對顯...
微控制器時間中斷,51微控制器中的定時器中斷是怎麼用的 ?
while 1 在那 會使微控制器停在那 相當於是等待當中斷來臨時 執行中斷 下面那個就是當到50ms的時候 執行計時器1中斷如果沒有那個while 1 則主程式就執行完了 中斷會沒有作用中斷和程式主程式各個執行是同步的 因為你把那個et0開了 則就有時鐘中斷了 當到了50ms 中斷就會自動作用 停...
怎麼用51微控制器做簡易計算器,怎麼用51微控制器做簡易計算器?
你好!微控制器做計算器的設計,本身就是難點 你是用 還是要做實物呢?最多計算位數需要幾位?很簡單,第一,設計按鍵電路,最好4乘4的按鍵第二 74573驅動數碼管顯示電路!剩下的就常規的了,電源電路,復位電路!寫程式,除錯,燒錄,ok!先製作出數字顯示電路,還有相應數字按鍵電路,需要幾位數就用幾個數碼...