📄 count.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 + -