Jestli existuje, to nevím, ale v řadě 16F je jedno, jestli napíšeš
movf NECO,w
nebo
U řady 18F už to ale nefunguje
A asi to bude něco jako banksel, pagesel, bc, bnc, bz, bnz, skpc, skpnc, tstf atd.
Jestli existuje, to nevím, ale v řadě 16F je jedno, jestli napíšeš
movf NECO,w
nebo
U řady 18F už to ale nefunguje
A asi to bude něco jako banksel, pagesel, bc, bnc, bz, bnz, skpc, skpnc, tstf atd.
Jak víš v asm nepíšu, jen mě to zajímalo. Takže asi nějaká pseudoinstrukce kterou překladač vezme.
Je to pseudoinstrukce, která by se neměla používat. Když jsem si natáhl výše uvedený kód do projektu, tak mi to ale překvapivě assembler interpretoval jako návěští, nikoliv jako instrukci. proto jsem o tom začal.
Je to jedno, protože MOVFW je direktiva. Tzn. pokud se koukneš na zkompilovaný HEX, tak z MOVFW C se stane standardní MOVF C,W.
Edit: Jankop byl rychlejší
me se to chova jako klasicky MOVF ADRESH,W
a jinak varovani na pseudoinstrukci
Warning[204] I:\PIC\ZKOUSKA\FIK.ASM 112 : Found pseudo-op in column 1. (MOVFW)
a este jiz drive zmineny nastavovani GO + zapnuti A/D
The Go/Done bit must not be set in the same cycle as the Enable bit.
Skusil som to prave aj s tym cakanim po prehodeni portu, ale stale sme pri tom istom probleme. Jeden potak ovlada jednu diodu, druhy obe diody. Som z toho uz jelen. Podla mna tam je vsetko spravne, netusim preco mu sibe
[code]PROGRAM
CALL PREVOD1
CALL PREVOD2
GOTO PROGRAM
CAKAJ
MOVWF C1
DECFSZ C1
GOTO $-1
RETURN
PREVOD1
MOVLW B’11000001’ ; 1. VSTUP
MOVWF ADCON0
MOVLW .255
CALL CAKAJ
BSF ADCON0,2
BTFSC ADCON0,2 ;cakanie na ukoncenie prevodu
GOTO $-1
MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON
INCF ON
DECFSZ ON
GOTO $+2
GOTO $+4
MOVFW ON
BSF LED0
CALL CAKAJ
BCF LED0
MOVLW .255
CALL CAKAJ
RETURN
PREVOD2
MOVLW B’11001001’ ; 2.VSTUP
MOVWF ADCON0
MOVLW .255
CALL CAKAJ
BSF ADCON0,2
BTFSC ADCON0,2 ;cakanie na ukoncenie prevodu
GOTO $-1
MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON
INCF ON
DECFSZ ON
GOTO $+2
GOTO $+4
MOVFW ON
BSF LED1
CALL CAKAJ
BCF LED1
MOVLW .255
CALL CAKAJ
RETURN
END[/code]
Mě už to tak připadá, že je chyba mezi klávesnicí a židlí
Prave som odstranil to “PWM” a dal som tam len zasvietenie a zhasnutie. A robi to zase neco zaujimave . Prvy potak OK, prva ledka sa zasvieti, pokial to prekroci hodnotu b’01000000’, ale niekde pri b’11111111’ uz je zase zhasnuta a netusim preco… Druhy potak je kludny kym sa s nim nedostanem na hodnotu b’01000000’ a zase niekde pri vysokych hodnotach urobi to, ze zasvieti obe ledky. Hotovy som !
[code]PROGRAM
CALL PREVOD1
CALL PREVOD2
GOTO PROGRAM
CAKAJ
MOVWF C1
DECFSZ C1
GOTO $-1
RETURN
PREVOD1
MOVLW B’11000001’ ; 1. VSTUP
MOVWF ADCON0
MOVLW .255
CALL CAKAJ
BSF ADCON0,2
BTFSC ADCON0,2 ;cakanie na ukoncenie prevodu
GOTO $-1
MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON
BTFSS ON,6
GOTO $+3
BSF LED0
RETURN
BCF LED0
RETURN
PREVOD2
MOVLW B’11001001’ ; 2.VSTUP
MOVWF ADCON0
MOVLW .255
CALL CAKAJ
BSF ADCON0,2
BTFSC ADCON0,2 ;cakanie na ukoncenie prevodu
GOTO $-1
MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON
BTFSS ON,6
GOTO $+3
BSF LED1
RETURN
BCF LED1
RETURN
END[/code]
Nebylo by jednodušší vykašlat se na LEDky a připojit tam LCD a sledovat přímo stav registru ADRESH a ADRESL?
A pokud budes sledovat BTFSS ON,6 tak LEDka 4x změní svůj stav
ach jo, furt patlas ty dva kanaly do sebe, nejlepsi bude udelat nakou optickou signalïzaci ze A/D opravdu funduje, but jak rikal honza , nebo jestli mas volnej portB tak si nastav 8bit prevot (ten uz vlastne mas,snad)a zapis to na nej (na PortB ,8x led),
a za dalsi pokud to mas takle ve smycce muze to problikava tak rychle ze to vidis jako ze sviti,skus tam dat pauzu mezi mereni a testuj ten 6 bit
CALL PREVOD1
call pause_50ms
CALL PREVOD2
call pause_50ms
GOTO PROGRAM
Ad prevod sam o sebe funguje, uz som to skusal s tymi 8-mimi LED-kami na B-porte a fungovalo uzasne. Dokonca ked obmedzim program LEN na jeden alebo LEN na druhy kanal, tak funguje v poriadku, problem to robi v kombinacii kanalov. (
hm, mozna to bude delat to tvoje kouzelny PWM kterymu nak nerozumim, nebo prepinani kanalu, kanakly prepinej jenom nastavovanim prislusnejch bitu pro volbu kanalu a ne zapisem do celyho registru + cekani Tacq (20uS),
a skus jednodusi pwm
[code]MOVFW ADRESH ;Adresl do pracovneho reg.
MOVWF ON
bsf LED1
PWM1 nop
nop
decfsz ON,F
GOTO $-3
bcf LED1[/code]
sice to bude mozna poblikavat (nebo skus pak vyhodit ty nopy) ale skus to, a delat bordel kdyz tam bude 0 , uvidis
Jsem si “sehnal” 16F88 a s LCD to funguje tak jak má, takže je chyba, jak jsem už jednou napsal, mezi klaesnicí a židlí.
JJ, bola chyba tam a uz aj presne viem, ze kde - potencimeter. Funguja krasne 2 kanaly nezavisle na sebe a nepotrebuju ani ziadne spozdenie. Dakujem vsetkym za pomoc
Takze za to muze potak JooO ? rozmontovat mrtvy !
aspon ze tak
poradí tu někdo?
polozi tu nekdo otazku ?
Zdarec určitě ano su rad že se někdo ozval chtěl bych trochu poradit s AD převodníkem u 16F88 přes AN1 a AN0 snímám napětí na potenciometrech zapojených jako děliče napětí problém mám vtom že se mě navzájem ovlivňují referenční napětí mám Vdd napájení procesoru je 3.3V
obcas by neuskodila carka ci tecka . v tomto tematu si myslim je maximum k AD prevodniku . skontroluj si spravne prepinani kanalu , dodrzeni cekacich casu mezi prepinanim kanalu / spousteni AD prevodu atd. mas tu funkcni kody tak si je pornvnej s tim tvym . jinak bez tveho kodu ti moc neporadime