⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 此程序是基于c8051f020平台实现的是等精度频率计的测量控制部分
💻 C
字号:
#include <c8051f020.h>
#include "hao.h"
#define SYSCLK   22118400
sfr16 RCAP2    = 0xca; 
#define ulong  unsigned long int                // Timer2 capture/reload

extern ulong std_num,test_num;
uchar f0,f1,f2,f3,f4,f5,f6,f7,f8,f9;
uchar t0,t1,t2,t3,t4,t5,t6,t7,t8,t9;
uchar pulse0, pulse1, pulse2, pulse3, 
	  pulse4, pulse5, pulse6, pulse7, pulse8, pulse9;

uchar key_num;


sbit sel0=P2^0;
sbit sel1=P2^1;
sbit sel2=P2^2;

void SysInit()
{
	uint i;
	OSCXCN=0x67;
	for (i=0;i<256;i++);
	while(OSCXCN&0x80==0);
		OSCICN=0x88;
   EA=0;
   WDTCN=0xDE;
   WDTCN=0xAD;
   EA=1; 
   XBR0=0x00; 
   XBR1=0x00;
   XBR2=0x40;
   P0MDOUT=0x00;
   P0=0xff;
   P2MDOUT=0x3f;
   P74OUT=0xff;

}

void T2_initial(uint counts ) 
{
    CKCON &=0Xdf;               // choose fosc/12
    RCAP2=-(counts);                          //set the reload value
    IE &=0Xdf;                  // unenable the T2 interrrupt 
    IP &=0Xdf;
    T2CON &=0X7b;               // clear the overflow flag and stop T2
}


void main()
{
	ulong pulse,f,t; 
	SysInit();
	T2_initial(SYSCLK /12/1000) ;
	lcd_init();

 	while(1)
	{
		
		display_wait();
		key_num=key_scanf();
	

		if(key_num==1)
			{
			 while(1)
			 {
			 key_num=key_scanf();
			 if(key_num==2)
			 {
			  break;
			 } 
			 test_fre();
			 read_std_num();
			 read_test_num();
			 f=test_num*5000000/(std_num/1000);//50M晶振,扩大100倍
			  
			 f9=f%10000000000/1000000000;
			 f8=f%1000000000/100000000;
			 f7=f%100000000/10000000;
			 f6=f%10000000/1000000;
			 f5=f%1000000/100000;
			 f4=f%100000/10000;
			 f3=f%10000/1000;
			 f2=f%1000/100;
			 f1=f%100/10;
			 f0=f%10;
			 f9=9;f8=8;f7=7;f6=6;f5=5;

			 display_f();

			
			 t=100000000/f;
			 			 
			 t9=t%10000000000/1000000000;
			 t8=t%1000000000/100000000;
			 t7=t%100000000/10000000;
			 t6=t%10000000/1000000;
			 t5=t%1000000/100000;
			 t4=t%100000/10000;
			 t3=t%10000/1000;
			 t2=t%1000/100;
			 t1=t%100/10;
			 t0=t%10;
			 display_t();
			 }

			}
			
			if(key_num==2)
			{
			   while(1)
				{
				key_num=key_scanf();
				if(key_num==1)
				{
					break;
				}
				test_pulse();
				read_std_num();
				pulse=2*std_num;
				pulse9=pulse%10000000000/1000000000;
				pulse8=pulse%1000000000/100000000;
				pulse7=pulse%100000000/10000000;
				pulse6=pulse%10000000/1000000;
				pulse5=pulse%1000000/100000;
				pulse4=pulse%100000/10000;
				pulse3=pulse%10000/1000;
				pulse2=pulse%1000/100;
				pulse1=pulse%100/10;
				pulse0=pulse%10;
				display_pulse();
				} 
			}	
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -