單晶片能力認證丙級 - 主控板功能測試,分組功能要求題組三。



哇哈哈!!

終於寫到題組三了,

文章中間的過程也因為整個教學下來越寫越簡單!!

所以還是建議依造順序看比較好,

不然會不解糖果跳過的步驟喔XD....

需下載的實習檔案

請各位自行下載

單晶片認證丙級懶人包

懶人包包含所有實習用檔案。

本篇需要

2009單晶片丙級能力認證術科測試練習參考資料.pdf

basic.txt

在這之前的實習

在觀看這一篇之前

必須先完成以下文章的實習

實體電路板焊接教學

完成電路板以後,開始修改程式碼,為基本要求:

主控板功能測試,基本功能要求部分。

至少要完成基本要求部分!!

才有辦法繼續下面文章喔~

 

題組三條件要求

原文如下...

當連接在P3.0 接腳上的指撥開關(S4-4 最右邊的開關)撥到ON 時,程式控制P2.0 至P2.4 接腳上的五顆LED(D13-D9)同時進行五次的亮滅燈控制(一亮一滅算一次),延遲間隔時間為0.6 秒,當完成五次亮滅控制後;接下來程式控制連接在P3.4 接腳上編號B1 的BUZZER蜂嗚器,以3KHz 頻率依照BUZZER 的發聲要求進行控制,結束發聲副程式後若P3.0 指撥狀態為OFF 時,則程式執行基本功能要求的動作(二個高亮度LED 輪流交替點亮),若指撥狀態仍然保持為ON 時則繼續進行分組功能要求的動作(上述要求的動作);聲音週期的控制建議採用Timer 方式來計時。

真是廢話很多=ˇ=+

重點在此

五次的亮滅燈控制(一亮一滅算一次)

間隔時間為0.6 秒

就兩個重點....

重點很簡單

就是6000週期...

原文如下

1.頻率:3.0KHz

2.動作描述:

連續發聲6000 個週期

>停止

這樣子就把條件說完了...

只是這次不是倒數累加還是甚麼小修改,

是整個全滅全亮....

所以改的地方有點多!!

但是跟著糖果走一定都能用理解地去學會,

不必死背。

LED 的輸出動作要求修改秘訣

一樣是時間先改.....

0.6秒為600毫秒~

所以20*30=600

把它改成#30即可!!

因為事一起滅亮

MOV          A,#11111110B

就改成

MOV          A,#11111111B

全部一樣就好了!!

因為要一樣啊XD

接下來他說要閃爍五次

還特別說明亮算一次,代表著妳不可以單純打五...

所以明一次滅一次,才是所謂的完整一次,

所以共10次

所以要多一行參數定義

MOV       R7,#10

定義R7暫存為10

還記得

MOV          A,#11111111B

對吧

A被指定為統一數值1

所以接下來要取補數使用CPL指令

CPL         A

讓全部的LED發亮或熄滅....

就是A全部變成0,

如果再取一次補數又全部變成1,以此類推

所以上述的

MOV       R7,#10

CPL         A

剛好加在

LEDLP:            MOV      P2,A

的上下排~

變成了

MOV      R7,#10

LEDLP:      MOV      P2,A

CPL         A

因為LEDLP也是個關鍵XD

等等會講~

再來把最後三行刪除

因為我們已經不需要

JNB          P2.4,BUZZER

因為全部一起明滅

馬上就會觸發到P2.4,BUZZER

呼叫蜂鳴器了....

我們也不需要順時針數還是逆時針數...

RL          A

等於是多餘的...

刪除XD

JMP          LEDLP

如果在原本這行

JNB          P2.4,BUZZER

沒有觸發到2.4的LED呼叫蜂鳴器的話,

往下執行就會觸發到

JMP          LEDLP

跳回LEDLP的標記

但是這些都是非必要....

所以把

JNB          P2.4,BUZZER

RL          A

JMP          LEDLP

最後三行全部刪除~

在最後補上一行指令使R7逐次減一,

跳回LEDLP

所以就加上

DJNZ           R7,LEDLP

直到R7為0

就不會跳回LEDLP而繼續往下面的BUZZER:執行去了!!

所以知道為何

MOV      R7,#10

要在

LEDLP:      MOV      P2,A

之上了吧~

因為-1變成9次

跳回LEDLP:時

才不會執行到

MOV      R7,#10

因為執行到這行數值又變成10....

這樣永遠扣不完啊XD

CPL         A

要在LEDLP:之下一行也是為了要控制明亮補數,

如果再LEDLP:之上,跳回去根本執行不到啊XD

其實理解後,

根本不需要背,

位置也只是簡單邏輯推理XD

BUZZER 的發聲要求修改秘訣

這部份講到要爛梗了....

60*100=6000

所以改上60....

再來就是

500*2000=1000000

1000000/6000=166.6...

在此四扯五入到整數

變成167

所以4個-500,

改成-167,

就大功告成啦!!

接下來就是轉換Hex在燒入到單晶片,

成果如下面影片所示,

首先還是基本功能交替發亮XD....

打開開關以後

就是明滅五次,

然後觸發蜂鳴器發聲...

總算寫完一段落了,

接下來就是教大家如何轉換產生Hex檔....

在教大家燒錄...

三題組平行實習文章,

主控板功能測試,分組功能要求題組一。

主控板功能測試,分組功能要求題組二。

主控板功能測試,分組功能要求題組三。

如果以上三個題組都可以融會貫通

請各位繼續收看

將basic.txt轉換成Hex並燒入AT89S51。

將教各位如何實際編譯Hex檔案與燒錄!!

如果所有技術都融會貫通了!!

原始程式編譯,遙控機器人robot.txt編譯、燒錄與實際把玩!!

就可以開是練習編譯遙控機器人了!!XD

但建議以上實習都要融會貫通才看得懂喔!!



0 則迴響於“單晶片能力認證丙級 - 主控板功能測試,分組功能要求題組三。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>