📄 dianya.c
字号:
#include "spce061a.h"
#define D0 0
#define D1 1
#define D2 2
#define D3 3
#define D4 4
#define D5 5
#define D6 6
#define D7 7
#define D8 8
#define D9 9
#define FU 10
#define DIAN 11
#define JINGGAO 12
const int Address[]={0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f,0x8000};
int function,key;
//********************AD转换*************************//
unsigned int AD(void)
{
unsigned int uiData;
while(!(*P_ADC_MUX_Ctrl&0x8000)); //wait,until ADC complete
uiData=*P_ADC_LINEIN_Data;
return(uiData&0xffc0);
}
//********************自动播放*************************//
void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)
{
SACM_A2000_Initial(1); //初始化为自动播放
SACM_A2000_Play(SndIndex, DAC_Channel, 3); //开始播放一段语音
while((SACM_A2000_Status()&0x0001)!= 0) //是否播放完毕?
{
SACM_A2000_ServiceLoop(); //解码并填充队列
*P_Watchdog_Clear=0x0001; //清看门狗
}
SACM_A2000_Stop(); //停止播放
}
//********************延时*************************//
void delay(int x)
{
int u,v;
for(u=0;u<x;u++)
{
for(v=0;v<100;v++)
*P_Watchdog_Clear=0x0001;
}
}
//********************语音选择*************************//
void sound(int num)
{
switch(num)
{
case 0:PlaySnd(0,1+2); break ;
case 1:PlaySnd(1,1+2); break ;
case 2:PlaySnd(2,1+2); break ;
case 3:PlaySnd(3,1+2); break ;
case 4:PlaySnd(4,1+2); break ;
case 5:PlaySnd(5,1+2); break ;
case 6:PlaySnd(6,1+2); break ;
case 7:PlaySnd(7,1+2); break ;
case 8:PlaySnd(8,1+2); break ;
case 9:PlaySnd(9,1+2); break ;
}
}
//********************读键程序*************************//
int read_key(int num)
{
int y,z;
*P_IOA_Data=*P_IOA_Data | 0x0007;
key=*P_IOA_Data &0x0007;
if (key!=7)
{
delay(20);
key=*P_IOA_Data &0x0007;
if (key!=7)
{
if (key==0x0006)
{
y=(num%100)/10;
z=(num%100)%10;
sound(num/100);
PlaySnd(11,1+2);
sound(y);
sound(z);
PlaySnd(10,1+2);
}
}
}
}
//********************主程序*************************//
void main()
{
unsigned long int uiData;
unsigned int i,j;
float fVoltage;
fVoltage=0.00;
*P_IOA_Dir=0xfff0;
*P_IOA_Attrib=0xfff8;
*P_IOA_Data=0xff0f;
*P_IOB_Dir=0xffff;
*P_IOB_Attrib=0xffff;
*P_IOB_Data=0xffff;
*P_ADC_MUX_Ctrl=C_ADC_CH4; //LINE_IN--IOA3
*P_ADC_Ctrl= C_ADCE; //ADC enable
uiData=*P_ADC_LINEIN_Data; //ADC start
uiData=0;
for(i=0;i<16;i++)
{
uiData += AD();
*P_Watchdog_Clear=0x0001;
}
uiData >>= 4;
fVoltage=(float)uiData*3.3/0xffc0;
j=fVoltage*100;
*P_IOB_Data=(Address[j/100]<<8)+Address[(j%100)/10]+Address[10];
*P_IOA_Data=Address[(j%100)%10]<<8;
if(fVoltage>2.5)
{
*P_IOA_Data=*P_IOA_Data | 0x0001;
PlaySnd(12,1+2);
*P_Watchdog_Clear=0x0001;
*P_IOB_Data=(Address[j/100]<<8)+Address[(j%100)/10]+Address[10];
*P_IOA_Data=Address[(j%100)%10]<<8;
}
else
{
read_key(j);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -