// File: hello.c // // Simple "hello, world" example program for the iRX board and // the CCS PCM compiler. After initialization, the program // enters a loop which repeatedly prints out "hello, world", // flashes the red LED, and then waits for 500 mSec. // // For full details on the iRX board and this program, refer to // http://www.media.mit.edu/~r/projects/picsem/GettingStarted/ // // Robert Poor // MIT Media Lab // December, 1998 // #include <16F84.H> // Configure PIC to use: HS clock, no Watchdog Timer, // no code protection, enable Power Up Timer // #fuses HS,NOWDT,NOPROTECT,PUT // Tell compiler clock is 10MHz. This is required for delay_ms() // and for all serial I/O (such as printf(...). These functions // use software delay loops, so the compiler needs to know the // processor speed. // #use DELAY(clock=10000000) // Declare that we'll manually establish the data direction of // each I/O pin on port B. // #use fast_io(B) // Standard definitions for the irx2_1 board // #define RS232_XMT PIN_B1 // (output) RS232 serial transmit #define RED_LED PIN_B2 // (output) Red LED (low true) #define IR_LED PIN_B3 // (output) Infrared LED (low true) #define IR_SENSOR PIN_B4 // (input) IR sensor (Sharp IS1U30) #define RS232_RCV PIN_B5 // (input) RS232 serial receive // Macros to simplify I/O operations // #define RED_LED_ON output_low(RED_LED) #define RED_LED_OFF output_high(RED_LED) #define IR_LED_ON output_low(IR_LED) #define IR_LED_OFF output_high(IR_LED) #define IR_RECEIVED (!input(IR_SENSOR)) // Default tri-state port direction bits: all PORT B bits are // output except for IR_SENSOR (bit 4) and RC232_RCV (bit 5). // #define IRX_B_TRIS 0b00110000 // Inform printf() and friends of the desired baud rate // and which pins to use for serial I/O. // #use rs232(baud=9600, xmit=RS232_XMT, rcv=RS232_RCV) void main() { // since we've declared #use fast_io(B) (above), we MUST // include a call to set_tris_b() at startup. // set_tris_b(IRX_B_TRIS); RED_LED_ON; // reality check at startup delay_ms(200); RED_LED_OFF; while (1) { RED_LED_ON; // turn on the led printf("Hello, world.\r\n"); // print to serial port RED_LED_OFF; // turn off the led delay_ms(500); // do nothing for half a second } }