单片机c语言三种经典程序结构,单片机C语言程序的结构和设计精选.docx
單片機(jī)C語言程序的結(jié)構(gòu)和設(shè)計(jì)精選
實(shí)驗(yàn)五 單片機(jī)C語言程序的結(jié)構(gòu)和設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?. 掌握單片機(jī)C語言的程序結(jié)構(gòu);2. 掌握單片機(jī)C語言程序的編寫和調(diào)試方法;3. 掌握MSP430FG2553基本I/O控制方法;4. 掌握單片機(jī)對外部接口電路的控制方法。二、實(shí)驗(yàn)任務(wù)1. 練習(xí)調(diào)試程序(1)硬件連接圖(2)原程序存在的問題① 實(shí)驗(yàn)要求將L1~L8連接到P2OUT端口上,所以程序中的端口應(yīng)該采用P2OUT;② 由于程序中用到了P2OUT所有端口作為輸出,所以應(yīng)該首先將P2設(shè)置為GPIO;③ 實(shí)驗(yàn)要求八個(gè)LED等應(yīng)該在亮和滅之間進(jìn)行循環(huán),所以應(yīng)該在原程序中加入主循環(huán);④ 在延時(shí)函數(shù)delay()中,延時(shí)時(shí)間不夠,所以不能夠看出燈的閃爍,應(yīng)該將循環(huán)的時(shí)間延長;(3)修改后的程序:#include "io430.h"void delay( );int main ( void ){ WDTCTL = WDTPW + WDTHOLD;//關(guān)閉看門狗 P2SEL=0; P2SEL2=0; P2DIR=0xff;//設(shè)置端口1為輸出 P2OUT=0xff; for(;;) { P2OUT=~P2OUT;//將端口1的值取反后輸出 delay( ); //調(diào)用函數(shù)延時(shí) }}void delay( ) //延時(shí)函數(shù){ unsigned int j;for (j=0;j<0xffff;j++); }(3)程序調(diào)試方法總結(jié)程序調(diào)試時(shí)主要使用逐步調(diào)試的方法,通過F10和F11使程序逐步運(yùn)行,有必要時(shí)通過view觀測register寄存器的相關(guān)值的變化,通過觀察每一步運(yùn)行之后相關(guān)寄存器的變化,可以初步判斷對應(yīng)程序運(yùn)行的正確與否,還可以通過設(shè)置斷點(diǎn)的方式進(jìn)行局部調(diào)試。對于幾個(gè)不同調(diào)試按鈕的使用方法總結(jié)如下:GO屬于連續(xù)執(zhí)行,在調(diào)試過程中通常與斷點(diǎn)同時(shí)使用,用于程序的長距離跳轉(zhuǎn);step over用于逐步運(yùn)行程序,但是不會運(yùn)行到子程序的內(nèi)部,如本例子中的delay函數(shù),用此按鈕時(shí)不會運(yùn)行到delay內(nèi)部;而step into則可以進(jìn)入子函數(shù)內(nèi)部,通常用來調(diào)試子函數(shù),在調(diào)試子函數(shù)過程中若想跳出子函數(shù)可以使用step out;合理地使用這些指令可以高效的調(diào)試程序。2. 控制發(fā)光二極管的顯示變化(1)硬件連接圖(2)C語言程序#include "io430.h"void delay();void action_1();void action_2();const unsigned char LED_blink1[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};const unsigned char LED_blink2[4]={0xdb,0xe7,0x7e,0xbd};int main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P2SEL=0; //將P2端口設(shè)置為GPIO P2SEL2=0; P2DIR=0xff; //方向設(shè)定 for(;;) //主循環(huán) { action_1();//子函數(shù)調(diào)用 action_2(); }}void delay() //延時(shí)函數(shù){ int i; for(i=0;i<0xffff;i++);}void action_1() //規(guī)律一動作函數(shù){ int j; for(j=0;j<=7;j++) { delay(); P2OUT=~LED_blink1[j]; //使輸出端口按照表中顯示 }}void action_2() //規(guī)律二動作函數(shù){ int k; for(k=0;k<4;k++) { delay(); P2OUT=LED_blink2[k]; //使輸出端口按照表中顯示 }}由于本程序比較簡單,并且在上面程序后面附有注釋,故不再說明程序的運(yùn)行原理。(3)思考若要使用P1端口控制8個(gè)發(fā)光二極管,則實(shí)驗(yàn)板上的連線方面需要將L1~L8分別用跳線連接至P1.0~P1.7,在程序方面只需要將原程序中用到的P2端口均換成P1端口即可。3. 用按鍵控制發(fā)光二極管的顯示變化(1)硬件連接圖(2)程序設(shè)計(jì)思路首先由于在上一個(gè)任務(wù)中已經(jīng)實(shí)現(xiàn)了兩種顯示方式的循環(huán)顯示,所以為實(shí)現(xiàn)該任務(wù),只需要在上一個(gè)任務(wù)的程序中加入按鍵控制即可。通過兩個(gè)將兩個(gè)P1引腳設(shè)置成輸入引腳并與按鍵相連用來檢測按鍵,在上個(gè)任務(wù)中的程序中,由于兩個(gè)動作方式是循環(huán)進(jìn)行的,所以只
總結(jié)
以上是生活随笔為你收集整理的单片机c语言三种经典程序结构,单片机C语言程序的结构和设计精选.docx的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工预-java1
- 下一篇: 工预-Typora(A)