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

📄 count.c

📁 这是一个AVR的单片机程式。能实现对一个中断端口进行计数、显示。有比较全面的按键功能。
💻 C
字号:
#define _COUNT_
#include <iom16.h>
#include "lcd.h"
#include "main.h"
#include "key.h"
#include "count.h"

/***********************************************************************************
 * 功能:仪表常数转换,将一个double型常数转换为两个整数
 * 输入:流量计上的仪表常数
 * 输出:经过转换的仪表常数
 * 仪表常数:例如仪表常数为107.512,代表转107.512圈为1升;第一部分由256除107.512取整
 *           得到,第二部分由256除以107.512的小数部分再乘以256得到的整数部分
 * ********************************************************************************/
unsigned int *meter_change(double meter)
{ 		
	if(meter<=0)
	{
		//asc_tran("Please input positive number");
	}
	else
	{	
		//unsigned int a[2];		
		unsigned int part1 = (unsigned int)(256 / meter);//第一部分
		double temp2 = (256 / meter) - part1;//小数部分
		unsigned int part2 = (unsigned int)(temp2 * 256);//第二部分
		a[0] = part1;
		a[1] = part2;
	}
	return a;
}

//脉冲数转换为抽酒数量
void PulseToAmount(long pulse)
{
 have_drawed = (double)(pulse/meter);
}

//抽酒数量转换为脉冲数
void AmountToPulse(double amount)
{
 want_to_draw_pulse = (long)(amount * meter);
}

//将已抽酒数量转换为char型数组并通过LCD显示出来。注意只取小数点后1位
void AmountToLcd(unsigned int n)
{
 if(n/10)
   AmountToLcd(n/10);
 Lcd_write_char(n%10 + '0');
}

//PD3接流量计,来个脉冲pulse加1。
//#pragma interrupt_handler int1_isr:3
#pragma vector=INT1_vect
__interrupt void INT1_vect_isr(void)
{
  //GICR  &= 0x7F;//关中断1

  //want_to_draw_int = (long)(want_to_draw*256);
  //MCUCR = 0x3B;//省电模式,int1上升沿触发中断,int0低电平触发中断
  //GICR  |= 0x80;//开中断1

  pulse += 1;
  times += 1;
}

⌨️ 快捷键说明

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