原创 C51入门程序 定时器和中断

2015-12-9 16:11 1206 11 11 分类: MCU/ 嵌入式
 
写在之前:转载请注明出处,如果给您帮助,请您点个赞。
和上文一样,是我大学13年是上单片机的习题,拿出来看看有没有帮助到需要的人 。与上文要相互联系。
 
 
 
#include
#define uint unsigned int
sbit key1=P3^4;
sbit ledb=P1^0;
sbit ledg=P1^1;
uint num,num1,num2;
 
void inti()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ledb=0;
ledg=0;
 
}
 
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
 
void keyscan()
{
if(key1==0)
{
   delay(10);
   if(key1==0)
   {
      num++;
      if(num==1)
      {
           EA=1;
           ET0=1;
TR0=1;
num=0;
while(!key1);
}
if(num==2)
{
   EA=1;
   ET1=1;
   TR1=1;
   num=0;
   while(!key1);
}                                      //难点
 
    }
}
 
 
}
 
 
 
void Time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
if(num1==40)
{
ledg=1;
ledb=0;
}
if(num1==120)
{
ledg=1;
ledb=1;
num1=0;
TR0=0;
}
 
}
 
void Time1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num2++;
ledg=1;
ledb=0;
 
if(num2==120)
{
ledg=1;
ledb=1;
num2=0;
TR1=0;
}
 
void main()
{
inti();
while(1)
{
keyscan();
}
}

上面这条程序的意思是你按同一个键一次,灯亮2秒后停息,按两次,灯亮六秒后停止。
上面是用两个定时器的。
用一个定时器和计数器来解决程序。

程序改动如下: 

#include
#define uint unsigned int
sbit key1=P3^4;
sbit ledb=P1^0;
sbit ledg=P1^1;
uint num,num1,num2;
 
void inti()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
//TH1=(65536-50000)/256;
//TL1=(65536-50000)%256;
ledb=1;
ledg=1;
EA=1;
ET0=1;
}
 
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
 
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
   {
num++;
if(num==1)
{
 
TR0=1;
num=0;
num2=1;
while(!key1);
}
if(num==2)
{
TR0=1;
num=0;
num2=2;
while(!key1);
}
 
    }
}
 
 
}
 
 
 
void Time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(num2==1)
{
ledb=0;
num1++;
if(num1==40)
{
ledb=1;
TR0=0;
num2=0;
num1=0;
}
}
if(num2==2)
{
ledg=0;
num1++;
if(num1==20)
{
ledg=1;
TR0=0;
num2=0;
num1=0;
}
        }
 
 
}
 
 
void main()
{
inti();
while(1)
{
keyscan();
}
}

 

作者: Bruce-Woo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1850657.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条