11-27-2018, 08:31 PM
Pozdrav svima.Nisam nesto odmakao u programiranju,probao nesto ali neide pa ako neko moze i ako ovo neoduzima vreme racite mi sta da izmenim.Ovo je neki gorov kod tajmera koji sam prepravio i na kome sam hteo da dodam da pokaze koliko uSek traje neka merioda.Probao ovo nabrzinu ali vidim da nesto neide.Napisao sam da dok je porta.0=1
tj dok traje taj pozitivni deo koji merimo odbrojava mS=mS+1 i kad vise nebude porta.0 na 1 onda da ispise koliko je izbrojao ali ... nece. Probao sam samo u proteusu ovako:
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 3
DEFINE LCD_LINES 2
pause 100
mS Var Word 'Promenljiva za milisekunde
TRISA=%00000011
Inicijalizacija:
INTCON.5 = 0 'Onemoguci TMR0 prekide
OPTION_REG.0 = 0
OPTION_REG.1 = 0
OPTION_REG.2 = 0
OPTION_REG.3 = 0
OPTION_REG.5 = 0 'Izaberi Interni takt
OPTION_REG.7 = 1
TMR0 = $FF 'Postavi vrednost TMR0
INTCON.5 = 1 'Omoguci TMR0 prekide
INTCON.7 = 1 'Omoguci sve prekide
ON INTERRUPT goto Int_Sub
Pocetak:
lcdout $FE, $80, "BROJ=" ,DEC4 Ms
pause 100
GOTO POCETAK
'------Podprogram obrade prekida-----------------------
Disable
Int_Sub:
IF PORTA.0=1 THEN ' kad se pojavi perioda koju merimo
INTCON.7 = 0
If INTCON.2 and INTCON.5 Then
INTCON.2 = 0
mS = mS + 1
ENDIF
EndIf
INTCON.7 = 1 'Omoguci prekide
INTCON.5 = 1 'Omoguci prekide
Resume 'Vrati se iz rutine prekida
End
tj dok traje taj pozitivni deo koji merimo odbrojava mS=mS+1 i kad vise nebude porta.0 na 1 onda da ispise koliko je izbrojao ali ... nece. Probao sam samo u proteusu ovako:
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 3
DEFINE LCD_LINES 2
pause 100
mS Var Word 'Promenljiva za milisekunde
TRISA=%00000011
Inicijalizacija:
INTCON.5 = 0 'Onemoguci TMR0 prekide
OPTION_REG.0 = 0
OPTION_REG.1 = 0
OPTION_REG.2 = 0
OPTION_REG.3 = 0
OPTION_REG.5 = 0 'Izaberi Interni takt
OPTION_REG.7 = 1
TMR0 = $FF 'Postavi vrednost TMR0
INTCON.5 = 1 'Omoguci TMR0 prekide
INTCON.7 = 1 'Omoguci sve prekide
ON INTERRUPT goto Int_Sub
Pocetak:
lcdout $FE, $80, "BROJ=" ,DEC4 Ms
pause 100
GOTO POCETAK
'------Podprogram obrade prekida-----------------------
Disable
Int_Sub:
IF PORTA.0=1 THEN ' kad se pojavi perioda koju merimo
INTCON.7 = 0
If INTCON.2 and INTCON.5 Then
INTCON.2 = 0
mS = mS + 1
ENDIF
EndIf
INTCON.7 = 1 'Omoguci prekide
INTCON.5 = 1 'Omoguci prekide
Resume 'Vrati se iz rutine prekida
End