Ik heb een simpele broncode geschreven voor mijn 16f877/jal.
Aan de poorten b0....b3 hangt een bcd->7segment decoder, als ik de volgende code in m'n pic zet dan telt ie perfect van 0 tot 9 en dan springt ie weer naar 0.

include 16f877_20
include jlib
port_b_direction = all_output
var byte x = 0b_0000
forever loop
port_b_low = x
delay_1s
x = x + 1
if x == 0b_1111 then
x = 0b_0000
end if
end loop

wanneer ik hetzelfde wil doen maar dan het display laten aftellen dan doet ie het niet, hij telt van 9 tot 0 en dan valt mijn display even uit.....even later springt ie weer naar 9 en begint weer met aftellen.
Als ik led's op de poorten hang zie ik dat de waarde na de 0 op het display meteen 1111 wordt, maar de poort wordt niet naar 0000 teruggezet. de niet werkende code is:

include 16f877_20
include jlib
port_b_direction = all_output
var byte x = 0b_1001
forever loop
port_b_low = x
delay_1s
x = x - 1
if x == 0b_1111 then
x = 0b_1001
end if
end loop

Hopelijk is het nog een beetje te begrijpen.
Wat doe ik fout?

Op 2 mei 2003 18:54:56 schreef Jaco van der Linden:
Wat doe ik fout?

0 - 1 == 0b_1111_1111, jij test op 0b_0000_1111

Hij doet het, dus het is niet zo dat wanneer ik werk met port_b_low en port_b_high, dat ik dan met een 4bit code moet gaan werken?

RTFM, op hte moment dat je toekent aan een nibble wordt alleen de laagste 4 bit gebruikt. Maar de variabele die je gebruikt ( x ) is gewoon een byte, er zijn geen nibble variabelen.