DAY5 NE555N芯片

第一步:跳线帽串起SIGNAL引脚和P34引脚

第二步:需要一个计数器来计脉冲数(上升沿数)  用T0来计数

TMOD 低四位配置为0101(十六位不可重装载)

用stp生成计数器代码

修改代码

    加上:TMOD |= 0x05;       //TMOD 0101配置计数模式(修改低四位)

/* 定时器0中断初始化函数 */
void Timer0Init(void)		//0毫秒@12.000MHz
{
    AUXR &= 0x7F;        //定时器时钟1T模式(修改高四位,即定时器1的模式)
	TMOD &= 0xF0;		//设置定时器模式(低四位清0)
    TMOD |= 0x05;       // 0101配置计数模式(修改低四位)               √
	TL0 = 0x00;		//设置定时初值
	TH0 = 0x00;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}

第三步:需要一个定时器来计1秒   用T1来计时

定时器1中断序列号为3  (interrupt 3)

用stp生成新的定时器代码

再加两行代码

ET1 = 1;

EA = 1;

interrupt 1---> interrupt 3

修改代码
/*定时1中断初始化函数*/
void Timer1Init(void)		//1毫秒@12.000MHz
{
	AUXR |= 0x40;		//定时器时钟1T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0x20;		//设置定时初值
	TH1 = 0xD1;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
    ET1 = 1;                                                // √
    EA = 1;                                                 // √
}


/*定时器1中断服务函数*/
void Timer1Server() interrupt 3                             // √
{  
	if(++Key_Slow_Down == 10) Key_Slow_Down = 0;//键盘减速专用
	if(++Seg_Slow_Down == 500) Seg_Slow_Down = 0;//数码管减速专用
	if(++Seg_Pos == 8) Seg_Pos = 0;
		Seg_Disp(Seg_Pos,Seg_Buf[Seg_Pos],Seg_Point[Seg_Pos]);
		Led_Disp(Seg_Pos,ucLed[Seg_Pos]);
	


	if(++Timer_1000Ms == 1000) //实时读取频率值
	{
		Timer_1000Ms = 0;
		Freq = TH0 << 8 | TL0;  //将TH0和TL0中计的数储存在频率Freq变量里
		TH0 = TL0 = 0;    //程序
	}
}

第四步:函数显示freq

		Seg_Buf[3] = Freq / 10000 % 10;
		Seg_Buf[4] = Freq / 1000 % 10;
		Seg_Buf[5] = Freq / 100 % 10;
		Seg_Buf[6] = Freq / 10 % 10;
		Seg_Buf[7] = Freq % 10;

第五步:main.c中调用定时器0和1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值