網路城邦
上一篇 回創作列表 下一篇   字體:
8051 uart 89c51ed2 rs232 test
2012/10/18 16:55:40瀏覽268|回應0|推薦0
#include    <reg51.h>         
void delay_1m(unsigned int dly);  
void int4_drv(void) interrupt 4
{
    if (RI == 1)
    {   
        P0 = ~SBUF;
        RI = 0;
    }
    else
    {
        TI = 0;
    }
   
}

void main()
{                  
   //跑馬燈的陣列
   unsigned char code led_table[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
   unsigned char i;
    TMOD = 0x20;   
    PCON &= 0x7F;
    TH1 = 0xFA;            //19200, 22.118 , C51ED2
    SCON = 0x50;   
    IP = 0x10;
    IE = 0x90;               
    TR1 = 1;               
    while(1)
    {
        for (i=0;i<8;i++)
        {       //會連續執行8次的for迴圈
            P1=led_table[i];       // 將陣列中的數值丟到P1
            delay_1m(2000);       //執行delay副程式
        }
    }                   // 結束 while
}
/***************************************************************************
副程式        :  delay_1m
輸入引數    : 無號16位元整數unsigned int dly
說明        : 此副程式,引數dly為delay的長短控制
            : 1 dly = 1msec
****************************************************************************/
void delay_1m(unsigned int dly) 
{
   int count;        // 宣告count為一個整數變數(大小為16 bits)
                     // 當count=120,
                     // 執行while(count>0) count--; 約為1mS(石英晶體=12MHz)
   while(dly != 0) {
     count=120;
       while(count>0)   
          count--;      
    dly--;
  }
}
( 心情隨筆心情日記 )
回應 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=greatcat&aid=6955240