微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 定时器/计数器应用

定时器/计数器应用

时间:10-02 整理:3721RD 点击:

一、实验目的:

1.学习单片机内部定数器的使用和编程方法。

2.进一步掌握中断处理程序的编写方法。

二、实验设备:

PC机(安装Keil uVision2、Proteus仿真环境)

三、实验内容:

1.使用软件延时控制P1口的8个发光二极管(D0~D7)循环点亮,间隔时间约为1S;利用单片机内部定时器T0定时中断,使P2.0的发光二极管D8闪烁,间隔时间为0.5S。

利用单片机内部定时器T1计数中断,实现对T1引脚输入信号计数,每计满10个脉冲令P2.0输出求反一次。
在线等,求助各位大神们。帮我编辑个编程。


1.第一个可以用delay延时函数,定时器的就简单了

这个简单的自己先试试看

自己试着做,都是这么过来的,具本有什么不懂的再来问

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^0;
sbit led1=P2^1;
uchar mun;
uchar aa;

void delayms(uint x)
{ uint i,j;
        for(i=x;i>0;i--)
                for (j=110;j>0;j--);
}
// 延时函数
void init()
{   TMOD=0X51;
    TH0=0x3C;
    TL0=0x0B;
        TH1=0Xff;
        TL1=0Xf6;       
    EA=1;
    ET0=1;
        ET1=1;
        TR0=1;
        TR1=1;
        aa=0xfe;
}
//初始化函数

void main ()
{ init();
while(1)
        {P1=aa;
         delayms(1000);
         aa=_crol_(aa,1);
        }
}
//主函数
void t0() interrupt 1
{TH0=0x3C;
TL0=0x0B;
mun++ ;
if(mun>10)
         {
          mun=0;
          led=~led;
         }
}
//T0中断
void t1() interrupt  3
{        TH1=0Xff;
        TL1=0Xf6;
        led=~led;
}
//T1中断

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top