導航:首頁 > 操作系統 > 單片機累加器計算方法

單片機累加器計算方法

發布時間:2022-06-27 04:00:23

單片機如何計算初值

一般最直接的想法就是,指定一個計時值x,然後從0開始累加計數,計數到x表示時間到,可以處理事務了。這種處理方法,需要一個數值比較器,每計一次數,就比較一下。這對單片機或者說硬體電路來講,一個8位計數器就需要包含一個8位數值比較器,實在不夠簡便。

第二種想法,是指定一個計時值x,然後進行減計數,減計數到0表示時間到。這也要一個比較器,只不過是個0值比較器,硬體電路上比上一種要簡單一些,但減計數器還是不常用。我們知道累加器才是最簡便的硬體電路之一。

上面兩種方法,都是軟體實現的定時器的合理想法。那麼硬體電路實現定時最簡便的方法是什麼呢?

那就是用累加器來實現。比如一個8位的累加器,可以從0累加計數,計數到256時溢出,產生溢出信號,就可以觸發事務處理了。

要是我們只需要計數10次就夠了,則可以將計數初值定義為246。那樣,計數10次後就可以達到256,產生溢出信號了。

所以就有了(2^n-x)。n是計數器的位數;2^n就是最大計數值;x是計數初值。整個這段,表示我們需要的計時次數。

計數器每次計數的時間間隔是t,及計數周期。那麼總的計時時長m=計數周期×計數次數=t×(2^n-x),也就是m=(2^n-x)×t。

計數位數n由選用的單片機確定,通常等於8,12,16或32等等,即8位、12位等計數器。計數周期t由定時器基礎時鍾確定,可通過設置定時器時鍾源和選擇時鍾分頻數確定。這兩項靈活性不大,一般在程序初始化時就應設定。

初值x可以在應用時,根據定時需求進行修改確定。

協調好n,t和x三者的設定,就可以完美實現定時功能了。

㈡ 關於單片機匯編程序 累加器a

cpu內部結構!輔助運算器工作的編碼器!節約時間的,程序在處理的時候從累加器A簡稱ACC,累加器A為8位寄存器,通過暫存器與ALU相連,是最常用的寄存器,功能較多,既可以存放操作數,也可以存放中間結果,一些雙操作數指令中!

㈢ 單片機的計算

A 累加器
RO R1 R2 R3 R4 R5 R6 R7 通用寄存器 有四組
30H 普通寄存器 地址為30H
PSW即程序狀態字,Program Status Word程序狀態寄存器

XCHD 交換數據 @R0 以R0內容為地址,再取地址內數據
SWAP 高低半位元組交換

裝個KEIL C51 或者 偉福 , 程序輸入,單步調試一下
不然怎麼也學不會的。

㈣ 單片機中的邏輯運算怎麼算的

在邏輯代數中,有與、或、非三種基本邏輯運算。表示邏輯運算的方法有多種,如語句描述、邏輯代數式、真值表、卡諾圖等。邏輯運算通常用來測試真假值。最常見到的邏輯運算就是循環的處理,用來判斷是否該離開循環或繼續執行循環內的指令。

累加器A清0指令。

CLR A;單片機軟體指令功能是將累加器A中的內容清0。影響單片機標志寄存器PSW中的奇偶標志位P。

累加器A取反指令。

CPL A;單片機軟體指令功能是將累加器A中的內容全部取反,結果送回A中。影響單片機標志寄存器PSW中的奇偶標志位P。

常用於單片機某個存儲器單元或某個存儲器區域中帶符號數的求補。

RL A;左循環移位指令:

單片機軟體指令功能是將累加器A的8位二進制數向左移動1位,累加器A中最左邊1位(即最高位A.7)移至最右邊1位(即最低位A.0)。不影響單片機標志寄存器PSW中的標志位。

RR A;右循環移位指令:

單片機軟體指令功能是將累加器A的8位二進制數向右移動1位,累加器A中最右邊1位(即最低位A.0)移至最左邊1位(即最高位A.7)。不影響單片機標志寄存器PSW中的標志位。

RLC A;帶進位左循環移位指令:

單片機軟體指令功能是將累加器A的8位二進制數和進位CY向左移動1位,累加器A中最左邊1位(即最高位A.7)移至CY,CY原內容移至累加器A的最右邊1位(即最低位A.0)。影響單片機標志寄存器PSW中的進位標志位CY。

RRC A;帶進位右循環移位指令:

單片機軟體指令功能是將累加器A的8位二進制數和進位CY向右移動1位,累加器A中最右邊1位(即最低位A.0)移至CY,CY原內容移至累加器A的最左邊1位(即最高位A.7)。影響單片機標志寄存器PSW中的進位標志位CY。

(4)單片機累加器計算方法擴展閱讀:

邏輯運算組成部分

Boolean(布爾運算)的參數面板可分成三部分。

布爾運算練習模型:骰子

Pick Boolean(拾取布爾運算對象)卷展欄

該卷展欄用來拾取運算對象B,如圖所示。

在布爾運算中,兩個原始對象被稱為運算對象,一個叫運算對象A,另一個叫運算對象B。在建立布爾運算前,首先要在視圖中選擇一個原始對象,這時Boolean按鈕才可以使用。進入布爾運算命令面板後,單擊Pick Operand B命令按鈕來選擇第二個運算對象。

· Pick Operand B(拾取運算對象B):單擊該按鈕,在場景中選擇另一個物體完成布爾合成。其下的4個選項用來控制運算對象B的屬性,它們要在拾取運算對象B之前確定。

· Reference(參考):將原始對象的參考復製品作為運算對象B,以後改變原始對象,也會同時改變布爾物體中的運算對象B,但改變運算對象B,不會改變原始對象。

· Copy(復制):將原始對象復制一個作為運算對象B,而不改變原始對象。當原始對象還要作其他之用時選用該方式。

· Move(移動):將原始對象直接作為運算對象B,它本身將不再存在。當原始對象無其他用途時選該用方式。該方式為默認方式。

· Instance(關聯):將原始對象的關聯復製品作為運算對象B,以後對兩者中之一進行修改時都會同時影響另一個。

Parameters(參數)卷展欄

該卷展欄參數可分為三個區域,如圖所示。

Operands(操作對象)選項組

該組參數用來顯示所有的運算對象的名稱,並可對它們作相關的操作。

Operands List(操作對象列表):該列表框中列出所有的運算對象,供編輯操作時選擇使用。

Name(名稱):顯示列表框中選中的操作對象的名稱。可對其進行編輯。

Extract Operand(提取運算對象):它將當前指定的運算對象重新提取到場景中,作為一個新的可用對象,包括Instance(關聯)和Copy(拷貝)兩種屬性。這樣進入了布爾運算的物體仍可以被釋放到場景中。只有從其上方的列表框中選擇一個操作對象後才能激活該按鈕。

㈤ 單片機邏輯運算

第一步:
ANL是邏輯與運算
就是說第一步是A與47H里的內容34H進行與運算。 A=10000011 34H=00110100
與運算特點是有「0」則0 運算結果為00000000=00H 此時累加器A中內容為00H
第二步:
ORL是邏輯或運算
這部分是第一部分運算出來的A與47H地址里的34H進行或運算,得出的結果存放在47H單元中。 A=00H=00000000 47H=00110100 或運算特點是有「1」則1
所以運算結果為00110100=34H運算後47H地址中的內容為34H
第三步:
XRL是邏輯異或指令
R0前面的@說明定址方式是寄存器定址。特點是將R0中的內容作為地址,在從此地址中尋找出對應的內容作為R0的內容。題干中說到(R0)=47H 就是R0中的內容為47H @R0就是以R0中的內容47H為地址,找出對應的內容。上一部分已經知道了47H里的內容為34H。回到第三步來,就相當於XRL A,34H A=00H=00000000 34H=00110100 邏輯異或運算的特點是相同則為0,不同則為1,所以結果為00110100=34H 此時累加器A中的內容為34H
第四步:
SWAP是高低四位數據值互換(如果是8位的話) 就是將00110100前四位與後四位互換,換完後還是01000011=43H 最後A中內容為43H

參照下面那位大哥,改過來了,要不誤導人咯~~呵呵

㈥ 如果累加器A正在被使用,如何做加法呢

累加器A時刻都在被使用,可還是照樣要用A做各種運算。有一點,你要清楚,不論是不是A做運算,單片機在每一時刻都只能做一件事,即只能執行一條指令。所以,A正在被使用,就不能做加法。方法一是等A當前的任務執行完再去做加法運算。方法二是,必須立即做加法,就暫時保存A的當前值,去做加法,加法結束恢復A的值繼續原任務,相當於中斷,在執行中斷程序前要保護現場。

㈦ 單片機,累加器A計算-1加1 ,計算後A裡面為0嗎

0FE對應的二進制數應該為11111110吧?所以11111110+1=11111111,即0xFE+0x01=0xFF。

無符號數255(FF)在有符號時的值就是-1,而你們說的FE對應的值是-2;所以在A中的-1應該是0xFF,加上1之後變為0(0x00),相當於255+1=256(11111111+1=100000000),A中的值變為0x00,進位標志CY=1。

2L的請在復習一下「計算機介面原理」中的知識吧,計算機中都用的是補碼而不是原碼。

㈧ 單片機加法指令

假定(A)=85H (R0)=20H (20H)=OAFH。執行指令 ADD A, @RO 後,累加器A的內容為(0X34 ),CY的內容為(1 ),AC的內容為(1 ),AC的內容為( 1),0V的內容為(1 )。

我的回答都是以8位單片機為准。這個指令功能就是取單元20H的值AFH與85H相加,
結果本來應該是134H,沒辦法,8位嘛,所以:
CY:進位標志位;
當CY=1時,表示操作結果最高位(位7)有進位或借位。
CY=0時,表示操作結果最高位(位7)沒有進位或借位。
(最高位有進位,CY=1)
AC:半進位標志位;
該位表示當進行加法或減法運算時,低半位元組向高半位元組是否有進位或借位;
當AC=1時,表示低半位元組向高半位元組有進位或借位;
AC=0時,表示低半位元組向高半位元組沒有進位或借位;
(低半位元組F+5=14,有進位,AC=1)
OV:溢出標志位,
該位表示在進行有符號數的加減法時是否發生溢出;
當0V=1時,表示有符號數運算結果發生了溢出,
OV=0時,表示有符號數運算結果沒有溢出。
(超出8位,果斷溢出)

㈨ 運用單片機基礎知識解決:用兩種方法實現累加器A與寄存器B的內容交換

方法1:
使用交換指令XCH
XCH A, 0F0H ;XCH指令的操作數一個為累加器A,另一個為直接地址,B的地址是0F0H

方法2:
藉助棧
PUSH ACC
PUSH 0F0H
POP ACC
POP 0F0H

方法3:
藉助另外一個寄存器

MOV R2, A
MOV A, 0F0H
MOV 0F0H, R2

我暫時想到這些,希望對你有幫助。

㈩ 單片機中的累加器怎麼只對高四位或低四位進行左移或右移

把數據存在個寄存器裡面。該數據在累加器中刪去高4位(可以用邏輯運算)。再移動4位。存入一個單元格a,再調出該數據刪去低4位。在把累加器與單元格a的數據相加即可。

閱讀全文

與單片機累加器計算方法相關的資料

熱點內容
蘋果騰訊管家如何恢復加密相冊 瀏覽:111
手機軟體反編譯教程 瀏覽:858
sqlserver編程語言 瀏覽:650
gpa國際標准演算法 瀏覽:238
伺服器編程語言排行 瀏覽:947
怎麼下載快跑app 瀏覽:966
小紅書app如何保存視頻 瀏覽:170
如何解開系統加密文件 瀏覽:809
linux切換root命令 瀏覽:283
c編譯之後界面一閃而過怎麼辦 瀏覽:880
怎麼看ic卡是否加密 瀏覽:725
lgplc編程講座 瀏覽:809
cnc手動編程銑圓 瀏覽:723
cad中幾種命令的意思 瀏覽:327
oraclelinux安裝目錄 瀏覽:134
安卓系統可以安裝編譯器嗎 瀏覽:571
javajson實體類 瀏覽:691
板加密鋼筋是否取代原鋼筋 瀏覽:67
學習編程的思路 瀏覽:231
app易語言post怎麼學 瀏覽:966