• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 廣告燈(利用取表方式)

    廣告燈(利用取表方式)

    作者: 時間:2011-02-27 來源:網絡 收藏

    1. 實驗任務

    利用取表的方法,使端口P1做單一燈的變化:左移2次,右移2次,閃爍2次(延時的時間0.2秒)。

    2. 電路原理圖

    4.5.1

    3. 系統板上硬件連線

    把“系統”區域中的P1.0P1.78芯排線連接到“八路發光二極管指示模塊”區域中的L1L8端口上,要求:P1.0對應著L1P1.1對應著L2……P1.7對應著L8

    4. 程序設計內容

    在用表格進行程序設計的時候,要用以下的指令來完成

    (1). 利用MOV DPTR,#DATA16的指令來使數據指針寄存器指到表的開頭。

    (2). 利用MOVC A,@ADPTR的指令,根據累加器的值再加上DPTR的值,就可以使程序計數器PC指到表格內所要取出的數據。

    因此,只要把控制碼建成一個表,而利用MOVC 工,@ADPTR做取碼的操作,就可方便地處理一些復雜的控制動作,取表過程如下圖所示:

    5. 程序框圖

    4.5.2

    6. 匯編源程序

    ORG 0

    START: MOV DPTR,#TABLE

    LOOP: CLR A

    MOVC A,@A+DPTR

    CJNE A,#01H,LOOP1

    JMP START

    LOOP1: MOV P1,A

    MOV R3,#20

    LCALL DELAY

    INC DPTR

    JMP LOOP

    DELAY: MOV R4,#20

    D1: MOV R5,#248

    DJNZ R5,$

    DJNZ R4,D1

    DJNZ R3,DELAY

    RET

    TABLE: DB 0FEH,0FDH,0FBH,0F7H

    DB 0EFH,0DFH,0BFH,07FH

    DB 0FEH,0FDH,0FBH,0F7H

    DB 0EFH,0DFH,0BFH,07FH

    DB 07FH,0BFH,0DFH,0EFH

    DB 0F7H,0FBH,0FDH,0FEH

    DB 07FH,0BFH,0DFH,0EFH

    DB 0F7H,0FBH,0FDH,0FEH

    DB 00H, 0FFH,00H, 0FFH

    DB 01H

    END

    7. C語言源程序

    #include AT89X51.H>

    unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,

    0xef,0xdf,0xbf,0x7f,

    0xfe,0xfd,0xfb,0xf7,

    0xef,0xdf,0xbf,0x7f,

    0x7f,0xbf,0xdf,0xef,

    0xf7,0xfb,0xfd,0xfe,

    0x7f,0xbf,0xdf,0xef,

    0xf7,0xfb,0xfd,0xfe,

    0x00,0xff,0x00,0xff,

    0x01};

    unsigned char i;

    void delay(void)

    {

    unsigned char m,n,s;

    for(m=20;m>0;m--)

    for(n=20;n>0;n--)

    for(s=248;s>0;s--);

    }

    void main(void)

    {

    while(1)

    {

    if(table[i]!=0x01)

    {

    P1=table[i];

    i++;

    delay();

    }

    else

    {

    i=0;

    }

    }

    }



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 易门县| 建昌县| 南皮县| 商南县| 洪湖市| 鸡西市| 崇信县| 武穴市| 闽侯县| 甘谷县| 平顶山市| 常熟市| 泾源县| 临西县| 柏乡县| 太湖县| 莱阳市| 阜平县| 宜川县| 炎陵县| 济南市| 虎林市| 孟连| 赣州市| 寻甸| 溆浦县| 霍州市| 黄梅县| 宾川县| 西城区| 睢宁县| 遵义县| 汤原县| 长乐市| 耒阳市| 巴东县| 布尔津县| 延川县| 修武县| 喀喇沁旗| 水富县|