定时器/计数器应用

2019-07-16 03:57发布

一、实验目的:1.学习单片机内部定数器的使用和编程方法。2.进一步掌握中断处理程序的编写方法。二、实验设备:PC机(安装Keil uVision2、proteus仿真环境)三、实验内容: 1.使用软件延时控制P1口的8个发光二极管(D0~D7)循环点亮,间隔时间约为1S;利用单片机内部定时器T0定时中断,使P2.0的发光二极管D8闪烁,间隔时间为0.5S。利用单片机内部定时器T1计数中断,实现对T1引脚输入信号计数,每计满10个脉冲令P2.0输出求反一次。

在线等,求助各位大神们。帮我编辑个编程。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
man丶灬低调、
1楼-- · 2019-07-16 04:00
baipsj
2楼-- · 2019-07-16 04:56
 精彩回答 2  元偷偷看……
jiance1988
3楼-- · 2019-07-16 05:41
这个简单的自己先试试看
lstcspring
4楼-- · 2019-07-16 07:17
自己试着做,都是这么过来的,具本有什么不懂的再来问
shiqiankun424
5楼-- · 2019-07-16 10:45
#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中断

一周热门 更多>