/* -----\ /----- MCLR/VPP <01> <28> RB7/PGD....... ..............RA0/AN0 <02> <27> RB6/PGC....... ..............RA1/AN1 <03> P <26> RB5........... ..RA2/AN2/VREF-/CVREF <04> I <25> RB4........... ....... RA3/AN3/VREF+ <05> C <24> RB3/PGM.......<> ......RA4/T0CKI/C1OUT <06> <23> RB2........... .....RA5/AN4/SS/C2OUT <07> 1 <22> RB1........... VSS <08> 6 <21> RB0/INT.......<> OSC1/CLKI <09> F <20> VDD OSC2/CLKO <10> 8 <19> VSS ......RC0/T1OSO/T1CKI <11> 7 <18> RC7/RX/DT.....<> .......RC1/T1OSI/CCP2 <12> 6 <17> RC6/TX/CK.....<> .............RC2/CCP1 <13> <16> RC5/SDO....... ..........RC3/SCK/SCL <14> <15> RC4/SDI/SDA... ------------- */ #include <16F876A.h> #device ADC=10 // 10 bits ADC resolution #include #FUSES NOWDT // No Watch Dog Timer #FUSES HS // Crystal osc <= 4mhz #FUSES PUT // Power Up Timer #FUSES NOPROTECT // Code not protected from reading #FUSES NODEBUG // No Debug mode for ICD #FUSES NOBROWNOUT // No brownout reset #FUSES NOLVP // No low voltage prg, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD // No EE protection #FUSES WRT_50% // Lower half of Program Memory is Write Protected #define PIN_ANE_E PIN_B2 // Anemometer enable (5V for open collector) #define PIN_CW PIN_B4 // CW Audio Outpu #define PIN_PTT PIN_B5 // Push-To-Talk for radiot #define PIN_DBGRX PIN_B6 // Serial RX #define PIN_DBGTX PIN_B7 // Serial TX #define PIN_PRESS PIN_A0 // Pressure Sensor Signal (1:1/1) #define PIN_BATT PIN_A1 // Battery Voltage Input (1:1/3) #define PING_CHRG PIN_A2 // Charge Current Sensor Signal (1:1/1) #define PIN_ANE PIN_A4 // Anemometer Signal (10 pulses per rev.) #define PIN_SCL PIN_C3 // I2C SCL for LM35 #define PIN_SDA PIN_C4 // I2C SDA for LM35 #define CW_T 60 // CW "T" unit (ms) #define CWID {0xC0,0x70,0xF4,0x48,0xA0,0xD8,0x00,0xD0,0xB0,0xC0,0x00,0x58,0xD0,0xC0,0x60,0x58,0xA0,0xFF} // E D 4 Y A F U R E C U E N C A /* CW TABLE A 1010 0000 0xA0 N 0110 0000 0x60 Z 0011 1000 0x38 B 0111 1000 0x78 O 0001 0000 0x10 0 0000 0100 0x04 C 0101 1000 0x58 P 1001 1000 0x98 1 1000 0100 0x84 D 0111 0000 0x70 Q 0010 1000 0x28 2 1100 0100 0xC4 E 1100 0000 0xC0 R 1011 0000 0xB0 3 1110 0100 0xE4 F 1101 1000 0xD8 S 1111 0000 0xF0 4 1111 0100 0xF4 G 0011 0000 0x30 T 0100 0000 0x40 5 1111 1100 0xFC H 1111 1000 0xF8 U 1101 0000 0xD0 6 0111 1100 0x7C I 1110 0000 0xE0 V 1110 1000 0xE8 7 0011 1100 0x3C J 1000 1000 0x88 W 1001 0000 0x90 8 0001 1100 0x1C K 0101 0000 0x50 X 0110 1000 0x68 9 0000 1100 0x0C L 1011 1000 0xB8 Y 0100 1000 0x48 */ int T0_OVERFLOW; int T1_OVERFLOW; int16 ADC_DATA; char *MSG="EE.E,EEE,EEE,EE,EEEE"; // VV.V,AAA,GGG,WW,PPPP #use delay(clock=4000000) #use rs232(baud=9600,parity=N,xmit=PIN_DBGTX,rcv=PIN_DBGRX,bits=8) #use i2c(Master,Fast,sda=PIN_SDA,scl=PIN_SCL) #int_timer0 timed_0_int(){ T0_OVERFLOW=1; } #int_timer1 timed_1_int(){ T1_OVERFLOW=1; } void NewLine(){ printf("\r\n"); } char LONG_2_CHAR(int32 NUM, int POS){ char STR[6]; itoa(NUM,10,STR); if (POS