00001
00002
00003
00004
00005
00006 #include "piccolo_all.h"
00025
00026 #if !defined(USE_INTERRUPT)
00027 #error "Nincs definiálva az USE_INTERRUPT szimbólum!"
00028 #endif //USE_INTERRUPT
00029 #if !defined(USE_USB)
00030 #error "Nincs definiálva az USE_USB szimbólum!"
00031 #endif //USE_USB
00032 #if !defined(__18F14K50)
00033 #error "Ez a program PIC18F14K50 mikrovezérlőre készült!"
00034 #endif //__18F14K50
00035
00036
00037
00038 #pragma interrupt hi_isr
00039 void hi_isr() {
00040 USBDeviceTasks();
00041 }
00042
00043 #pragma interruptlow lo_isr
00044 void lo_isr() {
00045 }
00046
00051 void InitADC(void) {
00052 CONFIG_AN10_AS_ANALOG();
00053 CONFIG_AN11_AS_ANALOG();
00054 ADCON0=0x28;
00055 ADCON1=0;
00056 ADCON2=0xBE;
00057 ADCON0bits.ADON=1;
00058 }
00059
00064 unsigned int ReadADC(unsigned char chan) {
00065 ChangeBits(ADCON0, chan<<2, 0b00111100);
00066 ADCON0bits.GO = 1;
00067 while (ADCON0bits.NOT_DONE);
00068 return (((unsigned int)ADRESH)<<8)|(ADRESL);
00069 }
00070
00071 void main(void) {
00072 unsigned int vref,vpot,vthermo;
00073 long a,b,c;
00074 InitializeSystem();
00075 REFCON0=FVR_ENABLE|FVR1S_2048;
00076 while(!FVR_STATUS);
00077 InitADC();
00078 while (!usb_cdc_kbhit()) {
00079 ProcessIO();
00080 }
00081 outString("PICCOLO-14K50 themometer.c program\n");
00082 while (1) {
00083 vref=ReadADC(15);
00084 vpot=ReadADC(10);
00085 vthermo=ReadADC(11);
00086 a=1023L*2048L/vref;
00087 outString(" Vdd = ");
00088 outdec(a,3);
00089 b=vpot*2048L/vref;
00090 outString(" V Vpot = ");
00091 outdec(b,3);
00092 outString(" V Hőmérséklet = ");
00093 c=vthermo*2048L/vref-500;
00094 outdec(c,1);
00095 outString(" C \n");
00096 delay_ms(5000);
00097 }
00098 }