Stránka 1 z 1
opakovane testovanie
Napsal: 05 led 2007, 18:31
od mikollar
zdravim uz si neviem rady ako to spravit
TEL1 MOVLW .4 ;KOLKO KRAT ZAZVONI
MOVWF ZVONI1
OPAK MOVLW B'00000001'
MOVWF PORTB
CALL WAIT
CLRF PORTB
TST1 CALL CAKAJ ; ZISTOVANIE ZDVIHNUTIA MEDZI ZVONENIM
MOVLW .0
MOVWF PORTE
CALL CAKAJ
BTFSC PORTA,5
GOTO START ;DOCASNE, PO DOSADENI MHB8804 ZMENIT NA VYTVORENIE SPOJENIA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DECFSZ ZVONI1,F
GOTO OPAK
potrebujem aby sa cast programu od TST1 po GOTO START opakovala vkuse 3s, po uplinuti 3s (krystal je 15MHz ,ale to si uz dorobym, lavne mi ide o to ako to spravit) aby program pokracoval dalej, dalej v programe uz mam aby sa to cele od TEL1 zopakovalo 4 krát (register ZVONI1),
dakujem za kazdu odpoved skusil som vsetko co mma napadlo ale stale sa mi na tmto mieste porgram sekne
Napsal: 05 led 2007, 19:45
od ViPali
START
;
TEL1
; MOVLW .4 ;KOLKO KRAT ZAZVONI
; MOVWF ZVONI1
bsf ZVONI1,2 .......; dve instrukcie som nahradil jednou, ak bude iny pocet zvoneni pouziju sa dve instrukcie
;
OPAK
; MOVLW B'00000001'
; MOVWF PORTB
bsf PORTB,0 ......; tak ako hore, nastavil som PB0, nieco sa tam robi
CALL WAIT ......; idem cakat
CLRF PORTB .....; vratil som sa a nulujem portB
;
TST1
CALL CAKAJ ; idem cakat a co tam???? ZISTOVANIE ZDVIHNUTIA MEDZI ZVONENIM
; MOVLW .0
; MOVWF PORTE
clrf PORTE ..........; tak ako hore, nulujem portE
CALL CAKAJ ....; opat idem cakat co sa tam robi ?????
BTFSC PORTA,5 ..; vratil som sa z cakania a testujem pin portA,5 preskocim ak je nula
; ahaa ! asi takto
goto w3sec
goto LABEL_1
;
LABEL_2
GOTO START .......; portA,5 nebol nula, tak na zaciatok .... DOCASNE, PO DOSADENI MHB8804 ZMENIT NA VYTVORENIE SPOJENIA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;
LABEL_1
DECFSZ ZVONI1,F ....; portA,5 bol nula tak ZVONI1 o 1 menej
GOTO OPAK ..............; opakovat
;
WAIT
; ... tu cakam, ako dlho???
return ....; navrat z cakania na - clrf portB
;
CAKAJ
; ........ tu tiez cakam, ale cosi pri tom robim, co????
return .....; navrat __1. na clrf portE , __2. na btfsc portA,5
;
w3sec
decf R1 tu vytvoriš sadu dekrementovaní, tak že pri každom prechode cyklu sa register zniži o 1 a potom ďalší a ďalší, čo bude spolu trvať 3sec. Snáď si poradíš
decf R2
decf R3
...
goto LABEL_2 ...; pri každom prechode sa vrati na label_2 alebo ho rovno pošli na START
Otázka znie, čím sa líšia rutiny WAIT a CAKAJ a je portA,5 niekedy nula ? Predpokladám, že na portA,5 je zvonenie, ako dlho trvá? Ak testuješ štyri zvonenia, tak musíš po LABEL_1 čakať na ukončenie zvonenia, potom decrementovať a potom pokračovať v programe.
Napsal: 05 led 2007, 19:51
od mikollar
momentalne su cakaj a wait cakcie slucky cca na 1s ale pri doladovani bude mat kazda iny cas, sluzia na spomalenie procesora pri prepinani multiplexu PORTA,5 je vstup z MUX a PORTE ovlada MUX, PORTA je aj nulovy aj jednotkovy podla toho ci je telefon zdvihnuty alebo nieje, dik za odpoved skusim to
Napsal: 05 led 2007, 20:18
od ViPali
Doplnil som to.
Napsal: 05 led 2007, 20:26
od mikollar
NA PORTA,5 je vstup MUX ktory tam prepja postupne 1 az 7 telefon (ubytok U na odpore a to vyhodnoti ci je tlf zdvihnuty alebo nie) uz to fici dakujem za rady trocha som to upravil na to co potrebujem a ide to mooooooooc dike