Potřeboval bych pomoc s jednim program je to jednoduchý ale furt mi to hází chybkya to na konci kdy testuju Carry
někde v tomhle je zakopanej pes ale nevim... Když to pustim tak běží cykl čísel od 0 do F, ale když na dipu nastavim nějakou hodnotu DIp=portA tak to doběhne do konce a zhroutí se toKód:subwf portA btfsc Carry![]()
Původně odeslal Zadani
Kód:;------------------------------------------------------------------ ; PREDDEFINOVANE REGISTRY ;------------------------------------------------------------------ RTCC equ 1h ;registr RTCC Option_reg equ 81h ; Option registr PCL equ 2h ;registr PCL (pro BCL code) SWR equ 3h ;regist stavoveho slova portA equ 5h ;port A portB equ 6h ;port B IntCon equ 0Bh ;registr pro preruseni w equ 0h ;pracovni registr W f equ 1h ;pomocny registr F RTIF equ 2h #DEFINE Carry SWR,0 ;indikuje preteceni carry flag #DEFINE Zero SWR,2 ;indikuje nulu #DEFINE RP0 SWR,5 ;banka registru 0 ;----------------------------------------------------------------- ; PROMENNE ;----------------------------------------------------------------- Krat equ 8h ;pocet cyklu opakovani pro spozdeni Citac equ 10h ;adresa citace Cislo equ 11h ;adresa bunky se zobraz. cislem Dip equ 12h ;----------------------------------------------------------------- ; OBSLUZNE PODPROGRAMS ;----------------------------------------------------------------- org 0 goto Start ;skok na hlavni telo programu ;-------[Zasobnik se zobrazovacem cisel na 7xSeg]----------------- Segment addwf PCL,f ;soucet prg.count a cisla retlw 0C0h ;0 retlw 0F9h ;1 retlw 0A4h ;2 retlw 0B0h ;3 retlw 099h ;4 retlw 092h ;5 retlw 082h ;6 retlw 0F8h ;7 retlw 080h ;8 retlw 090h ;9 retlw 088h ;A retlw 083h ;B retlw 0C6h ;C retlw 0A1h ; D retlw 086h ;E retlw 08Eh ;F ;-------[Spozdeni generovane casovace bez preruseni]-------------- Tdelay movwf Citac Tdel0 clrf RTCC bcf IntCon,RTIF Tdel1 btfss IntCon,RTIF goto Tdel1 decfsz Citac,1 goto Tdel0 return ;----------------------------------------------------------------- ; HLAVNI KOD PROGRAMU ;----------------------------------------------------------------- Start bsf RP0 ;prepne na banku registru 1 movlw b'11000111' ;nastavi fosc/4 do RTCC, 111 = 1:256 movwf Option_reg ;presune do Option_reg clrf portB ;nastavi port pro vystup bcf RP0 ;prepne na banku registru 0 Opak clrf Cislo ;nastavi pocatecni hodnotu cisla Opak1 movf Cislo,w ;prenos hodnoty v reg. Cislo -> w call Segment ;volani pro prevedeni cisla movwf portB ;zobrazeni cisla na 7xSegment movlw Krat ;nastaveni poctu cyklu call Tdelay ;volani spozdeni incf Cislo,f ;inkrementace reg. Cislo o 1 movf Cislo,w ;predani hodnoty z reg. Cislo -> w movf portA,f ; nepouzivat pro testovani ;---------------------------------------------------------------- subwf portA ; result=f-w, jestlize (result < 0) pak Carry=0 btfsc Carry ; pokud je zaporne tak preskoci goto Opak1 goto Opak ;pokud konec tak zpet do nuly ;-------[Konec]--------------------------------------------------- end