51单片机用定时器0实现流水灯
51单片机用定时器0实现流水灯的代码如下,用P1口接led灯,代码如下都有注释就不具体解释了,英语不怎么好,有的地方将就一下喽,本次主要讲一下P1口怎么赋值。原先写的都是用查表来移位的,个人感觉不怎么好,麻烦。直接用位运算的比较好。 n初始值为0,然后n每次循环都加1,P1口赋值语句为: P1=~(0x01<< n) ; 此处注意和P1=~(0xfe<< n) ; 的区别。
/*********调用头文件*****************/
#include
#include
/***********宏定义*******************/
#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< if(++n==8)n=0; i=0; //定时时间到清零 } TH0=(65536-50000)/256; //重新装入初值 TL0=(65526-50000)%256; }
下一篇:PIC单片机之PWM PWM原理
- 富士通数字退火芯片DAU明年登场[18年05月19日 12:37]
- 高通总裁拜访OPPO,传拿下R15S订单[18年05月19日 12:37]
- 经济学人:台积电先进制程将超越英特尔[18年05月19日 12:36]
- 高通恩智浦并购获批前景乐观 恩智浦股价创本周最大涨幅[18年05月19日 12:35]
- 共建智慧家庭美好未来!2018中国智慧家庭高峰论坛精彩盘点[18年05月19日 12:33]
- 乐鑫ESP32开发板正式通过Amazon FreeRTOS的验证[18年05月18日 21:30]







在线客服