51单片机用定时器0实现流水灯
2016-05-13 21:05
309 查看
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; }
相关文章推荐
- javaweb 实现分页
- loadrunn 测试json body接口
- TXT数据文档读入,存入数组
- 【辗转相除法】HDU1019Least Common Multiple
- (function (window, undefined){})(window)
- 2016"百度之星" - 测试赛 1001 大搬家(递推规律题)
- SSH-struts
- 从服务器端返回的状态码汇总
- POJ 3252 组合数
- sql语句多表查询大集合
- 关于linux和windows文件的读写
- LINUX——文件查找1
- CentOS 6.5自动化运维之基于cobbler服务的自动化安装操作系统详解
- 电脑断电后,突然无线有线网卡无法使用
- iOS TableView解耦
- 【转大牛的】Android studio 页面布局
- sass入门学习
- Error using xlsread (matlab 读取文件报错)
- loadrunner和json
- Max Sum(lis)