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

📄 calc.c

📁 2051数字频率计源码,运行在AT892051上
💻 C
字号:

//#pragma src


#include "paramac.h"
#include "show.h"
#include "save.h"








//       工作时间累计,每十分钟:

void run_time_add(void){

  unsigned char i;

  for(i=TIME_LEN-1;i>=0;i--)
  {
    if(++work.time[i]>=0x0a)					//加一,进位否
		work.time[i]=0;							//若进位则进位
	else
		break;									//若不进位则退出

	if(i==0)break;								//若最高位加一则退出,以免i=-1出错
  }

  if(POWER_DOWN_PIN==TRUE && rq_save_time==FALSE)
  {
    save.rq_save_timeB=i;
    save.rq_save_timeA=i;
    rq_save_time=TRUE;										//要求保存
  }else
  {
    save.rq_save_timeB=TIME_LEN;
    save.rq_save_timeA=TIME_LEN;
    rq_save_time=FALSE;										//撤销保存信号
  }
  black_left_zero_of_run_time();							//清时间显示左边的零
}




//   ******   触发系统累计定时器,每十分钟累加一次   *****

run_time_stack_come(){
  if(run_time.run_stack==0)return;
  run_time.run_stack--;


  if(--run_time.every_A_seconds==0){
      run_time.every_A_seconds=RUN_TIME_EVERY_A_SECONDS;
      dot_flash();           									//0.5秒钟的时间,闪烁吗?
	  if(real_work==FALSE)return;								//不工作不计时
      if(--run_time.every_B_minutes==0){
          run_time.every_B_minutes=RUN_TIME_EVERY_B_MINUTES;
          //run_time_ov=1;         								//6分钟的时间
          //if(_testbit_(run_time_ov))run_time_add();      		//刷新时间累计
	  	  run_time_add();      									//刷新时间累计

    }
  }
}









// *********    齿数增加处理程序:    ************

void gear_id_add(void){

  work.gear_num=gear_id_list[(++work.gear_id>=GEAR_ID_MAX)?(work.gear_id=0):work.gear_id];

  if(POWER_DOWN_PIN==TRUE && rq_save_gear_id==FALSE) rq_save_gear_id=TRUE;				//要求保存

  show_gear_show();
}













/*

          将检测结果转化成十进制,送显示缓存:

  计算方法:

  每分转数 =

             读的时间内的脉冲数  * 每分秒数 
   ______________________________________________________

	         齿轮齿数  * 读得的时间长度(unit: 10mS) 

*/

void refresh_scr_buf(void)
{
  unsigned int all;
  unsigned char it;

  all=(long)(test.p_num*6000L) / ( work.gear_num * (long)(test.t_num));

  show.speed[0]=all/1000;//计算千位数    0-0xff
  all=all%1000;

  show.speed[1]=all/100;  //计算百位数    0-9
  all=all%100;

  show.speed[2]=all/10;  //计算十位数    0-9
  all=all%10;

  show.speed[3]=(unsigned char)all; //剩个位数      0-9

  if(show.speed[0]>=0x0b)								
  {
  	if(work.error==ERROR_NO_ERROR)work.error=ERROR_SPEED_OVER_FLOW;		//超速错误处理
  }
  else
  {
  	if(work.error==ERROR_SPEED_OVER_FLOW)work.error=ERROR_NO_ERROR;
  }

  it=0;
  while(it<SPEED_LEN-1){
    if(show.speed[it]==0)show.speed[it]=LED_BLACK;			//消隐左边的零
	else break;
	it++;
  }
  
}








⌨️ 快捷键说明

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