Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...
Moderators: pedja089 , stojke369 , [eDo] , trax
ZlacX
Pocetnik na forumu
Posts: 38 Joined: 03-01-2009, 16:17
Post
by ZlacX » 27-09-2011, 13:59
Ovako imam za predati seminarski radi koji je po mojoj procjeni 99% gotov ,ali imam gresku u programu koju nemogu nikako naći . Nadam se da mi netko na forumu moze pomoći sa tim jer vec polagano gubim razum
Evo sheme u proteusu , program je pisan u MPLAB-u
Ko ispravi gresku dam mu temp.senzor za trud
ds18s20
Code: Select all
PROCESSOR P16F628
#include "P16F628A.INC"
ERRORLEVEL -224
__CONFIG _CP_OFF & _INTRC_OSC_NOCLKOUT &_WDT_OFF & _PWRTE_ON & _LVP_OFF& _BODEN_ON
; |^ ^ ^ ^ ^
;(ZAŠTITA KODA UGAŠENA) | | | |
;(BRZI OSCILATOR 4-20MHZ)| | | |
;(WATCH DOG TIMER OFF)---------| | |
;(POWER UP TIMER ENABLE BIT)--------------| |
;(LOW VOLTAGE PROGRAMIRANJE UGASENO PORTB4)----------|
ORG 0X0
;VARIJABLE ZA RAD PAUZE,SLANJE PODATKA NA DISPLAY
cblock 0x20
char,cmd,lc1,lc2,vr1,Temp1,Temp2,PrimPodaci;
endc
org 0
goto start
org 4
goto inthlr
;====================================================================
; Definiranje izlaza/ulaza
;====================================================================
start bcf STATUS,RP0 ;Banka 0
clrf PORTA
clrf PORTB
bsf STATUS,RP0 ; Banka 1
movlw B'00000000'
movwf TRISA
movlw B'00000010'
movwf TRISB
;=====================================================================
;Podešavanje USART-A (RS232)
;=====================================================================
Usart nop
movlw b'00011001'
; movlw 0x19
movwf SPBRG ;Brzina podataka
movlw b'00100100' ;Slanje podataka
movwf TXSTA
bcf STATUS,RP0 ;Banka 0
movlw b'10010000' ;Primanje podataka
movwf RCSTA
;=====================================================================
; Inicijalizacija displaya 16x2 u 4 bitnom modu ... OK
;=====================================================================
Init. bcf STATUS,RP0
call delay
;Function set
call RsIns
movlw B'00100000'
movwf PORTB
call Enable
movlw B'00100000'
movwf PORTB
call Enable
movlw B'11000000'
movwf PORTB
call Enable
;Display on/off control
call delay
call RsIns
movlw B'00000000'
movwf PORTB
call Enable
movlw B'11110000'
movwf PORTB
call Enable
;Display clear
call delay
call RsIns
movlw B'00000000'
movwf PORTB
call Enable
movlw B'00010000'
movwf PORTB
call Enable
;Entry mode set
call delay
call RsIns
movlw B'00000000'
movwf PORTB
call Enable
movlw B'01100000'
movwf PORTB
call Enable
goto natpis
;=======================================================
; Natpis na displayu
;=======================================================
natpis
call delay
movlw 'T' ;Podatak za slanje
call putc
movlw 'e' ;Podatak za slanje
call putc
movlw 's' ;Podatak za slanje
call putc
movlw 't' ;Podatak za slanje
call putc
movlw ' ' ;Podatak za slanje
call putc
movlw '1' ;Podatak za slanje
call putc
movlw '2' ;Podatak za slanje
call putc
movlw '3' ;Podatak za slanje
call putc
call DrugiRed ;Pomak kursora u drugi red
goto Glavni ;Idi u glavni program
;========================================================
;GLAVNA PETLJA
;========================================================
Glavni nop
call PrimanjeP ;Zovi primanje podataka
call putc ;Salji na LCD
goto Glavni ;Vrati se na glavnu petlju
;========================================================
;Primanje podataka sa RS232
;========================================================
PrimanjeP bcf STATUS,RP0
PrimanjeP1 btfss PIR1,RCIF ;Interupt je 1 ?
goto PrimanjeP1 ;Pokusaj opet
movf RCREG,W
bcf PIR1,RCIF ;Interupt reset
RETURN
;========================================================
;Enable puls + --> - LCD
;========================================================
Enable NOP
BSF PORTA,1
call delay
BCF PORTA,1
RETURN
;========================================================
;RS-instrukcije Porta0=0 LCD
;========================================================
RsIns nop
bcf PORTA,0
RETURN
;========================================================
;RS- podaci Porta0=1 LCD
;========================================================
RsPod nop
bsf PORTA,0
RETURN
;========================================================
;Slanje na LCD
;========================================================
putc bcf STATUS,RP0
call Vrijednost
call RsPod
movf Temp1,W
movwf PORTB
call Enable
movf Temp2,W
movwf PORTB
call Enable
call delay
return
;=========================================================
;Pomak udesno--> za 1 mjesto LCD
;=========================================================
PomakD nop
call RsIns
movlw b'00010000'
movwf PORTB
call Enable
movlw b'01000000'
movwf PORTB
call Enable
return
;=========================================================
;Prvi red LCD displaya
;=========================================================
PrviRed nop
call RsIns
movlw b'10000000'
movwf PORTB
call Enable
movlw b'00000000'
movwf PORTB
call Enable
return
;=========================================================
;Drugi red LCD displaya
;=========================================================
DrugiRed nop
call RsIns
movlw b'11000000'
movwf PORTB
call Enable
movlw b'00000000'
movwf PORTB
call Enable
return
;=========================================================
;Spremanje akumulatora (podatak) koji se salje na portb
;=========================================================
Vrijednost nop
movwf Temp1 ;Normalni podatak u temp1
movwf Temp2
swapf Temp2 ;Okrenuti podatak ide u temp2
return
;=========================================================
;Pauza
;=========================================================
delay movwf lc2
_sw2 movlw 0x1E ; 1E = 30dec
movwf lc1
_sw3 nop
decfsz lc1,f ;Prva petlja
goto _sw3
decfsz lc2,f ;Druga petlja
goto _sw2
return
;=========================================================
inthlr retfie ;Povratak iz interupta
;=========================================================
END
;Kraj programa
;=========================================================
shema
Attachments
seminarski.rar
(18.57 KiB) Downloaded 283 times
pedja089
Administrator sajta
Posts: 7877 Joined: 20-02-2007, 14:50
Location: Beočin -Srbija
Post
by pedja089 » 27-09-2011, 14:30
A sta je greska?
ZlacX
Pocetnik na forumu
Posts: 38 Joined: 03-01-2009, 16:17
Post
by ZlacX » 27-09-2011, 14:33
Da zaboravil sam to napisati ... greska je da nece na LCD-u prikazati znak kad ga uneses u rs232 terminal( Android Bluetooth) kad god stisnem nesto na tipkovnici samo napravi jedan razmak
Sumnjam u podešenost usart-a ...
pedja089
Administrator sajta
Posts: 7877 Joined: 20-02-2007, 14:50
Location: Beočin -Srbija
Post
by pedja089 » 27-09-2011, 16:12
Koliko ja znam terminal ima RS232 izlaz, a na picu se koristi TTL, tako da pogledaj malo po netu o naponskim nivoima i slicno... Ili jos bolje pogledaj dali taj terminal u simulaciji ima TTL ili RS232 izlaz.
ZlacX
Pocetnik na forumu
Posts: 38 Joined: 03-01-2009, 16:17
Post
by ZlacX » 27-09-2011, 18:06
Skuzil sam par stvari problem je u PrimanjeP1 petlji ...ajde ljudi trebam pomoć s tim
lab1722tec
Napredujem
Posts: 123 Joined: 26-12-2010, 12:12
Location: sad_tu_sad_tamo
Post
by lab1722tec » 27-09-2011, 19:25
u "Fuse" si stavio :_INTRC_OSC što je 4MHz a ne 20 znači hardver i "safter" nisu u suglasju
a i pedja089 ti je ukazao na razlike u nivoima .....jesi pogasio komparatore.....??
ZlacX
Pocetnik na forumu
Posts: 38 Joined: 03-01-2009, 16:17
Post
by ZlacX » 27-09-2011, 19:38
lab1722tec wrote: u "Fuse" si stavio :_INTRC_OSC što je 4MHz a ne 20 znači hardver i "safter" nisu u suglasju
a i pedja089 ti je ukazao na razlike u nivoima .....jesi pogasio komparatore.....??
Znam to za intrc_osc to sam maknul ... maknul sam jedan delay itd... kod je ovaj ...
Code: Select all
LIST P=16F628A
#include "P16F628A.INC"
; ERRORLEVEL -224
__CONFIG _CP_OFF & _HS_OSC &_WDT_OFF & _PWRTE_ON & _LVP_OFF
; |^ ^ ^ ^ ^
;(ZAŠTITA KODA UGAŠENA) | | | |
;(BRZI OSCILATOR 4-20MHZ)| | | |
;(WATCH DOG TIMER OFF)---------| | |
;(POWER UP TIMER ENABLE BIT)--------------| |
;(LOW VOLTAGE PROGRAMIRANJE UGASENO PORTB4)----------|
ORG 0X0
;VARIJABLE ZA RAD PAUZE,SLANJE PODATKA NA DISPLAY
cblock 0x20
char,cmd,lc1,lc2,vr1,Temp1,Temp2,PrimPodaci;
endc
org 0
goto start
org 4
goto inthlr
;====================================================================
; Definiranje izlaza/ulaza
;====================================================================
start bcf STATUS,RP0 ;Banka 0
clrf PORTA
clrf PORTB
bsf STATUS,RP0 ; Banka 1
movlw B'00000000'
movwf TRISA
movlw B'00000010'
movwf TRISB
;=====================================================================
;Podešavanje USART-A (RS232)
;=====================================================================
Usart nop
movlw b'00011001' ;0x19
movwf SPBRG ;Brzina podataka
movlw b'00100100' ;Slanje podataka
movwf TXSTA
bcf STATUS,RP0 ;Banka 0
movlw b'10010000' ;Primanje podataka
movwf RCSTA
;=====================================================================
; Inicijalizacija displaya 16x2 u 4 bitnom modu ...
;=====================================================================
Init. bcf STATUS,RP0
call delay
;Function set
call RsIns
movlw B'00100000'
movwf PORTB
call Enable
movlw B'00100000'
movwf PORTB
call Enable
movlw B'11000000'
movwf PORTB
call Enable
;Display on/off control
call delay
call RsIns
movlw B'00000000'
movwf PORTB
call Enable
movlw B'11110000'
movwf PORTB
call Enable
;Display clear
call delay
call RsIns
movlw B'00000000'
movwf PORTB
call Enable
movlw B'00010000'
movwf PORTB
call Enable
;Entry mode set
call delay
call RsIns
movlw B'00000000'
movwf PORTB
call Enable
movlw B'01100000'
movwf PORTB
call Enable
goto natpis
;=======================================================
; Natpis na displayu
;=======================================================
natpis
call delay
movlw 'T' ;Podatak za slanje
call putc
movlw 'e' ;Podatak za slanje
call putc
movlw 's' ;Podatak za slanje
call putc
movlw 't' ;Podatak za slanje
call putc
movlw ' ' ;Podatak za slanje
call putc
movlw '1' ;Podatak za slanje
call putc
movlw '2' ;Podatak za slanje
call putc
movlw '3' ;Podatak za slanje
call putc
call DrugiRed ;Pomak kursora u drugi red
goto Glavni ;Idi u glavni program
;========================================================
;GLAVNA PETLJA
;========================================================
Glavni nop
call PrimanjeP ;Zovi primanje podataka
call putc ;Salji na LCD
goto Glavni ;Vrati se na glavnu petlju
;========================================================
;Primanje podataka sa RS232
;========================================================
PrimanjeP bcf STATUS,RP0
PrimanjeP1 btfss PIR1,RCIF ;Interupt je 1 ?
goto PrimanjeP1 ;Pokusaj opet
movf RCREG,W
bcf PIR1,RCIF ;Interupt reset
RETURN
;========================================================
;Enable puls + --> - LCD
;========================================================
Enable NOP
BSF PORTA,1
BCF PORTA,1
RETURN
;========================================================
;RS-instrukcije Porta0=0 LCD
;========================================================
RsIns nop
bcf PORTA,0
RETURN
;========================================================
;RS- podaci Porta0=1 LCD
;========================================================
RsPod nop
bsf PORTA,0
RETURN
;========================================================
;Slanje na LCD
;========================================================
putc bcf STATUS,RP0
call Vrijednost
call RsPod
movf Temp1,W
movwf PORTB
call Enable
movf Temp2,W
movwf PORTB
call Enable
call delay
return
;=========================================================
;Pomak udesno--> za 1 mjesto LCD
;=========================================================
PomakD nop
call RsIns
movlw b'00010000'
movwf PORTB
call Enable
movlw b'01000000'
movwf PORTB
call Enable
return
;=========================================================
;Prvi red LCD displaya
;=========================================================
PrviRed nop
call RsIns
movlw b'10000000'
movwf PORTB
call Enable
movlw b'00000000'
movwf PORTB
call Enable
return
;=========================================================
;Drugi red LCD displaya
;=========================================================
DrugiRed nop
call RsIns
movlw b'11000000'
movwf PORTB
call Enable
movlw b'00000000'
movwf PORTB
call Enable
return
;=========================================================
;Spremanje akumulatora (podatak) koji se salje na portb
;=========================================================
Vrijednost nop
movwf Temp1 ;Normalni podatak u temp1
movwf Temp2
swapf Temp2 ;Okrenuti podatak ide u temp2
return
;=========================================================
;Pauza
;=========================================================
delay movwf lc2
_sw2 movlw 0x1E ; 1E = 30dec
movwf lc1
_sw3 nop
decfsz lc1,f ;Prva petlja
goto _sw3
decfsz lc2,f ;Druga petlja
goto _sw2
return
;=========================================================
inthlr retfie ;Povratak iz interupta
;=========================================================
END
;Kraj programa
;=========================================================
ZlacX
Pocetnik na forumu
Posts: 38 Joined: 03-01-2009, 16:17
Post
by ZlacX » 27-09-2011, 20:03
Komparatore sam vec probal prije ... nema nikakve razlike
ZlacX
Pocetnik na forumu
Posts: 38 Joined: 03-01-2009, 16:17
Post
by ZlacX » 28-09-2011, 16:13
Problem je rijesen ..ako netko treba program u assembleru neka javi
trax
Administrator sajta
Posts: 3509 Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:
Post
by trax » 29-09-2011, 14:40
Nije da nam je potreban program kao program, ali bilo bi dobro da napises u cemu je bio problem da znaju oni koji budu imali slican