Haberler:

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

Ana Menü

lcdout da sorun yaşıyorum

Başlatan yusuftr80, 12 Eylül 2007, 16:55:08

yusuftr80

SELAM  arkadaşlar (HAYIRLI RAMAZANLAR )aşagıda ki program çalışıyor ama sorun lu çalışıyor  ldc de cıkan yazılar bir anormal  isterseniz programın algoritmasını kısaca anlatayım ondan sonrada program da nerde yanlışlık var ona bakar yardımcı olursanız sevinirim .

Makine da  1 sensör var bandın üzerinden geçen ürünleri saymak  ve  ürün geçmedi takdirde motorun durmasın  sağlamak
sayma işlemi fasıladan itibaren  her konumda çalışması lazım  50hz  ile 60 hz adlında  bu sefer hem ürün kontrolü yapacak sayacak  hem de  ürün  geçmedi anda ana motorun durmasını sağlamak.
ISIS de şema üzerindeki butonlar yanıltmasın  fasıla butonunda 2 anahtarlama kulandım simülasyonda  sayıcının çalışıp çalışmağının kontrolü için sw-buttona basılmış vaziyette  portc5 ine bastımda  ürün geçiyor gibi  saymaya başlıyor  şayet sw buton bırakılmış ise  fasıla  olayı  gibi  her şey duracak  40hz de ise  sürekli  çalışıyor   ama ürünleri sayar vaziyette üründe sorun yok  her şey normal ise bu sefer 50hz veya 60 hz alıyor   yani makine normal çalışma sistemine girmiş  vaziyete  devam ediyor olacak şimdi buraya kadar her şey normal  ama programda  yanlış yaptım  konum zannederim LCDOUT  OLAYI  derleme de yanlış mı var buna bir zahmet bakmanız mümkün mü  derlemede  LCDOUT  işleminde hata veriyor ama  ısıs de normal   çalışıyor  entegreye ise  yüklenmiyor  aradan  lcdout lar dan bir iki tanesini silgimde  program normal  derliyor hata gidiyor  ama LCd bağlı  panoda istedim sonuçlar eksik  çıkıyor

TRISA=%00000000
TRISB=%00000000
TRISC=%11111111
TRISD=%00001111
TRISE=%00000000
ADCON1=7
PORTA=0
PORTB=0
PORTD=0
PORTE=0
'-------------------------------------------------------------------------------
DEFINE LCD_DREG      PORTB   
DEFINE LCD_DBIT      4      
DEFINE LCD_EREG      PORTB   
DEFINE LCD_EBIT      3      
define LCD RWREG    PORTB  
define LCD_RWBIT    2      
DEFINE LCD_RSREG   PORTB   
DEFINE LCD_RSBIT   1      
DEFINE LCD_BITS      4      
DEFINE LCD_LINES   2

ADCON1=7      
 E VAR BYTE
 I VAR BYTE
SAY VAR BYTE
SAY=0
 I=0
 E=0
 READ 0,E
 LCDOUT $FE,1
 PAUSE 200
'******************** MENÜ BÖLÜMÜ ***********************
 MENU:
LCDOUT $FE,2,"DENEME AS TARSUS"
LCDOUT $FE,$FC0,"HOS GELDINIZ"
PAUSE 100

IF PORTC.7=0 THEN
WHILE PORTC.7=0
WEND

GOSUB MENU_BASLA
ENDIF
 
 IF PORTC.0=0 THEN
 
WHILE PORTC.0=0
WEND
 
GOSUB BASLA
ENDIF
 
IF PORTD.2=0 THEN
WHILE PORTD.2=0
WEND
LCDOUT $FE,1
GOSUB X1
ENDIF
 
GOTO MENU
X1:
LCDOUT $FE,2,"DIKKAT CALISMA VAR"
LCDOUT $FE,$C0," TEHLİKE!!!!!"


GOTO X1  
       
MENU_BASLA:
LCDOUT $FE,1,"MOTOR DURMA"
LCDOUT $FE,$C0,"ZAMAN SAY=",DEC5 E

 IF PORTD.0=0 THEN
 E=E+1  
WRITE 0,E
WHILE PORTD.0=0
WEND
ENDIF

IF PORTD.1=0 THEN
E=E-1
WRITE 0,E
WHILE PORTD.1=0
WEND  
ENDIF

IF PORTC.7=0 THEN
WHILE PORTC.7=0
WEND
PAUSE 100
LCDOUT $FE,1
GOSUB BASLA
ENDIF  
GOTO MENU_BASLA


BASLA:'*******************_PROGRAMIN İLK BAŞLADI YER_***********
LCDOUT $FE,1,"ISE HAZIR     =",DEC3 E
LCDOUT $FE,$C0,"CIKAN URUN=",DEC5 SAY
PAUSE 100

IF PORTC.0=0 THEN
PORTA=%00100000
PAUSE 100
LCDOUT $FE,1
GOSUB BASLA_1
ENDIF

IF PORTC.1=0 THEN
LCDOUT $FE,1
GOSUB BASLA_2  '40=HZ GİDEN BÖLÜM  
ENDIF  

IF PORTC.7=0 THEN
WHILE PORTC.7=0
WEND
LCDOUT $FE,1
GOSUB MENU_BASLA
ENDIF

IF PORTC.6=0 THEN
WHILE PORTC.6=0
WEND
LCDOUT $FE,1
GOSUB SAY_SON
 ENDIF
 

   
GOTO BASLA

                  'SAY SON  SIFIRLAMA YERI   YARIM KALDI
SAY_SON:
LCDOUT $FE,1,"CIKAN URUN=",DEC5 SAY
' BURDA YARIM KALDIK SAYMA  SIFIRLAMADA  YARIN DEVAM EDILECEK
IF PORTC.6=0 THEN
WHILE PORTC.6=0
WEND
SAY=0
ENDIF

IF PORTC.0=0 THEN
WHILE PORTC.0=0
WEND
GOSUB BASLA
ENDIF

GOTO SAY_SON


 
BASLA_1:
LCDOUT $FE,1,"FASILA 30=HZ"
LCDOUT $FE,$C0,"URUN SAY=",DEC5 SAY  
PAUSE 100
PORTA=%00100001

IF PORTC.0=1 THEN
PAUSE 100
PORTA=0
LCDOUT $FE,1
GOSUB BASLA
ENDIF

IF PORTC.5=0 THEN
SAY=SAY+1
WHILE PORTC.5=0
WEND  
ENDIF    

GOTO BASLA_1


BASLA_2:
LCDOUT $FE,1,"FASILA 40=HZ"
LCDOUT $FE,$C0,"URUN SAY=",DEC5 SAY  

IF PORTC.1=0 THEN
PORTA=%00100000
PAUSE 100
PORTA=%00100010
WHILE PORTC.1=0  
WEND  
ENDIF

IF PORTC.5=0 THEN
SAY=SAY+1
WHILE PORTC.5=0
WEND  
ENDIF

IF PORTC.0=0 THEN
WHILE PORTC.0=0
WEND
LCDOUT $FE,1
PORTA=0
PAUSE 100
GOSUB BASLA
ENDIF

IF PORTC.2=0 THEN
PAUSE 100
LCDOUT $FE,1
GOSUB BASLA_3
ENDIF

IF PORTC.4=0 THEN
WHILE PORTC.4=0
WEND
PORTA=0
LCDOUT $FE,1
PAUSE 50
GOSUB BASLA
ENDIF
 GOTO BASLA_2



BASLA_3:
LCDOUT $FE,1,"FASILA 50=HZ"
LCDOUT $FE,$C0,"URUN SAY=",DEC5 SAY  

IF PORTC.2=0 THEN
WHILE PORTC.2=0
WEND
PORTA=%00100000
pause 100  
PORTA=%00100100
ENDIF  
 
 FOR I=0 TO 50  
 pause 100
LCDOUT $FE,1,"MOTOR 50=HZ  ",DEC3 I
 IF I=e THEN
 LCDOUT  $FE,1
 GOSUB HOP_1  
 ENDIF
 
  IF PORTC.4=0 THEN HOP_1
  IF PORTC.3=0 THEN
  LCDOUT $FE,1
  GOSUB BASLA_4
  ENDIF
   IF PORTC.5=0 THEN
   WHILE PORTC.5=0
   WEND
   I=0
   SAY=SAY+1
   LCDOUT $FE,$C0,"URUN SAYI=",DEC5 SAY
   ENDIF    
  NEXT I

GOTO BASLA_3


 HOP_1:  
PORTA=0
LCDOUT $FE,1,"MOTOR STOP 50=HZ",DEC5 E
LCDOUT $FE,$C0,"URUN SAY=" ,DEC5 SAY

IF PORTC.1=0 THEN    
 LCDOUT $FE,1
  GOSUB BASLA_1
WHILE PORTC.1=0
WEND  
ENDIF

IF PORTC.0=0 THEN
LCDOUT $FE,1
GOSUB BASLA
WHILE PORTC.0=0
WEND
ENDIF
 
GOTO HOP_1


BASLA_4:
LCDOUT $FE,1,"FASILA 60=  HZ"
LCDOUT $FE,$C0,"URUN SAY=",DEC5 SAY  

IF PORTC.3=0 THEN
WHILE PORTC.3=0
WEND
PORTA=%00100000
pause 100  
PORTA=%00101000
ENDIF  
 
IF PORTC.4=0 THEN HOP
 FOR I=0 TO 50  
 pause 100
 LCDOUT $FE,1,"MOTOR 60=HZ  ",DEC3 I
 IF I=e THEN HOP  
 
 IF PORTC.4=0 THEN  HOP
  IF PORTC.2=0 THEN
  PAUSE 100
  GOSUB BASLA_3
  ENDIF
   
   IF PORTC.5=0 THEN
   WHILE PORTC.5=0
   WEND
   
   I=0
   SAY=SAY+1
   LCDOUT $FE,$C0,"URUN SAY=",DEC5 SAY
   ENDIF    
  NEXT I
 
 GOTO BASLA_4


HOP:
LCDOUT $FE,1,"MOTOR STOP 60=HZ",DEC5 E
LCDOUT $FE,$C0,"URUN SAYISI=",DEC5 SAY

PORTA=0
   
IF PORTC.1=0 THEN
LCDOUT $FE,1
GOSUB BASLA_2
WHILE PORTC.1=0
WEND
ENDIF

IF PORTC.0=0 THEN
LCDOUT $FE,1
GOSUB BASLA
WHILE PORTC.0=0
WEND
ENDIF
 
GOTO HOP







END  

NOT:devre  şemasını  da görndermek isterdim ama nasılk  gönderileceni bilemedim  herkeşe kolay gelesin iyi çalışmalar

Maxim

#1
şemayı nasıl paylaşacaksınız diye uzun uzun yazacaktım ama üşendim valla ,
isterseniz bana yollayın ben koyayım buraya ,

xxx@yahoo.com

yusuftr80

arkadaşım MSN den yolladım  kolay gelsin


elektronik

lcd ye yazı gönderdikten sonra biraz bekleme yap

örnek:  LCDOUT $FE,2,"DIKKAT CALISMA VAR"
           LCDOUT $FE,$C0," TEHLİKE!!!!!"
           PAUSE 50

yusuftr80

Arkadaşım ilgine çok teşekkür ederim  pause  versemde  sorun aynı degişen birşey olmuyor pause versem de vermesem de  ama  
Programı yazıp F9 yaptımda  bu hatayı veriyor ( Warn UGRASO-1ASM 774:[102] code crosses boundary @ 800h ) Fakat hex si  veriyor entegreye yükledimde  sorunsuz çalışıyor peki  derleme yaparken  bu hata yı niye veriyor ki üstelik  çalışıyorda  :roll:  :?:  :?:

aslan_korhan

O hatta değil, sadece bir uyarı mesajı ( warning ). Örneğin PIC16F877'yı sonuna kadar kod ile doldurursan bu mesajı 3 defa veriyor. Bir sorun olmaz.
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

lordtorm

X1:
LCDOUT $FE,2,"DIKKAT CALISMA VAR"
LCDOUT $FE,$C0," TEHLİKE!!!!!"
GOTO X1

bu kısım sonsuz donguye girmiyormu.
bırakayım diyorum bu işleri

Veli B.

Sorun sadece sonsuz donguye girmesi değil, ayni zamanda returnde yapamiyor. Gosub ile dallandiginiz bolumlerden her daim return ile donmeniz gerekir. Yapmazsaniz stack sorunlari yasarsiniz.

bilim_teknik

Programın bu bölümünde eksik var yani  burayı dahil etmeye çalıştım da  hata vermeye başlamıştı
bu sebepten de yarım  bırakmak zorunda kalmıştım daha sonra  .
programı  devam edip  yazdığım da ise  HEX si verdi  yükleme yaptım da ise program çalıştığını  görünce de öyle bıraktım  ama bu hata bir sorun verir midiye de sizlerin fikrini almak istemiştim
 
X1:
LCDOUT $FE,2,"DIKKAT CALISMA VAR"
LCDOUT $FE,$C0," TEHLIKE!!!"
PORTA=%00100000
PORTE=%00000001

IF PORTD.3=0 THEN
PORTA=%00100001
PORTE=%00000011
WHILE PORTD.3=0
WEND
ENDIF

IF PORTD.2=0 THEN
WHILE PORTD.2=0
WEND
PORTE=0
PORTA=0
GOSUB BASLA
ENDIF

GOTO X1
YANİ BU ŞEKİLDE PANODAN AYRI MAKİNANIN ARKATARAFINDA ÇALIŞMA YAPILIRKEN ÖNTARAFDAKİ PANOYU  DEVRE DIŞI BIRAKIYOR VE İŞİBİTTİNDE İSE TEKRARDAN PORTD.2 . BAGLI BUTTONA BASTINDA ÖN ANA PANO TEKRARDAN DEVREYE GRİYOR.
|^^^^^^^^^^^^\ ||\  |__PICPROJE.ORG __| ||'""|""\___  | _____________ l | |__|__|___| )  (@!)!(@)"""""**|(@) (@)****|(@)