Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Sayıcı sorunu

Başlatan certy, 03 Ağustos 2013, 18:16:53

certy

Şöyle bir program yazdım ama butonlara basınca sayıyı saydıramıyorum. Sorun ne olabilir acaba? Upload sorunu olduğu için şemayı upload edemedim.



Program:

@ DEVICE PIC16F877A
@ DEVICE PIC16F877A, WDT_ON
@ DEVICE PIC16F877A, PWRT_ON
@ DEVICE PIC16F877A, PROTECT_OFF
@ DEVICE PIC16F877A, XT_OSC

TRISA=%000011
TRISB=0

ADCON1=7

DEFINE LCD_DREG    PORTB
DEFINE LCD_DBIT    4
DEFINE LCD_EREG    PORTB
DEFINE LCD_EBIT    3 
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_BITS    4
DEFINE LCD_LINES 2

SAYI VAR BYTE
SAYI=0

LCDOUT $FE,1
PAUSE 200

LCDOUT $FE,$80,"SAYI= ", DEC3 SAYI

IF SAYI=255 THEN SAYI=0
IF SAYI=0 THEN SAYI=255

If PORTA.0=0 then SAYI=SAYI+1
If PORTA.1=0 then SAYI=SAYI-1
TA1USS

polleme

PB çok iyi bilmiyorum ama buton basma kontrolünü hangi satırda yapıyorsunuz? Öyle bir kontrol göremedim?

certy

Alıntı yapılan: polleme - 03 Ağustos 2013, 18:41:02
PB çok iyi bilmiyorum ama buton basma kontrolünü hangi satırda yapıyorsunuz? Öyle bir kontrol göremedim?

Son iki satır.
TA1USS

-Hasan-

#3
@ DEVICE PIC16F877A
@ DEVICE PIC16F877A, WDT_ON
@ DEVICE PIC16F877A, PWRT_ON
@ DEVICE PIC16F877A, PROTECT_OFF
@ DEVICE PIC16F877A, XT_OSC

TRISA=%000011
TRISB=0

ADCON1=7

DEFINE LCD_DREG    PORTB 
DEFINE LCD_DBIT    4 
DEFINE LCD_EREG    PORTB 
DEFINE LCD_EBIT    3  
DEFINE LCD_RSREG PORTB 
DEFINE LCD_RSBIT 2 
DEFINE LCD_BITS    4 
DEFINE LCD_LINES 2 

SAYI VAR BYTE
SAYI=0

LCDOUT $FE,1
PAUSE 200

ANA:
LCDOUT $FE,$80,"SAYI= ", DEC3 SAYI

If PORTA.0=0 THEN
PAUSE 200
SAYI=SAYI+1
ENDIF

If PORTA.1
PAUSE 200
SAYI=SAYI-1
ENDIF

GOTO ANA

END


Bunu bir denermisiniz?

ipek

TRISA=%000011
şema olmadığından  a0 ve a1 port'unun giriş olduğunu biliyoruz, adcon ile analog disable yapılmış fakat CMCON 'nunda disable olması gerekir.işlemcin 16F877A comparator barındırıyor.belki bundan çalışmamıştır. 16F628A'da CMCON = 7 veriyoruz 877'de aynımıdır bilmiyorum..

ete

#5
Aynıdır. CMCON=7. Şeklinde komıt verilerek A portunda çalışan komparatörün devre dışı bırakılması gerekir.
Ancak kodlar yinede eksik. Bu nedenle -Hasan- arakaşımızın kodlarına cmcon=7 komutunu ekleyerek dene.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

certy

#6
-Hasan- arkadaşımızın programındaki gibi if komutlarının altına gecikme ekleyince çalıştı. Yardımcı olan herkese teşekkürler.
TA1USS