📄 voice.c
字号:
#include "voice.h"
#include "datetime.h"
#include "lcd.h"
#include <REGX51.H>
#define VOC P2
BIT voc_SendBit7;
BIT voc_IsAlarming;
void vocInit(void)
{
VOC = 0;
voc_IsAlarming = FALSE;
}
void vocSendByte(BYTE b)
{
voc_SendBit7 = ~voc_SendBit7;
if (voc_SendBit7) b&=0x7f;
else b|=0x80;
VOC = b;
DelayX1ms(5);
}
void vocSendString(char* str)
{
BYTE i = 0;
while (i<255)
{
if (str[i]==0) break;
vocSendByte(str[i]);
i++;
}
}
void vocSendNumberChar(BYTE num)
{
if (num < 10) vocSendByte(num+'0');
}
void vocSendUInt(BYTE a)
{
BYTE x100,x10,x1;
x100 = a / 100;
x10 = (a % 100) / 10;
x1 = a % 10;
if (x100)
{
vocSendNumberChar(x100);
vocSendString("H");
}
if (x10)
{
vocSendNumberChar(x10);
vocSendString("X");
}
else
{
if (x100 && x1) vocSendNumberChar(0);
}
if (x1)
{
vocSendNumberChar(x1);
}
else
{
if (a==0) vocSendNumberChar(0);
}
}
BIT vocIsAlarming(void)
{
return voc_IsAlarming;
}
void vocStopAll(void)
{
vocSendByte(0);
voc_IsAlarming = FALSE;
}
void vocAlarm(void)
{
if ( !voc_IsAlarming )
{
vocSendByte('A');
voc_IsAlarming = TRUE;
}
}
void vocTime(void)
{
DATETIME dtt;
vocSendString("XI");
dtt = dttGetCurDateTime();
//hour
vocSendUInt( dtt.hh );
vocSendString(".");
//minute
vocSendUInt( dtt.mi );
vocSendString("M");
//second
vocSendUInt( dtt.ss );
vocSendString("S");
}
void vocTempe(TEMPE * pT, BIT bConvertToF)
{
TEMPE tempe;
BYTE m,n;
// 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
const BYTE code div[] = { 00, 06, 13, 19, 25, 31, 38, 44, 50, 56, 63, 69, 75, 81, 88, 94, };
// const BYTE -div[] = { 94, 88, 81, 75, 69, 63, 56, 50, 44, 38, 31, 25, 19, 16, 06, 00, }; //正的倒序
tempe = *pT;
if (bConvertToF) ConvertCtoF(pT);
vocSendString("TD");
m = ((pT->th << 4) & 0xf0) | ((pT->tl >> 4) & 0x0f);
if (pT->th & 0x80)
{
vocSendString("-");
m = ~m;
n = div[(16 - pT->tl) & 0x0f];
}
else
{
n = div[pT->tl & 0x0f];
}
vocSendUInt(m);
vocSendString(".");
vocSendNumberChar( n/10 );
vocSendNumberChar( n%10 );
vocSendString( bConvertToF ? "FND" : "CND" );
*pT = tempe;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -