㈠ 51單片機是否能夠完成16位的加減乘除運算
51單片機是8位單片機,一次運算只能進行8位加減乘除,但16位乘除法可以通過多次運算獲得,匯編程序在很多教科書上都有
如果用C語言的話,可以不考慮它是怎麼實現的,只管定義兩個整形變數(16位)即可
㈡ 8位的單片機可不可以直接對16位數進行運算
不能直接進行運算,沒有這個指令。
㈢ 8位單片機中如何對16位INT型數據進行操作
分高八位和低八位分別操作就可以了,典型的應用如定時器賦初值:
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
㈣ 在8位單片機如何實現16位運算
如果你是用C編譯器,那麼根本就不用考慮這個問題,因為編譯器都為你解決了,你只需要定義16位的變數(如int型)
但如果你是用匯編語言寫程序,那麼就得為程序分配內存單元(字型變數),利用四個或四個以上的八位寄存器,先低八位進行運算,然後進行高八位的運算,但其中要注意狀態寄存器的變化。
㈤ 51內核8位單片機處理16位數據可行嗎
8位單片機一次可以處理8位二進制數的加減乘除,當然也可以計算16二進制位數了,只不過多運算幾次就行了,匯編語言的具體演算法教科書上有例子,用C語言編程的話,完全不用理會它是怎麼算的,只管寫公式就行了,如:
uint a,b,c; a=1200; b=2600; c=a+b;
甚至可以算小數:如 double a,b,c; a=125.67; b=36.88; c=a+b;
當然計算小數比較占內存,一個double變數佔8個位元組,運算也比較慢
歸功於庫函數,還可以計算三角函數,運算時間也只需數ms
㈥ 8位單片機用匯編怎麼運算16位數
匯編一個模塊,如下面的是一個 兩位元組 乘 兩位元組 的乘法模塊,除法也一樣,
; / *** *** *** *** *** / 2*2=4位元組乘法
; JTYA7 JTYA6 * JTYA5 JTYA4 = JTYA3---JTYA0
PCHD10: MOV JTYA3, #00H
MOV JTYA2, #00H
MOV JTYA1, #00H
MOV JTYA0, #00H
PCHD12: MOV R3, #10H ; 2 位元組
PCHD13: CLR C ; = xxxx 左移
MOV A, JTYA0
RLC A
MOV JTYA0, A
MOV A, JTYA1
RLC A
MOV JTYA1, A
MOV A, JTYA2
RLC A
MOV JTYA2, A
MOV A, JTYA3
RLC A
MOV JTYA3, A
MOV A, JTYA6 ; xx * 左移
RLC A
MOV JTYA6, A
MOV A, JTYA7
RLC A
MOV JTYA7, A
JNC PCHD18
MOV A, JTYA0 ; 乘積
ADD A, JTYA4 ; xx * xx = xxxx
MOV JTYA0, A
MOV A, JTYA1
ADDC A, JTYA5
MOV JTYA1, A
MOV A, JTYA2
ADDC A, #00H
MOV JTYA2, A
MOV A, JTYA3
ADDC A, #00H
MOV JTYA3, A
PCHD18: DJNZ R3, PCHD13
RET
㈦ 8位單片機怎麼進行十六位除十六位,最好有程序
二進制除法運算
多位元組二進制除法
被除數為3個位元組,在wr2_wr1_wr0單元中,wr2.7為最高位,wr0.0為最低位.
除數為2個位元組,在wr9_wr8中。
演算法:EM78單片機沒有除法指令,而且本例中除法為多位元組除法,可採用如下演算法.
將被除數擴充一個位元組0X23_0X22清0.被除數左移1位,0X23_0X22中數據減去0X31_0X30中數據.夠減則減且0X20.0置1,減出結果存入0X23_0X22
不夠減則0X23_0X22保持不變,0X20.0清0。
然後被除數再左移1位,重復上述過程。共循環16次,最後0X23_0X22中得相減余數,0X21_0X20中得商。
注意,若被除數左移後C標志為1,則不比較0X23_0X22與0X31_0X30數據大小關系而直接相減。
main: mov a,@0x55 ;被除數賦值
mov wr0,a
mov wr1,a
mov wr2,a
mov a,@0x0 ;被除數擴充1位元組並清0
mov wr3,a
mov a,@0x12 ;除數賦值
mov wr8,a
mov wr9,a
mov a,@0x10 ;循環次數為16
mov wr7,a
again: call rt_sub ;調移位除法子程
djz wr7 ;16次循環完成則結束
jmp again ;未完成則繼續
self: jmp self
rt_sub:
bc 0x03,0 ;c標志清0
rlc wr0 ;被除數左移1位
rlc wr1
rlc wr2
rlc wr3
jbc 0x03,0
jmp rt3 ;c標志為1則直接相減
mov a,wr3 ;c標志為0則先比較大小
mov wr5,a
mov a,wr2
mov wr4,a
mov a,wr9 ;先比較高位
sub wr5,a
jbc 0x03,2
jmp rt1 ;高位相等跳rt1比較低位
jmp rt2 ;高位不等跳rt2
rt1: mov a,wr8 ;比較低位
sub wr4,a
jbc 0x03,2
jmp rt3 ;低位也相等則跳rt3,相減,上1
rt2: jbs 0x03,0
ret ;減數大則返回,減數小則相減,上1
rt3: bs wr0,0 ;上1
call sub_2b ;調2位元組減法子程
ret
sub_2b:
mov a,wr9 ;高位元組相減
sub wr3,a
mov a,wr8 ;低位元組相減
sub wr2,a
jbc 0x03,2
ret ;低位元組相等,無借位,返回
jbc 0x03,0
ret ;無借位,返回
dec wr3 ;低位元組相減有借位,高位元組結果減1
ret
eop