www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Carry flag

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Mercury
Član
Član



Pridružen-a: Sre 19 Nov 2003 19:40
Prispevkov: 32
Aktiv.: 0.14

PrispevekObjavljeno: Sob Jan 17, 2004 11:11 pm    Naslov sporočila:  Carry flag Odgovori s citatom

Pozdravljeni,
torej tule ravnokar doživljam en glavobol ker mi ta zadeva s carry flag-om ne gre in ne gre v glavo. Torej, poglejte si tale primer

temp EQU 0x20 ; pač en začasen register

movlw 0x20
movwf temp
movlw 0x10
subwf temp,1

Zakaj je tu carry flag postavljen na 1????? Saj sploh ni prišlo do overflowa! Dosedaj sem delal s AVR-ji, kjer program ki naredi isto stvar postavi carry na 0:

ldi r16,0x20
subi r16,0x10

Torej kaj se sploh dogaja s carry flag-om pri PICih pri odštevanju???
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Jan 18, 2004 12:29 pm    Naslov sporočila:   Odgovori s citatom

Mercury,

Sem kar pripel del pdf-ja opisa STATUS registra. Meni je običajno orginalna dokumentacija za določen PIC najboljša pomoč. (priporočam ti, da si jo snameš z mikrochipove domače strani) Sicer v pomenu instrukcij med pici ni razlik se pa razlikujejo po število registrov, strani, število splošno namenskih registrih(ram) ter lokacij le teh. Torej pri odštevanju je C postavljen, če je rezultat 0 ali pa je pozitiven.

lp
Silvo



carry.jpg
 Opis:
 Velikost datoteke:  16.83 KB
 Pogledana:  31 krat

carry.jpg



_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PriSon
Neznanec
Neznanec



Pridružen-a: Pon 25 Apr 2005 19:26
Prispevkov: 2
Aktiv.: 0.01

PrispevekObjavljeno: Čet Maj 19, 2005 10:48 pm    Naslov sporočila:   Odgovori s citatom

Lep pozdrav vsem skupaj! Sem novo pečen uporabnik! tako na hitro nisem našel teme predstavise--> torej se tukaj predstavljam!

Sem študent mehatronike v MB na fakuleteti za strojništvo! Kot vam že beseda strojništvo pove svoje sem več ali manj laik na področju programiranja! A vendar sem se podal v te vode! Pri tem mi je veliko pomagal sampi!! Hvala sampi!

Napsiat bi mogel sledeči program:
Citiram:
Izdelajte program, ki bo s pomočjo senzorjev štel število oseb v nekem prostoru. Prostor ima ločen vhod in izhod. Na vsakem od njiju je nameščen senzor, ki zazna prehod osebe. Program naj spremlja število trenutno prisotnih oseb v prostoru in trenutno stanje izpisuje preko serijskega vmesnika. Število oseb v prostoru je lahko večje od 10 a manjše od 100.


No ok zadevo sem napisal...seveda sem si malo pomagal s programi od kolegov, ampak zares minimalno! Nakar sem to zadevo šel zagvarjat...in mi reče učitelj, da tega nisem sam pisal ker nisem znal tole:

Citiram:
DOL ;IZSTOP OSEBE
BTFSS PORTB,ST2 ;CE JE TIPKA2 IZKLOPLJENA(1)
GOTO DOL ;CAKAMO DA SE TIPKA IZKLOPI(DOKLER JE 0)
DECF ENICE,1 ; ENICE odstejemo 1
BTFSS ENICE,7 ; TESTIRAMO 7. BIT V ENICE (CE JE NA 1 SMO ENICE ZMANJSALI POD 0, KAR PA NI MOGOCE-->TOREJ PRESKOCIMO SEND)
;DVOJIŠKI KOMPLEMENT---> KAKO BREZ DODATNEGA BITA LAHKO VIDIMO, CE JE STEVILO NEGATIVNO
;LSB---less significant bit
;MSB---most significan bit---tisti cisti na levi strani ki ima največjo tezo
;pri 8 bitnem podatku je tisti najboloj na levi sedmi bit (128-) (128-64-32-16-8-4-2-1)
;najmanj pomemben pa nulti tisti s tezo 1
;torej je 5 dvojiško= 00000101
;1+4=5
;-5=11111010+1=11111011
; torej pri predznacbih vrednostih tako vidimo, ce je negativno predznacena!!!!

GOTO SEND; CE JE 7. BIT 0, GREMO NA SEND

DECF DESETICE,1 ; DESETICE--
MOVLW 9; V W-REG NALOZIMO 9
MOVWF ENICE; V ENICE NALOZIMO 9

BTFSS DESETICE,7 ;TESTIRAMO 7. BIT V DESETICE
;(CE SMO DESETICE ZMANJSALI POD 0, KAR PA NI MOGOCE--->TOREJ PRESKOCIMO SEND)
GOTO SEND ; CE JE 7. BIT 0, GREMO NA SEND

; CE JE 7. BIT 1, POSTAVIMO DESETICE NA 0 (KER SMO JIH ZMANJSALI POD 0)
;POSTAVIMO ENICE NA 0 (CE NE BI NAM PRI VREDNOSTI 00
;---> OB PRITISKU NA TIPKO DOL IZPISALO 09)

MOVLW 0; V W-REG NALOZIMO 0
MOVWF DESETICE; V DESETICE DAMO 0
MOVWF ENICE; V ENICE DAMO 0

GOTO SEND; GREMO NA SEND


..torej vprašanje je bilo zakaj testiram 7 bit pomožnega registra enice oz. desetice! Nakara odgovorim, da se pač pri negativno predznačeni vrednosti postavi na 1---> iz tega sledi pač, da naj preskoči send in nadaljuje testiranje desetice..., če pa so tudi te negativno predznačene...pač izpisuje preko serijskega 00! Ql...nakar me vpraša ZAKAJ se na 1 postavi???
Nakar mi je neke govoril o dvojsikem komplementu--> razlaga je v komentarju (, ki mi jo je dal kolega sampi)! Ok si jaz pogledam ta komplment---> čez 10 min ponovno zagvorim...in mu pač razložim, da je to zares teoretsko ozadje (kot strojnik tega nisem vedel, ker se tega nismo NIKOLI učili)!!! Seveda mu moj odgovor ni bil čisto po volji!

Torej Vas vprašam kaj bi mu točno mogel odgovoriti!!?? Grr...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 20, 2005 6:25 am    Naslov sporočila:   Odgovori s citatom

Citiram:
;(CE SMO DESETICE ZMANJSALI POD 0, KAR PA NI MOGOCE--->TOREJ PRESKOCIMO SEND)


Saj si tukaj napisal odgovor.

Zgoraj odštevaš 1 od regista DESETICE

Koda:

decf DESETICE,f         ;desetice -1


Torej ko vrednost v registru DESETICE pride do 0 (binarno b'00000000') ter temu registru odštejemo še 1 je v njem stanje 255 oz. binarno b'11111111'. Razlog zakaj je 7 bit 1. Glede samega programa pa še tole pojasnilo. V registru DESETICA ni nikoli vrednost večja od 9 razen ko je le ta prekoračen v negativno. Ker instrukcija DECF postavlja le "Z" (zero) bit STATUS regista je pač to ena iz med možnosti kako ugotoviti kdaj je v registru vrednost izven meje 9-0.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PriSon
Neznanec
Neznanec



Pridružen-a: Pon 25 Apr 2005 19:26
Prispevkov: 2
Aktiv.: 0.01

PrispevekObjavljeno: Pet Maj 20, 2005 5:11 pm    Naslov sporočila:   Odgovori s citatom

Torej razmišljam dobro Smile!

Hvala!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group