第一篇:單片機-分支程序設計教案
一、復習上次課內容
1、什么是標識符?
答:標識符是程序員選擇的名字,用來標識常量、變量、過程、段名等。
2、什么是偽指令?
答:注釋性的,沒有對應的機器碼,不令計算機做任何操作,不產生目
標程序,不影響程序的執行。
二、講授新課
4.3分支程序設計
在很多實際問題中,都需要根據不同的情況進行不同的處理。這種
思想體現在程序設計中,就是根據不同條件而轉到不同的程序段去執行,這就構成了分支程序。分支程序的結構有兩種,如圖4.2所示。
圖4.2 分支程序結構
圖4.2(a)結構使用條件轉移指令來實現分支,當給出的條件成立時,執行程序段A,否則執行程序段B。
圖4.2(b)結構使用散轉指令JMP來實現多分支轉移,它首先將分支程序按序號的值來實現分支轉移。
分支程序的特點是改變程序的執行順序,跳過一些指令,去執行另外一些指令。應注意:對每一個分支都要單獨編寫一段程序,每一分支的開始地址賦給一個標號。
在編寫分支程序時,關鍵是如何判斷分支的條件。在MCS-51系列單片機中可以直接用來判斷分支條件的指令并不多,只有累加器為零(或不為零)、比較條件轉移指令CJNE等,MCS-51單片機還提供了位條件轉移指令,如JC,JB等。把這些指令結合在一起使用,就可以完成各種各樣的條件判斷。
【例4-5】設補碼X放在內部RAM30H單元中,函數Y與X有如下的關系式:
試編寫程序,根據X的值求出Y,并放回原單元。
解 取出X后先做取值范圍的判斷,用累加器A狀態轉移指令判斷X是否為0,用位狀態轉移指令判斷X是大于0還是小于0。程序流程圖如圖4.3所示。
程序如下:
MOV A,30H JZ ZER0 JNB ACC.7,PLUS
ADD A,#5 MOV 30H,A PLUS: SJMP $ ZERO: MOV 30H,#20H SJMP $ END 【例4-6】內部RAM40H和41H單元中各有一無符號數,比較其大小,將大數存放于內部RAM60H單元,小數存放于內部RAM61H單元,如兩數相等,則分別送往這2個單元。
解 用比較不等轉移指令CJNE比較力兩個無符號書,先確定它們是否相等,若不相等時再根據借位標志確定這兩個無符號書的大小。程序框圖如圖4.4所示。程序如下:
LOOP:
AGEQ:
SJMP END $
XCH MOV A,61H 60H,A
;A<(41H)有借位
;A與(61H)交換 MOV MOV CJNE AJMP JNC A,40H 61H,41H A,41H,LOOP AGEQ AGEQ
;A≥(41H)則無借位
【例4-8】將ASCII碼制轉換為十六進制數。如果不是十六進制數得ASCII碼,用戶標志位置1。解:由ASCII碼表知,30H~39H為0~9的ASCII碼,41H~46H為A~F的ASCII碼。在這一范圍的ASCII碼減去37H就可以獲得對應的十六進制。設ASCII碼放在累加器A中,轉換結果放回A中。程序流程圖如圖4.5所示
三、課堂鞏固
四、課堂小結
五、作業
第二篇:單片機實驗9 多分支程序設計
實驗9 多分支程序設計
1、實驗內容
用P1.0、P1.1控制流水燈的變化
P1.0、P1.1=00燈全滅
P1.0、P1.1=01單燈亮左循環
P1.0、P1.1=10單燈亮右循環
P1.0、P1.1=11雙燈亮左循環
燈亮的時時為1秒。用軟件延時實現。*用T0定時選作。
2、實驗步驟
1)打開PV32編程序。匯編正確進入調試界面。否則修改程序重新匯編直到通過。
2)打開P0、P1窗口給
3)調試燈全滅、單燈亮左循環、單燈亮右循環、雙燈亮左循環程序觀察并記祿寄存器、內存的變化。判斷程序是否正確。若發現問題重返編輯界面,修改、存盤、匯編。返回調試界面調試通過。
4)設斷點調試主程序觀察并記祿寄存器、內存的變化。判斷程序是否正確。若發現問題重返編輯界面,修改、存盤、匯編。返回調試界面調試通過。
首先將P1.0、P1.1置00觀察P2窗口燈是否全滅,然后改變P1.0、1.1的設置觀察流水燈運行是否正確。
5)流水燈運行中改變P1.0、1.1看流燈能否隨之變化。若執行正確程序通過。否則在每個流水子程序中加入讀P1口散轉子程序。
3.實驗報告
1.寫出主程序流程圖、子程序流程圖、程序清單
2.根據記淥數據給程序加注解
3.調試心得
第三篇:分支結構程序設計教案
感受分支結構程序的作用
一、教學目標 1.知識與技能目標
(1)理解程序的分支結構。(2)了解編程思路。2.過程與方法目標
(1)借助多媒體教學,強化學生的理解力和注意力。(2)能根據問題設計界面和編寫程序。3.情感、態度與價值觀目標
(1)讓學生從無到有的探索過程中感受成功的喜悅。(2)培養學生探究精神與獨立操作能力。
二、教學重點和難點 1.教學重點:
使用visual basic語言的條件語句來實現分支結構,從而解決實際問題。
2、教學難點:
理解程序中流程的代碼描述。
三、教學方法
情境教學法、講授法、任務驅動法
四、教學準備
1、教學環境。多媒體網絡教室。
2、教學資源。
學生用機需要安裝好visual Bastc語言環境。任務卡
五、教學過程
1.創設情境,導入新課
ppt演示導出課題“分支結構”通過鏈接到“體型判斷”小程序,然后讓同學們自己推薦同學來測試是否偏胖或偏瘦或正常。學生的興趣度很高,積極的配合。
設計意圖:引起學生興趣,激發學生的學習熱情,點名課題。2.講授新課
(1)給出標準體重的計算公式,并簡介如何評判體型。
(2)列舉生活中需要進行條件選擇的例子來講解,幫學生理解分支結構程序設計的概念。(3)關系表達式和邏輯表達式的簡介。(4)畫出if語句流程圖,了解簡單的if語句。
(5)教師操作“體型判斷”的案例,介紹框架控件的使用,編寫部分程序,回憶舊知。
設計意圖:師生共同構思,寫出“體型判斷”源程序,讓學生對分支結構的理解更深刻。
3.布置作業,鞏固提高
以書本上的典型案例“體型判斷”讓學生操作,有不懂的看書本或任務卡。(巡回指導,及時幫學生解決操作過程中存在的問題)
4.歸納總結,加強記憶
先讓學生們歸納總結本節課所學的內容,然后教師總結,讓學生有一個更深刻的印象,并強調應注意的幾個問題。
設計意圖:課堂小結的目的是強化認識,可以把課堂傳授的知識盡快地轉化為學生的知識;簡單扼要的課堂小結,可使學生更深刻地理解分支結構程序設計在實際生活中的應用。
六、課后反思
整節課以學生動手為主,學生的興趣濃厚,課堂充滿活力,能夠達到預期目的。學生基本上都完成了課堂作業,但是已經做好的同學還沒能形成先預習下節課要講的內容的好習慣,總體來說這節課是相對成功的。
第四篇:分支程序設計實驗報告[范文模版]
實驗二 二 分支程序設計 一、實驗目得: 1、學習分支程序得設計方法 2、熟悉在 PC 機上建立、匯編、連接、調試與運行匯編語言程序得過程 二、實驗環境:
硬件環境
IBM/ PC 及其兼容機 軟件環境
統 操作系統 DO S
編輯程序 EDIT 或其她編輯程序
序程編匯? 匯編程序 M ASM、E XE
連接程序LIN K、EXE 序 調試程序 DEB UG、EXE 三、實驗內容:
:、在屏幕上顯示如下信息:—-— —- ------—-—---— — ------—-Panda
2— —- --— — ---—-—-———-----— —-—--Cat
?
3-——--------------———- -——-Ra bbit
4— — -— —-— — -— —--— — --- —- --——------Pig—— ------—--—--—-—---— —- --—EXI T
(Plea se
ch oo se 1, 2, 3,4or 5)—- ----入 若輸入 1, 顯示“I like e
p panda ”后程序結束;若輸入 2, 顯示“I
lik e cat” ”后程序結束;若輸入 3,顯示“I
lik e rab bit t入 ”后程序結束;若輸入 4, 顯示“I do n’t l like pig ”后程序結束;若輸入 5,程序直接結束;若輸入其它字符,顯示“You
pr ess an error key!“ 后程序結束.1)流程圖
2)源程序 DATA SEGMENT
INFOR1 DB 0AH,0DH,”1-—-—----—-—Panda:$"
INFOR2 DB 0AH,0DH,”2—-—-——--———Cat:$”
INFOR3 DB 0AH,0DH,"3---—---——-—Rabbit;$”
INFOR4 DB 0AH,0DH,"4---—------—pig:$“
INFOR5 DB 0AH,0DH,”5--—--——--—-EXIT:$"
INFOR6 DB 0AH,0DH,”(please choose 1,2,3,4 or 5——-):$“
INFOR7 DB 0AH,0DH,”I like Panda:$“
INFOR8 DB 0AH,0DH,"I like Cat:$”
INFOR9 DB 0AH,0DH,"I like Rabbit;$"
INFOR10 DB 0AH,0DH,”I like pig:$"
INFOR11 DB 0AH,0DH,”you press an error key!:$” DATA ENDS
;數據段結束 CODE SEGMENT
;代碼段開始 Y Y Y Y N N N N N 開始 選項 用戶輸入 Al=1 Al=2 Al=3 Al=4 Al=5 You press an error key 結束 I like panda I like cat I like rabbit I like do not
ASSUME
CS:CODE,DS:DATA
;段尋址 START: MOV AX,DATA
;將 data 得數據存入ax 中
MOV DS,AX
;為 ds 賦值
MOV DX,OFFSET
INFOR1
;返回變量 INFOR1 段內偏移地址【運行后在屏幕上顯示字符 1--——--—--—-Panda:】
MOV AH,09H
INT 21H
;執行九號功能調用
MOV DX,OFFSET
INFOR2
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR3
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR4
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR5
;返回變量 INFOR5 段內偏移地址【運行后在屏幕上顯示字符 5—-—--——----EXIT:】
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR6
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,“1’
JE
Panda
CMP AL,'2’
JE
Cat
CMP AL,”3’
JE
Rabbit
CMP AL,’4'
JE Pig
CMP AL,’5’
JE PEND
JMP Other Panda:
MOV DX,OFFSET INFOR7
MOV AH,09H
INT 21H
JMP PEND Cat:
8ROFNI TESFFO,XD VOM? H90,HA VOM? H12 TNI? JMP PEND Rabbit:
MOV DX,OFFSET INFOR9
MOV AH,09H
H12 TNI?
JMP PEND Pig:
MOV DX,OFFSET INFOR10
H90,HA VOM? INT 21H
JMP PEND Other:
MOV DX,OFFSET INFOR11
MOV AH,09H
H12 TNI?
JMP PEND PEND:
MOV AH,4CH
INT 21H CODE
ENDS
END START
2、、從鍵盤輸入一字符,判斷該字符就是小寫字母、大寫字母、數字或其它字符.若輸入為小寫字母, 顯示“Y You
I nput a Lo wer case Letter!”;若輸入為大寫字母, 顯示“You Inp ut a Uppercase L et ter!”;若輸入為數字,顯示“Yo ou Input a Digit!“;
若輸入為其它字符,顯示“You Inpu t
Ot her Let tt er!”。、編程指導 字 數字 0? ? 9得ASC II 碼為30H? ?39H;大寫字母得 ASCII 碼為 4 1H? ? 5AH,小寫字母得AS CI I碼為61H? ?7AH。本題目將字符分為小寫字母、大寫字母、數字及其它字符,得 根據鍵入字符得 AS CII 碼值判斷其所屬類型, 并顯示相應得信息 息.字符串顯示使用功能號為 09H 得 得 DOS 功能調用, 接收鍵盤輸入得單個字符使為 用功能號為 01H 得 得 DOS 功能調用。
2、流程圖及程序框圖 1)流程圖 2)源程序 DATA SEGMENT
INFOR1 DB 0AH,0DH,”Please Press Any Key to input a letter:$"
INFOR2 DB 0AH,0DH,”You input a lowercase letter!$”
INFOR3 DB 0AH,0DH,“You input a Uppercase letter!
$”
INFOR4 DB 0AH,0DH,"You input a Digit!
$”
INFOR5 DB 0AH,0DH,“You input Other letter!$” DATA ENDS CODE SEGMENT
ASSUME
CS:CODE,DS:DATA START:
MOV AX,DATA
; 顯示信息“Please Press Any Key to input a letter”得指令序列以及接收從鍵盤輸入一個字符得指令序列
MOV DS,AX
MOV
DX,OFFSET
INFOR1
H90,HA
VOM?
INT
21H
MOV AH,01H
INT 21H Y Y Y Y Y Y 顯示提示信息“Please Press Any Key to input a letter” 及功能號為 1 得接收鍵盤輸入單個字符得指令序列 開始 結束(AL)<’0’(AL)<=’9’(AL)<’A’(AL)<=’Z’(AL)<’a’(AL)<=’z’ 輸入得就是小寫字母,顯示信息 輸入得就是大寫字母,顯示信息 輸入得就是數字,顯示有關信息 輸入得就是其它字符,顯示信息
CMP
AL,’0’
JB
OTHER
CMP
AL,’9’
JBE
DIGIT
CMP
AL,’A“
REHTO
BJ? ”Z',LA
PMC? REPPU
EBJ? CMP
AL,’a’
JB
OTHER
“z',LA
PMC? JBE
LOWER
JMP
PEND LOWER:
;顯示“You Input a Lowercase Letter!”得指令序列
MOV DX,OFFSET INFOR2
H90,HA VOM? INT 21H
出跳序程使應后支分個一完行執意注;
DNEP PMJ?UPPER:
; 顯示“You Input a Uppercase Letter”得指令序列 MOV DX,OFFSET INFOR3
H90,HA VOM? H12 TNI? DNEP PMJ?DIGIT:
; 顯示“You Input a Digit!”得指令序列 MOV DX,OFFSET INFOR4
H90,HA VOM? INT 21H
JMP PEND OTHER:
; 顯示“You Input Other Letter!”得指令序列
5ROFNI TESFFO,XD VOM? MOV AH,09H
H12 TNI?PEND:
MOV AH,4CH
H12 TNI?CODE
ENDS
END START
四、心得 通過這次上機實驗, 我掌握了分支程序額設計方法, 宏定義及宏調用得基本方法,了解了小寫字母與大寫字母得ASCII 碼表示及其轉換方法,了解了數字及其她得 字符得 AS CII 碼表示方法, 進一步掌握了調試工具得 使用方法。
第五篇:MATLAB_分支結構程序設計答案
MATLAB分支結構程序設計
一、實驗目的
1.理解MATLAB的編程方法 2.掌握if語句和switch語句的使用 3.掌握分支結構程序設計方法
4.通過練習理解MATLAB編程方法和分支結構程序設計方法。
二、實驗環境
1.計算機
2.MATLAB7.0集成環境
三、實驗說明
1.熟練操作MATLAB7.0運行環境 2.自主編寫程序,必要時參考相關資料 3.實驗前應寫出程序大致框架或完整的程序代碼 5.實驗學時:2學時
四、實驗內容和步驟
1.實驗內容
(1)從鍵盤輸入一個數,將它反向輸出,例如輸入693,輸出為396 >> clear >> format long g s=input('s=')n=fix(log10(s));A=0;for i=1:n a=fix(s/10^n);x=fix(mod(s,10^i)/10.^(i-1));A=A+x*10^(n+1-i);end A+a s=693 s = 693 ans = 396(2)輸入一個百分制成績,要求輸出成績等級A,B,C,D,E其中90-100位A,80-89為B,70-79為C,60-69為D,60以下為E 1)分別用if語句和switch語句實現
2)輸入百分制成績后要判斷成績的合理性,對不合理的成績應輸出出錯信息 If語句
>> a=input('輸入成績')if a>=90&a<=100 disp('A 成績合理');elseif a>=80&a<90 disp('B 成績合理');elseif a>=70&a<80 disp('C 成績合理');elseif a>=60&a<70 disp('D 成績合理');elseif a<60 disp('E 成績合理');else disp('成績錯誤')end 輸入成績56 a = 56 E 成績合理 switch語句
>> a=input('輸入成績')
switch a;case num2cell(0:59)disp('E 成績合理');case num2cell(60:69)disp('D 成績合理');case num2cell(70:79)disp('C 成績合理');case num2cell(80:89)disp('B 成績合理');case num2cell(90:100)disp('A 成績合理');otherwise disp('成績錯誤');end 輸入成績78 a = 78 C 成績合理 2.實驗步驟
(1)分析實驗內容,寫出程序大致框架或完整的程序代碼。(2)進入MATLAB7.0集成環境。(3)編輯程序并進行保存。
(4)運行程序,若有錯誤,修改錯誤后再次運行,如此反復進行到不顯示出錯為止。
(5)檢查程序輸出結果。
五、實驗報告要求1.整理實驗結果,填入相應表格中 2.小結實驗心得體會
通過本次實驗,我逐漸掌握了點if語句和switch語句的使用,了解了分支結構程序設計方法。因為本次實驗較有難度,所以完成的不是很順利。在分支結構程序設計方面還有待加強。