PIC單片機入門筆記(新手學PIC必看)——基於PIC16F886


學習PIC單片機的目的是打算做一款433M無線開關,之前學習過51與AVR單片機,對8位單片機有一些基礎,不過PIC單片機還是第一次接觸,先從入門開始吧!入門實驗最經典的是點亮一只LED了,這次也它為例走一遍PIC開發的整個流程。雖然C語言已成主流,由於PIC單片機匯編指令只有35條,記憶容易,這次就從非主流開始!

一、准備工作
1. 在二手市場買來一本【PIC單片機原理與應用】第4版。
2. 在淘寶買來一個PIC的下載仿真器【PICkit3】。
3. 從廢舊設備上面拆下一片PIC16F886的28腳單片機,用覆銅板制作了一個簡單的PIC最小系統板,可以用來下載仿真、按鍵輸入、LED指示燈、AD輸入。
4. PIC開發環境MPLAB X IDE V3.6。
5. 連接好硬件,如下圖



PIC仿真下載器的引腳說明如下圖



1腳連接到單片機的1腳;4腳連接到單片機的28腳;5腳連接到單片機的27腳;6腳空。

二、新建項目












三、配置位
PIC單片機配置位很重要,相當於AVR單片機的熔絲位,以下是官方文檔對於配置位的說明,如下圖



因為最小系統板沒有外接晶振,所以要選擇使用內部晶振,看門狗也關閉,還有一個是LVP這個要設置為OFF,否則下載后不運行,下面貼設置方法






四、編寫程序
這里有幾點需要注意的
1. 使用的IO口是否有上拉電阻功能,因為有的IO口沒有,在設計電路時需要的話就要加上拉電阻
2. 操作相應的寄存器時可能需要先選擇該寄存器所在的存儲體,設置由狀態寄存器【STATUS】的RP0和RP1位控制,或IRP(間接尋址)來進行選擇。

以下是控制LED間隔1秒閃爍的程序
---------------------------------------------------------------------------------------------------------------------------------
#include"p16f886.inc"

; CONFIG1
;__config 0x2FE4
__CONFIG _CONFIG1, _FOSC_INTRC_NOCLKOUT &_WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF &_BOREN_ON & _IESO_ON & _FCMEN_ON & _LVP_OFF
; CONFIG2
;__config 0x3FFF
__CONFIG _CONFIG2, _BOR4V_BOR40V &_WRT_OFF
; 使用配置位生成器在這里插入配置代碼

RES_VECT CODE 0x0000 ; 處理器復位向量
GOTO START ; 轉到程序的開始

; 在這里添加中斷如果使用

MAIN_PROGCODE ; 讓連接器放置主程序

START BSF STATUS,RP0 ;選擇體1
BSF OSCCON,SCS
MOVLW H'EF' ;向TRISC寫入0x0F
MOVWF TRISC
BCF STATUS,RP0 ;返回體0
LOOP BCF PORTC,RC4 ;將PORTC的RC4位清零
CALL DELAY_1S ;調用延時1秒子程序
BSF PORTC,RC4 ;將PORTC的RC4位置位
CALL DELAY_1S
CALL LOOP ;循環執行

;-------------------------------------------------------------------------------
;延時1S子程序
;-------------------------------------------------------------------------------
DELAY_1S MOVLW H'06' ;向20H寫入0x06
MOVWF 20H
LOOP1 MOVLW H'EB' ;向21H寫入0xEB
MOVWF 21H
LOOP2 MOVLW H'EC' ;向22H寫入0xEC
MOVWF 22H
LOOP3 DECFSZ 22H ;22H自減一,不為0則繼續循環,為0則間跳
GOTO LOOP3
DECFSZ 21H ;21H自減一,不為0則繼續循環,為0則間跳
GOTO LOOP2
DECFSZ 20H ;20H自減一,不為0則繼續循環,為0則間跳
GOTO LOOP1

RETURN ;子程序返回

END

下圖是PIC16F886特殊功能寄存器,每個型號的特殊功能寄存器不太一樣,需要查看芯片數據手冊


總結:學單片機,不只需要時間,還需要資金的投入,應該控制好資金和時間的投入,信心要滿滿的,我入門PIC的過程中遇到很多問題,有想買個現成的開發板的沖動,后來問題解決了,也學到了不少,開發板雖然是現成的,但是對於硬件開發相當不利,技術應該更多的去嘗試,別人的理論要通過實驗來驗證正確性,技術更是積累,時間久了,自然感到懂得多了,開發項目才能得心應手。關於單片機的選擇,可以選擇你手上擁有的任何一款PIC的芯片來學習,因為功能在強的芯片,和功能在差的芯片,基本的架構和程序編寫邏輯是相同的,學好一款,其它大同小異。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM