姓名學號
實驗班號機器號
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...