葡萄牙語口譯服務

void Main()
{      
//-變數宣佈區----------------------------   
    int d = 0; // 宣佈一個節制偏向的變數
               // 0:向左  1:向右
    U8 bit = 0x01; // 宣佈一個儲存LED狀況變數
                   // 0x01最右側的LED是亮的狀態

#define Led   (*(volatile U16 *)0xA000000)

    SystemInit();
//-程式由這邊開始------------------------
    while(1) // 無限迴圈
    {
        Led = ~bit; // 輸出LED狀態,別忘了LED是0為亮
                    // 所以記得做反相後才能輸出

void Main()
{      
//-變數宣佈區----------------------------   
    int d = 0; // 宣佈一個控制標的目的的變數
               // 0:向左  1:向右
    int bit = 0; // 宣佈一個儲存LED狀態變數
                 // 改成記載的幾個 bit

    SystemInit();
//-程式由這邊開始------------------------

    SystemInit();
//-程式由這邊開始------------------------

void Main()
{      
//-變數宣佈區----------------------------   
    int d = 0; // 宣告一個節制標的目的的變數
               // 0:向左  1:向右
    int bit = 0; // 宣告一個儲存LED狀況變數
                 // 改成記載的幾個 bit

#define Led   (*(volatile U16 *)0xA000000)

    while(1) 
    {
        Led = ~( (0x01 << bit) | (0x80 >> bit) ); // 輸出LED狀態

#include "..INCstdafx.h"
extern void SystemInit(void);

點竄好的完全程式以下︰

        if(bit!=4) Delay(1000);

       接著設計一個紛歧樣的霹靂燈節制體例,將本來的 8 個 LED 分成左右各 4 個兩組霹靂燈控制,而燈的移動偏向剛好相反,以下將利用上面的規範簡單的利用邏輯運算來達到如許的結果。

        if(d==0) // 向左移動處置懲罰
        {
            bit++;
            if(bit >= 7) { bit = 7; d = 1; }

        }
        else     // 向右移動處置
        {
            bit--;
            if(bit <= 1) { bit = 0; d = 0; }

        Delay(1000); // 這邊能用的延遲函式呼喚,
                     // 單位是 萬分之1秒
        if(d==0) // 向左移動處置
        {
            bit++;
            if(bit >= 7) { bit = 7; d = 1; }

    while(1) 
    {
        Led = ~(0x01 << bit); // 輸出LED狀況

#include "..INCstdafx.h"
extern void SystemInit(void);

        }
    }
//---------------------------------------
    while(1);//嵌入式系統不能竣事主程式
}

       以上兩支程式的履行效果是一樣的,但是第二支程式已具有防錯概念,因為這支程式在履行時不會因為變數資料遺失而造成程式錯誤,比第一支程式更靠得住。不過這只是初步階段的設計考量,對於初學者來講,應當要去慢慢理解其為何如此設計的基本緣由,程式設計者不應該只是會寫程式,而是要真的去理解程式的運行道理跟根本,熟悉實際在硬體上程式該使怎麼樣被履行。這樣一個程式設計師可以理解系統的運作概念,因此可以或許設計出更切近系統運作架構的程式,對於產品設計也就能解少其問題的產生翻譯

       以上是一個利用 C 說話做霹靂燈節制最簡單的節制程式,一個無窮迴圈連系判斷式即可完成。以初學者而言,如許的程式僅斟酌到完美的公道狀態,就是 bit 這個變數的運算沒有失足的可能性,是以假如 bit 變數內的資料如果被其他程式影響到而遺失的話,那可能就沒有一顆 LED 會亮了。固然這不只是可能被其他程式所影響,也有可能是電路遭到雜訊干擾而造成其他狀態,都有可能使 bit 變數內資料被改變,所以一支具有避免毛病的程式需要考慮的問題是良多的,以下將上面程式改用一種比較可靠的體例來改寫翻譯

        Delay(1000); // 這邊能用的延遲函式呼喚,
                     // 單位是 萬分之1秒
        if(d == 0) // 向左移動處置
        {
            bit <<= 1;
            if(bit == 0x80) d = 1; // 假如已移到最左
                                 // 則切換標的目的
        }
        else     // 向右移動處置懲罰
        {
            bit >>= 1;
            if(bit == 0x01) d = 0; // 若是已移到最右
                                 // 則切換偏向
        }
    }
//---------------------------------------
    while(1); //嵌入式系統不能結束主程式
}

        }
    }
//---------------------------------------
    while(1);//嵌入式系統不克不及竣事主程式
}

        }
        else     // 向右移動處理
        {
            bit--;
            if(bit <= 1) { bit = 0; d = 0; }

#define Led   (*(volatile U16 *)0xA000000)

      注意以上兩行紫色的程式,特別在輸出那一行,利用了一個簡單的邏輯運算 OR 就可以到達將本來一個由右至左的資料 Bit 1 同時複製出一個由左至右的資料 Bit 1 ,將兩各運算利用 OR 運算就能夠組合而成。固然還得做個小修飾,就是當 bit 為 4 期間輸出成果跟 3 是相同的,為了掩飾這個狀況讓輸出看起來更流利一點,是以就在延遲上做了一點潤飾。而如許的設計是有點小技巧,可是筆者要在這邊表達的是,邏輯運算對程式設計是很有效的,尤其是初學者一定要認識各種邏輯運算的道理,良多程式設計的時候,利用簡單的邏輯運算可以大量減少程式碼。固然也要避免利用過於複雜的邏輯運算,恰當的利用可以使程式輕易被保護,因為一支寫得好的程式,可以很輕易的再被利用,是以,套一句筆者的師父所說過的話︰程式只要寫一次就夠了。

#include "..INCstdafx.h"
extern void SystemInit(void);

首先寫一個霹靂燈的節制方式,先以一個 LED 往返移動,以下是全部程式碼︰

      在做完 LED 根本控制嘗試後,當然不會只寫一個純真又沒意思的程式就竣事了,一定要加點 C 說話程式節制技能來做點轉變.這邊就來一個最常見的賽馬燈節制,這應當是學生練習課做單晶片節制時最喜好玩的一種實行翻譯一般學習這類 LED 控制歷程大要都是像以下這樣的步調︰第一步先學會點亮,第二步節制每顆的亮跟滅狀況,第三步就是讓一整排動起來,第四步固然就是矩陣掃描控制,不外這邊所利用的嘗試平台只有一排,所以就玩不到矩陣節制這一步翻譯以下會做出幾種分歧的結果來顯現各類單排的 LED 節制方式。



本文引用自: https://blog.xuite.net/kyanite0909/Blog/61011016-Wiggler+JTAG+%E6%87%89%E7%94%A8%E7%B3%BB%E5%88%97%E有關各國語文翻譯公證的問題歡迎諮詢華頓翻譯公司02-77260932

arrow
arrow
    文章標籤
    翻譯社
    全站熱搜

    julianr7154ln 發表在 痞客邦 留言(0) 人氣()