51单片机用定时器0实现流水灯

来源:互联网 发布:安卓 源码加密 混淆 编辑:程序博客网 时间:2024/05/22 06:50

51单片机用定时器0实现流水灯的代码如下,用P1口接led灯,代码如下都有注释就不具体解释了,英语不怎么好,有的地方将就一下喽,本次主要讲一下P1口怎么赋值。原先写的都是用查表来移位的,个人感觉不怎么好,麻烦。直接用位运算的比较好。 n初始值为0,然后n每次循环都加1,P1口赋值语句为: P1=~(0x01<< n) ; 此处注意和P1=~(0xfe<< n) ; 的区别。

/*********调用头文件*****************/    #include<reg51.h>    #include<intrins.h>    /***********宏定义*******************/    #define uint unsigned int       #define uchar unsigned char     #define long_time0 10    //定时器0定时时间,每次50ms    /************定义全局变量************/    uint n=0;                //循环移位变量    /************子函数声明**************/    void init_time0(void);   //定时器0初始化子函数    /*************主函数*****************/    void main(void)    {        init_time0();    }    /*********定时器0初始化函数**********/    void init_time0(void)    {            EA=1;                   //开总中断            ET0=1;                  //开定时器0中断            TMOD=0X01;              //选择方式1            TH0=(65536-50000)/256;  //每次定时50秒            TL0=(65526-50000)%256;            TR0=1;                  //开启定时器            while(1);               //等待定时器0中断    }    /************定时器中断函数**********/    void time0(void) interrupt 1 using 0    {        static uint i=0;        i++;        if(long_time0==i)        {            P1=~(0x01<<n);          //P1=~(0xfe<<n);            if(++n==8)n=0;            i=0;                    //定时时间到清零        }        TH0=(65536-50000)/256;      //重新装入初值        TL0=(65526-50000)%256;    }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 全民k歌不能用wf怎么办 雅乐之舞掉叶子怎么办 姬珊瑚发软歪了怎么办 胃胀气怎么办简单的方法 8个月的宝宝咳嗽怎么办 坐完月子掉头发怎么办 在香港买到假货怎么办 用气垫脸上浮粉怎么办 不够奶给宝宝吃怎么办 叶插发芽发根后怎么办 多肉植物摊大饼怎么办 英短蓝猫掉毛怎么办 英短蓝猫很凶怎么办 面部打伤怎么办了肿了 朋友欠钱一直拖怎么办 旧车三年不年检怎么办 遇到领导整你该怎么办 皮肤热了就瘙痒怎么办 猫爪子肉垫脏了怎么办 嘴周围干燥起皮怎么办 下嘴唇总是起皮怎么办 上嘴唇老是起皮怎么办 涂口红嘴唇起皮怎么办 上嘴唇干裂起皮怎么办 9岁儿童嘴唇干裂怎么办 上嘴唇干裂烂了怎么办 孕妇脚干的裂开怎么办 小腿皮肤干燥起皮怎么办 秋天脸干燥起皮怎么办 脚上干燥起皮怎么办 脚皮肤干燥起皮怎么办 脚有脚气脱皮又痒怎么办 脚特别干还脱皮怎么办 皮肤干燥起皮怎么办痒 脚一直脱皮怎么办不痒 我的脚老是起皮怎么办? 脚裂了怎么办 小妙招 牛不吃草不倒嚼怎么办 婴儿吸奶乳头痛怎么办 公犬的生殖肿了怎么办 大阴唇一边肿了怎么办