PIC16f877 A portunu giriş olarak kullanamama sorunu

Başlatan ds01, 30 Ekim 2015, 01:13:47

ds01

Basit bir program.İsiste simule ettim. programın işleyişi şu şekilde bir buton var PORTA nın 0.pinine bağlı. butona basılırsa 0.pinin durumu okunuyor.0.pinin HIGH olup olmaması test ediliyor.PORTA nın 0. pini HIGH ise PORTB tüm pinleri HIGH oluyor. Fakat PORTA 0.pinini HIGH seviyesine geldiğinde PORTB tepki vermiyor LOW seviyesinde kalıyor.Fakat PORTA yı iptal edip yerine D portlarını kullandığımda sorunsuz B portlarıda tepki veriyor.Nerde hatam var bulamadım.Yardımlarınızı bekliyorum.

  LIST   P =  16F877
  #include "p16F877.inc"
  ; CONFIG
; __config 0xFFBB
 __CONFIG _FOSC_EXTRC & _WDTE_OFF & _PWRTE_OFF & _CP_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF
   ORG 0x00
BASLA
  CLRF PORTB    ;PORTB temizlendi
  BSF STATUS,5  ;bank 1 e geçildi.
  CLRF TRISB    ;TRISB çıkış olarak ayarlandı.
  MOVLW 0xFF    ;W Registerine 0xFF yüklendi.
  MOVWF TRISA   ;TRISA giriş olarak atandı.
  BCF STATUS,5  ;bank 0 a geçildi.
TEST
  BTFSS PORTA,0 ;PORTA'nın 0.biti test?.1 ise aşağıdaki GOTO komutunu atla 0 ise Tekrar kontrol
  GOTO TEST
  MOVLW 0xFF    ;W Registere 0xFF yüklendi.
  MOVWF PORTB   ;W Registeri PORTB ye yüklendi.
  GOTO $
  END

ipek

MOVWF   TRISA    		; makes PORTB pin 1 an output,BSF trisb,a makes it an input
	MOVWF   TRISB
	MOVWF   TRISC
	MOVWF   TRISD
	MOVWF   TRISE
	BANKSEL ADCON1		;disable A2D
	MOVLW   0x06
	MOVWF   ADCON1
	BANKSEL PORTA
PortA analog pinler ihtiva ediyor .Analog girişleri kapamalısın,ayrıca 877A modelinde Comparatorlarda olabilir onlarıda kapatman gerekir.örnekteki satır gibi.

ds01

Hocam çok teşekkür ederim yardımınız için.Dediğiniz gibi ADC leri kapatınca halloldu.