summaryrefslogtreecommitdiffstats
path: root/test/cc5x/sample1.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/cc5x/sample1.c')
-rw-r--r--test/cc5x/sample1.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/cc5x/sample1.c b/test/cc5x/sample1.c
new file mode 100644
index 0000000..021b5cb
--- /dev/null
+++ b/test/cc5x/sample1.c
@@ -0,0 +1,61 @@
+
+/* global variables */
+char a;
+bit b1, b2;
+
+/* assign names to port pins */
+bit in @ PORTB.0;
+bit out @ PORTB.1;
+
+void sub( void)
+{
+ char i; /* a local variable */
+
+ /* generate 20 pulses */
+ for ( i = 0; i < 20; i++) {
+ out = 1;
+ nop();
+ out = 0;
+ }
+}
+
+
+
+void main( void)
+{
+ // if (TO == 1 && PD == 1 /* power up */) {
+ // WARM_RESET:
+ // clearRAM(); // clear all RAM
+ // }
+
+ /* NOTE 1: some devices have a comparator module
+ that have to be switched off to use certain
+ pins as digital IO */
+ //CMCON = 0x07; // switch comparators off
+
+ /* NOTE 2: devices having AD converter may need to
+ configure the pins assigned to 'in' and 'out' as
+ digital IO */
+ //ADCON1 = ..
+
+ /* First decide the initial output level on the
+ output port pins, and then define the input/
+ output configuration. This avoids spikes at the
+ output pins. */
+
+ PORTB = 0b.0000.0010; /* out = 1 */
+ TRISB = 0b.1111.0001; /* xxxx 0001 */
+
+ a = 9; /* value assigned to global variable */
+
+ do {
+ if (in == 0) /* stop if 'in' is low */
+ break;
+ sub();
+ } while ( -- a > 0); /* 9 iterations */
+
+ // if (some condition)
+ // goto WARM_RESET;
+
+ /* main is terminated by a SLEEP instruction */
+}