UNIX艺术

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

LED流水灯【单向】

#include <reg52.h>
sbit LED1 = P1^1;
sbit LED7 = P1^7;

void delay(unsigned int s);
// code: 定义在ROM,常量放在ROM
// 否则定义在RAM,尽量节省RAM。
/*
unsigned char code table[] = {
    0xfe, 0xfd, 0xfb, 0xf7,
    0xef, 0xdf, 0xbf, 0x7f
};
*/

main()
{
    unsigned char i=0; // 0~65535
    unsigned char j;
    LED7 = 0; // 点亮P1.7

    P1 = 0xFE;
    while(1) {
        /*
         * While语句占了2个赋值语句的时间
         * 通过多执行2次,形成2个相等方波
         */
        //LED1 = 0; // P1.1点亮
        //delay(1);
                                                 
        //LED1 = 1; // P1.1熄灭
        //delay(1);

        // 查表
        /*
        for(i=0;i<8;i++) {
            P1 = table[i];
            delay(1);
        }
        */

        // 移位
        j = P1;
        j = j << 1;
        if(j != 0xFE) j = j | 0x01;
        P1 = j;
        delay(1);
    }
    return 0;
}

void delay(unsigned int s)
{
    unsigned int i, end;

    end = s*30000;
    for(i=0;i<end;i++);
}

 

posted on 2013-02-23 21:45  jinhuawang76  阅读(278)  评论(0编辑  收藏  举报