[ Sepa011 @ 29.12.2007. 09:46 ] @
Posto u svojim zavrzlamama retko imam potrebe da koristim interapte, ovog puta, jednostavno moram, medjutim :( elem, ovo je parcence seme sa piconjom 876A koji bi trebao da uskoci u obradu stanja na PORTB kada bilo koji od pinova bude 'priheftan' na masu (RB0/INT bi trebao da otera uC u interapt). E, sad, hardverski sve fonkcionise (bilo koji od Cnt pin-ova kada se povuce na Lo, i RB0/INT ode na Lo, medjutim, PIC ne odlazi u interapt rutinu. Evo kako izgleda kostur programa (Proton+) Code: Device 16F876A ALL_DIGITAL true PORTB_PULLUPS false XTAL 8 on_interrupt GoTo Intrpt on_hardware_interrupt GoTo Intrpt Declare LCD_DTPIN PORTC.0 Declare LCD_ENPIN PORTC.4 Declare LCD_RSPIN PORTC.5 Declare LCD_INTERFACE 4 Declare LCD_LINES 2 Declare LCD_TYPE ALPHA Declare RSIN_TIMEOUT 60000 Declare RSIN_PIN PORTC.7 Declare RSIN_MODE true Declare SERIAL_BAUD 1200 '**************************************************************** '* Definicije pinova * '**************************************************************** Symbol Cnt1 PORTB.1 Symbol Cnt2 PORTB.2 Symbol Cnt3 PORTB.3 Symbol Cnt4 PORTB.4 Symbol Cnt5 PORTB.5 Symbol Cnt6 PORTB.6 Symbol BackLight PORTA.5 Symbol Light PORTA.0 Symbol SenseRX PORTB.7 Symbol GIE = INTCON.7 Symbol INTEDG = OPTION_REG.1 Symbol INTF = INTCON.1 Symbol INTE = INTCON.4 '**************************************************************** '* Promenljive * '**************************************************************** . . . '**************************************************************** '* Konstante * '**************************************************************** . . . Clear DelayMS 100 INTEDG = 0 INTF = 0 Enable Interrupt GoTo Glavni '**************************************************************** '* Podprogrami * '**************************************************************** . . . . '**************************************************************** '* Obrada interapta * '**************************************************************** Intrpt: GIE = 0 Promena = 1 ZaUpis = 1 Stanje = PORTB INTF = 0 GIE = 1 Context Restore '**************************************************************** '* Glavni program * '**************************************************************** Glavni: . . . If Promena = 1 Then If Stanje.1 = 0 Then Inc Counter1 Promena = 0 EndIf If Stanje.2 = 0 Then Inc Counter2 Promena = 0 EndIf If Stanje.3 = 0 Then Inc Counter3 Promena = 0 EndIf If Stanje.4 = 0 Then Inc Counter4 Promena = 0 EndIf If Stanje.5 = 0 Then Inc Counter5 Promena = 0 EndIf If Stanje.6 = 0 Then Inc Counter6 Promena = 0 EndIf Stanje = $FF EndIf Inc Brojac ' Da li je proslo dovoljno vremena da se upisu podaci u EEPROM If Brojac = $FFFE And ZaUpis = 1 Then GoSub UpisiEE EndIf If Brojac = $FFFE And ZaUpis = 0 Then Brojac = 0 EndIf GoTo Petlja Kraj: End Ehm, jos da prikacim i parce seme, al' to drugi put. |