Błąd w kodzie do ATTiny26??

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Błąd w kodzie do ATTiny26??

Post autor: seg » 30 lip 2006, 22:22

..zaraz mnie trafi..zerżnąłem kod dokładnie tak jak był napisany w NE przez autora ale podczas kompilacji Bascom wywalil mi bledy.

Kod:

'DETEKTOR METALI
' BASCOM-AVR ver1.11.8.1
'generator zewnętrzny 10MHz 1111:111X
$regfile = "AT26DEF.DAT"
$crystal = 10000000

'ustaw port b3, b2 jako wyjścia
Ddrb = &B00001111
'ustaw stan wysoki na b3, b2
Portb = &B00001111

Pllcsr = &B00000010
Pllcsr = &B00000111
Ocr1c = 255
'wypełnienie
Ocr1a = 128
'wypełnienie
Ocr1b = 128
'1k
Osccal = 119
'1k
Tccr1b = 72

'włączenie PWM
Tccr1a = &B00010001


Const_on = 1
Const_off = 0


Config Pina.0 = Input
Config Pina.1 = Input
Config Pina.2 = Input
Config Pina.3 = Input
Config Pina.4 = Input
Config Pina.5 = Input
Config Pina.6 = Input
Config Pina.7 = Input


Porta = 255


Config Pinb.0 = Output
Config Pinb.1 = Output



Pulse Alias Portb.0
Noise Alias Portb.1



Dim Xdelay As Byte
Dim M_xdelay As Byte
Dim Sustain As Byte
Dim M_sustain As Byte


If Pina.0 = 0 Then
Xdelay.0 = 1
Else
Xdelay.0 = 0
End If


If Pina.1 = 0 Then
Xdelay.1 = 1
Else
Xdelay.1 = 0
End If


If Pina.2 = 0 Then
Xdelay.2 = 1
Else
Xdelay.2 = 0
End If


If Pina.3 = 0 Then
Xdelay.3 = 1
Else
Xdelay.3 = 0
End If


If Pina.4 = 0 Then
Sustain.0 = 1
Else
Sustain.0 = 0
End If


If Pina.5 = 0 Then
Sustain.1 = 1
Else
Sustain.1 = 0
End If


If Pina.6 = 0 Then
Sustain.2 = 1
Else
Sustain.2 = 0
End If


If Pina.7 = 0 Then
Sustain.3 = 1
Else
Sustain.3 = 0
End If


Select Case Xdelay
Case 0 :
Xdelay = 65 '26
M_xdelay = 38 '26
Case 1 :
Xdelay = 68 '27
M_xdelay = 35 '27
Case 2 :
Xdelay = 70 '28
M_xdelay = 33 '28
Case 3 :
Xdelay = 73 '29
M_xdelay = 30 '29
Case 4 :
Xdelay = 75 '30
M_xdelay = 28 '30
Case 5 :
Xdelay = 78 '31
M_xdelay = 25 '31
Case 6 :
Xdelay = 80 '32
M_xdelay = 23 '32
Case 7 :
Xdelay = 83 '33
M_xdelay = 20 '33
Case 8 :
Xdelay = 85 '34
M_xdelay = 18 '34
Case 9 :
Xdelay = 88 '35
M_xdelay = 15 '35
Case 10 :
Xdelay = 90 '36
M_xdelay = 13 '36
Case 11 :
Xdelay = 93 '37
M_xdelay = 10 '37
Case 12 :
Xdelay = 95 '38
M_xdelay = 8 '38
Case 13 :
Xdelay = 98 '39
M_xdelay = 5 '39
Case 14 :
Xdelay = 100 '40
M_xdelay = 3 '40
Case 15 :
Xdelay = 103 '41
M_xdelay = 0 '41
End Select


Select Case Sustain
Case 0 :
Sustain = 63 '25
M_sustain = 188 '25
Case 1 :
Sustain = 75 '30
M_sustain = 175 '30
Case 2 :
Sustain = 88 '35
M_sustain = 163 '35
Case 3 :
Sustain = 100 '40
M_sustain = 150 '40
Case 4 :
Sustain = 113 '45
M_sustain = 138 '45
Case 5 :
Sustain = 125 '50
M_sustain = 125 '50
Case 6 :
Sustain = 138 '55
M_sustain = 113 '55
Case 7 :
Sustain = 150 '60
M_sustain = 100 '60
Case 8 :
Sustain = 163 '65
M_sustain = 88 '65
Case 9 :
Sustain = 175 '70
M_sustain = 75 '70
Case 10 :
Sustain = 188 '75
M_sustain = 63 '75
Case 11 :
Sustain = 200 '80
M_sustain = 50 '80
Case 12 :
Sustain = 213 '85
M_sustain = 38 '85
Case 13 :
Sustain = 255 '90
M_sustain = 25 '90
Case 14 :
Sustain = 238 '95
M_sustain = 13 '95
Case 15 :
Sustain = 250 '100
M_sustain = 0 '100
End Select


Pulse = 1
Noise = 0




'GŁÓWNA PĘTLA PROGRAMU
Do
Noise = _on
Waitus 1
Pulse = _off
Waitus 70
Pulse = _on


$asm
lds r30 , {Xdelay} '41
Giga1:
dec r30
cpi r30,0
brne Giga1
$end Asm


Noise = _off


$asm
lds r30 , {Sustain} '100
Giga2:
dec r30
cpi r30,0
brne Giga2
$end Asm


Noise = _on


$asm
lds r30 , {M_Xdelay} '41
Giga3:
dec r30
cpi r30,0
brne Giga3
$end Asm


$asm
lds r30 , {M_Sustain} '100
Giga4:
dec r30
cpi r30,0
brne Giga4
$end Asm


Waitus 9788
Loop


End
______________________________________________

Proszę aby ktoś to u siebie skompilował i poprawił błędy.

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 30 lip 2006, 22:34

Jeśli chodzi o kompilację to wystarczy tylko zmienić deklarację stałych (gdzieś wcięło spacje):

Kod: Zaznacz cały

Const _on = 1
Const _off = 0

seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Post autor: seg » 30 lip 2006, 23:58

..taa..wystarczy palnąć się w łeb - dziękuję Ci bardzo - Ludzie jak wy ze mną wytrzymujecie na tym forum :wink:

ZbeeGin

Post autor: ZbeeGin » 31 lip 2006, 17:45

W przyszłości prosimy także o podawanie raportu błędów. Będzie łatwiej znaleźć :mrgreen:

ODPOWIEDZ