
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Vielen Dank fĂźr das Beispiel, ich habe es getestet und es funktioniert. Danach habe ich den Code etwas modifiziert. Low und Higbit etc. Dann funktioniert dieser leider nicht mehr so wie es soll. Hier der Code: Ich Zähle die myWord Variable hoch und teile diese in Low und High Byte. define LIGHT as port[16] define VALUE16 as word define DATA0 as byte define DATA1 as byte define VALUE as byte define GP as byte define myWord as word[5] LCD.INIT LIGHT=off DATA0=E5h DATA1=7Fh myWord=32760 #x myWord = myWord +1 Data1 = myWord / 256 Data0 = myWord MOD 256 '----- UNSIGNED COUNTER 0 TO 65535----- 'DATA0=DATA0+1 'IF DATA0=0 THEN DATA1=DATA1+1 '------- SHOW UNSIGNED COUNTER --------- value= DATA1 shr 4 looktab zehntausender_tab,value,gp looktab hunderter_tab,value,value16 value16=value16+(DATA1 and 0Fh)*256+DATA0 value=gp+(value16/1000) value16=value16 mod 1000 LCD.POS 1,1 LCD.PRINT value if value16<100 then LCD.PRINT "0" if value16<10 then LCD.PRINT "0" LCD.PRINT value16 lcd.pos 2,1 lcd.print myWord pause 10 goto x '------------ CONVERTIERUNGS TABELLE --------- table zehntausender_tab 0 4 8 12 16 20 24 28 32 36 40 45 49 53 57 61 65 END TABLE table hunderter_tab 0 96 192 288 384 480 576 672 768 864 960 56 152 248 344 440 536 Eine Idee? GruĂ Thomas > > Hallo..... > Hier ist ein Beispiel wie ein 16Bit Zähler als 0-65535 am LCD dargestellt wird. > In deinem Fall musst du FREQ in HI und LO Byte zerlegen (wie hier beim Zähler) und > gleichzeitig beachten, dass der Ereigniszähler vor dem Ăberlauf stopt. > > > define LIGHT as port[16] > define VALUE16 as word > define DATA0 as byte > define DATA1 as byte > define VALUE as byte > define GP as byte > > > LCD.INIT > LIGHT=off > DATA0=E5h > DATA1=7Fh > #x > '----- UNSIGNED COUNTER 0 TO 65535----- > DATA0=DATA0+1 > IF DATA0=0 THEN DATA1=DATA1+1 > '------- SHOW UNSIGNED COUNTER --------- > value= DATA1 shr 4 > looktab zehntausender_tab,value,gp > looktab hunderter_tab,value,value16 > value16=value16+(DATA1 and 0Fh)*256+DATA0 > value=gp+(value16/1000) > value16=value16 mod 1000 > LCD.POS 1,1 > LCD.PRINT value > if value16<100 then LCD.PRINT "0" > if value16<10 then LCD.PRINT "0" > LCD.PRINT value16 > goto x > > '------------ CONVERTIERUNGS TABELLE --------- > table zehntausender_tab > 0 4 8 12 16 20 24 28 32 36 40 45 49 53 57 61 65 > END TABLE > table hunderter_tab > 0 96 192 288 384 480 576 672 768 864 960 56 152 248 > 344 440 536 > END TABLE > > |
| Antwort schreiben |