close

塔希提語翻譯

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

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

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

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

點竄好的完全程式以下︰

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

    SystemInit();
//-程式由這邊起頭------------------------

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

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

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

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

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

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

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

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

    SystemInit();
//-程式由這邊起頭------------------------

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

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

       以上是一個利用 C 語言做霹靂燈節制最簡單的節制程式,一個無限迴圈連系判定式便可完成翻譯以初學者而言,這樣的程式僅斟酌到完善的公道狀態,就是 bit 這個變數的運算沒有犯錯的可能性,是以如果 bit 變數內的資料若是被其他程式影響到而遺失的話,那可能就沒有一顆 LED 會亮了。固然這不只是可能被其他程式所影響,也有多是電路受到雜訊干擾而造成其他狀況,都有可能使 bit 變數內資料被改變,所以一支具有防止毛病的程式需要斟酌的問題是許多的,以下將上面程式改用一種對照靠得住的體例來改寫。

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

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

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

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

void Main()
{      
//-變數宣告區----------------------------   
    int d = 0; // 宣佈一個節制標的目的的變數
               // 0:向左  1:向右
    int bit = 0; // 宣佈一個儲存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); //嵌入式系統不克不及竣事主程式
}

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

       接著設計一個紛歧樣的霹靂燈節制體例,將原本的 8 個 LED 分成閣下各 4 個兩組霹靂燈節制,而燈的移動標的目的恰好相反,以下將使用上面的類型簡單的哄騙邏輯運算來到達如許的效果。

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

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



以下內文出自: https://blog.xuite.net/kyanite0909/Blog/61011016-Wiggler+JTAG+%E6%87%89%E7%94%A8%E7%B3%BB%E5%88%97%E有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931
文章標籤
翻譯社
全站熱搜
創作者介紹
創作者 vickieg11m1 的頭像
vickieg11m1

waynepearlep

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