1.安裝MPLAB X IDE與XC8 C語言編譯器
• 安裝 MPLAB X IDE,到此鏈接免費下載 http://www.microchip.com/mplabx
使用教程下載:http://www.microchip.com/mplabx
• 安裝 MPLAB XC8 C 編譯器,到此鏈接免費下載 http://www.microchip.com/xc
MPLAB XC8 C:用於MPLAB X IDE 編程8位單片C語言編譯器。
使用教程下載:http://www.microchip.com/xc
安裝完畢IDE會得到以下兩個快捷方式:
IPE爲燒錄芯片用的工具,IDE爲編寫程序用的工具;XC8安裝後沒快捷方式,需要配置後與IDE一起用。
更多使用資料查看:https://microchipdeveloper.com
2.配置IDE使用XC8 C語言編譯器
雙擊IDE快捷方式,打開菜單:Tools>Options>Embedded>Build Tools.
然後按下圖添加與配置IDE使用XC8 編譯器:
此時開發環境已搭建完畢!
3.新建一個工程
3.1、新建工程的3種方法:
3.2、選擇“Standalone Pronject”,點擊Next:
3.3、選擇單片機類型和型號,點擊Next:
3.4、默認選項,直接點擊Next
3.5、選擇編程器,根據個人需求選擇,也可以任意選擇一個,後續再根據需求修改,這裏選擇“PICkit3”,點擊Next:
3.6、選擇編譯器,這裏選擇上面安裝的XC8編譯器,點擊Next:
3.7、填寫工程名字和選擇工程保存路徑,點擊Finish即可新建完一個工程
4、PIC12F508功能位在IDE的配置
PIC12F508的時鐘選擇、看門狗、程序保護,GP3引腳的使用,是在IDE的菜單:Window -> Target Memory Views -> Configration Bits 裏面配置好,然後在點擊“generate source code to Output”,如下圖:
將輸出的代碼拷貝到源文件中,即可配置完。
接着即可根據以下文檔編寫程序。
PIC12F508規格書、編程手冊等:https://www.microchip.com/wwwproducts/en/PIC12F508
對IO口的操作,可以參考XC8安裝目錄下的include文件夾,如下圖:
貼一個我寫的代碼:
/*
* File: main.c
* Author: Administrator
*
* Created on April 20, 2020, 11:30 AM
*/
#include <xc.h> //適用於所有PIC 8位單片機,包含了所有PIC 8位單片機的頭文件
#include <stdint.h>
// CONFIG
#pragma config OSC = IntRC // Oscillator Selection bits (internal RC oscillator)
#pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config CP = ON // Code Protection bit (Code protection on)
#pragma config MCLRE = OFF // GP3/MCLR Pin Function Select bit (GP3/MCLR pin function is digital input, MCLR internally tied to VDD)
int tc = 0;
uint8_t dice_start = 1;
uint8_t dice_data[6]={1,2,3,4,5,6};
uint8_t flag = 0;
uint8_t start_time = 0;
//uint8_t stop_time = 0;
///////////////////////////////////////////////////////////////////////////
void pic12f508_init(void){
OPTION = 0xd7; //time0 select internal clock,Fosc/4, prescale=1:256
TRISGPIO = 0x08; //G0,G1,G2,G4,G5 as output mode,G3 as input mode
GPIO = 0x00; //turn off all led
TMR0 = 0x3f; //initialization timer,timing 0.05second
}
///////////////////////////////////////////////////////////////////////////
void check_time(void){
if(TMR0 == 0xff){
TMR0 = 0x3f; //initialization timer
if(++tc == 3600){ //timing 180second
tc = 0;
}
}
}
///////////////////////////////////////////////////////////////////////////
void led_display(char dat){
switch(dat){
case 0:GP0=0;GP1=0;GP2=0;GP4=0;break;
case 1:GP0=0;GP1=1;GP2=0;GP4=0;break;
case 2:GP0=0;GP1=0;GP2=0;GP4=1;break;
case 3:GP0=0;GP1=1;GP2=1;GP4=0;break;
case 4:GP0=0;GP1=0;GP2=1;GP4=1;break;
case 5:GP0=0;GP1=1;GP2=1;GP4=1;break;
case 6:GP0=1;GP1=0;GP2=1;GP4=1;break;
default:break;
}
}
///////////////////////////////////////////////////////////////////////////
void delay(int t){
uint8_t a=0,b=0;
while(t>1){
for(a=0;a<200;a++){
while(b<200){b++;}
}
t--;
}
}
///////////////////////////////////////////////////////////////////////////
void main(void) {
pic12f508_init();
while(1){
check_time();
if(GP3 == 1 && dice_start == 1){
dice_data[5] = dice_data[4];
dice_data[4] = dice_data[3];
dice_data[3] = dice_data[2];
dice_data[2] = dice_data[1];
dice_data[1] = dice_data[0];
do{
dice_data[0] = (TMR0 - 0x3f)%7;
}while(dice_data[0] == 0);
led_display(dice_data[2]);
dice_start = 0;
start_time = tc;
flag = 1;
}
if(GP3 == 0 && dice_start == 0){
dice_start = 1;
start_time = tc;
flag = 1;
}
char time = 0;
time = tc - start_time;
if(15 < time && time < 25 && flag == 1){
uint8_t i;
for(i=6;i>0;i--){
led_display(dice_data[i-1]);
delay(80);
}
//led_display(dice_data[0]);
flag = 2;
}
time = tc - start_time;
if(time > 60 && flag == 2){
uint8_t c;
for(c=0;c<5;c++){
led_display(0);
delay(30);
led_display(dice_data[0]); // display the result
delay(30);
}
flag = 3;
}
time = tc - start_time;
if(time >= 240 && flag == 3){
led_display(0);
flag = 0;
}
}
}
5.搭建IC燒錄電路
工程生成的HEX文件,一般在工程目錄下的dist -> default -> production目錄下,如下圖:
燒錄電路:
PICkit 3 的使用教程可以到PIC官網下載,方法如下:
https://www.microchip.com/sitesearch/search/All/12f508?&mns=PICkit%203%20User%E2%80%99s%20Guide&mnc=All
注意:在使用PICkit 3燒錄固件時,IC必須外接電源,不能只由PICkit 3燒錄器供電,否則燒錄會失敗。
燒錄:
PICkit 3連接電腦USB口,可以通過IDE點擊進行燒錄,也可以使用IPE
進行燒錄,請自行查看教程。
結束!