实验2 定时器的应用(二)

实验目的:

1、掌握定时器的原理及常用工作方式;

2、 能够根据特定任务需求选择合适的工作方式实现定时。

实验要求:

1、基于普中开发板循环点P2口流水灯D1-D2-D3…D8,延时采用定时器T0定时100ms;(25分)

2、基于普中开发板循环点P2口流水灯D1-D2-D3…D8,延时采用定时器T1定时1s; (25分)

3、按键K1按下实现第1个功能,按键K2按下实现第2个功能。(选作)(50分)

备注:做了第3小题,第1,2 可不做

选择第三题

实验代码:

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
uchar m=0,i=0;
#define led P2
typedef unsigned int u16;

sbit k1= P3^1;
sbit k2 = P3^0;

void delay(u16 i)
{
while(i--); 
}
void main()
{
TMOD=0x11;//0 或 1   
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;      
ET0=1;
ET1=1;  

if(k1==0)
{
delay(50);
if(k1==0)
{
 TR0=1;//定时器0启动
}
led=~0x01; 
while(1);
}
if(k2==0)
{
delay(50);
if(k2==0)
{
 TR1=1;//定时器1启动
}
led=~0x01; 
while(1);
}


}
void timer0() interrupt 1
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256; 
m++;
if(m==2)    //2*50MS=100MS
{
m=0;
P2 = ~(0x01<<i);  
if(++i==8)
i=0; 
}
}

void timer1() interrupt 3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
m++;
if(m==20)    //20*50ms=1s
{
m=0;
P2 = ~(0x01<<i);  
if(++i==8)
i=0;
}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值