专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

每秒闪烁10次,8个灯循环(算法两数互传)

作者:佚名   来源:本站原创   点击数:  更新时间:2012年02月16日   【字体:
//2、利用定时/计数器T0产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,
//闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int 
#define uchar unsigned char
//sbit d0=P1^0;
uchar temp1,temp2;
uint num,i;

void main()
{
 
 
    num=0;
 EA=1;//开总中断//
 ET0=1;//定时器0中断开关开//
 TR0=1;//定时器0运行//
 TMOD=0x01;//定时器0用方式1
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256; //给定时器0赋初值产生50ms的定时中断
 temp1=0xfe;
 while(1)
   { 
  
  temp2=0xff;
  i=0;//闪烁次数到之后,转到下个灯的时候,计数值归0,重新计数 
  while(i<20)
  {
   if(num==2)
    {
       temp1=temp1^temp2;
     temp2=temp1^temp2;
     temp1=temp1^temp2;//两数互传
    
     P1=temp1;
     
     i++;
     num=0;
    } 
    } 
  
     temp1=_crol_(temp1,1);
   }

}
void timer0() interrupt 1 //50ms中断定时
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256; //重新赋值,否则时间出错
   num++;

}
关闭窗口

相关文章