
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo allerseits, ich habe einen seltsamen Effekt mit meiner C-Control: Ich benutze ganz normal die mitgelieferte CCBasic 2.0 IDE und darin steht dieses Programm (siehe unten). Es läuft einfach nicht los, es sei denn ich kommentiere das Unterprogramm "#KEYDECODE" aus (das - nebenbei bemerkt - gar nicht benutzt wird) oder ich tausche die Reihenfolge der Unterprogramme 'KEYDECODE" und "#LCD_INIT" - dann funktioniert es auch. Im Simulator funktionieren beide Varianten. Es scheint, als wäre das Unterprogramm "#LCD_INIT" sozusagen "zu weit weg" von seiner aufrufenden Stelle.. Als ich vor vielen Jahren noch Assembler programmierte, kam sowas vor, wenn man weiter als 255 Byte weit "springen" wollte.. Probiert es aus / wer hat eine Idee ? Vielleicht ist es ja auch viel einfacher und ich hab mich selbst ausgetrickst?: 'hier beginnt das Testprogramm define w0 word[1] 'notwendig zum Speichern define b0 byte[1] 'je 1 Byte für Portstatus define b1 byte[2] define b2 byte[3] define b3 byte[4] define b4 byte[5] define b5 byte[6] define i word[4] ' Einleseschleifen define j byte[9] define KEYCODE byte[12] 'DECODIERTE TASTE define ADC8 ad[8] gosub LCD_INIT:print"#L101#";:print "Testprogramm";:pause 1000/20 OPEN# FOR WRITE for i = 0 to 600 for j = 0 to 9 gosub LCD_INIT:print i;:Print " ";:print j;:Print " ";:print filefree; print# w0 gosub BYTES_LOESCHEN next next CLOSE# goto ende #BYTES_LOESCHEN b0=0:b1=0:B2=0:B3=0:b4=0:B5=0 RETURN #KEYDECODE KEYCODE=255:if ADC8<10 then return KEYCODE=0:if abs(17-ADC8)<5 then return KEYCODE=1:if abs(33-ADC8)<5 then return KEYCODE=2:if abs(50-ADC8)<5 then return KEYCODE=3:if abs(66-ADC8)<5 then return KEYCODE=4:if abs(82-ADC8)<5 then return KEYCODE=5:if abs(98-ADC8)<5 then return KEYCODE=6:if abs(114-ADC8)<5 then return KEYCODE=7:if abs(130-ADC8)<5 then return KEYCODE=8:if abs(146-ADC8)<5 then return KEYCODE=9:if abs(163-ADC8)<5 then return KEYCODE=10:if abs(181-ADC8)<5 then return'CLR KEYCODE=11:if abs(199-ADC8)<5 then return'ENTER KEYCODE=12:if abs(217-ADC8)<5 then return'F1 KEYCODE=13:if abs(236-ADC8)<5 then return'F2 KEYCODE=255:return #LCD_INIT print"#ON_LCD#"; print"#INIT#"; print"#CLR#"; RETURN #Ende END |
| Antwort schreiben |