您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 合泰单片机C语言教程
盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第1頁共189頁Holtek微控制器應用範例–使用HoltekC語言目錄第一章內容簡介第二章選定HoltekC語言的使用環境2.1進入HT-IDE3000建立新的專案時,選定HoltekC編譯器2.2已開啟專案後,選用HoltekC編譯器第三章微控制器C語言程式的速成3.1定義主函式main()3.2定義副函式(sub-function)3.3定義全域變數(globalvariable)3.4定義中斷服務函式(InterruptServiceRoutine:ISR)3.5其他第四章C語言程式4.1C程式架構4.2開始用C語言設計一個程式4.2.1定義主函式main4.2.2將標頭檔引入(includeaheaderfile)4.2.3定義文字符號及變數4.2.4設定微控制器及裝置的初始狀態4.2.5設計子函式4.2.6設計中斷服務函式4.3變數(variable)及資料型態(datatype)4.3.1變數名4.3.2資料型態4.3.3變數的有效範圍(scope)4.3.4變數的資料型態(datatype)盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第2頁共189頁整數型(integer)浮點型(floatingpoint)4.3.5bit資料型態4.3.6儲存類別(storageclass)與修飾詞(qualifier)儲存類別(storageclass)修飾詞(qualifier)4.3.7絕對變數(absolutevariable)4.3.8常數(constant)4.3.9指標(pointer)與陣列(array)指標的運算子&與*陣列(array)4.3.10結構(struct)與等位(union)結構的運算子-與.4.4運算子(Operators)運算前的型態轉換4.5程式流程控制(programflowcontrol)4.5.1if-else敘述4.5.2switch敘述4.5.3for敘述4.5.4while敘述4.5.5do-while敘述4.5.6goto敘述4.5.7break與continue敘述4.6函式(Functions)4.6.1參數(arguments)4.6.2返回值(returnvalues)4.7中斷服務函式(InterruptServiceRoutines)4.8在C語言程式中嵌入組合語言(in-lineassemblycode)從組合語言的程式去存取C語言的物件(變數)4.9前置處理指令(Preprocessor)4.9.1定義文字符號(#define)盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第3頁共189頁4.9.2引入檔案(#include)4.9.3內嵌組合語言(inlineassembly)4.9.4條件式編譯(#if/#endif)4.9.5編譯器的特殊選項pragma4.10HoltekC編譯器的內建函式(built-infunctions)第五章基本C語言程式5.1語法觀念5.2迴圈的應用(loop)5.3撰寫MCU應用程式的注意事項5.4可供微控制器應用程式使用的範本5.5設計微控制器應用程式的小技巧第六章程式範例–初級6.1LED跑馬燈6.2LED霹靂燈6.3單顆七段顯示器6.45*5點矩陣LED顯示6.5HT48微控制器控制HT1621LCD的顯示6.6HT48微控制器控制LCD模組的顯示6.7具LCD驅動功能的微控制器之顯示應用程式–HT46R636.8顯示器的通用函式–HT44780LCM6.9鍵盤掃描程式第七章程式範例–中斷函式7.1用時鐘控制LED的亮與滅7.2類比/數位轉換(ADC)的應用第八章HT46R52A應用於鎳氫電池充電器(HA0084T)第九章程式範例–HT46R74D-1胎壓計(HA0105T)盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第4頁共189頁第一章內容簡介盛群半導體公司(Holtek)開發一系列的八位元微控制器(micro-controller,MCU).當開發微控制器的應用程式時,除了可使用盛群提供的組合語言(assemblylanguage),也可使用標準的C語言編譯器(Ccompiler).由於八位元微控制器的記憶體空間,不論是程式記憶體(programmemoryspace)或是資料記憶體(rammemoryspace),皆是有限制的,通常會使用組合語言開發應用程式.但是越來越多的微控制器支援更多的記憶體以及更多的功能,使得程式也相對的擴大.如果仍然使用組合語言開發程式,不但費時費力,未來在維護及擴增功能的工作上也相當困難.因此,使用高階程式語言,例如C語言,來開發應用程式就是一種可行的趨勢.C語言是高階程式語言中的一種,它具有高度的的可讀性及可移植性(portability),除了能夠快速地完成應用程式的開發與偵錯,也很容易移植到其他的微控制器上.當程式需要縮減或擴充功能時,也很容易的完成,因此很適合於微控制器的程式開發.本書主要是以HoltekC語言為主,說明如何使用HoltekC語言撰寫盛群微控制器的應用程式,包括C的程式架構,C語言的一般用法,特殊用法及應用範例書中將說明在開發微控制器的應用程式時需要注意的地方及如何撰寫會比較恰當,並配以實例解釋.讀者可以參考修改或直接採用到自己的程式中,再用發展工具HT-ICE,HT-IDE3000驗證之.第二章介紹選用HoltekC編譯器的步驟,指引HT-IDE3000呼叫HoltekC編譯器去編譯C語言的原始程式.第三章提供一種快速撰寫C程式的方法,對ANSIC語言熟悉的用者,可於閱讀本章之後即開始撰寫微控制器的C語言程式第四章介紹C語言,未曾使用過C語言的讀者應仔細閱讀本章以了解C語言的用法第五章介紹使用C語言寫程式的基本觀念,注意事項及建議的寫作方法第六章到第九章則是應用範例,針對盛群各系列的微控制器,以C語言撰寫的應用程式.包含有功能說明,應用電路及程式說明.盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第5頁共189頁第二章選定HoltekC編譯器的使用環境2.1進入HT-IDE3000,建立新的專案時,選定HoltekC編譯器進入HT-IDE3000開發環境後,依照下列方法建立一個新的專案(project)→移動滑鼠游標到Project選單,按左鍵→移動滑鼠游標到New命令,按左鍵→出現如下的視窗,在LanguageTool之處勾選EnhancedHoltekCcompiler/Assembler盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第6頁共189頁2.2已開啟專案後,如何選用HoltekC編譯器若專案(project)已開啟之後,可以點選(click)Option選單下的ProjectSetting命令,在LanguageTool中點選EnhancedHoltekCCompiler/Assembler以設定使用HoltekC的Enhance版編譯器Enhance版的Ccompiler包括ehcc32srsc.exe,ehcc32mrsc.exe與ehcc32mrmc.exe三個執行檔此版本必須在HT-IDE3000V7.0或以上的系統才能執行盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第7頁共189頁第三章微控制器C語言程式的速成本章介紹如何快速撰寫微控制器的C語言應用程式.已熟悉ANSIC標準語言的用法或有撰寫的經驗者,在閱讀此章後即可開始設計撰寫微控制器的C應用程式,以下各節是基本的C程式成員,某些是必須要有的,如3.1,其他的則視微控制器的功能及應用來決定是否需要3.1定義主函式main()#include“ht46r63.h”voidmain(void){intFlag;……TurnOn_LCD();Flag=LCD_display(cstr);TurnOff_LCD();……}主函式的返回資料型態(returntype)必須是void,而且不能有參數檔案ht46r63.h定義與微控制器有關的常數,例如暫存器的位址定義,將之引入(include)可增加程式的可讀性.3.2定義副函式(sub-function)視程式的大小及功能決定是否需要定義副函式.基本上,主函式應將應用程式的架構做成模組化,不需要將所有的程式皆放在主函式中.為了能很快的完成及了解應用程式,主函式中只需要包含(呼叫)定義各功能的副函式即可,無論在設計或維護程式時皆能很快的進入與完成.例如,關於LCD的開啟,顯示及關閉等功能就可分別定義為單獨的副函式,如下例.任何其他的函式或其他的應用專案都可去呼叫這些副函式.若設計成通用型的,也可藉由程式館管理器(LibraryManager)將之建入程式館檔案,以供其他應用專案使用.盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第8頁共189頁voidTurnOn_LCD(void){}intLCD_display(char*cstr){}voidTurnOff_LCD(void){}3.3定義全域變數(globalvariable)程式在運行中會需要一些變數做為資料存放的地方,由於微控制器資料記憶體大小的限制及C編譯器的設計,最好將常需使用的變數定義為全域型的變數,在編譯程式的大小與執行上皆較佳.例如定義常數型指標變數cstr指到字串“Hello!”,則可如下constchar*cstr=“Hello!”;3.4定義中斷服務函式(InterruptServiceRoutine:ISR)若微控制器的周邊裝置具有中斷功能,程式也需要此中斷機能以完成工作時,則必須定義此周邊裝置的中斷服務函式(InterruptServiceRoutine,ISR),如下的格式#pragmavectorISR_tmr0@0x0cvoidISR_tmr0(void){tick++;}中斷服務函式必須遵守下列規定→返回的資料型態必須是void→不能有參數(必須為void)→必須使用前置處理指令#pragmavector設定中斷向量值(interruptvector),在函式名稱(本例子是ISR_tmr0)之後加上@及中斷向量值(本例是0x0c).也可使用先前定義好的常數,例如盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第9頁共189頁#defineVECTOR_TMR00x0c#pragmavectorISR_tmr0@VECTOR_TMR0voidISR_tmr0(void){}3.5其他上述的主函式,副函式及中斷服務函式不需要定義在同一個原始程式檔案內.為縮短編譯的時間,最好是分別定義在不同的檔案中,並使用有意義的檔名,方便日後找尋所要的函式.盛群半導體股份有限公司HOLTEKSEMICONDUCTORINCC50微電腦工具事業處部撰寫人:文件編號版別1.20日期2008/5/26第10頁共189頁第四章C程式語言基本上,HoltekC是仿ANSI(美國國家標準局)標準的C語言,為配合盛群八位元微控制器的架構,將提供一些特殊的語法去存取或控制微控制器的資源.另
本文标题:合泰单片机C语言教程
链接地址:https://www.777doc.com/doc-2576335 .html