18f4550 Dahili Pull-up

Başlatan Elektronikprojem, 05 Mart 2018, 09:53:49

Elektronikprojem

Herkese merhaba.
18f4550 ile bir çalışma gerçekleştirmek istiyorum . Bunun için porb dahili pull-up lartı kullanacağım. Datasheetinde bu işin intcon2.7 registerinde olduğu söyleniyor. yani İntcon2.7=0 yapınca olması lazım. Fakat anlamadığım bir şekilde portb.0,portb.1 ve portb.3 dahili pull -up ları aktif olmuyor. Bu konuda yardımlarınızı bekliyorum.
Teşekkürler.

asm
    __CONFIG _CONFIG1H, _FOSC_XT_XT_1H &_FCMEN_OFF_1H &_IESO_OFF_1H
    __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L &  _VREGEN_OFF_2L
    __CONFIG _CONFIG2H, _WDT_OFF_2H   
    __CONFIG _CONFIG3H, _MCLRE_OFF_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H   
    __CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L &_XINST_OFF_4L  & _DEBUG_OFF_4L   
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H 
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H  & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H 
endasm
DEFINE OSC 4
;-------------------------------------------------------------------------------
TRISA=%0 : PORTA=0
TRISB=%11111111 : PORTB=0                                                                                               
TRISC=%10110000 : PORTC=0                                                       
TRISD=%11110000 : PORTD=0
TRISE=%00001000 : PORTE=0
;-------------------------------------------------------------------------------
INTCON2.7=0
;-------------------------------------------------------------------------------
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
SYMBOL GIE =INTCON.7 'genel interruptları açıyor
SYMBOL PEIE =INTCON.6 'peripheralinterruptları açıyor
SYMBOL RCIE =PIE1.5 'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5 'USART Receive interrupt flag bit
temp var BYTE
;-------------------------------------------------------------------------------
ADCON0=%00001111
ADCON1=%00001111
ADCON2=%00001111
;-------------------------------------------------------------------------------
DEFINE LCD_DREG PORTD     
DEFINE LCD_DBIT 0       
DEFINE LCD_EREG PORTC     
DEFINE LCD_EBIT 2               
DEFINE LCD_RSREG PORTC   
DEFINE LCD_RSBIT 1     
DEFINE LCD_BITS 4       
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 1000
DEFINE LCD_DATAUS 225                                               
;-------------------sembol ve değişken tanımları-------------------------------;
symbol BUZZER=PORTA.0
SYMBOL EKP=PORTA.1
SYMBOL MKP=PORTA.2
SYMBOL KP=PORTA.3

SYMBOL SENSOR=PORTB.0
symbol A1=PORTB.1
symbol A2=PORTB.2
symbol A3=PORTB.3
symbol A4=PORTB.4
symbol A5=PORTB.5
symbol A6=PORTB.6
SYMBOL START=PORTB.7

symbol ES=PORTC.4
SYMBOL MS=PORTC.5

SYMBOL MKS=PORTD.4
SYMBOL SSIFIR=PORTD.5
SYMBOL SECIM=PORTD.6
SYMBOL RESET=PORTD.7

SYMBOL EN=PORTE.0
SYMBOL CCW=PORTE.1
SYMBOL CW=PORTE.2
SYMBOL UVYS=PORTE.3
;-------------------------------------------------------------------------------
P var word       
P=350
SAGLAM VAR WORD
READ 1,SAGLAM.LOWBYTE
READ 2,SAGLAM.HIGHBYTE
BOZUK VAR BYTE
READ 3,BOZUK
GELEN VAR BYTE
GELEN=0                   
i VAR word
LCDOUT $FE,1
PAUSE 250
;-------------------------------------------------------------------------------
;OPTION_REG.6=0
;INTCON=%10010000
;ON INTERRUPT GOTO INT         
;-------------------------------------------------------------------------------
KONUMKONTROL:
IF MKS=0 THEN
GOTO BASLANGIC
ELSE
GOTO KONUMBUL
ENDIF
GOTO KONUMKONTROL
;*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
BASLANGIC:
LCDOUT $FE,$80," BUTONA BASINIZ "
LCDOUT $FE,$C0,"S:",#SAGLAM,"  B:",#BOZUK
;--------------------------------------------------------------------------------
ACILIS:
IF SSIFIR=0 THEN
PAUSE 2000
IF SSIFIR=0 THEN
SAGLAM=0
BOZUK=0
GOSUB YAZ
GOTO BASLANGIC
ENDIF
ENDIF


IF RESET=0 THEN GOTO RST

if START=0 and UVYS=1 then gosub URUNKOY

IF START=0 AND UVYS=0 AND MKS=1 THEN GOTO KONUMBUL

IF START=0 AND UVYS=0 AND MKS=0 and SENSOR=1 THEN GOTO EKPIN
 
IF START=0 AND UVYS=0 AND MKS=0 and SENSOR=0 THEN
lcdout $fe,1,  "GUVENLIK PERDESI"
LCDOUT $FE,$C0,"AKTIF.          "
PAUSE 1000
GOTO BASLANGIC
ENDIF                             

GOTO ACILIS

;-------------------------------------------------------------------------------
EKPIN:
IF SENSOR=0 THEN GOTO SENSORGORDU
HIGH EKP
IF ES=0 THEN GOTO ANHKNT
GOTO EKPIN
;-------------------------------------------------------------------------------
ANHKNT:
IF SENSOR=0 THEN GOTO SENSORGORDU
pause 150
IF A1=1 AND A2=1 AND A3=1 AND A4=1 AND A5=1 AND A6=1 THEN
GOTO MTRGEL
ELSE
GOTO KNMYNLS
ENDIF

GOTO ANHKNT
;-------------------------------------------------------------------------------
MTRGEL:
IF SENSOR=0 THEN GOTO SENSORGORDU
LCDOUT $FE,1,"TEST BASLADI"
HIGH MKP
IF MS=0  THEN
pause 250
goto K1
ENDIF
IF SENSOR=0 THEN GOTO SENSORGORDU
GOTO MTRGEL
;-------------------------------------------------------------------------------
K1:
IF SENSOR=0 THEN GOTO SENSORGORDU
FOR I=1 TO 85
CW=1
PAUSEus p
CW=0
PAUSEus 750
NEXT
pause 100
IF A1=0 AND A2=1 AND A3=0 AND A4=1 AND A5=0 AND A6=1 THEN
GOTO K2
ELSE
BOZUK=BOZUK+1
GOSUB YAZ
GOTO K1ARIZA
ENDIF

IF SENSOR=0 THEN GOTO SENSORGORDU
GOTO K1
;-------------------------------------------------------------------------------
K2:

IF SENSOR=0 THEN GOTO SENSORGORDU
FOR I=1 TO 87
CW=1
PAUSEus p
CW=0
PAUSEus 750
NEXT
pause 100
IF A1=1 AND A2=0 AND A3=1 AND A4=1 AND A5=0 AND A6=1 THEN 
GOTO SECIMBAK
ELSE
BOZUK=BOZUK+1
GOSUB YAZ
GOTO K2ARIZA
ENDIF

IF SENSOR=0 THEN GOTO SENSORGORDU
GOTO K2
;-------------------------------------------------------------------------------
SECIMBAK:

IF SENSOR=0 THEN GOTO SENSORGORDU
IF SECIM=0 THEN
GOTO K3_0
ELSE
GOTO K3_1
ENDIF
GOTO SECIMBAK
;-------------------------------------------------------------------------------
K3_0:

IF SENSOR=0 THEN GOTO SENSORGORDU
FOR I=1 TO 85
CW=1
PAUSEus P
CW=0
PAUSEus 750
NEXT
pause 100
IF A1=1 AND A2=1 AND A3=1 AND A4=1 AND A5=0 AND A6=0 THEN
LCDOUT $FE,1,"ANAHTAR SAGLAM"
SAGLAM=SAGLAM+1
IF SENSOR=0 THEN GOTO SENSORGORDU
kp=1
pause 200
kp=0
pause 50
IF SENSOR=0 THEN GOTO SENSORGORDU
kp=1
pause 200
kp=0
pause 50
IF SENSOR=0 THEN GOTO SENSORGORDU
kp=1
pause 200
kp=0
pause 5
GOTO BTS
ELSE
BOZUK=BOZUK+1
GOSUB YAZ
GOTO K3ARIZA
ENDIF

IF SENSOR=0 THEN GOTO SENSORGORDU
GOTO K3_0
;-----------------------
K3_1:

IF SENSOR=0 THEN GOTO SENSORGORDU
FOR I=1 TO 85
CW=1
PAUSEus P
CW=0
PAUSEus 750
NEXT
PAUSE 100
IF A1=1 AND A2=1 AND A3=1 AND A4=0 AND A5=0 AND A6=0 THEN
LCDOUT $FE,1,"ANAHTAR SAGLAM"
SAGLAM=SAGLAM+1
IF SENSOR=0 THEN GOTO SENSORGORDU
kp=1
pause 200
kp=0
pause 50
IF SENSOR=0 THEN GOTO SENSORGORDU
kp=1
pause 200
kp=0
pause 50
IF SENSOR=0 THEN GOTO SENSORGORDU
kp=1
pause 200
kp=0
pause 50
GOTO BTS
ELSE
BOZUK=BOZUK+1
GOSUB YAZ
GOTO K3ARIZA
ENDIF

IF SENSOR=0 THEN GOTO SENSORGORDU
GOTO K3_1
;-------------------------------------------------------------------------------
BTS:
IF SENSOR=0 THEN GOTO SENSORGORDU
FOR I=1 TO 167
CCW=1
PAUSEus P
CCW=0
PAUSEus 750
NEXT
IF SENSOR=0 THEN GOTO SENSORGORDU
MKP=0
PAUSE 250
EKP=0
pause 250

GOTO KONUMBUL
;-------------------------------------------------------------------------------
KONUMBUL:
CCW=1
PAUSE 1
CCW=0
PAUSEus 500
IF MKS=0 THEN GOTO BASLANGIC
GOTO KONUMBUL
;-------------------------------------------------------------------------------
K1ARIZA:
IF SENSOR=0 THEN GOTO SENSORGORDU
LCDOUT $FE,1,"KONUM 1 ARIZA"
LCDOUT $FE,$C0,"RESETE BASINIZ"
BUZZER=1
PAUSE 250
LCDOUT $FE,1," "
LCDOUT $FE,$C0," "
BUZZER=0
PAUSE 250
IF RESET=0 THEN GOTO RST
IF SSIFIR=0 THEN GOSUB INCELE
GOTO K1ARIZA
;-------------------------------------------------------------------------------
K2ARIZA:
IF SENSOR=0 THEN GOTO SENSORGORDU
LCDOUT $FE,1,"KONUM 2 ARIZA"
LCDOUT $FE,$C0,"RESETE BASINIZ"
BUZZER=1
PAUSE 250
LCDOUT $FE,1," "
LCDOUT $FE,$C0," "
BUZZER=0
PAUSE 250
IF RESET=0 THEN GOTO RST
IF SSIFIR=0 THEN GOSUB INCELE
GOTO K2ARIZA
;-------------------------------------------------------------------------------
K3ARIZA:
IF SENSOR=0 THEN GOTO SENSORGORDU
LCDOUT $FE,1,"KONUM 3 ARIZA"
LCDOUT $FE,$C0,"RESETE BASINIZ"
BUZZER=1
PAUSE 250
LCDOUT $FE,1," "
LCDOUT $FE,$C0," "
BUZZER=0
PAUSE 250
IF RESET=0 THEN GOTO RST
IF SSIFIR=0 THEN GOSUB INCELE
GOTO K3ARIZA
;-------------------------------------------------------------------------------
RST:
LCDOUT $FE,1,"RESET ATILIYOR"
LCDOUT $FE,$C0,"BEKLEYINIZ..."
LOW BUZZER
LOW MKP
PAUSE 250
LOW EKP
PAUSE 100
GOTO KONUMBUL
;-------------------------------------------------------------------------------
URUNKOY:
IF SENSOR=0 THEN GOTO SENSORGORDU
LCDOUT $FE,1,"YUVADA URUN "
LCDOUT $FE,$C0,"ALGILANMADI"
PAUSE 1000
LCDOUT $FE,1,"BUTONA BASINIZ"
LCDOUT $FE,$C0,"S:",#SAGLAM,"  B:",#BOZUK
RETURN
;-------------------------------------------------------------------------------
KNMYNLS:
IF SENSOR=0 THEN GOTO SENSORGORDU
LCDOUT $FE,1,"ANAHTAR KONUMU"
LCDOUT $FE,$C0,"YANLIS"
PAUSE 150
IF RESET=0 THEN GOTO RST
GOTO KNMYNLS
;-------------------------------------------------------------------------------
YAZ:
WRITE 1,SAGLAM.LOWBYTE
WRITE 2,SAGLAM.HIGHBYTE
PAUSE 10
WRITE 3,BOZUK
PAUSE 10
RETURN
;-------------------------------------------------------------------------------
SENSORGORDU:
EKP=0
LCDOUT $FE,1,  "GUVENLIK PERDESI"
LCDOUT $FE,$C0,"AKTIF.RESETLEYIN"

PAUSE 250
LCDOUT $FE,1," "
LCDOUT $FE,$C0," "
PAUSE 250
IF RESET=0 THEN
GELEN=0
GOTO RST
ENDIF
GOTO SENSORGORDU

;-------------------------------------------------------------------------------

INCELE:
IF A1=0 THEN
LCDOUT $FE,1,"1A1B: SINYAL VAR"
ELSE
LCDOUT $FE,1,"1A1B: SINYAL YOK"
ENDIF
PAUSE 2000

IF A2=0 THEN
LCDOUT $FE,1,"2A2B: SINYAL VAR"
ELSE
LCDOUT $FE,1,"2A2B: SINYAL YOK"
ENDIF
PAUSE 2000

IF A3=0 THEN
LCDOUT $FE,1,"3A3B: SINYAL VAR"
ELSE
LCDOUT $FE,1,"3A3B: SINYAL YOK"
ENDIF
PAUSE 2000

IF A4=0 THEN
LCDOUT $FE,1,"4A4B: SINYAL VAR"
ELSE
LCDOUT $FE,1,"4A4B: SINYAL YOK"
ENDIF
PAUSE 2000

IF A5=0 THEN
LCDOUT $FE,1,"5A5B: SINYAL VAR"
ELSE
LCDOUT $FE,1,"5A5B: SINYAL YOK"
ENDIF
PAUSE 2000

IF A6=0 THEN
LCDOUT $FE,1,"6A6B: SINYAL VAR"
ELSE
LCDOUT $FE,1,"6A6B: SINYAL YOK"
ENDIF
PAUSE 2000
RETURN



;-------------------------------------------------------------------------------

ete

Bu konu ile bende uğraştım. Ancak bir türlü o pinlerin pullup larını aktif edemedim. Bütün data sheet'i inceledim. Tek bir yerden bahsediliyor. INTC2.7 biti LOW olmalı. Bunu yapıyoruz ama her nedense bir türlü olmuyor.
Bu simulasyonun bir kusuru da olabilir orada deniyorum çünki.
O pinlerin çoklu fonksiyonları var. Onlarıda inceleyip o fonksiyonları iptel de ettim ama yine olmadı.
Gözden kaçırdığımız bir yer olması kuvvetle ihtimal. Bulana ikramiye var!!.

Ete

Elektronikprojem

Şimdi tasarımı yapıyorum 12 giriş 12 çıkışlı bir kontrol kartı yapacağım gerçekte de gözlemler sonuçları bildiririm hocam. Sizin yaptığınız ayarlamalar varsa ekleyebilir misiniz.

ete

asm
    __CONFIG _CONFIG1H, _FOSC_XT_XT_1H & _FCMEN_OFF_1H & _IESO_OFF_1H     
    __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L & _VREGEN_OFF_2L
    __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_256_2H
    __CONFIG _CONFIG3H, _CCP2MX_OFF_3H & _PBADEN_OFF_3H & _LPT1OSC_ON_3H & _MCLRE_OFF_3H
    __CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
   
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H 
   
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
Define OSC 4
   
PORTA=0:TRISA=%00011111
PORTB=0:TRISB=%00000000
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%00000000
PORTE=0:TRISE=0

CMCON=7

ADCON1=%00001111 

INTCON2.7=1 'pullup lar iptal 0=aktif , 1=pasif

F®T

Hocam girişler input olmalı , analog girişler disable olmalı ,lvp off olmalı ,ıntcon2.7=0 olmalı. :)
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Evet biliyorum öyle olmalı yap bakalım oluyormu?
Ete

Powered by EzPortal