Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Pic 16F877 Sorunu

Başlatan Bylord, 09 Haziran 2007, 22:03:26

Bylord

Merhaba Arkadaşlar bnm bi sorunum var.Şimdi ben pic16f877 b portundan 8 adet bit göndercem bunuda pcde göstercem.yani picden pc'ye veri göndercem.ama sorun pic 7 bit gönderiyo yani toplam 127 gönderiyo, 255
göndermiyor kodlarda hata var.bulamadım kodlar aşağıdadır.Yardımlarınız için çok teşekkür ederim.


ASM KODU
LIST      P=16F877
      INCLUDE     "P16F877.INC"
SAY      EQU      H'10'
SAY1      EQU      H'11'
SERI_BILGI   EQU      H'12'
SERI_SAY   EQU      H'13'
BT      EQU      H'14'

      BSF      STATUS,RP0   
      BCF      STATUS,RP1   
      MOVLW   B'111110'   
      MOVWF   TRISA      
      MOVLW   H'FF'      
      MOVWF   TRISB      
      MOVWF   H'FF'      
      MOVLW   TRISC
      MOVWF   H'FF'      
      MOVLW   TRISD
      MOVWF   H'FF'      
      MOVLW   TRISE      
      BCF      STATUS,RP0   
      BCF      STATUS,RP1
      BSF      PORTA,0   

      MOVF       PORTB,W   
      MOVWF   SERI_BILGI   
          CALL   MAIN      
STOP      GOTO      STOP      

MAIN
SND   BCF         PORTA,0   
   CALL         TIMER      
   MOVLW      8      
   MOVWF      SERI_SAY   
SND1   RRF         SERI_BILGI,F   
   BTFSC         STATUS,C   
   GOTO         BITON      
   BCF         PORTA,0   
   GOTO          SND2      
BITON   BSF         PORTA,0   
SND2   CALL         TIMER      
   DECFSZ         SERI_SAY,1   
   GOTO         SND1      
   BSF         PORTA,0      
   CALL         TIMER   
   CALL         TIMER               
RETURN
; Baud Rate = 2400
TIMER
   MOVLW      H'86'
   MOVWF      BT
NEXT   DECFSZ      BT,F
      GOTO      NEXT
   RETURN
   END

XX_CİHAN_XX

Picin usart modülünü kullan.Rs232 ile ilgili birçok örnek kod var.Bu şekilde 7 biti sağlıklı gönderebilmen bile iyi :)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Bylord

Hocam bnm fazla bilgim yok bu piclerle sadece devreyi yapdım.ama yazılımda bi sıkıntı var,sizin dediğinizi bilmiyorum ama teşekkürler.

XX_CİHAN_XX

16F877 deki usart modulunu kullanarak örnek bir program yazdım.
Sürekli olarak(yaklaşık 250ms aralıklarla) portb deki veriyi RC6 pininden max232 entegresi aracılığıyla pc ye gönderiyor.(Kristal 4mhz, baud 2400)
;HABERLEŞME PICTEN PC YE DOĞRUDUR(TEK YONLU)
;SADECE VERI GONDERILIR(ALMA KAPALI)
;BAUD RATE 2400 OLARAK AYARLANDI
;KRISTAL DEGERI 4MHhz DİR.
;PROGRAM PORTBDEKI 8 BITLIK VERIYI RC6 PININDEN PC YE GONDERMEKTEDIR.
;NOT PROGRAM PORTB DEKI VERIYI YAKLASIK 250MS LIK ARALIKLARLA SUREKLI OLARAK PC YE GONDERIR!!!
;*******************************************************
		LIST		P=16F877
		INCLUDE		"P16F877.INC"
;*******************************************************
	__config(_CP_OFF & _PWRTE_OFF & _XT_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF)
;*******************************************************
		CBLOCK		0x20
REG1
REG2
		ENDC
;*******************************************************
		ORG			0x00
		GOTO		START
		ORG			0x04
		RETFIE
;*******************************************************
START
		BSF			STATUS,5
		MOVLW		0x07
		MOVWF		ADCON1
		MOVLW		0xFF
		MOVWF		TRISB
		MOVLW		0x80
		MOVWF		TRISC
		BCF			STATUS,5
		CALL		WAIT				;YAKLASIK 200MSN BEKLE
		CALL		TX_RX_HAZIRLA		;8 BIT DATA 2400 BAUD USART AYARLARINI YAP
;*******************************************************
MAIN							;ANADONGU BASLANGICI
		MOVF		PORTB,W		;PORTBDEKI VERIYI W YE AL
		MOVWF		TXREG		;W DEKI VERIYI PC YE GONDER(RC6 PININDEN)
		CALL		WAIT		;200MS LIK BEKLEME YAP
		GOTO		MAIN		;TEKRAR BASA DON
;*******************************************************
WAIT							;YAKLASIK 200MS LIK GECIKME ALT PROGRAMI
		MOVLW		.255
		MOVWF		REG1
W1
		MOVLW		.255
		MOVWF		REG2
W2
		DECFSZ		REG2,F
		GOTO		W2
		DECFSZ		REG1,F
		GOTO		W1
		RETURN
;*******************************************************
TX_RX_HAZIRLA
		BCF			PIR1,RCIF
		BSF 		STATUS,5		
		MOVLW		.103
		MOVWF		SPBRG
		MOVLW		H'26'    
		MOVWF		TXSTA
		BSF 		TXSTA,BRGH 
		BCF			INTCON,GIE
		BSF			INTCON,PEIE
		BSF			PIE1,RCIE
		BCF			STATUS,5
		MOVLW		H'90'
		MOVWF		RCSTA
		RETURN
;*******************************************************
		END

Kolay gelsin...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.