Kód pro úhel zobrazení

D

DrWhoF

Guest
I obdrží řetězec s kódem úhel od 0 ° do 360 ° (01h 68h).Rád bych k zobrazení tohoto pohledu je -180 ° pro 0 ° a 180 ° o 360 °.
Co bude nejjednodušší způsob, jak změnit tyto hodnoty s použitím 8051 shromáždění?
Díky.
DrWho

 
V pseudokódu:
Kód:eek:dčítat 180

je-li záporný (provést nastavení)

zobrazení "-"

provést doplnění hodnoty

jiný

volitelně zobrazit " "

endif

rozdělit hodnotu o 100

pokud výsledek> 0 zobrazení

rozdělit zbývající do 10

pokud výsledek> 0 zobrazení

zobrazit zbývající

displeji ·

Hotovo

 
Zkuste tento kód:
Citace:

; Bit NumBelow180 je nastaven, když NumberHNumberL <180 a schválila pokud NumberHNumberL> 180Angle_Display: CLR C; 01h 68h = 360d

MOV A, NumberH

CJNE, # 01h, Not_1, # 01h

NOP; NumberH = 01h

SJMP Check_Cont3

Not_1: JC Check_Cont1; NumberH <01h

LJMP Set_Number; NumberH> 01h

Check_Cont1: CLR C

MOV A, NumberL

CJNE, # 68h, Not_68, # 68h

CLR C, počet = 68h

SJMP Check_Cont2

Not_68: JC Check_Cont2; NumberL <68h

Check_180: CLR C; NumberL> 68h

MOV A, NumberL

CJNE, # 0B4h, Not_B4

CLR C; NumberL = 180D

SJMP Check_Cont3

Not_B4: JC Check_Cont2; NumberL <180D

More_180: CLR NumBelow180; NumberL> 180D

SJMP Check_Cont3Check_Cont2: SETB NumBelow180

MOV Tmp0, # 0B4h, počet = 180-znamení čísla =-

MOV Tmp1, # 00h

MOV Op0, NumberL

MOV OP1, # 00h

SJMP Check_Cont4Set_Number: MOV NumberL, # 68h

MOV NumberH, # 01hCheck_Cont3: MOV Tmp0, NumberL; číslo = číslo-180 Sign =

MOV Tmp1, NumberH

MOV Op0, # 0B4h

MOV OP1, # 00hCheck_Cont4: CLR C

MOV A, Tmp0

SUBB, Op0

MOV NumberL,

MOV A, Tmp1

SUBB, OP1

MOV NumberH,

RET
 
Velice vám děkuji za kód.
Pokud jsem potřeboval přesunout "0" do / - 5 čísel vlevo nebo vpravo - nastavení fyzického nulu - kolik to bude komplikovat kód?
Díky.
DrWho

 
Ne moc ..
Pokud Konstantní je jméno číslo, které chcete přidat nebo odečíst z NumberHNumberl pak můžete udělat následující:

Sbtract_Number:
CLR C
MOV A, NumberL
SUBB, konstantní
MOV NumberL,
MOV A, NumberH
SUBB, # 00h
MOV NumberH,
RET

Add_Number:
CLR C
MOV A, NumberL
ADDC, konstantní
MOV NumberL,
MOV A, NumberH
ADDC, # 00h
MOV NumberH,
RET

Ale nejprve budete muset zkontrolovat, zda NumberHNumberL je větší než Konstantní nebo menší než 360-konstantní, bot operace může tak učinit ..
Například na žrádlo pro kontrolu těchto podmínek najdete v předchozí post ..

S pozdravem,
IanP

 

Welcome to EDABoard.com

Sponsor

Back
Top