專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

每秒閃爍10次,8個(gè)燈循環(huán)(算法兩數(shù)互傳)

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年02月16日   【字體:
//2、利用定時(shí)/計(jì)數(shù)器T0產(chǎn)生定時(shí)時(shí)鐘,由P1口控制8個(gè)發(fā)光二極管,使8個(gè)指示燈依次一個(gè)一個(gè)閃動(dòng),
//閃動(dòng)頻率為10次/秒(8個(gè)燈依次亮一遍為一個(gè)周期),循環(huán)。
#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;//定時(shí)器0中斷開關(guān)開//
 TR0=1;//定時(shí)器0運(yùn)行//
 TMOD=0x01;//定時(shí)器0用方式1
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256; //給定時(shí)器0賦初值產(chǎn)生50ms的定時(shí)中斷
 temp1=0xfe;
 while(1)
   { 
  
  temp2=0xff;
  i=0;//閃爍次數(shù)到之后,轉(zhuǎn)到下個(gè)燈的時(shí)候,計(jì)數(shù)值歸0,重新計(jì)數(shù) 
  while(i<20)
  {
   if(num==2)
    {
       temp1=temp1^temp2;
     temp2=temp1^temp2;
     temp1=temp1^temp2;//兩數(shù)互傳
    
     P1=temp1;
     
     i++;
     num=0;
    } 
    } 
  
     temp1=_crol_(temp1,1);
   }

}
void timer0() interrupt 1 //50ms中斷定時(shí)
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256; //重新賦值,否則時(shí)間出錯(cuò)
   num++;

}
關(guān)閉窗口

相關(guān)文章