RE:Návrch programu pro PIC16F628
Milan Kratochvíl
milan.krata@quick.cz
Středa Červen 2 14:19:07 CEST 2004
No nevim ale jako zacatecnik so dovolim doporucit vymazani registru PIE a
taky jsem mel docela dost problemu dokud jsem pri preruseni nezalohoval W,
STATUS, PCLATH a FSR. vse jsem musel nastavit tak aby to vyhovovalo
preruseni a potom vse zase obnovit. A taky zde neni patrno jestli volane
procedury nuluji priznakovy bit daneho preruseni.
Ahoj Milan
>> -----Original Message-----
>> From: Milan Cizek [mailto:Cizek.Milan@seznam.cz]
>> Sent: Wednesday, June 02, 2004 1:46 PM
>> To: hw-list@mailman.nethouse.cz
>> Subject: Návrch programu pro PIC16F628
>>
>>
>> Ahoj,
>> zacinam se ucit na procesoru PIC16F84, ke kteremu mam
>> pripojene 2xLED (RA2,RA3), 2xVentilator (RA0,RA1 pro rizeni
>> a RB4,RB5 pro kontrolu otaceni) a 1x DS18B20 cidlo (RB0).
>> PIC USART je pak propojeny s PC. Predem upozornuji, ze jsem
>> v tomto oboru docela laik, nevim tedy jestli je muj navrh
>> spravny... BANK0/1 jsou makra.
>>
>> #DEFINE DSWIRE PORTB,0 ; DS
>> sensors 1-Wire Bus
>>
>> ;-----/ Inicializace procesoru
>> /--------------------------------------
>>
>> INIT movlw b'00000111' ; vypnout komparátory
>> movwf CMCON ; W -> CMCON
>>
>> BANK1
>> movlw b'01111' ; zápis do reg. W (RA4-0)
>> movwf TRISA ; W -> TRISA
>> movlw b'00000000' ; zápis do reg. W (RA7-0)
>> movwf TRISB ; W -> TRISB
>>
>> movlw .25 ; 9600 Bd pri 4.000 MHz XTAL
>> movwf SPBRG ; W -> SPBRG
>> bsf TXSTA,BRGH ; nasatvit High speed
>> bsf TXSTA,TXEN ; transmit enabled
>> BANK0
>> bsf RCSTA,SPEN ; serial port enabled
>> bsf RCSTA,CREN ; continuous receive
>>
>> movlw b'00110000' ; povolit vybraná přerušení
>> movwf PIE1 ; W -> PIE1
>> movlw b'11011011' ; povolit vybraná přerušení
>> movwf INTCON ; W -> INTCON
>>
>> bsf DSWIRE ; 1-Wire Bus, neaktivní v H
>>
>>
>> Problem mam s tim, ze jakmile se tento blok dokonci, zacne
>> se provadet preruseni a stále dokola, takze se mi samotny
>> program ani nezacne provadet. Když se to pokusim krokovat,
>> tak se mi zavola IH_DS, ale jen 1x, protože v tele
>> podprogramu ten priznak vynuluji. GIE je v te době také 0.
>> Proc se mi to cykli? Nemelo by to z preruseni vypadnout a pokracovat?
>>
>> ;-----/ Obsluha přerušení
>> /-------------------------------------------
>>
>> org 4
>> movwf TEMP_W ; záloha reg. W
>> swapf STATUS,W ; registr STATUS -> W
>> movwf TEMP_S ; záloha reg. STATUS
>>
>> ; vlastní kód přerušeni
>> BANK0
>> movlw PORTB ; aktualní PORTB -> W
>> btfsc INTCON,INTF ; RB0/INT
>> call IH_DS
>>
>> btfsc PIR1,RCIF ; USART RX
>> call IH_USART_RX
>>
>> btfsc PIR1,TXIF ; USART TX
>> call IH_USART_TX
>>
>> btfss INTCON,RBIF ; RB7..RB4
>> goto $+5
>> btfsc W,4 ; FANCTRL1
>> call IH_FANCTRL1 ; prozatím neimplementováno
>> btfsc W,5 ; FANCTRL2
>> call IH_FANCTRL2 ; prozatím neimplementováno
>>
>>
>> swapf TEMP_S,W ; původní STATUS -> W
>> movwf STATUS ; navrácení STATUS
>> swapf TEMP_W,f
>> swapf TEMP_W,W ; návrat původního W
>> retfie
>>
>> Diky za pomoc. Jen doufam, ze nejsem uplne mimo.
>> Milan
>> ____________________________________________________________
>> Příjemný design. Příjemnější cena! SonyEricsson T105 již od
>> 577 Kč. www.oskar.cz
>> http://ad.seznam.cz/clickthru?spotId=74856
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> HW-list@mailman.nethouse.cz
>> http://nethouse.cz/mailman/listinfo/hw-list
>>
>>
Další informace o konferenci Hw-list