16F84 kendi kendine cikislarini 1 iken 0 yapiyor

Başlatan burcpic, 13 Temmuz 2011, 14:41:15

burcpic

Merhaba
16f84 ile 6 girisi ve 7 cikisi olan bi devre uzerinde calisiyorum.
Giris ve cikislar su sekilde:
PORTA     B'00000000'
PORTB    B'01111110'
Girislere butonlar, cikislarada 470ohm ile LED ler bagli.

Programin basitce girislere bagli olarak bazi cikislari 1 digerlerini 0 yapmasi gerekiyor. Fakat ben RB3 girisini0 yaparak RB0 cikisini 0 yaptigimda bununla beraber RB7 de 0 oluyor.

Yani benim kontrol etmek istedigimin haricinde bazi cikislarda konum degistiriyor.
kesmeden supelendim fakat kesmelerin etkin olmasi icin once aktiflestirmem gerekir değilmi? Yada kesmeler zaten aktifde benimmi deaktive etmem gerekir?


;        ; CPU configuration
   PROCESSOR 16f84
   INCLUDE     <p16f84.inc>
   __CONFIG  _HS_OSC & _WDT_OFF & _PWRTE_ON
   
temp   equ   H'0C'
xmit   equ   H'0D'
info   equ   H'0E'   ;info bit 1,2,3 button positions.
j   equ   H'0F'
latram   equ   H'10'   
lat2   equ   H'11'
lat3   equ   H'12

;Program

   org   0      ; start at address 0

   
setinout
   
   movlw   B'00000000'   
   tris   PORTA      
   
   movlw   B'01111110'   
   tris   PORTB   

;===========================================================================

setup

   movlw   H'FF'      ;info set
   movwf   info

;---------------------------
      
   bsf   PORTA,0      ;led1 red
   bcf   PORTA,1      ;led1 green
   bsf   PORTA,2      ;led2 red
   bcf   PORTA,3      ;led2 green
   bsf   PORTA,4      ;led3 red
   bcf   PORTB,0      ;led3 green
   

   bsf   PORTB,7      ; statu 

;===========================================================================
main

;===================================================
bt1   btfsc   info,1
   goto   ts1
   goto   tc1

ts1   btfsc   PORTB,1
   goto   bt2
   bcf   info,1
   bcf   PORTA,0
   bsf   PORTA,1
   goto   main

tc1   btfss   PORTB,1
   goto   bt2
   bsf   info,1
   bsf   PORTA,0
   bcf   PORTA,1
   goto   main
;-------------------------------
bt2   btfsc   info,2
   goto   ts2
   goto   tc2

ts2   btfsc   PORTB,2
   goto   bt3
   bcf   info,2
   bcf   PORTA,2
   bsf   PORTA,3
   goto   main

tc2   btfss   PORTB,2
   goto   bt3
   bsf   info,2
   bsf   PORTA,2
   bcf   PORTA,3
   goto   main
;-------------------------------
bt3   btfsc   info,3
   goto   ts3
   goto   tc3

ts3   btfsc   PORTB,3
   goto   bt1
   bcf   info,3
   bcf   PORTA,4
   bsf   PORTB,0
   goto   main

tc3   btfss   PORTB,3
   goto   bt1
   bsf   info,3
   bsf   PORTA,4
   bcf   PORTB,0
   goto   main
;===================================================

   

   end


Yardimci olabilirseniz sevinirim.

Tesekkur ederim.

Tagli

Kodu görmeden kimsenin yardımcı olabileceğini sanmıyorum.
Gökçe Tağlıoğlu

JKramer

Programı simulasyonda mı deniyorsunuz gerçek devre üzerinde mi? Bir de böyle değil de, yazdığınız kodu ve varsa simulasyon dosyasını koyarsanız daha çabuk yardımcı olunabilir.

burcpic

#3
Alıntı yapılan: JKramer - 13 Temmuz 2011, 15:11:50
Programı simulasyonda mı deniyorsunuz gerçek devre üzerinde mi? Bir de böyle değil de, yazdığınız kodu ve varsa simulasyon dosyasını koyarsanız daha çabuk yardımcı olunabilir.

Biraz once farkettim ki similasyon da  RA4 te ayni problem var.RB1 girislerini 0 yaparak RA0 i 0, RA1 i 1 yaptigimda RA4 te kendikendine 0 oluyor. fakat gercek devre uzerinde RB7de de problem yasiyorum.

Evren KILIÇ

mcrl direnci veya pull-up/pulldown dirençlerinde problem olabilirmi.
[email]evren1623@hotmail.com[/email]

Tagli

Sorun arka arkaya gelen bsf ve bcf komutlarinda. Sonra gelen komut oncekini gecersiz kiliyor. Bunun sebebi bu komutlarin "read - modify - write" mantigi ile calismasi. Daha once forumda konusulmustu, bu 3 kelime ile arama yaparsan ilgili basliga erisebilirsin.

Yapabilecegin 2 sey var. Ya bu komutlarin arasina bir miktar bekleme koymalisin, ya da degisiklikleri gecici bir degisken uzerinde yapip daha sonra bu degiskeni PORT uzerine tek seferde yazmalisin.

18 serisi PIC kullaniyor olsa idin LATx register'lari bu soruna kesin cozum olurdu.
Gökçe Tağlıoğlu

burcpic

Alıntı yapılan: Tagli - 13 Temmuz 2011, 20:43:19
Sorun arka arkaya gelen bsf ve bcf komutlarinda. Sonra gelen komut oncekini gecersiz kiliyor. Bunun sebebi bu komutlarin "read - modify - write" mantigi ile calismasi. Daha once forumda konusulmustu, bu 3 kelime ile arama yaparsan ilgili basliga erisebilirsin.

Yapabilecegin 2 sey var. Ya bu komutlarin arasina bir miktar bekleme koymalisin, ya da degisiklikleri gecici bir degisken uzerinde yapip daha sonra bu degiskeni PORT uzerine tek seferde yazmalisin.

18 serisi PIC kullaniyor olsa idin LATx register'lari bu soruna kesin cozum olurdu.

Her bsf ve bcf ten sonra 250lik gecikme koydum. Fakat hala durum ayni. gecikme ise yaramadi.