十年專注單片機方案開發的方案公司英銳恩,分享PIC 單片機BASIC 編程應用。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
本教程目的在于 教會你如何編寫程序, 如何編譯,以及如何使用它們使得單片機工作。我們這里提供了大量的實際應用實例以及其必須的外圍接口及其設備連接: 如使用溫度傳感器,AD 和DA 轉換, LCD 和LED 顯示,延時,通訊,而且本書還一直不斷地補充更新一些新的應用內容?!∷械木幋a都為初學者考慮,盡可能地詳盡描述?!τ谥噶罴?,運算符,控制體,和其他的一些basic 的基本元素在許多實例中都有完全解釋?!《?,本書包括了一些有用的mikroBasic 開發環境的介紹: 如何安裝以及如何開發它可能完成的任務的潛力。
為了使問題簡化以及破除一些固有成見,請允許我在你開始閱讀此書之前給你一些建議?!∧憧梢砸婚_始就閱讀此書中某些章節內你認為最感興趣的內容,任何你認為適合你需要的內容。然后再在設計工作的同時,不斷地閱讀你亟需的內容。如果一些功能出現之后,你可能還不是很了解它,也不必產生太多的困擾?!o論如何,使得你的程序工作起來是第一位的。應該一直不斷嘗試,而且要按時完成工作,還要使得它有良好的可靠性,當然,你就可以憑借它賺到錢了。
換句話說,你不用管你是否十分清楚電子是如何在PN結里運動的。你也不必靠知道整個電子發展歷史擔保你或你的家庭的收入。別希望你可以從一本書里就得到所有你需要的?!「鞣N信息總是分散地漫布于我們周圍,細心地收集和給與它們有效的分類。如果你這樣做的話,成功就是必然的。
編譯器Compiler):這是一個運行于PC計算機中的程序,它的任務是把你所用BASIC語言寫出的程序翻譯成為單片機可以執行的“0”、“1”語言。這將BASIC程序翻譯成可以執行的16進制HEX編碼的過程如下面的圖示。用BASIC編寫的程序是以:program_name. pbas 的格式存儲的,然后編譯器把它轉化為:program_name.asm 的格式。這個格式的文件然后再轉化為單片機可執行的HEX 形式,就可以將其由下面的機器寫入單片機的存儲器了。
編程機(Programmer):這是一個將我們轉換后的HEX(16進制)編碼文件從計算機傳送到單片機的存儲器中的器件(也常稱為編程器)。
1.1 為什么使用BASIC(Why BAISIC)?
最初,BASIC語言是作為一種“易于使用”的工具語言,而在1980年代廣泛應用于家用計算機的,而且直到今天也是應用十分普及的少數的不斷拓展的語言之一。BASIC 的名字來自于傳統的,計算機科學上習慣采用的縮寫詞,但所表示的意義卻非常貼切, Beginner’s All-purpose Symbolic Instruction Code – 為“初學者的通用符號指令編碼”
現在,BASIC語言依然被若干的計算機用戶認為是最簡單易用的編程語言而使用著。這樣,這種情況也被轉移到了單片機領域里來。BASIC 語言對于PIC的應用來說,較比Microchip 的 MPASM 在應用和開發中使用起來更容易和便捷。在對MCU的編碼過程中,編程者經常要面對對于相同模塊的處理,比如串行通訊,LCD的顯示,PWM 信號的產生等等。為了更好地處理這些情況,BASIC 就提供了大量的內置以及庫范例(Library routine) 子程序供調用和開發。
如果單從程序簡捷和執行速度上考慮,MPASM還是比BASIC小有優點的。所以,現在依然在BASIC里保留了一個為某些情況下直接使用MPASM的指令,以期在某些特定情況下由用戶使用?,F在大多的單片機,比如PIC,
其一般是單周期執行指令。比如,單片機的時鐘是4MHz 的話,那一個匯編指令執行需要 250ns * 4 = 1us。 而BASIC
命令通常是一系列的匯編指令,所以其執行時間就是其構成中的各個匯編指令的總和。
1.2 不同的需要選擇不同的PIC 單片機
當前,選擇BASIC語言作為開發應用最多的是: PIC16F84, PIC16F87x, PIC16F62x, PIC18Fxxx等。這些單片機具有內置的FLASH程序存儲器,為快速擦除和重新寫入程序提供了保證,所以可快速調試。只要用鼠標輕輕一點編程軟件,單片機的程序就可以被立即擦除,然后重新載入新的程序而不必把芯片拔出。而且,被寫入FLASH 存儲器的數據不會在斷電之后丟失。除了FLASH存儲器之外,PIC16F87x 和PIC16F84系列的單片機還包括了64-256字節的內置EEPROM(電擦寫只讀存儲器), 這同樣可以用于儲存程序數據或者參數而掉電后不會丟失。 BASIC 具有內置的 EEPROM_Read 和 EEPROM_Write 指令 that can 用于將數據載入和儲存以及讀出于 EEPROM.
較早的 PIC 單片機系列 (12C67x, 14C000, 16C55x, 16C6xx, 16C7xx, and 16C92x)的程序存儲器是建立于EPROM/ROM 技術上的, 所以它們只能夠被一次編程 (帶有 ROM 存儲器的OTP版本) 或者帶有一個玻璃窗口 ( 具有 EPROM 存儲器的JW版本,這種版本可以允許當UV光照射玻璃窗口幾分鐘后將其程序內容擦除) 。 OTP 版本通常價格便宜,可以在大規模生產時考慮選擇。
關于更多的單片機特殊品種及其應用的信息,可以查閱數據手冊或者Microchip 的CD-ROM.