Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

mcsp hataları

Başlatan my_lover, 04 Ağustos 2010, 10:47:09

my_lover

 Merhaba arkadaşlar mcsp 3.0da program derlemek istedim ( pbp2.50 var ) yazıp derleme yaptıktan sonra şu hataları aldım.

if portC.5 = 0 then
lcdout $fe,$C0," Vertical Motor CW "
           LOW portB.4
           PAUSE 25

         HIGH portB.4
         PAUSE 100
Endif

bu sıranın  lcdout $fe,$C0," Vertical Motor CW " satırında bad expression hatası veriyor.Programda bütün lcdout komutlarında bu hatayı veriyor nedenini çözemedim yardım edermisiniz.

ete

Bu satırda hiç bir hata yok. Muhtemelen ya yazım hatası var (sen buraya yazarken doğru yazmışsındır) yada bir başka hata bu satırmış gibi gösteriliyor. Bu nedenle programın tamamını koyarsan bulurum. Değilse kendin bulmak zorundasın.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

my_lover

programın tamamı budur:

include "modedefs.bas"
ADCON1=%00000010
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
OPTION_REG=0
INTCON = %10010000
ON INTERRUPT GOTO MANUEL
'******************************************************************
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 0
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
'******************************************************************
sensor1 var byte
sensor2 var byte
sensor3 var byte
sensor4 var byte
wrong var word
tolerance var byte
tolerance_h var byte
tolerance = 3
tolerance_h = 3
Gsum var WORD
G_tolerance var WORD
TempGtol var WORD


Last_difference var word
Hwrong_abs var word
Vwrong_abs var word
difference var word
i var byte
SDA VAR PORTC.3
SCL VAR PORTC.2
DB0 VAR BYTE[7]

'####################################
TRISA=%00001111
TRISD=%00001000
TRISB=%00000001
TRISC=%11111000
PORTB=255
PORTC=0

'####################################
lcdout $FE,1,"# At The Double Axises #"
lcdout $fe,$C0,"# Tracking The Sun #"
pause 2000
lcdout $FE,1,"Halilibrahim AYAR"
lcdout $fe,$C0,"Varna Technical Univercity"
pause 2000

CLOCK:

I2CWRITE SDA,SCL,$D0,$00,[$00,$00,$12,$03,$25,$05,$05]
pause 500
lcdout $FE,1,"CLOCK Is Set Up"
pause 500

LOOP:

GOSUB Read_1307
if DB0[0]=6 then MainLoop
LCDOUT $FE,1,"CLOCK=", HEX DB0[2],":", HEX DB0[1],":",HEX DB0[0]
LCDOUT $FE,$C0,"DATA=", HEX DB0[4],"/",HEX DB0[5],"/",HEX DB0[6]
GOTO LOOP

Read_1307:
I2CREAD SDA,SCL,$D0,$00,[STR DB0\7]
return

MainLoop:
lcdout $FE,1,"Automatic Mode"
pause 2000
GOSUB Read_Sensor

Sufficiency:
I2CREAD SDA,SCL,$D0,$00,[STR DB0\7]
LCDOUT $FE,$C0,"CLOCK=", HEX DB0[2],":", HEX DB0[1],":",HEX DB0[0]
PAUSE 500
if DB0[2]=18 AND DB0[1]=3 then BecameNight
GOSUB Read_Sensor
Gsum = sensor1+sensor2+sensor3+sensor4
if Gsum < 30 then Light_not_enough

'#################################################
Vertical_Motor:
IF (sensor1+sensor3) > (sensor2+sensor4) THEN WEST
                   GOTO WEST
                   else
                   GOTO EAST
ENDIF
RETURN

WEST:
                  if (sensor1+sensor2) > (sensor3+sensor4) then
                                     GOTO NORTHWEST
                                     else
                                     GOTO SOUTHWEST
ENDIF
RETURN

NORTHWEST:
wrong=(sensor1+sensor3) - (sensor2+sensor4)
lcdout $fe,$C0,"NORTHWEST wrong:", #wrong
TempGtol = sensor1
GOSUB TLERANS_VERTICAL
GOSUB send_pwm2
wrong=(sensor1+sensor3) - (sensor2+sensor4)




lcdout $fe,$C0,"NORTHWEST wrong:", #wrong
GOSUB TLERANS_VERTICAL
GOTO NORTHWEST

SOUTHWEST:
wrong=(sensor1+sensor3) - (sensor2+sensor4)
lcdout $fe,$C0,"SOUTHWEST wrong:", #wrong
TempGtol = sensor3
GOSUB TLERANS_VERTICAL
GOSUB send_pwm2
wrong=(sensor1+sensor3) - (sensor2+sensor4)
lcdout $fe,$C0,"SOUTHWEST wrong:", #wrong
GOSUB TLERANS_VERTICAL
GOTO SOUTHWEST

EAST:
if (sensor1+sensor2) > (sensor3+sensor4) then
                   GOTO NORTHEAST
                   else
                   GOTO SOUTHEAST
ENDIF
RETURN

NORTHEAST:
wrong=(sensor2+sensor4) - (sensor1+sensor3)
lcdout $fe,$C0,"NORTHEAST wrong:", #wrong
TempGtol = sensor2
GOSUB TLERANS_VERTICAL
GOSUB send_pwm1
wrong=(sensor2+sensor4) - (sensor1+sensor3)
lcdout $fe,$C0,"NORTHEAST wrong:", #wrong
GOSUB TLERANS_VERTICAL
GOTO NORTHEAST

SOUTHEAST:
wrong=(sensor2+sensor4) - (sensor1+sensor3)
lcdout $fe,$C0,"SOUTHEAST wrong:", #wrong
TempGtol = sensor4
GOSUB TLERANS_VERTICAL
GOSUB send_pwm1
wrong=(sensor2+sensor4) - (sensor1+sensor3)

lcdout $fe,$C0,"SOUTHEAST wrong:", #wrong
GOSUB TLERANS_VERTICAL
GOTO SOUTHEAST

TLERANS_VERTICAL:
Vwrong_abs=ABS wrong
if Vwrong_abs < toleranCE then Horizontal_Motor
RETURN


'#################################################
Horizontal_Motor:
                      IF (sensor1+sensor2) > (sensor3+sensor4) THEN
                                          goto NORTH
                                          else
                                          goto SOUTH
ENDIF
RETURN

NORTH:
wrong=(sensor1+sensor2) - (sensor3+sensor4)
lcdout $fe,$C0,"NORTH wrong:", #wrong
GOSUB TLERANS_Horizontal
GOSUB send_pwm3
wrong=(sensor1+sensor2) - (sensor3+sensor4)
lcdout $fe,$C0,"NORTH wrong:", #wrong
GOSUB TLERANS_Horizontal
GOTO NORTH

SOUTH:
wrong=(sensor3+sensor4) - (sensor1+sensor2)
lcdout $fe,$C0,"SOUTH wrong:", #wrong
GOSUB TLERANS_Horizontal
GOSUB send_pwm4
wrong=(sensor3+sensor4) - (sensor1+sensor2)
lcdout $fe,$C0,"SOUTH wrong:", #wrong
GOSUB TLERANS_Horizontal
GOTO SOUTH



TLERANS_Horizontal:
Hwrong_abs=ABS wrong
if Hwrong_abs < tolerance_H then Final_Control
RETURN

'##################################################
Final_Control:
lcdout $fe,1,"Final_Control "
pause 400
GOSUB Read_sensor

differenCE=sensor1*3-sensor2-sensor3-sensor4
Last_differenCE = ABS differenCE
lcdout $fe,$C0,"Last_difference:", # Last_difference
if Last_difference < 10 then sleep
PAUSE 3000

GOTO Vertical_Motor

sleep:
lcdout $fe,1,"Sleep Mode"
sleep 5
lcdout $fe,1,"Out of sleep mode"
pause 400

GOSUB Read_sensor
Gsum = sensor1+sensor2+sensor3+sensor4
if Gsum < 30 then light_not_enough

GOTO Final_Control

Read_sensor:
adcin 0,sensor1
adcin 1,sensor2
adcin 2,sensor4
adcin 3,sensor3
lcdout $FE,1
lcdout $fe,$80, #sensor1,"#",#sensor2,"#",#sensor3,"#",#sensor4,"#"
RETURN

KSENSOR_OKU:
adcin 0,sensor1
adcin 1,sensor2
adcin 2,sensor4

adcin 3,sensor3
lcdout $fe,$C0, "           "
lcdout $fe,$C0, #sensor1,"#",#sensor2,"#",#sensor3,"#",#sensor4,"#"
RETURN

Send_pwm1:
LOW portB.1
PAUSE 40
HIGH portB.1
GOSUB Read_sensor
RETURN

Send_pwm2:
LOW portB.2
PAUSE 40
HIGH portB.2
GOSUB Read_sensor
RETURN

Send_pwm3:
LOW portB.3
PAUSE 5
HIGH portB.3
PAUSE 100
GOSUB Read_sensor
RETURN

Send_pwm4:
LOW portB.4
PAUSE 5
HIGH portB.4
PAUSE 100
GOSUB Read_sensor
RETURN

Light_not_enough:
lcdout $fe,1,"There is no enoght light"
SLEEP 5
GOTO sufficiency

Becamenight:
LOW portB.1
PAUSE 20000


PAUSE 20000
PAUSE 20000
HIGH portB.1
PAUSE 1000
GOTO sufficiency

disable
MANUEL:
INTCON = %10000000
PORTB.1 = 1
PORTB.2 = 1
PORTB.3 = 1
PORTB.4 = 1
lcdout $fe,1,"MANUEL KONTROL"
PAUSE 2000
RESUME BUTTON

BUTTON:
if portC.7 = 0 then
lcdout $fe,$C0,"Vertical Motor CCW "
            LOW portB.1
            PAUSE 500
            HIGH portB.1
Endif

if portC.6 = 0 then
lcdout $fe,$C0," Vertical Motor CW "
           LOW portB.2
           PAUSE 500
           HIGH portB.2
Endif

if portC.4 = 0 then
+lcdout $fe,$C0," Horizontal Motor CCW "
           LOW portB.3
           PAUSE 25
           HIGH portB.3
PAUSE 100
Endif

if portC.5 = 0 then
lcdout $fe,$C0," Vertical Motor CW "
           LOW portB.4
           PAUSE 25

         HIGH portB.4
         PAUSE 100
Endif

if portD.3 = 0 then
lcdout $fe,1,"Calibration"
pause 250

Calibration:
                  GOSUB Kread_sensor
                  PAUSE 500
                  if portD.3 = 0 then CLB_EXIT
                                  goto Calibration
endif

if portB.0 = 0 then MANUEL_EXIT
GOTO BUTTON

CLB_EXIT:
lcdout $fe,1,"MANUEL CONTROL"
PAUSE 1000
GOTO BUTTON

MANUEL_EXIT:
pause 250
INTCON = %10010000
pause 250
GOTO MainLoop

END

my_lover

Hocam bana verdiği hatalarda bunlar.

ERROR Line 227: Bad expression. (1.pbp)
ERROR Line 232: Bad expression. (1.pbp)
ERROR Line 318: Syntax error. (1.pbp)
ERROR Line 320: Bad expression. (1.pbp)
ERROR Line 322: Bad expression. (1.pbp)
ERROR Line 329: Bad expression. (1.pbp)
ERROR Line 336: Bad expression. (1.pbp)
ERROR Line 344: Bad expression. (1.pbp)
ERROR Line 353: Bad expression. (1.pbp)
ERROR Line 367: Bad expression. (1.pbp)

ete

Hatalar ve çözümleri;

Satır 227:
Bir basic komutu olan SLEEP etiket ismi olarak kullanılamaz. Bu ismi SLEPT olarak değiştir.

Satır 232:
Aynı sebebe dayalı hata, SLEEP olan Etiket ismini SLEPT olarak değiştir.

Satır 318:
Bir basic komutu olan BUTTON adı etiket ismi olarak kullanılamaz. Etiket Adını BUTTTON olarak değiştir. (3 adet T)

Satır 320:
Aynı şekilde BUTTON olan etiket adını BUTTTON olarak değiştir.

Satır 322: Bu hata BUTTON değişikliğini yapınca kayboldu.

Satır 329:Bu hata da BUTTON değişikliğini yapınca kayboldu.

Satır 336: Satırın başında + işareti vardı kaldırınca düzeldi.

Satır 344:Bu hata da BUTTON değişikliğini yapınca kayboldu.

Satır 353:Bu hata da BUTTON değişikliğini yapınca kayboldu.

Satır 367:Bu hata da BUTTON değişikliğini yapınca kayboldu.

Ancak bu temizlikten sonra başka hatalar ortaya çıktı.
Birincisi yine LOOP bir basic komutu yada özel basic kelimesi olup Etiket adı olarak kullanılamaz. Belki PBP250 bunu hata olarak görmeyebilir. Ancak sen yinede bunu LOOOP yada LOOPP olarak değiştir.

İkincisi,
Satır 357 de , "  GOSUB Kread_sensor" şeklinde bir ifade var ancak Kread_sensör diye bir etiket yok burasınıda düzelt.

Satır 104 de;
IF (sensor1+sensor3) > (sensor2+sensor4) THEN WEST
                   GOTO WEST
                   else
                   GOTO EAST
ENDIF
şeklinde komutlar var. Ilk satırda if ile başlamışsın Then den sonra WEST adlı etikete yollamışssın.
O zaman alttaki satırlar fazlalık oluyorlar onların Endif dahil silinmesi gerekir.

Hepsi bu kadar.

ETE




Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

JKramer

@my_lover

Konu dışı olacak ama mesaja kod eklerken "code" tag'i içine alırsanız hem mesajın kapladığı yer azalır hem de tek bir tıklamayla kodun tamamı kolayca seçilebilir.

my_lover

 çok teşekkür ederim hepinize hatalarımı gördüm kaç gündür uğraşıyorum programda hata var die hemen düzelteyim.Saygılar emeklerinize.