Microchip单晶片上的C语言应用说明(一)(第八期双月刊) 联系客服

发布时间 : 星期五 文章Microchip单晶片上的C语言应用说明(一)(第八期双月刊)更新完毕开始阅读78333600eff9aef8941e060f

Microchip單晶片上的C語言應用說明(一)

Microchip的PIC單晶片雖然只有37個指令,指令少雖然容易了解,但要做複雜的運算,則非常難以撰寫程式,為了減少開發時間,唯有使用C語言來開發。

筆者這次要跟大家談的是用C語言來開發八位元單晶片,在過去或許聽來覺得不可思議,因單晶片它通常只有幾K的記憶體(數K的ROM合幾十bytes的RAM),那麼少的記憶體還用C語言來開發,真是非常的浪費及不實用,在我參加了Microchip的研討會及使用後,我改變了看法;通常會使用組合語言無非是要求快及精簡,但事實上真的快及精簡了嗎?對於高手而言,或許真的精簡及速度變快,但需花費多少時間呢?一搬來說需比用C語言來開發多三倍以上的時間,有些人甚至用組合語言寫出的程式碼比用C語言轉譯出的組合語言還長,且C語言易懂易維護,他有跨平台的特點,就算換了微處理器也只需些許修改就可以RUN了,組合語言則不然,它必須重新改寫程式碼;至於用C語言寫出來的程式它執行的(程式碼較長)速度較慢,在以前或許存在,現今各微處理器的速度都相當快,速度慢已不是問題,且開發時間可以縮短,是許多工程師及老闆的不二選擇。

因中心在八位元的單晶片上皆使用Microchip的PICmicro Devices,所以就以PICmicro Devices來做說明如何使用C語言來開發,Microchip所生產的單晶片有PIC16、PIC17及PIC18系列,這些都是八位元的單晶片,這些晶片都有A/D轉換、Timer、PWM、IIC、RS232等功能,一般控制會用到的功能這裡都有,以一顆單晶片可以取代像早期8051需搭配一些週邊才能達到目前PIC系列的功能,不僅成本減少、相對板子面積也變小且IC數量較少產品也較穩定,且目前Microchip所開發的PIC系列單皆片皆為FLASH的版本,對於個人或小公司而言,晶片可以重複燒寫測試,非常的經濟實惠,相對開發費用較少,對於產品量少及小公司實在是不二選擇。

Microchip本身也有C語言版本的開發工具,但它只支援PIC17及PIC18系列,PIC16它就沒有支援,可能是PIC16系列目前程式記憶體最大為8K bytes,可能認為只有8K bytes,只要用組合語言來撰寫即可,順便一提Microchip的PIC單晶片其組合語言的開發工具是免費的,但C語言要另外購買,因目前的控制系統使用PIC16系列就夠了,Microchip又沒有PIC16的C語言開發工具,所以轉向購買B Knudsen Data所出的CC5X C Compiler,它支援PIC12/14/16 devices,它的售價也不貴約一萬五千塊台幣,目前中心只要有用到PIC皆使用CC5X來開發,所以針對CC5X C Compiler的用法作一些說明,讓使用PIC的使用者能快速進入C的世界。

CC5X C Compiler支援的Devices有: A. 12 bit core (PIC16C5X, PIC12C50X, etc.): ? up to 2048 words of code on 1 - 4 code pages ? up to 73 byte RAM in 1 - 4 banks

B. 14 bit core (PIC12C67X, PIC14000, PIC16CXX, etc.): ? up to 8192 words of code on 1 - 4 code pages ? up to 512 byte RAM in 1 - 4 banks

CC5X安裝

它可被安裝在MSDOS、Windows95/98/NT/2000,基本上它不需安裝,當你購買時,只需將整個目錄拷貝到電腦的硬碟即可,CC5X C Compiler它是一個Command-line的程式,例如cc5x -a sample1.c ;它也可以與Microchip的MPLAB相結合,提供compilers、assemblers、simulators、emulators、device programmers等功能,其安裝步驟如下或參考cc5x目錄下的install.txt: 1. 將CC5X的檔案拷貝至你的電腦其中的一個目錄,EX:c:\\cc5x。

2. 然後從c:\\cc5x的目錄裡copy CC5X.MTC and TLCC5X.INI兩個檔案到MPLAB的目錄。

3. 啟動MPLAB,選擇MENU的Project->Install Language,在Language Suite中選擇CC5X,然後再點選工具名

稱C-Compiler,然後在右邊執行欄keyin c:\\cc5x\\cc5x.exe,或者用瀏覽的按鍵去選擇你的CC5X的位置,再去點選Command-line box,然後按OK即可,此時CC5X已成為MPLAB的一部分了。 以下針對CC5X做一檔案說明: CC5X.EXE : compiler INTRO.TXT : introduction

INSTALL.TXT : installation guide and MPLAB setup CC5X.TXT : basic documentation on CC5X PRAGMA.TXT : the pragma statement

INLINE.TXT : information on inline assembly syntax DEBUG.TXT : debugging details, MPLAB support CHIP.TXT : how to make new chip definitions CONFIG.TXT : the PICmicro configuration bits CDATA.TXT : info on the #pragma cdata statement CONST.TXT : standard C strings and constant data GLOBDEF.TXT : PICmicro registers STARTUP.TXT : special startup sequences

LINKER.TXT : how to link several modules (C or asm) INT16CXX.H : interrupt header file INLINE.H : emulating inline instructions CC5X.MTC : MPLAB tool configuration file TLCC5X.INI : MPLAB tool configuration file

OP.INC : command line options on a file

RELOC.INC : options for object modules (MPLINK) SAMPLE1.C : minimal program example IICBUS.C : IIC-bus interface IIC-COM.C : IIC-bus communication

SERIAL.C : serial communication (RS232, RS485) STATE.C : state machines DELAY.C : implementing delays INT16XX.C : simple interrupt example MATH.TXT : Math library support MATH16.H : 8-16 bit math library MATH16M.H : 8-16 bit multiply, speed MATH24.H : 8-24 bit math library MATH24M.H : 8-24 bit multiply, speed MATH32.H : 8-32 bit math library MATH32M.H : 8-32 bit multiply, speed MATH16X.H : 16 bit fixed point library MATH24X.H : 24 bit fixed point library MATH32X.H : 32 bit fixed point library MATH16F.H : 16 bit floating point library MATH24F.H : 24 bit floating point library MATH32F.H : 32 bit floating point library

MATH24LB.H : 24 bit floating point functions(log,sqrt,cos,..) MATH32LB.H : 32 bit floating point functions(log,sqrt,cos,..) 12C508.H .. 16C924.H : PICmicro header files NEWS.TXT : Recent added features

README.TXT EXAMPLE

因CC5X支援PIC12、PIC16等系列的單晶片,那我們所撰寫的程式要如何指定特定的PICmicro Devices,它有三種方法可以去指定:

1. 在command-line上直接加上,其方法為-p[Device name],EX:-p16C73、-pPIC16F877。 2. 在主程式上加入pragma statement,EX:#pragma chip PIC16F84。 3. 使用include file,EX:在主程式加入#include \。 以下為使用CC5X的執行範例,其執行方式為: cc5x -a delay.c delay.c: Chip = 16C74

RAM: 00h : -------- -------- -------- -------- RAM: 20h : ==.***** ******** ******** ******** RAM: 40h : ******** ******** ******** ******** RAM: 60h : ******** ******** ******** ******** RAM: 80h : -------- -------- -------- -------- RAM: A0h : ******** ******** ******** ******** RAM: C0h : ******** ******** ******** ******** RAM: E0h : ******** ******** ******** ******** Optimizing - removed 11 instructions (-14 %) File 'delay.asm'

Codepage 0 has 68 word(s) : 3 % Codepage 1 has 0 word(s) : 0 % File 'delay.hex'

Total of 68 instructions (1 %) Symbols:

* : free location