|
麻烦解答下谢谢!keil 中用c 语言写的代码 syntax error near 'EA'
[复制链接]
/***************************************************
**FileName :main.c
**Modifided :Sep-05-2008
**Author :wang
**Description:The main file of the project.
*****************************************************/
#include
sbit ADC_CS = P0^5; //AD芯片引脚的定义
sbit ADC_CLK= P0^6;
sbit ADC_DO = P0^7;
sbit ADC_DI = P2^0;
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P21 = P2^1;
unsigned char LedDispData[4];//定义一个全局变量
const unsigned char LedData[10]=
{
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
}; //数码管的显示码(共阳极)
/******函数的声明***********************************/
void Delay(unsigned char val);
void DelayMs(unsigned int val);
void Init_System(void);
unsigned char ReadAdc(void);
void LedChange(unsigned char val);
/*****************************************************
**函数名:main
**输入 :
**输出 :
**描述 :整个程序的入口地址,在此实现全部的功能
*****************************************************/
int main(int argc,char **argv)
{
unsigned char val;
DelayMs(30000);//延迟30S用于传感器的预热
Init_System();
while(1)
{
val=ReadAdc();
LedChange(val);
if(val>200)
{
P04=~P04;//蜂鸣器报警
DelayMs(10);
P21=0; //风扇转动
DelayMs(10);
}
else
{
P04=1;
P21=1;
}
}
return 0;
}
/*****************************************************
**函数名:Dleay
**输入 :
**输出 :
**描述 :该函数主要用于脉冲的延迟时间
*******************************************************/
void Delay(unsigned char val)
{
unsigned char i;
for(i=0;i
}
/*****************************************************
**函数名:ReadAdc
**输入 :无
**输出 :
**描述 :该函数主要是把模拟电压转换8位2进制并返回
******************************************************/
unsigned char ReadAdc(void)
{
unsigned char i,ch;
ch=0;
ADC_CS=0;
ADC_DO=0; //片选,D0为高阻
for(i=0;i<10;i++)
{;}
ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;
Delay(2);//第一个脉冲,起始位,此时DI=1
ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;
Delay(2);//第2个脉冲,DI=1表示双通道单极性输入
ADC_CLK=0;
Delay(2);
ADC_DI=0;
ADC_CLK=1;
Delay(2);//第3个脉冲,DI=0表示选择通道0
ADC_DO=1;//DI转为高阻,D0脱离高阻为读数据作准备
ADC_CLK=1;
Delay(2);
ADC_CLK=0;
Delay(2);//
for(i=0;i<8;i++)//开始读取数据
{
ADC_CLK=1;
Delay(2);
ADC_CLK=0;
Delay(2);
ch=(ch<<1)|ADC_DO;//下降沿读取数据
}
ADC_CS=1;
return(ch);
}
/*****************************************************
**函数名:Init_System
**输入 :
**输出 :
**描述 :该函数为系统的初始化
*******************************************************/
void Init_System(void)
{
P0=0xf0;//蜂鸣器不叫
P1=0x00;//数码管为0
TMOD=0x01;
PCON=0x00;
TH0=0xf5;//
TL0=0x33//
EA=1;//
ET0=1; //
TR0=1;//开始计数
}
/*****************************************************
**函数名:LedDisp
**输入 :
**输出 :
**描述 :该函数主要是来显示数码管
*******************************************************/
void LedChange(unsigned char val)
{
LedDispData[0]=val/1000;
LedDispData[1]=(val/100)%10;
LedDispData[2]=(val/10)%10;
LedDispData[3]=val%10;
}
/*****************************************************
**函数名:Tier0_Int
**输入 :
**输出 :
**描述 :该函数为定时器0中断的服务子程序
*******************************************************/
void Timer0_Int(void) interrupt 1 using 0
{
EA=0;
TR0=0;
TH0=0xf5;//
TL0=0x33;//
P0=P0 & 0xFE;
P1=LedData[LedDispData[0]];
P0=P0 & 0xFD;
P1=LedData[LedDispData[1]];
P0=P0 & 0xfFB;
P1=LedData[LedDispData[2]];
P0=P0 & 0xF7;
P1=LedData[LedDispData[3]];
TR0=1;
EA=1;
}
/*****************************************************
**函数名:DelayMs
**输入 :
**输出 :
**描述 :该函数主要用延迟n毫秒
*******************************************************/
void DelayMs(unsigned int val)
{
unsigned i,j;
for(i=0;i
{
for(j=0;j<125;j++);
}
}
/*********************************************************/
|
|