⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc1.c

📁 Write by CCS for P铆c6F877a
💻 C
字号:
///////////////////////////////////////////////////////////////////////////////
// MPLAB IDE V7.11 + CCS C3.18
// Use 16F877A ADC and Rs232 for EasyPIC
//
// by Thi阯 Minh electronics www.tme.com.vn
// 2007/06/26
///////////////////////////////////////////////////////////////////////////////
#include <16F877A.h>                  // PIC16F877 header file
#device 16f877*=16, ADC=10            // 10 bits ADC
#use delay(clock=8000000)             // for 8Mhz crystal
#fuses HS, NOWDT, NOPROTECT, NOLVP    // for debug mode
#use rs232(baud=9600, xmit=PIN_C7, rcv=PIN_C6, stream=MYPC)   
                                       // rs232 setting

#define DO_NOTHING              0
#define DO_START_ADC            1                       
#define DO_END_ADC              2


/*===========================================================================*/
void main(void)
{
        int16 int_volt;
        int8  str_volt[21];
        float flt_volt;
        int8  do_what = DO_NOTHING;
        int8  tmp;
                  printf( "S: Start ADC\n\r");
                  Printf( "Q: END ADC\n\r");
        while(1){
                // if rs232 get char
                if(0 != kbhit())
                        {
                        tmp = fgetc(MYPC);
                     switch(tmp)
                                {
                                case 'S':
                                case 's':
                                        printf( "S: Start ADC\n\r" );
                                        do_what = DO_START_ADC;
        
                                        // init pic16f877a adc
                                        setup_adc_ports(RA0_RA1_RA3_ANALOG);
                                        setup_adc(ADC_CLOCK_INTERNAL);
                                        set_adc_channel(3);
                                        break;  
                                case 'Q':
                                case 'q':
                                        printf( "Q:EndADC\n\r" );
                                        do_what = DO_END_ADC;
                                        
                                        // adc off
                                        setup_adc(ADC_OFF);
                                        break;
                                default :       // rs232 get other char
                                        putc(tmp);
                                        break;
                                }//end switch(tmp)
                        }//end if(kbhit())

                switch(do_what)
                        {
                        case DO_START_ADC:
                                // start adc and send result to PC
                                int_volt = read_adc();
                                flt_volt = 5.0 * int_volt / 0x3ff;
                                sprintf(str_volt, "ADC: %1.3fV\n\r", flt_volt);
                                printf(str_volt);
                                printf( "\n\r" );
                                delay_ms(500);
                                break;  
                        case DO_END_ADC:
                                // you want to do
                                break;
                        case DO_NOTHING:
                                // you want to do
                                break;  
                        default:
                                break;
                        }//end switch(do_what)

                }//end while(1)
}//end main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -