UPDATE:
ovako radi...
Prikacena izmijenjena sema.
Code: Select all
TRISB = %10000000
SYMBOL LED = PORTB.6
Symbol SW = PORTB.7
start:
LED = ~SW
PAUSE 1000
goto start
Jel iko zna zasto ovako radi a onako ne radi?
Moderators: pedja089, stojke369, [eDo], trax
Code: Select all
TRISB = %10000000
SYMBOL LED = PORTB.6
Symbol SW = PORTB.7
start:
LED = ~SW
PAUSE 1000
goto start
Code: Select all
@ DEVICE pic16f84a,HS_OSC,WDT_OFF,PROTECT_OFF
SYMBOL LED = PORTB.6
SYMBOL SW = PORTB.7
input sw
output led
PORTB = 0
loop:
if sw = 0 then
led = 1
else
led = 0
endif
pause 1000
goto loop
end
Code: Select all
@ DEVICE pic16f84a,HS_OSC,WDT_OFF,PROTECT_OFF
symbol sw = portb.5
input sw
a var byte
loop:
if sw = 0 then gosub st
pause 100
goto loop
st:
if sw = 1 then a = (a+ 1)
LCDOUT $FE,1,a
return
end
Code: Select all
@ DEVICE pic16f84a,HS_OSC,WDT_OFF,PROTECT_OFF
symbol sw = portb.5
input sw
a var byte
a=0
pause 500
lcdout $fe, 1
loop:
if sw=0 then
pause 10
a=a+1
lcdout $fe, $80, a
goto loop
end
Code: Select all
SYMBOL LED=PORTB.7
SYMBOL TASTER=PORTB.0
OUTPUT LED
INPUT TASTER
NovoStanje var bit
StaroStanje var bit
starostanje = taster ' ovde se uzima pocetno stanje, tj stanje kada je taster pusten
Pocetak:
novostanje = taster 'OVDE SE UZIMA TRENUTNO STANJE NA TASTERU
if novostanje<starostanje then ' OVDE SE UPOREDJUJU STANJA. AKO JE TASTER STISNUT TADA JE NOVO STANJE JEDNAKO 0 I SAMIM TIM JE MANJE OD STAROG STANJA
HIGH led 'PALI LED ovde samo ubaci a=a+1
PAUSE 500 'PAUZA POLA SEKUNDE
LOW LED 'GASI LED
ENDIF
STAROSTANJE=NOVOSTANJE 'OVAJ RED JE POTREBAN IZ RAZLOGA DA PRI PONOVNOM NAILASKU NA IF PROMENLJIVA NNOVO STANJE NE BI BILA MANJA OD STAROG STANJA. U OVOM SLUCAJU SE IZJEDNACAVAJU. I TAK KADA SE PROMENI STANJE SA 1 NA 0 ONDA CE SE LEDICA UPALITI
GOTO POCETAK
END
Code: Select all
'==================Definisanje======================
@ DEVICE pic16f84a,HS_OSC,WDT_OFF,PROTECT_OFF
define OSC 4
symbol Pgmode = PORTB.1
SYMBOL Led1 = PORTB.4
symbol Led2 = PORTB.5
SYMBOL RX = PORTA.2
SYMBOL TX = PORTA.3
INPUT Pgmode
INPUT RX
OUTPUT Led1
OUTPUT Led2
OUTPUT TX
Ulaz var byte[15]
BPS_p con 2
Izlaz var byte[15]
PORTA = 0
PORTB = 0
'==============Pocetak===============
Pocetak:
if pgmode = 0 then
gosub Program_mode
else
gosub normal_mod
endif
goto pocetak
'==============Program Mod================
Program_mode:
high led1
serin rx,bps_p,100,Program_mode,ulaz[1],ulaz[2],ulaz[3],ulaz[4],ulaz[5],ulaz[6],ulaz[7],ulaz[8],ulaz[9],ulaz[10],ulaz[11],ulaz[12],ulaz[13],ulaz[14],ulaz[15]
'Tabela za snimanje primljenih podataka u eeprom pic16f84 od adrese 0 - 14
write 0,ulaz[1]
write 1,ulaz[2]
write 2,ulaz[3]
write 3,ulaz[4]
write 4,ulaz[5]
write 5,ulaz[6]
write 6,ulaz[7]
write 7,ulaz[8]
write 8,ulaz[9]
write 9,ulaz[10]
write 10,ulaz[11]
write 11,ulaz[12]
write 12,ulaz[13]
write 13,ulaz[14]
write 14,ulaz[15]
pause 100
'trebalo bi da je sve snimljeno :)
serout tx,bps_p,["OK"] 'Posalji OK ako jeste
low led1
goto pocetak
led2 = 1
Normal_mod:
read 0,izlaz[1]
read 1,izlaz[2]
read 2,izlaz[3]
read 3,izlaz[4]
read 4,izlaz[5]
read 5,izlaz[6]
read 6,izlaz[7]
read 7,izlaz[8]
read 8,izlaz[9]
read 9,izlaz[10]
read 10,izlaz[11]
read 11,izlaz[12]
read 12,izlaz[13]
read 13,izlaz[14]
read 14,izlaz[15]
serout tx,bps_p,[izlaz[1],izlaz[2],izlaz[3],izlaz[4],izlaz[5],izlaz[6],izlaz[7],izlaz[8],izlaz[9],izlaz[10],izlaz[11],izlaz[12],izlaz[13],izlaz[14],izlaz[15]]
pause 1000
goto pocetak
Code: Select all
'==================Definisanje======================
@ DEVICE pic16f84a,HS_OSC,WDT_OFF,PROTECT_OFF
define OSC 4
DEFINE I2C_SLOW 1
symbol Pgmode = PORTB.1
SYMBOL Relej = PORTB.3
SYMBOL Led1 = PORTB.4
symbol Led2 = PORTB.5
SYMBOL RX = PORTA.2
SYMBOL TX = PORTA.3
symbol SDA = PORTA.1
SYMBOL SCL = PORTA.0
INPUT Pgmode
INPUT RX
OUTPUT Led1
OUTPUT Led2
OUTPUT Relej
OUTPUT TX
Ulaz var byte[15]
BPS_p con 0
Izlaz var byte[15]
PORTA = 0
PORTB = 0
'==============Pocetak===============
Pocetak:
if pgmode = 0 then
gosub Program_mode
else
gosub normal_mod
endif
goto pocetak
'==============Program Mod================
Program_mode:
pause 100
high led1
'+ 3 8 1 6 4 3 5 5 5 0 0 5
serin rx,bps_p,100,Program_mode,ulaz[1],ulaz[2],ulaz[3],ulaz[4],ulaz[5],ulaz[6],ulaz[7],ulaz[8],ulaz[9],ulaz[10],ulaz[11],ulaz[12],ulaz[13],ulaz[14],ulaz[15]
'Tabela za snimanje primljenih podataka u eeprom pic16f84 od adrese 0 - 14
i2cwrite SDA,Scl,$a0,0, [ulaz[1],ulaz[2],ulaz[3],ulaz[4],ulaz[5],ulaz[6],ulaz[7],ulaz[8],ulaz[9],ulaz[10],ulaz[11],ulaz[12],ulaz[13],ulaz[14],ulaz[15]]
'trebalo bi da je sve snimljeno :)
serout tx,bps_p,["OK"] 'Posalji OK ako jeste
low led1
goto pocetak
Normal_mod:
led2 = 1
pause 100
i2cread sda,scl,$a0,0,izlaz[1],izlaz[2],izlaz[3],izlaz[4],izlaz[5],izlaz[6],izlaz[7],izlaz[8],izlaz[9],izlaz[10],izlaz[11],izlaz[12],izlaz[13],izlaz[14],izlaz[15]
serout tx,bps_p,[izlaz[1],izlaz[2],izlaz[3],izlaz[4],izlaz[5],izlaz[6],izlaz[7],izlaz[8],izlaz[9],izlaz[10],izlaz[11],izlaz[12],izlaz[13],izlaz[14],izlaz[15]]
pause 1000
led2 = 0
goto pocetak
end
Code: Select all
:
:
:
[izlaz[1]="a"
izlaz[2]="g"
izlaz[3]="f"
izlaz[4]="f"
izlaz[5]="d"
:
:
izlaz[15]="s"
serout tx,bps_p,[izlaz[1],izlaz[2],izlaz[3],izlaz[4],izlaz[5],izlaz[6],izlaz[7],izlaz[8],izlaz[9],izlaz[10],izlaz[11],izlaz[12],izlaz[13],izlaz[14],izlaz[15]]
Code: Select all
TRISB = 0 ' Svi pinovi porta B su izlaz
pocetak:
PORTB = %10001001 ' H
PAUSE 1000 ' sacekaj 1 sec
PORTB = %10000110 ' E
PAUSE 1000 ' sacekaj 1 sec
PORTB = %11000111 ' L
PAUSE 1000 ' sacekaj 1 sec
PORTB = %11111111 ' Mala pauza izmedju dva slova L
PAUSE 50 ' sacekaj pola sec
PORTB = %11000111 ' L
PAUSE 1000 ' sacekaj 1 sec
PORTB = %11000000 ' O
PAUSE 1000 ' sacekaj 5 sec
PORTB = %11111111
PAUSE 2000
GOTO POCETAK ' ponovno ispisi hello
END