新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > HOLTEK單片機-8LED霹靂燈

        HOLTEK單片機-8LED霹靂燈

        作者: 時間:2016-11-29 來源:網絡 收藏
        功能說明:

        HT48F49E控制8個LED構成的霹靂燈

        本文引用地址:http://www.104case.com/article/201611/323312.htm

        介紹:

        本例以 HT48F49E 為例,模擬流水燈的功能,用 LED 顯示輸出。PA 口每一位輸出接一個 LED,串聯一個470Ω電阻到地,即可完成初步電路。

        通過這個例子,用戶可以了解到 HT48XX 單片機輸入輸出口的基本用法。

        電路設計

        PA0-PA7 用作輸出,每一位連接一個電阻來控制一個 LED。通過左移(RLC)、右移(RRC)指令來控制點亮的 LED 左右移動。電路圖如下:


        完整版本的源程序下載地址:http://www.51hei.com/f/htpld.rar

        程序:#include HT48F49E.inc;-------------------------------data .section data                    ;定義數據寄存器count1 db ?                              ;延時計數器0count2 db ?                              ;延遲計數器1lamp   db ?                             ;亮燈狀態記錄器;-------------------------------code .section at 0 code           ;程序段org 00hjmp start                               ;主程序開始start:mov a,0;(1)mov pac,a                            ;PA口設為輸出cpl acc                                 ;ACC取反(為0FFH)mov pa,a                              ;設定PA口初始狀態mov a,1;(2)mov lamp,a           ;亮燈狀態值送到亮燈狀態記錄器llamp:               ;亮燈左移循環mov a,lamp           ;累加器的值送到亮燈狀態記錄器cpl acc             ;累加器值取反mov pa,a          ;點亮與亮燈狀態記錄器相對應的燈call delay;(3) ;調用延時子程序clr c                  ;清除進位標志rlc lamp;(4)     ;亮燈狀態記錄器值左移一位sz lamp            ;判斷亮燈狀態記錄器是否為0jmp llamp;(5)    ;如果不是就繼續循環rrc lamp;(6)       ;如果是,亮燈狀態記錄器值右移一位rlamp:                   ;亮燈右移循環mov a,lamp           ;將亮燈狀態記錄器值送到累加器cpl acc             ;累加器值取反mov pa,a          ;點亮與亮燈狀態記錄器相對應的燈call delay          ;調用延時子程序clr c                  ;清除進位標志rrc lamp;(7)       ;亮燈狀態記錄器值右移一位sz lamp            ;判斷亮燈狀態記錄器是否為0jmp rlamp         ;如果不是就繼續循環rlc lamp            ;如果是,亮燈狀態記錄器值左移一位jmp llamp;(8)     ;跳到左移循環delay procmov a,0ffhmov count1,a        ;定義延時計數器1的初值mov count2,a        ;定義延時計數器2的初值d1:sdz count2            ;延時計數器2遞減,判斷是否為0jmp d1              ;如果不是,跳到d1循環sdz count1            ;延時計數器1遞減,判斷是否為0jmp d1              ;如果不是,跳到d1循環ret                    ;程序返回delay   endp            ;延時子程序結束end                  ;主程序結束

        程序說明:

        這段小程序能夠使八個 LED 依次點亮,先從左向右,然后從右向左。程序開始時先設定輸入輸出口的狀態(1),在這里設定所有的口為輸出,將 PA 口的控制寄存器 PAC 設為 0。然后設定輸出的初始狀態,PA 口的第一位設為 0,點亮第一個 LED(2)。為了能觀察到 LED的閃亮,(3)設定了延時子程序。通過亮燈狀態記錄器和累加器,點亮的 LED 由左移指令控制左移(4)。為了判斷左移時所有的 LED 是否都依次點亮過,可以測試亮燈狀態記錄器是否為 0(5),如果是則恢復亮燈狀態記錄器左移時的終值(6),程序向下執行,控制 LED右移。這次用右移指令 RRC 來控制(7),重復類似的過程。最后同樣判斷亮燈狀態記錄器是否為 0,如果是,則表明右移時所有的 LED 都已經點亮過,程序跳到開始處,重新開始循環(8)。



        關鍵詞: HOLTEK單片機霹靂

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 旬阳县| 通化市| 江安县| 九台市| 会宁县| 锦屏县| 宁津县| 富民县| 鞍山市| 南丰县| 武胜县| 昌都县| 夏河县| 科技| 淮安市| 抚远县| 扎赉特旗| 陵川县| 新巴尔虎左旗| 师宗县| 谢通门县| 淮阳县| 扎赉特旗| 甘孜| 米易县| 珲春市| 洛隆县| 丰城市| 天水市| 邹平县| 黄龙县| 北安市| 凭祥市| 琼中| 徐州市| 青州市| 岚皋县| 印江| 巴林右旗| 农安县| 额济纳旗|