二、應廣單片機點亮一個燈

        上一節介紹基礎,由於時間倉促,寫得十分模糊。這一節開始從一個個實際例子,向大家展示應廣單片機的各項功能。由於看本文的讀者層次不相同,這裏全部按照初學者視之。

廢話少說,上例程:

//========================================================
#include "extern.h"

KeyBounce  equ 30*1000    //30ms

void FPPA0(void)
{
.ADJUST_IC SYSCLK=IHRC/2;
pac = 0b_1111_1110;
pa = 0b_0000_0000;
paph = 0b_0000_0001;
$ padier 0b_1111_1001;

while (1)
{
    if( pa.0 == 0 )
    {
        if(--KeyBounce  == 0)
        {
            if( pa.0 == 0 )
            {
                A = pa.3;
                A ~= 0b00001000;
                pa = A; 
            }
        }
    }
}
}
//========================================================

以上例程非常簡單

#include "extern.h"

是程序的頭文件。

void FPPA0(void)

相當於程序的 main() 函數。

.ADJUST_IC SYSCLK=IHRC/2;

是對芯片時鐘的設定,具體參考使用的單片機芯片來設定。

pac = 0b_1111_1110;
pa = 0b_0000_0000;
paph = 0b_0000_0001;
$ padier 0b_1111_1001;

是對芯片引腳設定。這裏設定 pa.0 爲輸入,啓用上拉電阻。具體設置可參考芯片手冊。

while (1)

無限循環函數,與大多數函數相似。

if( pa.0 == 0 )
判斷 pa.0 是否被人按下了。如果不是,直接跳過。如果被按下。

if(--KeyBounce  == 0)

程序連續判斷了30 * 1000 次後還是 被按下。執行:

A = pa.3;
A ~= 0b00001000;
pa = A; 
取反 pa.3 的電平。程序的外圍器件將 pa.3 的引腳連接 LED 燈,取反 pa.3 的電平時,實現點亮或者熄滅一顆燈的效果。












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章