Đăng vào

Tạo một project cho PIC16f877A bằng MPLAB XC8

Giới thiệu

MPLAB XC8 là trình biên dịch cho ngôn ngữ C mới nhất của Mỉcrochip với khả năng tối ưu code rất mạnh. MPLAB XC8 hỗ trợ lập trình trên C cho các dòng vi điều khiển PIC10/12/16/18.

MPLAB XC8
complier

Video này hướng dẫn tạo một project đơn giản cho pic16f877a bằng Mplab xc8 thực hiện công việc đọc adc và xuất led. Sau đó tiến hành mô phỏng trong proteus.

Code file main.c

/******************************************************************************/
/* Files to Include                                                           */
/******************************************************************************/

#if defined(__XC)
    #include /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include /* HiTech General Include File */
#endif

#include /* For uint8_t definition */
#include /* For true/false definition */

#include "system.h"        /* System funct/params, like osc/peripheral config */
#include "user.h"          /* User funct/params, such as InitApp */

/******************************************************************************/
/* User Global Variable Declaration                                           */
/******************************************************************************/

/* i.e. uint8_t ; */

/******************************************************************************/
/* Main Program                                                               */
/******************************************************************************/
void main(void)
{
    /* define variable for program */
    unsigned short ADC_value;

    /* Configure the oscillator for the device */
    ConfigureOscillator();

    /* Initialize I/O and Peripherals for application */
    InitApp();

    /*main loop*/
    while(1)
    {
        /* TODO */
        __delay_us(25); //Waits for the acquisition to complete
        ADCON0bits.GO = 1;   //Starts ADC conversion
        while (ADCON0bits.nDONE) continue;   //wait till ADC conversion is over
        ADC_value = (ADRESH << 8) + ADRESL ;   //Merging the MSB and LSB
        if (ADC_value > 512) RD0 = 1;
        else RD0 = 0;
    }
}