Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Überauf bei meinem Zähler umgehen? Kategorie: Programmierung Basic (von Thomas Schumacher - 9.05.2005 18:32)
 Als Antwort auf Re: Überauf bei meinem Zähler umgehen? von DIE HARD - 8.05.2005 17:13
Thomas Schumacher nutzt:  CC1-M-Unit V1.2/2.0
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

Bisherige Antworten:

Re: Überauf bei meinem Zähler umgehen? (von DIE HARD - 10.05.2005 10:51)
    Re: Überauf bei meinem Zähler umgehen? (von Thomas Schumacher - 10.05.2005 12:15)
        Re: Überauf bei meinem Zähler umgehen? (von DIE HARD - 10.05.2005 19:33)
            Re: Überauf bei meinem Zähler umgehen? (von Thomas Schumacher - 11.05.2005 17:14)
                Re: Zahlenausgabe über 32767 (von ManfredW - 14.05.2005 13:37)
                    Re: Zahlenausgabe über 32767 (von Thomas Schumacher - 15.05.2005 20:51)