Assembler , PIC16f628a , rs232 , LCD 16x2

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
ZlacX
Pocetnik na forumu
Pocetnik na forumu
Posts: 38
Joined: 03-01-2009, 16:17

Assembler , PIC16f628a , rs232 , LCD 16x2

Post by ZlacX »

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

Image
Attachments
seminarski.rar
(18.57 KiB) Downloaded 283 times
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by pedja089 »

A sta je greska?
ZlacX
Pocetnik na forumu
Pocetnik na forumu
Posts: 38
Joined: 03-01-2009, 16:17

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by ZlacX »

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 ...
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by pedja089 »

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
Pocetnik na forumu
Posts: 38
Joined: 03-01-2009, 16:17

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by ZlacX »

Skuzil sam par stvari problem je u PrimanjeP1 petlji ...ajde ljudi trebam pomoć s tim
lab1722tec
Napredujem
Napredujem
Posts: 123
Joined: 26-12-2010, 12:12
Location: sad_tu_sad_tamo

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by lab1722tec »

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
Pocetnik na forumu
Posts: 38
Joined: 03-01-2009, 16:17

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by ZlacX »

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
Pocetnik na forumu
Posts: 38
Joined: 03-01-2009, 16:17

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by ZlacX »

Komparatore sam vec probal prije ... nema nikakve razlike
ZlacX
Pocetnik na forumu
Pocetnik na forumu
Posts: 38
Joined: 03-01-2009, 16:17

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by ZlacX »

Problem je rijesen ..ako netko treba program u assembleru neka javi :)
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3509
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Re: Assembler , PIC16f628a , rs232 , LCD 16x2

Post by trax »

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 :!:
Post Reply