Prop Hodiny asm

F

firesky1982

Guest
Potrebujem pomoc s Trisb portb.Môže mi pomôcť s problémami v kóde, že som?

 
Kód:

;--------

; MclockT3.asm - upravené na 180 stupeň brush motor

; OK pridajte 8. LED - vyčistený v tabuľke 2 a ďalšie objekty

; WatchDog časovač používaný na zabezpečenie štartu za všetkých powerups

"Vrtuľa" mechanicky skenovaná LED hodiny

; Bob Blick 12. februára 1997

; Pod licenciou GNU General Public License, www.gnu.org

; Žiadne záruky vyjadrené alebo odvodené

; Bob Blick February 18, 2002

;--------

list p = 16F84

radix Hex

include "p16F84.inc"

;--------

; Nezabudnite nastaviť Otryskávanie-time možností: OSC = pravidelné xtal, WDT = ON

; Načasovanie všetkých založených na 4 MHz krystal

;--------

, Sú tieto rovná už patrí do súboru?
niekedy uvidíme pozrieť.

;--------

w EQU 0

f EQU 1

;--------

; Štart dostupnej RAM.

;--------

cblock 0x0C

safe_w; ne temp, používané prerušenia svc

safe_s; ne temp, používané prerušenia svc

period_count; inkrementací každom prerušení

period_dup; kópie period_count bezpečné z prerušenia

period_calc; stabilný po hysteréziou Calc.

vlajok, b2 = int b1 = minútu b4 = hrana

dot_index, ktoré stĺpce sa zobrazia

digit_index; číslicu, ktorá je zobrazená

hodín, v zobrazení formátu, nie je Hex (01-12)

minút, 00 - 59

bigtick_dbl; inkrementací každom prerušení

bigtick_hi

bigtick_lo

kľúče, kľúčové hodnoty

poąkrábat; poąkrábat hodnoty

začiarknite; používané oneskorenie

endc

;--------

; Začiatok ROM

;--------

org 0x00; Začiatok kódu vesmíre

goto Štart

;--------

; Přeruąovací SERVISNÁ rutinné

;--------

org 0x04; vektor prerušenia

Intsvc movwf safe_w; ušetriť w

swapf ŠTATÚTU, W; swap postavenie, w

movwf safe_s; zachrániť postavenie (ohlodávat swap, pamätáš)

;--------

; Implementovať úspory, hneď môžete začať pracovať

; Inkrementační obdobie počítať

;--------

incf period_count, f

btfsc ŠTATÚTU, Z; nula znamená nastaviť náslechového

decf period_count, f

; Jasné WatchDog časovač na zabezpečenie štartu

clrwdt

; 234375 preruší každú minútu.
Prírastok na bigtick každej dobe.

incf bigtick_lo, f

btfsc ŠTATÚTU, Z

incf bigtick_hi, f

btfsc ŠTATÚTU, Z

incfsz bigtick_dbl, f

goto Bigtick_out

;--------

, Tu?
bigtick je prenesená na nulu a jednu chvíli prešlo.

; Reload bigtick a nastaviť flag pre hlavné protizáruku

;--------

movlw 0xFC; 234375 = 0x039387

movwf bigtick_dbl; 0 - 0x039387 = 0xFC6C79

movlw 0x6C

movwf bigtick_hi

movlw 0x79

movwf bigtick_lo

BSF vlajok 1, oznámi Keep_time

Bigtick_out

;--------

; Urobiť prácu, začať obnova

;--------

swapf safe_s, w; načíst stav, reswap křupky

movwf ŠTATÚTU; obnoviť stav

swapf safe_w, f; swap kousíčky v príprave

swapf safe_w, w; pre swap reštaurátorstva w

BCF INTCON, 2; jasné prerušenia vlajky pred spiatočný

retfie, návrat z prerušenia

;--------

; Pováží lookup TABUĽKA

; Ignorovať vysokú bit.
sada = LED nesvieti, jasná = LED na bit0 = spodná LED, bit6 = top LED

;--------

Char_tbl

addwf PCL, f

dt 0xC1, 0xBE, 0xBE, 0xBE, 0xC1, "O"

dt 0xFF, 0xDE, 0x80, 0xFE, 0xFF, "1"

dt 0xDE, 0xBC, 0xBA, 0xB6, 0xCE, "2"

dt 0xBD, 0xBE, 0xAE, 0x96, 0xB9, "3"

dt 0xF3, 0xEB, 0xDB, 0x80, 0xFB, "4"

dt 0x8D, 0xAE, 0xAE, 0xAE, 0xB1, "5"

dt 0xE1, 0xD6, 0xB6, 0xB6, 0xF9, "6"

dt 0xBF, 0xB8, 0xB7, 0xAF, 0x9F, "7"

dt 0xC9, 0xB6, 0xB6, 0xB6, 0xC9, "8"

dt 0xCF, 0xB6, 0xB6, 0xb5 spôsobí, 0xC3, "9"

dt 0xFF, 0xC9, 0xC9, 0xFF, 0xFF, ":"

Char_tbl_end

;--------

; Podprogramy POČIATOČNÝCH TU

;--------

; Jasné dôležité bitov ram

;--------

Ram_init movlw 0x07

movwf kľúče

movlw 0x12; prečo hodiny vždy začať

movwf hodín, v 12:00?

clrf minút

clrf dot_index

clrf digit_index

movlw 0xFC

movwf bigtick_dbl

retlw 0

;--------

; Nevyužité piny som nastavenia, ktoré majú byť výstupy

;--------

Port_init movlw 0x00; všetkých výstupov, b7 = nevyužitú

BSF STATUS, RP0; vybrať pamäte bank1

movwf TRISB; portB ako výstup

BCF STATUS, RP0; návrat do bank0movlw b'00010111 '; portu A má 5 pinů.
Potrebujem 4 vstupy

; B0 = minút, b1 = 10mins, b2 = hodín

; B3 = nepoužitý, b4 = striedanie index

tris PORTA; na jeden prístav

retlw 0

;--------

; Dostat časovač-založené preruší prebiehajúcu

;--------

Timer_init BCF INTCON, 2; jasné TMR0 int flag

BSF INTCON, 7, umožní globálny narušili

BSF INTCON, 5; umožniť TMR0 int

clrf TMR0; jasné, časovač

clrwdt, prečo je to potreba?
Len do toho ..

movlw b'11011000 '; nastaviť časovač.
prescaler (bit3) minút

opcie; poslať w na voľbu.
vygeneruje varovania.

clrf TMR0; spustiť stopky

retlw 0

;--------

; Test pre index v rotácii a skladovať v období period_dup

;--------

Check_index movf PORTA, w; získať štátny prístavný jedna

xorwf vlajky, w; porovnaní s uloženými stave

andlw b'00010000 '; len zaujíma bit 4

btfsc ŠTATÚTU, Z; test na hrane

retlw 0; nie je okraj, rovnako ako posledný

xorwf vlajky, f; zachrániť pre příště

btfsc vlajok 4; test na klesajúcej hrane

retlw 0, musí byť na rastúce hranu

movf period_count, w; vytvoriť pracovnú kópiu

movwf period_dup; nazýva obdobie DUP

clrf period_count, nový začiatok pre budúci rotáciu

clrf digit_index; nastavený na prvá číslica

clrf dot_index; prvom stĺpci

; Vypočítať čas, že nebude váhať ani byť nervózny

; Obdobie sa nezmení, ak nové obdobie je naozaj iný

movf period_calc, w

subwf period_dup, w; nájsť rozdiel

btfss ŠTATÚTU, C; carry flag set znamená požičať

goto Calc_period_neg, musí byť iným spôsobom

sublw 2; prípustné odchýlky = 3

btfss ŠTATÚTU, C; požičiavať nebude preskočiť

incf period_calc; novú hodnotu oveľa väčšia, než Calc

retlw 0

Calc_period_neg addlw 2; prípustné odchýlky = 3

btfss ŠTATÚTU, C; carry vynechá

decf period_calc, ne sebou znamená, že je potrebné zmeniť

retlw 0

;--------

; Změnit LED model založený na stave digit_index a dot_index

;--------

Display_now movlw 0x05

xorwf dot_index, w; test na konci číselného

movlw 0xFF; vzorom pre prázdne stĺpce

btfsc ŠTATÚTU, Z

goto D_lookup_3, potrebuje prázdny

BCF STATUS, C; jasné nosiť pred striedať

rlf digit_index, w; dvojnásobok index, pretože každý

addwf PCL, F; trvá dve inštrukcie

D_10hr swapf hodín, w

goto D_lookup, čo veľký nápor energie

D_1hr movf hodín, w; cítim pri úprave

goto D_lookup; program protizáruku

D_colon movlw 0x0A

goto D_lookup

D_10min swapf minút, w

goto D_lookup

D_1min movf minút, w

goto D_lookup

D_nothing retlw 0

D_lookup andlw b'00001111 '; svléci hi bitov

movwf poąkrábat; rozmnožím to 5 pre vyhľadávanie

addwf nuly, f; tabuľky základne pozície

addwf nuly, f, je to podvod?

addwf nuly, f, myslím, že nie.

addwf nuly, f, myslím, že je zachovanie energie!

btfss ŠTATÚTU, Z; test na nulu

goto D_lookup_2; nie je nula

movf digit_index, f, a to je len test / set vlajky

movlw 0xFF, je to prázdne LED vzorom

btfsc ŠTATÚTU, Z; test, ak je 10 hodín digit

goto D_lookup_3, je to vedúci nulu

D_lookup_2 movf dot_index, w; dostať stĺpce

addwf nuly, w; pridať do číselného základu

call Char_tbl; dostať dot vzorom pre tento stĺpec

D_lookup_3 movwf PORTB; poslať ju na LED

BCF STATUS, C; jasné nosiť vlajku pred striedať

rrf period_calc, w; obdobia / 2 používa pre dot hodiny

addlw 0xF4; odpočítaniu 12 kompenzovať režijné

call oneskoriť; šírka číslic sa toto oneskorenie

incf dot_index, f; prírastok do ďalšieho stĺpca

movlw 0x06; 6 stĺpcov je znak plus priestor

xorwf dot_index, w; Ďalšie číselný test

btfss ŠTATÚTU, Z

retlw 0, nejde o nový číselný

clrf dot_index; nový číselný čas

incf digit_index, f

retlw 0; Display_now urobiť.

;--------

; Krátke prieťah rutinné

;--------

Oneskoriť movwf začiarknite

Delay_loop decfsz zatrhnout, f

goto Delay_loop; w nie je poškodený, takže meškanie

návrate, je potrebné pripomenúť, bez prekládky

;--------

; Test pre klávesov a pohotovosť v prípade potreby upraviť

;--------

Check_keys movf PORTA, w; dostať prístavu "a"

xorwf kľúče, w; porovnaní s predchádzajúcimi

andlw b'00000111 '; iba starostlivosť o tlačidlo kolíky

btfsc ŠTATÚTU, Z; nulu set = žiadna tlačidla

retlw 0; návrat

xorwf kľúče, f; ukladať kľúčové hodnoty

movlw 0x64; pomerne dlhé oneskorenia bude

movwf poąkrábat; predchádzať kľúčové hopsa

Key_delay movlw 0xFF

call oneskoriť

decfsz poąkrábat

goto Key_delay

btfss kľúče, 2; test "minút" tlačidlo

goto Inc_mins

btfss kľúče, 1; test "desiatky" tlačidlo

goto Inc_tens

btfss kľúče, 0; skúšobnej "doba" tlačidlo

goto Inc_hours

retlw 0, musí byť porucha.
jo, jo!

;--------

; Inkrementační desať minút

;--------

Inc_tens movlw 0x0A

movwf poąkrábat; poąkrábat má desať

Inc_tens_loop hovoru Inc_mins

decfsz poąkrábat

goto Inc_tens_loop; ďalšiu minútu pridanej

retlw 0

;--------

; Inkrementační jedna hodina

;--------

Inc_hours movlw 0x12

xorwf hodín, w

btfsc ŠTATÚTU, Z

goto Inc_hours_12

movlw 0x07; tejto časti dostane trochu sentimentálnu

addwf hodín, w

movlw 0x07

btfss ŠTATÚTU, DC

movlw 1

addwf hodiny, f

retlw 0

Inc_hours_12 movlw 0x01

movwf hodín

retlw 0

;--------

; Inkrementační čase založená na vlajky, 1 za zaslané prerušenia rutinné

; Inc_mins slučka používa sa aj čas-stanovenie normálnej

;--------

Keep_time btfss vlajok 1; zápisnice vlajky

retlw 0; to nie je čas

BCF vlajok 1; jasné zápisnice vlajky

Inc_mins movlw 0x07; start incrementing čas

addwf minút, w; pridať 7 minút do Z

btfsc ŠTATÚTU, DC; urobil pridaním 7 spôsobiť číslicu nosiť?

goto Sixty_mins, potom test na hodinu zmeny

incf minút, inak pridajte 1 reálneho

retlw 0; a späť

Sixty_mins movwf minút; uloľte minút

movlw 0x60; test na 60

xorwf minút, w; sa na 60 minút?

btfss ŠTATÚTU, Z

retlw 0, ne?
späť

clrf minút, inak nula minút

goto Inc_hours a inkrementace hodín

;--------

; Koniec podprogramy

; Program začína tu

;--------

Štart call Ram_init; sadu premenných, ktoré je príjemné hodnoty

call Port_init; set port smeroch

call Timer_init; start merač založený prerušiť

;--------

; Hotovo inicializovaná, začiatok nekonečnej slučky.

;--------

;

Circle, začína veľká slučka

;

;--------

; Detekciu pádu na hranu PORTA, 4 určiť rotačné index

; Vypočítať striedanie obdobia a skladovať v period_dup

; Porovnanie s pracovný čas (period_calc) a upraví-li spôsob, ako rôzne

;--------

call Check_index

;--------

, Skontrolujte zobrazenie stavu a zmien v prípade potreby

;--------

call Display_now

;--------

; Check klávesnice a upraviť čas

;--------

call Check_keys

;--------

; Check flag minútu a prírastku času, ak chvíli prešlo

;--------

call Keep_time

;--------

, Páni, to je čas, udržiavať ju v koľajových

;--------

goto Circle, počuli ste toho muža, ísť!

koniec

;--------

; Koniec súboru

;--------
 
firesky1982 Napísal:Kód:

;--------

; MclockT3.asm - upravené na 180 stupeň brush motor

; OK pridajte 8. LED - vyčistený v tabuľke 2 a ďalšie objekty

; WatchDog časovač používaný na zabezpečenie štartu za všetkých powerups

"Vrtuľa" mechanicky skenovaná LED hodiny

; Bob Blick 12. februára 1997

; Pod licenciou GNU General Public License, www.gnu.org

; Žiadne záruky vyjadrené alebo odvodené

; Bob Blick February 18, 2002

;--------

list p = 16F84

radix Hex

include "p16F84.inc"

;--------

; Nezabudnite nastaviť Otryskávanie-time možností: OSC = pravidelné xtal, WDT = ON

; Načasovanie všetkých založených na 4 MHz krystal

;--------

, Sú tieto rovná už patrí do súboru?
niekedy uvidíme pozrieť.

;--------

w EQU 0

f EQU 1

;--------

; Štart dostupnej RAM.

;--------

cblock 0x0C

safe_w; ne temp, používané prerušenia svc

safe_s; ne temp, používané prerušenia svc

period_count; inkrementací každom prerušení

period_dup; kópie period_count bezpečné z prerušenia

period_calc; stabilný po hysteréziou Calc.

vlajok, b2 = int b1 = minútu b4 = hrana

dot_index, ktoré stĺpce sa zobrazia

digit_index; číslicu, ktorá je zobrazená

hodín, v zobrazení formátu, nie je Hex (01-12)

minút, 00 - 59

bigtick_dbl; inkrementací každom prerušení

bigtick_hi

bigtick_lo

kľúče, kľúčové hodnoty

poąkrábat; poąkrábat hodnoty

začiarknite; používané oneskorenie

endc

;--------

; Začiatok ROM

;--------

org 0x00; Začiatok kódu vesmíre

goto Štart

;--------

; Přeruąovací SERVISNÁ rutinné

;--------

org 0x04; vektor prerušenia

Intsvc movwf safe_w; ušetriť w

swapf ŠTATÚTU, W; swap postavenie, w

movwf safe_s; zachrániť postavenie (ohlodávat swap, pamätáš)

;--------

; Implementovať úspory, hneď môžete začať pracovať

; Inkrementační obdobie počítať

;--------

incf period_count, f

btfsc ŠTATÚTU, Z; nula znamená nastaviť náslechového

decf period_count, f

; Jasné WatchDog časovač na zabezpečenie štartu

clrwdt

; 234375 preruší každú minútu.
Prírastok na bigtick každej dobe.

incf bigtick_lo, f

btfsc ŠTATÚTU, Z

incf bigtick_hi, f

btfsc ŠTATÚTU, Z

incfsz bigtick_dbl, f

goto Bigtick_out

;--------

, Tu?
bigtick je prenesená na nulu a jednu chvíli prešlo.

; Reload bigtick a nastaviť flag pre hlavné protizáruku

;--------

movlw 0xFC; 234375 = 0x039387

movwf bigtick_dbl; 0 - 0x039387 = 0xFC6C79

movlw 0x6C

movwf bigtick_hi

movlw 0x79

movwf bigtick_lo

BSF vlajok 1, oznámi Keep_time

Bigtick_out

;--------

; Urobiť prácu, začať obnova

;--------

swapf safe_s, w; načíst stav, reswap křupky

movwf ŠTATÚTU; obnoviť stav

swapf safe_w, f; swap kousíčky v príprave

swapf safe_w, w; pre swap reštaurátorstva w

BCF INTCON, 2; jasné prerušenia vlajky pred spiatočný

retfie, návrat z prerušenia

;--------

; Pováží lookup TABUĽKA

; Ignorovať vysokú bit.
sada = LED nesvieti, jasná = LED na bit0 = spodná LED, bit6 = top LED

;--------

Char_tbl

addwf PCL, f

dt 0xC1, 0xBE, 0xBE, 0xBE, 0xC1, "O"

dt 0xFF, 0xDE, 0x80, 0xFE, 0xFF, "1"

dt 0xDE, 0xBC, 0xBA, 0xB6, 0xCE, "2"

dt 0xBD, 0xBE, 0xAE, 0x96, 0xB9, "3"

dt 0xF3, 0xEB, 0xDB, 0x80, 0xFB, "4"

dt 0x8D, 0xAE, 0xAE, 0xAE, 0xB1, "5"

dt 0xE1, 0xD6, 0xB6, 0xB6, 0xF9, "6"

dt 0xBF, 0xB8, 0xB7, 0xAF, 0x9F, "7"

dt 0xC9, 0xB6, 0xB6, 0xB6, 0xC9, "8"

dt 0xCF, 0xB6, 0xB6, 0xb5 spôsobí, 0xC3, "9"

dt 0xFF, 0xC9, 0xC9, 0xFF, 0xFF, ":"

Char_tbl_end

;--------

; Podprogramy POČIATOČNÝCH TU

;--------

; Jasné dôležité bitov ram

;--------

Ram_init movlw 0x07

movwf kľúče

movlw 0x12; prečo hodiny vždy začať

movwf hodín, v 12:00?

clrf minút

clrf dot_index

clrf digit_index

movlw 0xFC

movwf bigtick_dbl

retlw 0

;--------

; Nevyužité piny som nastavenia, ktoré majú byť výstupy

;--------

Port_init movlw 0x00; všetkých výstupov, b7 = nevyužitú

BSF STATUS, RP0; vybrať pamäte bank1

movwf TRISB; portB ako výstup

BCF STATUS, RP0; návrat do bank0movlw b'00010111 '; portu A má 5 pinů.
Potrebujem 4 vstupy

; B0 = minút, b1 = 10mins, b2 = hodín

; B3 = nepoužitý, b4 = striedanie index

tris PORTA; na jeden prístav

retlw 0

;--------

; Dostat časovač-založené preruší prebiehajúcu

;--------

Timer_init BCF INTCON, 2; jasné TMR0 int flag

BSF INTCON, 7, umožní globálny narušili

BSF INTCON, 5; umožniť TMR0 int

clrf TMR0; jasné, časovač

clrwdt, prečo je to potreba?
Len do toho ..

movlw b'11011000 '; nastaviť časovač.
prescaler (bit3) minút

opcie; poslať w na voľbu.
vygeneruje varovania.

clrf TMR0; spustiť stopky

retlw 0

;--------

; Test pre index v rotácii a skladovať v období period_dup

;--------

Check_index movf PORTA, w; získať štátny prístavný jedna

xorwf vlajky, w; porovnaní s uloženými stave

andlw b'00010000 '; len zaujíma bit 4

btfsc ŠTATÚTU, Z; test na hrane

retlw 0; nie je okraj, rovnako ako posledný

xorwf vlajky, f; zachrániť pre příště

btfsc vlajok 4; test na klesajúcej hrane

retlw 0, musí byť na rastúce hranu

movf period_count, w; vytvoriť pracovnú kópiu

movwf period_dup; nazýva obdobie DUP

clrf period_count, nový začiatok pre budúci rotáciu

clrf digit_index; nastavený na prvá číslica

clrf dot_index; prvom stĺpci

; Vypočítať čas, že nebude váhať ani byť nervózny

; Obdobie sa nezmení, ak nové obdobie je naozaj iný

movf period_calc, w

subwf period_dup, w; nájsť rozdiel

btfss ŠTATÚTU, C; carry flag set znamená požičať

goto Calc_period_neg, musí byť iným spôsobom

sublw 2; prípustné odchýlky = 3

btfss ŠTATÚTU, C; požičiavať nebude preskočiť

incf period_calc; novú hodnotu oveľa väčšia, než Calc

retlw 0

Calc_period_neg addlw 2; prípustné odchýlky = 3

btfss ŠTATÚTU, C; carry vynechá

decf period_calc, ne sebou znamená, že je potrebné zmeniť

retlw 0

;--------

; Změnit LED model založený na stave digit_index a dot_index

;--------

Display_now movlw 0x05

xorwf dot_index, w; test na konci číselného

movlw 0xFF; vzorom pre prázdne stĺpce

btfsc ŠTATÚTU, Z

goto D_lookup_3, potrebuje prázdny

BCF STATUS, C; jasné nosiť pred striedať

rlf digit_index, w; dvojnásobok index, pretože každý

addwf PCL, F; trvá dve inštrukcie

D_10hr swapf hodín, w

goto D_lookup, čo veľký nápor energie

D_1hr movf hodín, w; cítim pri úprave

goto D_lookup; program protizáruku

D_colon movlw 0x0A

goto D_lookup

D_10min swapf minút, w

goto D_lookup

D_1min movf minút, w

goto D_lookup

D_nothing retlw 0

D_lookup andlw b'00001111 '; svléci hi bitov

movwf poąkrábat; rozmnožím to 5 pre vyhľadávanie

addwf nuly, f; tabuľky základne pozície

addwf nuly, f, je to podvod?

addwf nuly, f, myslím, že nie.

addwf nuly, f, myslím, že je zachovanie energie!

btfss ŠTATÚTU, Z; test na nulu

goto D_lookup_2; nie je nula

movf digit_index, f, a to je len test / set vlajky

movlw 0xFF, je to prázdne LED vzorom

btfsc ŠTATÚTU, Z; test, ak je 10 hodín digit

goto D_lookup_3, je to vedúci nulu

D_lookup_2 movf dot_index, w; dostať stĺpce

addwf nuly, w; pridať do číselného základu

call Char_tbl; dostať dot vzorom pre tento stĺpec

D_lookup_3 movwf PORTB; poslať ju na LED

BCF STATUS, C; jasné nosiť vlajku pred striedať

rrf period_calc, w; obdobia / 2 používa pre dot hodiny

addlw 0xF4; odpočítaniu 12 kompenzovať režijné

call oneskoriť; šírka číslic sa toto oneskorenie

incf dot_index, f; prírastok do ďalšieho stĺpca

movlw 0x06; 6 stĺpcov je znak plus priestor

xorwf dot_index, w; Ďalšie číselný test

btfss ŠTATÚTU, Z

retlw 0, nejde o nový číselný

clrf dot_index; nový číselný čas

incf digit_index, f

retlw 0; Display_now urobiť.

;--------

; Krátke prieťah rutinné

;--------

Oneskoriť movwf začiarknite

Delay_loop decfsz zatrhnout, f

goto Delay_loop; w nie je poškodený, takže meškanie

návrate, je potrebné pripomenúť, bez prekládky

;--------

; Test pre klávesov a pohotovosť v prípade potreby upraviť

;--------

Check_keys movf PORTA, w; dostať prístavu "a"

xorwf kľúče, w; porovnaní s predchádzajúcimi

andlw b'00000111 '; iba starostlivosť o tlačidlo kolíky

btfsc ŠTATÚTU, Z; nulu set = žiadna tlačidla

retlw 0; návrat

xorwf kľúče, f; ukladať kľúčové hodnoty

movlw 0x64; pomerne dlhé oneskorenia bude

movwf poąkrábat; predchádzať kľúčové hopsa

Key_delay movlw 0xFF

call oneskoriť

decfsz poąkrábat

goto Key_delay

btfss kľúče, 2; test "minút" tlačidlo

goto Inc_mins

btfss kľúče, 1; test "desiatky" tlačidlo

goto Inc_tens

btfss kľúče, 0; skúšobnej "doba" tlačidlo

goto Inc_hours

retlw 0, musí byť porucha.
jo, jo!

;--------

; Inkrementační desať minút

;--------

Inc_tens movlw 0x0A

movwf poąkrábat; poąkrábat má desať

Inc_tens_loop hovoru Inc_mins

decfsz poąkrábat

goto Inc_tens_loop; ďalšiu minútu pridanej

retlw 0

;--------

; Inkrementační jedna hodina

;--------

Inc_hours movlw 0x12

xorwf hodín, w

btfsc ŠTATÚTU, Z

goto Inc_hours_12

movlw 0x07; tejto časti dostane trochu sentimentálnu

addwf hodín, w

movlw 0x07

btfss ŠTATÚTU, DC

movlw 1

addwf hodiny, f

retlw 0

Inc_hours_12 movlw 0x01

movwf hodín

retlw 0

;--------

; Inkrementační čase založená na vlajky, 1 za zaslané prerušenia rutinné

; Inc_mins slučka používa sa aj čas-stanovenie normálnej

;--------

Keep_time btfss vlajok 1; zápisnice vlajky

retlw 0; to nie je čas

BCF vlajok 1; jasné zápisnice vlajky

Inc_mins movlw 0x07; start incrementing čas

addwf minút, w; pridať 7 minút do Z

btfsc ŠTATÚTU, DC; urobil pridaním 7 spôsobiť číslicu nosiť?

goto Sixty_mins, potom test na hodinu zmeny

incf minút, inak pridajte 1 reálneho

retlw 0; a späť

Sixty_mins movwf minút; uloľte minút

movlw 0x60; test na 60

xorwf minút, w; sa na 60 minút?

btfss ŠTATÚTU, Z

retlw 0, ne?
späť

clrf minút, inak nula minút

goto Inc_hours a inkrementace hodín

;--------

; Koniec podprogramy

; Program začína tu

;--------

Štart call Ram_init; sadu premenných, ktoré je príjemné hodnoty

call Port_init; set port smeroch

call Timer_init; start merač založený prerušiť

;--------

; Hotovo inicializovaná, začiatok nekonečnej slučky.

;--------

;

Circle, začína veľká slučka

;

;--------

; Detekciu pádu na hranu PORTA, 4 určiť rotačné index

; Vypočítať striedanie obdobia a skladovať v period_dup

; Porovnanie s pracovný čas (period_calc) a upraví-li spôsob, ako rôzne

;--------

call Check_index

;--------

, Skontrolujte zobrazenie stavu a zmien v prípade potreby

;--------

call Display_now

;--------

; Check klávesnice a upraviť čas

;--------

call Check_keys

;--------

; Check flag minútu a prírastku času, ak chvíli prešlo

;--------

call Keep_time

;--------

, Páni, to je čas, udržiavať ju v koľajových

;--------

goto Circle, počuli ste toho muža, ísť!

koniec

;--------

; Koniec súboru

;--------
 

Welcome to EDABoard.com

Sponsor

Back
Top