Noktalı Virgül ";"

Başlatan said, 11 Mayıs 2020, 01:50:12

said

Merhaba,
Pic Basic Pro da Satır başındaki ;  ne anlama gelmektedir. benim bildiğim satırı devre dışı bırakmak (yanlış da biliyor olabiliri.). sizlerden ricam ;  ne iş için kullanılır işlevi nedir.

elimde bir kod var derleyip .hex işlemciye yazınca çalışıyor ama içerisindeki başında ";"  olan satırları siliyorum derleyip .hex dosyasını işlemciye yazınca çalışmıyor. işlemci (pic16f1826)

Microcode Studio , Pic Basic Pro

Elektronikprojem

; işareti ilgili satırı bulunduğu yerden itibaren yorum satırı haline getirir.Yani ; konulan kısımlar yazılım içerisinde herhangi bir etkisi olmayan kısımlardır.

said

bende öyle biliyordum ama silip derlediğimde program çalışmaz oldu  :D  anlam veremedim o yüzden başlık açtım  :)

İlyas KAYA

Pic  basic de açıklama satırları tek tırnak ' ile olur. Muhtemelen sigorta ayarı yada assembly rutinini silmiş olabilirsiniz.
Neyi sildiginizi görmek lazım.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

said

#4
@ ERRORLEVEL -303 
;@ ERRORLEVEL -202                    
@ __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
@ __config _CONFIG2, _PLLEN_OFF & _LVP_OFF & _STVREN_OFF & _BORV_HI & _WRT_OFF  

; 4 MHZ *************************
;PLLEN_OFF
;DEFINE OSC 4
;OSCCON = %01101000
;********************************
; 8 MHZ *************************
;PLLEN_OFF
;DEFINE OSC 8
;OSCCON = %01110000
;********************************
; 16 MHZ *************************
;PLLEN_OFF
DEFINE OSC 16
OSCCON = %01111000
;********************************
; 32 MHZ *************************
;PLLEN_ON 
;DEFINE OSC 32
;OSCCON = %01110000
;OSCTUNE = %00011111
;DEFINE OSC 32


Include "modedefs.bas"

;BAUDCON = 0

Duty VAR byte
;-------------------------------PWM---------------------------------------------

;PR2=62

;T2CON=%00000111
;T2CON =%00000100
;Duty =250
;CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
;CCP1CON.5 = duty.1 
;CCPR1L = DUTY >>2 
;*******INTERRUPT**************************************************************

;INTCON =%00000000
;IOCBN=%00000000
;IOCBF=%00000000
;INTCON.0=0

;INTCON =%10001000 
;IOCBN=%00000100
;IOCBF=%00000100

;********************************************************************************

ADCON0=0
ADCON1=0 

ANSELA =%00000000    
ANSELB =%00000000  ;PORTA.6 ANALOG RİRİŞ

FVRCON =0
SRCON0=0
DACCON0 = 0
DACCON1 = 0
PCON=%00000000

CM1CON1 = 0
CM1CON0 = 0
OPTION_REG=%00000000

WPUA =0
WPUB =%00000100
CPSCON0.7=0
CPSCON0=0
LATB=%00000000

TRISA = %00000001  ;PORTA.4 ANALOG RİRİŞ
TRISB = %00000111

LEDB VAR PORTB.7
LEDC VAR PORTB.5

MOTOR VAR PORTB.3
HALL VAR PORTB.6
SYMBOL TX=PORTA.1
SYMBOL TX1=PORTA.2
SYMBOL RX=PORTA.0
SYMBOL POW=PORTA.7
low pow
DAT VAR BYTE
DAT=0
LOW HALL
low ledc
;*******************************************************************************
kodun bir bölmü bu

ete

Kodun tamamını verseydin ne olup bittiğini anlamak daha kolay olurdu.
Kapatılan satırlar içinde işlemciiçin ve özellikle yazılmış program için can alıcı satırlar (register Komutları) mevcut. Bunların kapatılması direk programı çalışmaz hale getirecek nitelikte.
Örnek vereyim programda şayet Kesme kullanılıyor ise tüm kesme register komutlarını kapatmış oluyorsun ve otomatikman kesme çalışmayacaktır. Çalışmayınca ne bileyim belkide displayler çalışmayacaktır. Yada kesmeden ne yapılıyor ise çalışmayacaktır. Programı koymadığın için o kısmı göremiyorum yorumuda ancak bu kadar yapabiliyorum.
Mesela işlemcinin ne hızla çalıştığını ayarlayan Define satırıda kapatılmış. Buda programdaki bütün gecikme komutlarının yada zamanlama komutlarının doğruçalışmayacağının bir göstergesidir.
Örnekleri çoğaltmak mümkün.

Ete

said

#6
@ ERRORLEVEL -303 
;@ ERRORLEVEL -202                    
@ __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
@ __config _CONFIG2, _PLLEN_OFF & _LVP_OFF & _STVREN_OFF & _BORV_HI & _WRT_OFF  

; 4 MHZ *************************
;PLLEN_OFF
;DEFINE OSC 4
;OSCCON = %01101000
;********************************
; 8 MHZ *************************
;PLLEN_OFF
;DEFINE OSC 8
;OSCCON = %01110000
;********************************
; 16 MHZ *************************
;PLLEN_OFF
DEFINE OSC 16
OSCCON = %01111000
;********************************
; 32 MHZ *************************
;PLLEN_ON 
;DEFINE OSC 32
;OSCCON = %01110000
;OSCTUNE = %00011111
;DEFINE OSC 32


Include "modedefs.bas"

;BAUDCON = 0

Duty VAR byte
;-------------------------------PWM---------------------------------------------

;PR2=62

;T2CON=%00000111
;T2CON =%00000100
;Duty =250
;CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
;CCP1CON.5 = duty.1 
;CCPR1L = DUTY >>2 
;*******INTERRUPT**************************************************************

;INTCON =%00000000
;IOCBN=%00000000
;IOCBF=%00000000
;INTCON.0=0

;INTCON =%10001000 
;IOCBN=%00000100
;IOCBF=%00000100

;********************************************************************************

ADCON0=0
ADCON1=0 

ANSELA =%00000000    
ANSELB =%00000000  ;PORTA.6 ANALOG RıRıŞ

FVRCON =0
SRCON0=0
DACCON0 = 0
DACCON1 = 0
PCON=%00000000

CM1CON1 = 0
CM1CON0 = 0
OPTION_REG=%00000000

WPUA =0
WPUB =%00000100
CPSCON0.7=0
CPSCON0=0
LATB=%00000000

TRISA = %00000001  ;PORTA.4 ANALOG RıRıŞ
TRISB = %00000111

LEDB VAR PORTB.7
LEDC VAR PORTB.5

MOTOR VAR PORTB.3
HALL VAR PORTB.6
SYMBOL TX=PORTA.1
SYMBOL TX1=PORTA.2
SYMBOL RX=PORTA.0
SYMBOL POW=PORTA.7
low pow
DAT VAR BYTE
DAT=0
LOW HALL
low ledc
;*******************************************************************************
KON VAR BYTE
KON=0
i var word
k var BYTE
;d var word
c var byte
b var byte
B2 VAR BYTE 
SAYAC VAR WORD
SAYAC=0
SAYI VAR BYTE
SAYI=0
SAYI1 VAR BYTE
SAYI1=14
DURUM VAR BYTE
DURUM=0


LOW PORTB.4
LOW PORTB.7
DUTYCYLE VAR BYTE
DUTYCYLE =255

HIGH LEDB
PAUSE 800
LOW LEDB
PAUSE 300
HIGH LEDB
PAUSE 800
LOW LEDB
PAUSE 300
HIGH LEDB
PAUSE 800
LOW LEDB
PAUSE 300

BASLA:
;DISABLE
B2=0
;BUTTON PORTB.1,0,50,10,B2,1,KESME1
WHILE PORTB.1=0 ;THEN
GOTO KESME1
;ENDIF
WEND
IF DAT=228 OR SAYI>0 AND SAYI<9 OR KON=1THEN
DUTYCYLE =255
PWM PORTB.4,DUTYCYLE,40
DUTYCYLE =0
PWM PORTB.4,DUTYCYLE,30
ENDIF
GOTO BASLA

KESME1:
B2=0
PAUSE 100
IF PORTB.1=0 THEN
GOTO KESME
ENDIF
GOTO BASLA


KESME:
DISABLE
SAYI=0
KON=0
SAYAC=0
K=0 
;DISABLE
;HIGH TX1
;SEROUT2 TX1,188,["KESME DATA",13]
;LOW TX1
HIGH LEDB
HIGH PORTB.4
HIGH TX
HIGH pow
;DISABLE
;HIGH LEDB
;FOR C=0 TO 5
FOR i=0 to 15000
next i
;PAUSE 3000
;NEXT C
;LOW LEDB

;DISABLE
SEROUT2 TX,188,["#","2","0","2","3",10,13]
SEROUT2 TX,188,["#","2","0","2","3",10,13]


SERIN2 RX,188,[WAIT("#","2","0","3","8"),dec DAT]
;DISABLE

low TX
;DISABLE
IF DAT=228 THEN
SAYI=0
LOW LEDB
LOW PORTB.4
B2=0
low pow
DISABLE  ;++
INTCON =%00000000
IOCBN  =%00000000 
IOCBF  =%00000000
GOTO BASLA
ENDIF
;DISABLE
;HIGH TX1
;SEROUT2 TX1,188,[#dat,13]
;LOW TX1
;HIGH TX1
;SEROUT2 TX1,188,["DAT KONTROL",13]
;LOW TX1
IF DAT<=87 THEN
;DISABLE
PR2=62
T2CON =%00000100
Duty =255
CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
CCP1CON.5 = duty.1 
CCPR1L = DUTY >>2



;HIGH MOTOR




CCP1CON=%10001100
;HIGH MOTOR
;PAUSE 150
HIGH HALL
ON INTERRUPT GOTO KESMESAY
INTCON =%10001000
IOCBN  =%00000100
IOCBF  =%00000100
ENABLE
;*******************************************************************************
for c= 0 to  5
for i = 0 to 45000
HIGH HALL


;ENDIF


IF SAYI<9 AND DURUM=0 THEN
DURUM=1
SAYAC=0
K=0
;HIGH TX1
;SEROUT2 TX1,188,["DURUM=",#DURUM,13]
;LOW TX1
ON INTERRUPT GOTO KESMESAY
enable
IOCBN=%00000100
IOCBF=%00000000
INTCON=%10001000
ENDIF

next i
next c
IF C<7 AND i<45005 THEN
KON=1
ENDIF
;*******************************************************************************
;INTCON=%00000000
;KAS:
DISABLE
low pow
;LOW MOTOR
CCP1CON=%00000000
CCP1CON.2=0
CCP1CON.3=0
low PORTB.3
;i=0
;c=4
;HIGH TX1
;SEROUT2 TX1,188,["SURE BITTI STOP",13]
;LOW TX1

LOW HALL
HIGH LEDB 
HIGH PORTB.4
;HIGH TX1
;SEROUT2 TX1,188,["15 SANıYE BEKLE",13]
;LOW TX1
;INTCON=%00000000
DISABLE
for c= 0 to  18
for i = 0 to 30000
;HIGH LEDB
next i
next c
DISABLE
;HIGH TX1
;SEROUT2 TX1,188,["15 SANıYE BıTTı",13]
;LOW TX1
low pow
endIF
DISABLE
;CLEAR
LOW HALL
SAYI=0 
LOW PORTB.4
B2=0
low pow
SAYAC=0
k=0
DAT=0
DURUM=0
;HIGH TX1
;SEROUT2 TX1,188,["TUR=",#SAYI,13]
;LOW TX1
DISABLE
IOCBN=%00000000
IOCBF=%00000000
INTCON=%00000000
LOW LEDB
GOTO BASLA

;*******************************************************************************
DISABLE 
KESMESAY:

;PAUSE 10
;INTCON =%00000000 ; KESMEYı KAPAT------------
K=0
;HIGH TX1
;SEROUT2 TX1,188,["KESME",13]
;LOW TX1
;for k=0 to 255
IF PORTB.2=0 AND DURUM=1 AND SAYI<9 THEN
GOTO BIRAKTIMI
BIRAKTI:
DISABLE
SAYI=SAYI+1
IF SAYI>1 AND SAYI<8 THEN
DUTY=245
PR2=62
T2CON =%00000100
CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
CCP1CON.5 = duty.1 
CCPR1L = DUTY >>2
ENDIF
;IF SAYI>3 AND SAYI<6 THEN
;DUTY=235
;PR2=62
;T2CON =%00000100
;CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
;CCP1CON.5 = duty.1 
;CCPR1L = DUTY >>2
;ENDIF
;IF SAYI>5 AND SAYI<7 THEN
;DUTY=200
;PR2=62
;T2CON =%00000100
;CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
;CCP1CON.5 = duty.1 
;CCPR1L = DUTY >>2
;ENDIF
IF SAYI>6 THEN
DUTY=185
PR2=62
T2CON =%00000100
CCP1CON.4 = duty.0 ;' Setup 10-bit duty cycle as
CCP1CON.5 = duty.1 
CCPR1L = DUTY >>2
ENDIF
IF SAYI>8 THEN 
DISABLE 
INTCON =%00000000
IOCBN  =%00000000 
IOCBF  =%00000000 
IF dat<87 and dat>82 THEN
For i=0 to 10000
next i
endif
CCP1CON=%00000000
CCP1CON.2=0
CCP1CON.3=0
low PORTB.3
;LOW MOTOR 
LOW HALL 
LOW LEDB
LOW PORTB.4
SAYI=0
i=45001
c=6 
B2=0
ENDIF
durum=0
SAYAC=0
K=0
ENDIF

IF PORTB.2=0 AND DURUM=0 AND SAYI<9 AND PORTB.3=1  THEN
BIRAKTIMI:
IF SAYAC>8000 AND K>1 AND SAYI<9 THEN
;HIGH HALL ------------------
GOTO CIK
SAYAC=0
K=0
ENDIF

;IF SAYI=8 THEN 
;GOTO BIRAKTI
;ENDIF

if PORTB.2= 1 then
SAYAC=0
;HIGH HALL ---------------------
goto birakti
else
;LOW HALL  " «OK TEHLıKELı A«MA  -----------------------
SAYAC=SAYAC+1
IF SAYAC>8500 THEN
K=K+1
SAYAC=0
ENDIF 
goto biraktimi
endiF 
ENDIF
;*****************************************
;WHILE SAYI>14
;DISABLE 
;INTCON =%00000000
;IOCBN  =%00000000 
;IOCBF  =%00000000 
;IF dat<87 and dat>82 THEN
;For i=0 to 10000
;next i
;endif
;LOW MOTOR 
;LOW HALL 
;LOW LEDB
;LOW PORTB.4
;SAYI=0
;i=45001
;c=6 
;B2=0
;WEND 
;******************************************




;WHILE !PORTB.2
;FOR k=0 to 3000
;next k
;low HALL
;k=3001
;wEND
;************************************************
;PAUSE 10 
k=0
;B=0
SAYAC=0
DURUM=1
;HIGH TX1
;SEROUT2 TX1,188,["KESME2=",#SAYI,13]
;LOW TX
;pause 10
IOCBF=%00000000
IOCBN=%00000100
INTCON=%10001000
Enable

IF DURUM=0 THEN
CIK:
DISABLE 
IOCBN=%00000000
IOCBF=%00000000
INTCON=%00000000
RESUME
ENDIF

RESUME
;DISABLE

;*******************************************************************************

END

said

kodun tamamı budur. bunu pic 16f1826 yüklüyorum sorunsuz çalışıyor. pic basic pro konusunda acemi olduğun için ne yapacağımı da bilemedim

ete

Kod dedğin şey çorbaya dönmüş. Çalışıyordur ama ne çalışıyor anlamak mümkün değil.
Ssanki kararsız birisi yazmış düzelttiği şeyleri silmemiş kod üstüne kod binmiş.
Bir programda kesme bir kere aktif edilir ve kesme oluşunca program nereye gidecek belirlenir. Sende bunlar ikişer üçer kere yapılmış. Derleyicinin kimi esas aldığını anlamak zor .
Disable komutu Global kesmeleri kapatır. Enable ile yeniden açılır. Bu da bol keseden anlamsız yerlerde kullanılmış. Kısaca program çöplük gibi temizlemeside zor olur bunun ama bence kolları sıvasan fena olmaz.
Ne amaçla yazılmış çokda belli olmuyor. Bir motor devir kontrolü için olduğunu düşünüyorum ama emin de olamıyorum. Bir yandan yazılımsal PWM komutunu kullanmışsınız bir yandan HPWM aktif edilmiş gibi gözüküyor.
Her neyse bu program sağlıklı çalışacak bir program değil. Kim yazdı ise düzeltmesi gerekir.

Ete

İlyas KAYA

Bu pic basic değil. Daha çok mikrobasic e beziyor. Picbasic' e Düzenlenmesi gerekir.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

said

yazanın kim olduğunu bilmiyorum. benim çalıştırmam lazım. şuan bu kod ile sistem çalışıyor. ama düzenlemek için  bilgim yetersiz geldi. kafam karıştı açıkcası. yaptığı iş kısaca şu bir sersör ile tetikleniyor. sonra arduino ile haberleşiyor oradan gelecek bir bilgiyi bekliyor. orada bilgi doğrulanıp tekrar pic çalış komutu geliyor ve motoru belli bir süre tetikliyor.

said

dosya uzantısı pbp olduğu için pic basic diye düşündüm açıkcası

ete

Evet doğru kod PBP için yazılmış.

BU kod çalışıyor ise hiç bulaşma derim. Ama bir yerlerde aksıyordur mutlaka.
Bu kod un bana göre çalışması mucize!!!.

Ete

said

teşekkür ederim yardımlarınız için. olmaz ise andığım kadarı ile ccs yeniden yazmayı deneyeyim . teşekkür ederim yardımlarınız için

Powered by EzPortal