利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动,

闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。设晶振频率为12MHz。求高手解答

你好,很简单啊:
先定义所需变量:unsigned char count,num;
然后num=0x01;
1.定时器初始化:
void inition()
{
TMOD=0x10;

TH1=(65536-10000)/256; //每10ms中断一次

TL1=(65536-10000)%256; //没10ms中断一次

ET1=1;EA=1;

TR1=1;

}
2.中断程序:
void Timer1() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
if(++count>10) //没次中断count计数一次,当计数到10,说明100ms到

{
count=0;

P1=_corl_(num,1);

}

}
希望我的回答能帮助到你。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-05
  TMOD=0x01,打开的是定时器T0,却TR1=1启动定时器T1。

  #include<reg52.h>
  #include<intrins.h>
  #define uint unsigned int
  #define uchar unsigned char
  uchar temp;
  int t;
  void main()
  {
  TMOD=0x01;
  EA=1;
  ET1=1;
  TR1=1;
  TH1=(65536-50000)/256;
  TL1=(65536-50000)%256;
  P1=0xfe;
  temp=P1;
  while(1)
  {
  }
  }
  void T1_time() interrupt 3
  { TH1=(65536-50000)/256;
  TL1=(65536-50000)%256;
  t++;
  if(t==2)
  {
  t=0;
  temp=_crol_(temp,1);
  P1=temp;
  }
  }
相似回答