新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機循環燈點亮實驗

        單片機循環燈點亮實驗

        作者: 時間:2012-11-15 來源:網絡 收藏

        一:實驗名稱:

        二:實驗目的:了解p1口 輸出,了解移位操作要通過累加器ACC來實現,掌握的匯編指令。

        三:實驗原理:

        1.八個循環燈是由發光二極管組成的陣列,發光二極管采用共陽極連接(這樣可以提高二極管的亮度)。

        2.每個二極管外接一個電阻和一個非門,這樣把p1口輸出的高電平轉換成了低電平,二極管正常導電,并發光點亮。

        3.每個二極管對應賦一時點亮,但是p1口輸出的電平值,只能對應二極管陣列的一個確定的狀態,不能實現循環點亮。所以要先把值賦給寄存器ACC,通過ACC實現移位操作,實現不同的二極管對應賦一,這樣確定的二極管實現高電平點亮,其余的為低電平。

        4.計時實現了循環賦一,人的視覺還是感受不到燈在循環,因為CPU晶振的頻率為6MHZ,一個震蕩周期T=1/6M,則一個機器周期為T'=12/6M=2us。這極其短暫的時間遠遠不到人眼所能分辨的范圍,所以要通過延時來實現效果的觀察。對來說,延時可以通過硬件、軟件實現。本實驗通過軟件延時,即通過匯編指令的循環來實現。

        實驗程序如下:

        org 0H
        LJMP start
        org 4100H
        start:
        MOV A, #1
        loop:MOV P1, A
        DD2:MOV R0, 10
        MOV R1, #200
        DD1:MOV R2, #126
        DJNZ R2, $
        DJNZ R1, DD1
        DJNZ R0, DD2
        RL A
        JMP loop
        end

        從第七行到第十一行為循環語句,下面對匯編語言進行解釋:

        org 4100H 起始地址為4100H
        RLA R邏輯移位(左移)
        JMP 無條件跳轉
        DJNZ R2, $ DJNZ先減1在判斷是否等于零,若等于零則停止,若不等于零則跳轉到$

        $指令本身所在地址

        本實驗的循環周期為8s,即每隔一秒交替點亮下一個發光二極管。

        本實驗有關的計算:

        10(1*T'+200*T'+200*126*2T+200*2T) =10*0.1s=1s

        四:本實驗硬件知識

        1.上電復位后,程序計數器的內容為0000H,所以CPU總是從0000H開始執行程序,但是0000H~0002H用作89C51上電復位后引導程序的存放單元。所以要加跳轉指令。

        2.89C51上電復位后,RS1=RS0=0,CPU自動選擇第0組為當前寄存器組。片內RAM地址00H~07H。

        五:實驗心得

        現在特別喜歡匯編語言,匯編不僅不區分大小寫,而且不限制中間空字符。通過本實驗發現有些事情并不像別人說的那么難,只要是有一定得計算機知識,學習很容易的。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 莲花县| 遂宁市| 十堰市| 巩义市| 宣威市| 鄢陵县| 龙南县| 社旗县| 砚山县| 永德县| 六枝特区| 河东区| 湘潭县| 广州市| 大悟县| 来安县| 抚州市| 邹城市| 田阳县| 许昌市| 汽车| 潜江市| 乌拉特前旗| 蚌埠市| 达日县| 荆门市| 图木舒克市| 江陵县| 托克逊县| 万年县| 苏尼特左旗| 龙州县| 荃湾区| 开原市| 上林县| 平乐县| 南宁市| 浏阳市| 罗江县| 灵宝市| 新田县|