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