This discussion focuses on output and input associated with the PICAXE-18X.
With the PICAXE-18X, eight pins are dedicated as outputs and five pins are dedicated as inputs. The Outputs are associated with the PIC's PORTB and the inputs with PORTC. (I have attempted to poke the corresponding TRIS registers to see if I could change the direction of a pin, without success. The PICAXE monitor is continually making PORTB all outputs and PORTA, all inputs).
When the keyword PINS is used on the right hand side of the equation, it refers to all of the Inputs. When used on the left hand side of the equation, it refers to all of the outputs.
x = PINS ' read all of the inputs PINS = %10101001 ' output 1010 1001Individual inputs may be read using Pin0, Pin1, Pin2, Pin6 or Pin7.
Thus;
x = Pin2 ' note that x is now either a 0 or a 1 if Pin7 = 0 Then DoSomethingElseThere are times when one wishes to read multiple inputs;
x = PINS & %00000111 ' note that x is now the state of Pin2, Pin1, Pin0Consider, reading Pin7 and Pin6;
x = PINS & %11000000 / 64The AND operation sets bits 5, 4, 3, 2, 1 and 0 to zero. The / 64 shifts the result, six places to the right. The result, x, is 0, 1, 2 or 3 depending on the state of the inputs on Pin7 and Pin6.
Individual outputs may be set to a logic one or zero;
High 6 Low 0However, individual bits may also be changed by peeking location $06 which is the current state of PORTB.
Peek $06, CurrentPortB Pins = CurrentPortB & %11110000 | xThe current state of PORTB is read into byte variable CurrentPortB. The lowest four bits are zeroed and variable x is ored into the low four bit locations.
Individual bits may be inverted using the exclusive or operator;
Peek $06, CurrentPortB Pins = CurrentPortB ^ %00000100 ' invert output 2