c語言實驗報告

2021-04-22 08:50:07 字數 2676 閱讀 4297

姓名學號

實驗班號機器號

1、實驗目的:

1. 掌握微控制器c語言程式結構;

2. 掌握微控制器c語言程式除錯方法;

3. 掌握msp430fg2553基本i/o控制方法;

4. 鞏固編寫和除錯微控制器c語言程式方法;

5. 了解簡單介面電路的控制方法;

6. 了解msp430彙編格式的定址方式和指令系統

2、實驗基本任務

1、練習除錯程式

內容:用跳線將實驗板上的8個發光二極體與微控制器連線。編寫的程式l2_debug.

c如下,功能是控制與微控制器相連線的8個發光二極體在全亮與全滅這兩種狀態下迴圈變換。 該程式沒有語法上的錯誤, 但執行後不能實現上述現象, 請上機除錯其中的問題, 指出程式的問題,並修改程式。

答: 將微控制器p2埠的8個引腳與l1~l8相連。電路如下:

原有程式為:

通過上機除錯,發現原程式有以下錯誤:

1 由於是p2埠上引腳與led相接,所以應該設定p2而不是p1

2 應將p2埠調為基本i/o埠,僅通過dir暫存器是不行的

3 源程式沒有對p2out進行初始化,無法達到全亮全滅的效果

4 沒有迴圈結構,無法達到全亮全滅的迴圈效果,可用for(;;)或while(1)結構

5 delay()函式延時過短,人眼幾乎無法感受亮滅的變化

正確的程式應為:

#include "io430.h"

void delay();

int main( void )

}void delay()

2. 控制發光二極體的顯示變化

在任務 1 的連線基礎上,程式設計控制 8 個發光二極體按下面的 2 種規律迴圈變換,即規

律 1??規律 2?規律 1?規律 2?……,如此迴圈反覆。

1) 規律 1:8 個 led 燈順時針乙個乙個單獨點亮,即 l1 亮?l2……l7 亮?l8 亮,

每次只有乙個燈亮,其他燈滅;

2) 規律 2:8 個led燈兩兩點亮,順序為 l1 和 l8,l2和 l7,l3 和 l6,l4 和 l5,

每次只有兩個燈亮,其他燈滅;

答:程式如下:

#include "io430.h"

void delay();

void rule1();

void rule2();

int main( void )

}void rule1規律1

}void rule2規律2

; for(unsigned int i=0;i<4;i++) }

void delay()

思考:如果選擇用微控制器的 p1 埠控制 8 個發光二極體,如何在實驗板上設計連線、

並程式設計實現任務 2 的功能?

答: 設計連線:將p1埠的8個引腳與l1~l8對應相連。

程式設計:將原先程式中所有關於p2埠的操作都換為p1埠即可

3. 用按鍵控制發光二極體的顯示變化

在任務 2 基礎上,增加 2 個按鍵與微控制器的引腳相連,程式設計實現由按鍵控制發光二級管

的顯示變化:當按下實驗板上的 k1 鍵時,8 個發光二極體按任務 2 中的規律 1 變化;

當按下實驗板上的 k2 鍵時,8 個發光二極體按任務 2 中的規律 2 變化。

答:在實驗1的連線基礎上,將p1.0、p1.1分別於k1、k2相連。如下圖

程式如下:

#include "io430.h"

void delay();

void rule1();

void rule2();

int main( void )

} void rule1規律1

}void rule2規律2

; for(unsigned int i=0;i<4;i++) }

void delay()

4. 並行方式控制數碼管的顯示

參看附錄a, 掌握 msp430g2553 擴充套件板上 4 個數碼管的工作原理, 用微控制器的 8 個 i/o

引腳並行控制數碼管的控制端 sh~sa,設計相關連線。程式設計完成下面任務:

1) 畫出微控制器與 4 個數碼管連線的原理圖,分析控制方法;

2) 程式設計控制四個數碼管從右到左、依次每個數碼管分別迴圈顯示 0~9、a~f。

3) 用 4 個數碼管做乙個電子錶,高兩位數碼管顯示分鐘值,低兩位數碼管顯示秒值。

每計數到 5分鐘時,控制蜂鳴器發出一報警聲,然後又從 0 開始重新計時。 其中 1

秒時間可通過延時完成,如執行 for (i=0; i<0x1ffff;i++) ,約為 1 秒。本次實驗對

秒值長短精確度不要求。

思考:每個數碼管顯示的時間不能太長,也不能太短,為什麼?

答:1) 原理圖如下:

控制方法:

p2.0~p2.7與s a~s h相連,控制led燈的亮滅,p1.0~p1.3控制選擇哪乙個數碼管進行輸出。

2) 程式設計控制四個數碼管從右到左、依次每個數碼管分別迴圈顯示 0~9、a~f。程式如下:

#include "io430.h"

void delay();

const char ledtab[16]=;

int main( void )

p1out=bit1第二個數碼管開始輸出

for(i=0;i<16;i++){

p2out=ledtab[i];

delay

C語言實驗報告

1 實驗目的 1.熟練掌握if if.else if.else if語句,掌握if語句中的巢狀關係和匹配原則,利用if語句實現分支選擇結構。2.熟練掌握for語句格式及使用方法 3.掌握簡單 常用的演算法,並在程式設計過程中體驗各種演算法的程式設計技巧.進一步學習除錯程式,掌握語法錯誤和邏輯的檢查方...

c語言實驗報告

課程名稱 c語言程式設計成績評定 實驗專案名稱 陣列程式設計指導教師 楊恆伏學生姓名 吳偉蘭學號 21 專業班級 09計網實驗專案型別 實驗地點 科a301 實驗時間 2010 年4 月 29 日 一 實驗目的與要求 1 掌握一維陣列與二維陣列的定義 賦值及輸入輸出方法。2 掌握字元陣列和字串函式的...

C語言實驗報告

學院 機械與電子資訊 專業 電子資訊工程 班級 本科二班 學號姓名 曹禹 指導教師 杜麗芳 2012 年 3 月 實驗目的 1 掌握上機執行乙個c程式的全部過程。2 初步學會vc 整合環境的使用方法。3 初步學會查錯和排錯的技能。4 加深理解程式執行的過程以及程式設計的有關概念。實驗步驟 1 啟動v...