资源简介

本设计利用定时器中断功能实现了频率测量的功能,模块化的程序可读性强。

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint  unsigned int

uchar code table[11] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};

long uint pulse=0;//计数输入的方波的个数;

long uint freq=0;//频率

uchar temp=0; //临时变量

uchar f;

void delay_1ms(uint i) //延时函数,约1ms
{
        uint xj;
        for(j=0;j        for(x=0;x<=148;x++);       
}

void Time0_Init()//定时器和计数器的初始化函数
{
        EA=1; //打开全局中断
        TMOD = 0x15;//设定定时器1和计数器0的工作方式为方式1
               
        TH0  = 0xff;//计数器0的初值
        TL0  = 0xff;//计数器0的初值
        ET0=1; //允许计数器0中断
        TR0=1; //打开计数器0,开始计数

        TH1  = 0x3c;//定时器1的初值
        TL1  = 0xb0;//定时器1的初值
        ET1=1;        //允许定时器1中断
        TR1 = 1;//打开定时器1,开始计数               
}

void main()
{
        Time0_Init(); //初始化定时器和计数器
       
        while(1)
        {
                       
                P2=0xf7;  //以下为数码管显示函数
                P0=0x00;
                P0=table[freq/1000%10];
                delay_1ms(2);

                P2=0xfb;
                P0=0x00;
                P0=table[freq/100%10];
                delay_1ms(2);

                P2=0xfd;
                P0=0x00;
                P0=table[freq/10%10];
                delay_1ms(2);

                P2=0xfe;
                P0=0x00;
                P0=table[freq%10];
                delay_1ms(1);       
        }
}

void ISQ_timer0(void) interrupt 1 //用来计数脉冲数,每一个方波脉冲,计数器进入中断,脉冲数加一
{
        TR0 = 0;
        pulse++;
        TH0  = 0xff;
        TL0  = 0xff;
        TR0 = 1;
}
/****************************************************************
        用来设定时间,定时器的周期为50ms,当经过20次后,
        也即1s后,关断定时器和计数器,将一秒内计数的脉冲数赋给频率pulse
        一秒内采集的脉冲数即为输入方波的频率
****************************************************************/
void ISQ_time1() interrupt 3  
{
        TH1  = 0x3c;
        TL1  = 0xb0;
        temp++;
        if(temp==20)
        {
                TR0 = 0;
                TR1 = 0;
                temp=0;
                freq=202642400/pulse*100/pulse;
                pulse=0;//将脉冲数清零,重新计数
                TR0 = 1;//打开计数器0,进入下一个循环
                TR1 = 1;//打开定时器1,进入下一个循环                       
        }       
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-15 23:53  test_fre_x\
     文件        6376  2009-05-07 14:37  test_fre_x\STARTUP.A51
     文件       14070  2018-07-08 15:12  test_fre_x\STARTUP.LST
     文件         749  2018-07-08 15:12  test_fre_x\STARTUP.OBJ
     文件        2429  2018-07-06 17:02  test_fre_x\day5_tf.c
     文件        1490  2018-07-08 15:12  test_fre_x\frequence.LST
     文件        2034  2018-07-08 15:12  test_fre_x\frequence.OBJ
     文件         293  2018-07-06 22:45  test_fre_x\frequence.c
     文件         131  2018-07-06 22:51  test_fre_x\frequence.h
     文件         894  2018-07-06 22:50  test_fre_x\it.LST
     文件         592  2018-07-06 22:50  test_fre_x\it.OBJ
     文件          52  2018-07-06 22:50  test_fre_x\it.__i
     文件          53  2018-07-06 22:51  test_fre_x\it.c
     文件        4113  2018-07-08 15:18  test_fre_x\lcd.LST
     文件        6832  2018-07-08 15:18  test_fre_x\lcd.OBJ
     文件          53  2018-07-08 15:18  test_fre_x\lcd.__i
     文件        1499  2018-07-08 15:18  test_fre_x\lcd.c
     文件         322  2018-07-08 14:52  test_fre_x\lcd.h
     文件        6213  2018-07-06 21:03  test_fre_x\main.LST
     文件        8590  2018-07-06 21:03  test_fre_x\main.OBJ
     文件        3451  2018-07-06 21:03  test_fre_x\main.c
     文件        4060  2018-07-08 15:23  test_fre_x\test_freq.LST
     文件        4858  2018-07-08 15:23  test_fre_x\test_freq.OBJ
     文件          59  2018-07-08 15:23  test_fre_x\test_freq.__i
     文件        1464  2018-07-08 15:23  test_fre_x\test_freq.c
     文件       12740  2018-07-08 15:23  test_fre_x\test_frequency
     文件        4390  2018-07-05 23:37  test_fre_x\test_frequency.LST
     文件       14749  2018-07-08 15:23  test_fre_x\test_frequency.M51
     文件           0  2018-08-15 23:11  test_fre_x\test_frequency.build_log.htm
     文件        1573  2018-07-05 20:28  test_fre_x\test_frequency.c
     文件        2471  2018-07-08 15:23  test_fre_x\test_frequency.hex
............此处省略9个文件信息

评论

共有 条评论