[ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.03.08
Prihlásený: 30.03.08
Príspevky: 1
Témy: 1 | 1
NapísalOffline : 30.03.2008 18:22 | Opis programu

Hladam niekoho ochotneho kto by mi pomohol popisat riadky programu aby som vedel co ktory riadok programu znamena, je to program ktory na zaklade vopred znamej vzdialenosti ma vypocitat rychlost z bodu A do bodu B a zobrazit to na 4segmentovom displej, po privedeni log. 1 na vstup INT-0 sa ma zacat pocitanie casu az po zaregistrovani log. 1 na vystupe INT-1, a z daneho casu sa potom vypocita rychlost.
;Program vyrata a zobrazi rychlost na zaklade zmeraneho casu a znamej
;vzdialenosti

org 0000h ;nastavenie pociatku programu
sdat equ 0b1h ;p3.1
clk equ 0b0h ;p3.0
ajmp 100h ;zaciatok na 100h

;obsluha prerusenia int 0 + jeho zakazanie
org 0003h
acall 30h
clr 0a8h
reti

;obsluha prerusenia int 1 + jeho zakazanie
org 0013h
acall 30h
clr 0aah
reti

;spustenie a zastavenie casovaca
org 30h
jbc 8eh,5H
setb 8eh
ret

;zaciatok programu
org 100h
clr clk
clr 0afh ;zakazanie preruseni, nastavenie sp,tmod,th1 a tl1
mov 81h,#50h
mov r0,#0h
mov 89h,#10h
mov 8dh,#0fch
mov 8bh,#17h
anl 88h,#0aah ;zastavenie casovacov nastavenie it na log.0
orl 0a8h,#85h ;povolenie extern.preruseni
clr 80h ;pomocny bit na pretecenie rozsahu
opakuj:
jnb 8eh,opakuj ;cakanie na interupt
rataj:
jb 8fh,130h ;zaratanie pretecenia
jb 80h,100h ;pretecenie rozsahu=navrat na zaciatok
jb 8eh,rataj ;cakanie na druhy interupt

;kontrola,ci aspon raz pretieklo
clr 0d7h
mov a,#0ffh
add a,r0
jnc 100h ;ak ani raz,vrat sa na zaciatok
jmp pokrac

;podprogram pre obsluzenie pretecenia casovaca
org 130h ;nastavenie th1,tl1
mov 8dh,#0fch
mov a,#19h ;zaratanie uz napocitanych impulzov v tl1
add a,8bh
mov 8bh,a
clr 8fh ;tf=0 a inkrementacia r0
mov a,#01h
add a,r0 ;v r0 je počet pretečení, teda vlastne počet milisekund
mov r0,a
clr 0d7h ;vymazanie cy
add a,#1h ;kontrola r0<252
jnc skonci
setb 80h ;pretecenie rozsahu
skonci:
jmp rataj

;pokracovanie programu po preskoceni podprogramu
;vlozenie hodnoty z casovaca do registru r1
pokrac:
mov a,08dh ;beriem spodne 2 bity z th1
anl a,#3h
mov b,#40h ;posuvam ich na horne 2 bity
mul ab
mov r1,a
mov a,08bh ;odcitam 13h(17-4,lebo prerusenie trva 4 cykly)
clr 0d7h ;ako pociatocnu hodnotu v casovaci
subb a,#13h
mov r7,a ;v r7 bude korekcia poslednych dvoch bitov
anl a,#0fch ;beriem hornych 6 bitov z tl1
mov b,#4h ;posuvam ich na spodnych 6 bitov
div ab
add a,r1
mov r1,a
mov a,#03h ;ulozenie korekcie
anl a,r7
mov r7,a

;hlavny vypocet rychlosti
mov r2,#0eah ;nastavenie vzdialenosti 6,5 cm
mov r3,#0h
call pomoc ;zistenie celej casti
mov 31h,r4
call desatiny ;posunutie na desatiny
call pomoc ;vyratanie desatin
mov 35h,r4
call desatiny ;posunutie na stotiny
call pomoc ;vyratanie stotin
mov 36h,r4
call desatiny ;posunutie na tisiciny
call pomoc ;vyratanie tisicin
mov 37h,r4
jmp preskoc ;preskocenie podprogramov
tabznak: db 3fh,06h,05bh,4fh,66h,6dh,7dh,07h,7fh,6fh

;podprogram pre posunutie desatinnej casti na jednotky
desatiny:
mov b,#0ah
mov a,r3
mul ab ;roznasobenie spodnych bytov
mov r3,a
mov r5,b
mov b,#0ah
mov a,r2
clr 0d2h
mul ab ;roznasobenie hornych bytov
add a,r5
jb 0d2h,posun ;ak pretecenie,potom zaokruhli
mov r2,a
jmp fine
posun:
mov r2,b
mov r3,a
fine:
ret

;podprogram pre delenie za pomoci odpocitavania
pomoc:
mov r4,#0h
odcitaj:
mov a,r2
clr 0d7h ;kontrola,ci r2>r0
subb a,r0
jc mensi
mov 39h,r2
mov a,r0
cjne a,39h,nerov ;kontrola ,ci sa nerovnaju r2 a r0
mov a,r3 ;ak r2=r0 a r3<r1 potom uz nerataj
clr 0d7h
subb a,r1
jc mensi

nerov:
mov a,r3 ;odcitanie nizsich bytov
subb a,r1
mov r3,a

mov a,r2 ;odcitanie vyssich bytov
subb a,r0
mov r2,a
inc r4 ;inkrementacia r4 a cyklenie
jmp odcitaj

mensi:
mov a,r7 ;korekcia poslednych dvoch bitov
mov b,r4
mul ab ;zistenie,ze kolko sme nezaratali
mov r6,b
mov b,#4h ;beriem horne 6 bity z r7
div ab
mov r5,a
mov b,#40h ;beriem dolne dva bity,ak pretieklo
mov a,r6
mul ab
add a,r5
xch a,r3 ;odcitam od desatin korekciu,ak pretecie,potom upravim aj jednotky
clr 0d7h
subb a,r3
mov r3,a
jnc konec
dec r4
konec:
ret

;pokracovanie programu,rozlozenie celej casti na stovky,desiatky a jednotky
preskoc:
mov a,31h
mov b,#0ah
div ab ;predelenie 10 a zistim jednotky
mov 34h,b

mov b,#0ah
div ab ;predelenie 10 a zistim desiatky
mov 33h,b

mov b,#0ah
div ab ;predelenie 10 a zistim stovky
mov 32h,b

;zistenie zobrazovanych 4 cislic
mov a,32h
mov 38h,#3h ;poloha desatinnej bodky
cjne a,#0h,zobraz ;ak nemame stovky,potom zobrazuj od desiatok

desiatky:
mov 38,#2h ;poloha desatinnej bodky
mov 32h,33h
mov 33h,34h
mov 34h,35h
mov 35h,36h
mov a,32h
cjne a,#0h,zobraz ;ak nemame desiatky,potom zobrazuj od jednotiek

jednotky:
mov 32h,33h
mov 38h,#1h ;poloha desatinnej bodky
mov 33h,34h
mov 34h,36h
mov 35h,37h

;priprava a zobrazenie cislic
zobraz:
mov a,32h ;dekoduj prvy znak
mov dptr,#tabznak
movc a,@a+dptr
mov 32h,a
mov a,33h ;dekoduj druhy znak
mov dptr,#tabznak
movc a,@a+dptr
mov 33h,a
mov a,34h ;dekoduj treti znak
mov dptr,#tabznak
movc a,@a+dptr
mov 34h,a
mov a,35h ;dekoduj stvrty znak
mov dptr,#tabznak
movc a,@a+dptr
mov 35h,a

;vytvorenie prvych dielcich 8 bitov
mov 36h,#0h ;nulovanie zobrazovanej cislice
mov a,32h
jnb acc.4,s1 ;skusanie,ci ma E4 segment svietit
xrl 36h,#80h ;ak ano,potom ho zasviet
s1: jnb acc.3,s2 ;D4
xrl 36h,#40h
s2: jnb acc.2,s3 ;c4
xrl 36h,#20h
s3: mov a,38h ;skumanie polohy desatinnej bodky
cjne a,#1h,s4
xrl 36h,#10h ;ak tam patri,zobraz ju

s4:mov a,33h
jnb acc.4,s5 ;skusanie,ci ma E3 segment svietit
xrl 36h,#8h ;ak ano,potom ho zasviet
s5: jnb acc.3,s6 ;D3
xrl 36h,#4h
s6: jnb acc.2,s7 ;c3
xrl 36h,#2h
s7: mov a,38h ;skumanie polohy desatinnej bodky
cjne a,#2h,s8
xrl 36h,#1h ;ak tam patri,zobraz ju

;vytvorenie druhych dielcich 8 bitov
s8: mov 37h,#0h ;nulovanie zobrazovanej cislice
mov a,34h
jnb acc.4,s21 ;skusanie,ci ma E2 segment svietit
xrl 37h,#80h ;ak ano,potom ho zasviet
s21: jnb acc.3,s22 ;D2
xrl 37h,#40h
s22: jnb acc.2,s23 ;c2
xrl 37h,#20h
s23: mov a,38h ;skumanie polohy desatinnej bodky
cjne a,#3h,s24
xrl 37h,#10h ;ak tam patri,zobraz ju

s24:mov a,35h
jnb acc.4,s25 ;skusanie,ci ma E1 segment svietit
xrl 37h,#8h ;ak ano,potom ho zasviet
s25: jnb acc.3,s26 ;D1
xrl 37h,#4h
s26: jnb acc.2,s28 ;c1
xrl 37h,#2h

;vytvorenie tretich dielcich 8 bitov
s28: mov 39h,#0h ;nulovanie zobrazovanej cislice
mov a,35h
jnb acc.1,s31 ;skusanie,ci ma B1 segment svietit
xrl 39h,#80h ;ak ano,potom ho zasviet
s31: jnb acc.0,s32 ;A1
xrl 39h,#40h
s32: jnb acc.5,s33 ;F1
xrl 39h,#20h
s33: jnb acc.6,s34 ;G1
xrl 39h,#10h

s34: mov a,34h
jnb acc.1,s35 ;skusanie,ci ma A2 segment svietit
xrl 39h,#8h ;ak ano,potom ho zasviet
s35: jnb acc.0,s36 ;B2
xrl 39h,#4h
s36: jnb acc.5,s37 ;C2
xrl 39h,#2h
s37: jnb acc.6,s38 ;G2
xrl 39h,#1h

;vytvorenie stvrtych dielcich 8 bitov
s38: mov 40h,#0h ;nulovanie zobrazovanej cislice
mov a,33h
jnb acc.1,s41 ;skusanie,ci ma B3 segment svietit
xrl 40h,#80h ;ak ano,potom ho zasviet
s41: jnb acc.0,s42 ;A3
xrl 40h,#40h
s42: jnb acc.5,s43 ;F3
xrl 40h,#20h
s43: jnb acc.6,s44 ;G3
xrl 40h,#10h

s44: mov a,32h
jnb acc.1,s45 ;skusanie,ci ma A4 segment svietit
xrl 40h,#8h ;ak ano,potom ho zasviet
s45: jnb acc.0,s46 ;B4
xrl 40h,#4h
s46: jnb acc.5,s47 ;C4
xrl 40h,#2h
s47: jnb acc.6,s48 ;G4
xrl 40h,#1h
s48: ;vysielanie 35bitov + start bit
setb sdat
setb clk ;vysielanie start bitu
mov r1,#9
g91: djnz r1,g91 ;opakovani cyklu dle obsahu registru r1
clr clk
mov r1,#9
g92: djnz r1,g92
setb clk ;nevyuzity 18.vyvod
mov r1,#9
g93: djnz r1,g93
clr clk
mov a,36h
nop
nop
mov r0,#8 ;prve 8 bity
g1: acall monitor
djnz r0,g1
mov a,37h
mov r0,#8 ;druhe 8 bity
g2: acall monit
djnz r0,g2
setb clk ;nevyuzity 40.vyvod
mov r1,#9
g94: djnz r1,g94
clr clk
mov a,39h
mov r0,#8 ;tretie 8 bity
g3: acall monit
djnz r0,g3
mov a,40h
mov r0,#8 ;stvrte 8 bity
g4: acall monit
djnz r0,g4
nop
clr sdat
mov r1,#6
g95: djnz r1,g95
opak: setb clk
mov r1,#9
g96: djnz r1,g96
clr clk
mov r1,#8
g97: djnz r1,g97
ajmp opak

monitor:
mov r1,#3
g98: djnz r1,g98
jb acc.7,g11
clr sdat
ajmp g12
g11: setb sdat
nop
nop
g12: rl a
setb clk
mov r1,#9
g99: djnz r1,g99
clr clk
ret ;navrat z podprogramu

monit:
clr 0d7h
mov a,#7
subb a,r0
jc g22
nop
nop
g22: jb acc.7,g23
clr sdat
ajmp g24
g23: setb sdat
nop
nop
g24: rl a
setb clk
mov r1,#9
g89: djnz r1,g89
clr clk
ret

end


 [ Príspevok: 1 ] 


Opis programu



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

opis obrazok

v Ostatné

10

1109

11.01.2007 17:23

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

opíš mi uTorrent

v Sieťové a internetové programy

4

697

09.04.2008 23:29

Seth Sparrow

V tomto fóre nie sú ďalšie neprečítané témy.

Zadaný opis textu z obrázku nesúhlasí

v Služby a webstránky

1

322

23.03.2015 19:53

liqua1

V tomto fóre nie sú ďalšie neprečítané témy.

PREKLAD PROGRAMU

v Ponuka práce

0

683

22.02.2015 17:08

GROCHPTE

V tomto fóre nie sú ďalšie neprečítané témy.

chyba programu

v Assembler, C, C++, Pascal, Java

1

461

09.05.2009 19:46

fonseka

V tomto fóre nie sú ďalšie neprečítané témy.

Zdielanie programu

v Siete

1

412

20.11.2011 17:43

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

Vysvetlenie programu

v Assembler, C, C++, Pascal, Java

11

852

23.11.2008 20:41

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Zdielanie programu

v Ostatné programy

7

1593

26.11.2018 15:05

patro16

V tomto fóre nie sú ďalšie neprečítané témy.

sputanie programu

v HTML, XHTML, XML, CSS

3

621

13.04.2007 21:54

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

tvorba programu

v Ostatné

0

575

26.01.2010 16:19

ipkis

V tomto fóre nie sú ďalšie neprečítané témy.

Odinstalovanie programu

v Ostatné programy

7

1008

09.03.2007 18:22

PLaYeR

V tomto fóre nie sú ďalšie neprečítané témy.

Vývoj programu

v Ponuka práce

0

466

14.02.2014 22:35

jeck2010

V tomto fóre nie sú ďalšie neprečítané témy.

nastavenie programu

v Ostatné programy

0

598

09.07.2008 17:01

kekesko

V tomto fóre nie sú ďalšie neprečítané témy.

Prenesenie programu

v Ostatné programy

2

295

13.12.2013 8:53

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

vyladenie programu

v Assembler, C, C++, Pascal, Java

1

382

02.02.2012 9:25

BX

V tomto fóre nie sú ďalšie neprečítané témy.

prenesenie programu

v Ostatné programy

4

511

19.03.2011 18:38

Rayiner



© 2005 - 2024 PCforum, edited by JanoF