9054|3

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

4.C(44): error C129: missing ';' before 'U8FLAG' 如何修改 [复制链接]

#include

#include

#include "1602.h"

#include "DH11.h"

#include "2401.h"

#include "DS1302.h"
#define U8 uint8
#define uint unsigned int
#define uchar unsigned char


sbit Led_Alert=P2^1;        //报警灯                       
                                                       
sbit In_Alert=P2^3;        //报警信号输入       
                                               
sbit Beep=P2^4;        //蜂鸣器               
                                                               
sbit Key_Up = P1^1;                                                               
                                                       
sbit Key_Down = P1^2;                                               
                                               
sbit Key_Set = P1^0;                                               
                                       
sbit Key_Review = P1^3;                                       


//定义标识                                                                                                       
                                                                                       
volatile bit FlagStartRH = 0;        //开始温湿度转换标志                                       
                                                                                       
volatile bit FlagKeyPress = 0; //有键按下标志                                       
                                                                               
volatile bit FlagAlert = 0;        //报警状态标志                                       
                                                                       
volatile bit FlagReview = 0;        //查询标志                                       
                                                               
//定义温湿度传感器用外部变量                                       
                                                                                                       
extern U8        U8FLAG,k;                                                                                       
                                                                                               
extern U8        U8count,U8temp;                                                                       
                                                       
extern U8        U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;                               
                                                                                                       
extern U8        U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;               
                                                                                               
extern U8        U8comdata;                                                                                       
                                                                               
extern U8  count, count_r;                                                                               

//温湿度传感器用变量

U16 temp;

S16 temperature, humidity;

U16 RHCounter;

//按键响应用变量

U8 keyvalue, keyUp, keyDown, keySet, keyReview;

U8 FlagSet;



//DS1302 时钟用变量

//SYSTEMTIME CurrentTime;

uchar year, month, day, hour, minute, second;

//报警及存储用变量

//char * pSave;

//字符串显示用变量

uchar str1[6] = "000000";

uchar AlertDate[9]="00-00-00", AlertTime[9]="00:00:00";

uchar hide;


//函数声明

void int2str(int x, char* str);

void Delay1ms(unsigned int count);

void Data_Init();

void Timer0_Init();

void Timer0_ISR () ;

void SaveAlert();

void LoadAlert();

void KeyProcess(uint num);



//整型转字符串的函数,转换范围 0--65536

void int2str(int x, char* str)          

{

int i=1;


int tmp=10;


while(x/tmp!=0)                 


{


i++;


tmp*=10;


}


tmp=x;


str[i]='\0';


while(i>1)


{


str[--i]='0'+(tmp%10);


tmp/=10;


}


str[0]=tmp+'0';


}


void Delay1ms(unsigned int count)

{

unsigned int i,j;



for(i=0;i

for(j=0;j<120;j++);


}



//数据初始化

void Data_Init()

{

RHCounter = 0;


Led_Alert = 1;


keyvalue = 0;


keyUp = 1;


keyDown = 1;


keySet = 1;


keyReview = 1;


FlagSet = 0;


hide = 0;


AlertDate[8]='\0';


AlertTime[8]='\0';



}                                                               
                                                       
//定时器 0 初始化                                               
                                                       
void Timer0_Init()                                                       
                                                               
{                                                               
                                               
        ET0 = 1;                //允许定时器 0 中断               
                                               
        TMOD = 1;                //定时器工作方式选择       
                                                       
        TL0 = 0x06;                                               
                               
        TH0 = 0xf8;        //定时器赋予初值               
                               
        TR0 = 1;                //启动定时器               
                                                               
}                                                               


//定时器 0 中断

void Timer0_ISR (void) interrupt 1 using 0

{

TL0 = 0x06;


TH0 = 0xf8;        //定时器赋予初值


//每 2 秒钟启动一次温湿度转换

RHCounter ++;


if (RHCounter >= 450)


{


FlagStartRH = 1;


RHCounter = 0;



//设定闪烁标志

if (hide == 1) hide = 0;


else hide = 1;


}


}


//存入报警日期时间

void SaveAlert()

{

xxwrteeprom(0, year);


DELAY(1500);


wrteeprom(1, month);


DELAY(1500);


wrteeprom(2, day);


DELAY(1500);


wrteeprom(3, hour);


DELAY(1500);


wrteeprom(4, minute);


DELAY(1500);


wrteeprom(5, second);


DELAY(1500);


}


//载入报警日期时间

void LoadAlert()

{

uchar value;


value = rdeeprom(0);


AlertDate[0]=value/10+48;

AlertDate[1]=value%10+48;

value = rdeeprom(1);


AlertDate[3]=value/10+48;

AlertDate[4]=value%10+48;

value = rdeeprom(2);


AlertDate[6]=value/10+48;

AlertDate[7]=value%10+48;

value = rdeeprom(3);


AlertTime[0]=value/10+48;

AlertTime[1]=value%10+48;

value = rdeeprom(4);


AlertTime[3]=value/10+48;

AlertTime[4]=value%10+48;

value = rdeeprom(5);



AlertTime[6]=value/10+48;

AlertTime[7]=value%10+48;


}


void KeyProcess(uint num)

{

switch (num)


{


case 1:        //Up 键被按下

switch (FlagSet)


{


case 0:


case 1:


break;


case 2: //年

if (year<99)  year++;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_YEAR,year);


Write1302(0x8e,0x80); //禁止写入

break;


case 3: //月

if (month<12) month++;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_MONTH,month);


Write1302(0x8e,0x80); //禁止写入

break;


case 4: //日

if (day<31) day++;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_DAY,day);


Write1302(0x8e,0x80); //禁止写入

break;


case 5: //时

if (hour<23) hour++;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_HOUR,hour);


Write1302(0x8e,0x80); //禁止写入

break;


case 6: //分

if (minute<60) minute++;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_MINUTE,minute);


Write1302(0x8e,0x80); //禁止写入


break;


case 7: //秒

if (second<60) second++;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_SECOND,second);


Write1302(0x8e,0x80); //禁止写入

break;


}


break;


case 2:        //Down 键被按下

switch (FlagSet)


{


case 0:


case 1:


break;


case 2: //年

if (year>0)        year--;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_YEAR,year);


Write1302(0x8e,0x80); //禁止写入

break;


case 3: //月

if (month>0) month--;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_MONTH,month);


Write1302(0x8e,0x80); //禁止写入

break;


case 4: //日

if (day>0) day--;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_DAY,day);


Write1302(0x8e,0x80); //禁止写入

break;


case 5: //时

if (hour>0) hour--;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_HOUR,hour);


Write1302(0x8e,0x80); //禁止写入

break;


case 6: //分

if (minute>0) minute--;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_MINUTE,minute);


Write1302(0x8e,0x80); //禁止写入


break;


case 7: //秒

if (second>0) second--;


Write1302(0x8e,0x00); //写入允许

DS1302_SetTime(DS1302_SECOND,second);


Write1302(0x8e,0x80); //禁止写入

break;


}


break;


case 3: //Set 键被按下。FlagSet 0-报警;1-关报警;2-设置年;3-月;4-日;5-时;6-分;7-秒 if (FlagReview==0) //只有不查询时才能设定


{


FlagSet ++;


if (FlagSet==1)


{


L1602_string(2,10,"A");


}


else


{


L1602_string(2,10," ");


}


if (FlagSet>=8)


{


FlagSet = 0;


}


}


break;


case 4:        //Review 键被按下

if (FlagReview == 0)


{


FlagReview = 1;


LoadAlert();


L1602_string(1,1,"        ");


L1602_string(2,1,"        ");


L1602_string(1,1,AlertDate);


L1602_string(1,9,"        Alert ");


L1602_string(2,1,AlertTime);


L1602_string(2,9,"        ");


}


else


{


FlagReview = 0;


}


break;



default:


break;


}


}


/********************************************************************

*名称 : Main()

*功能 : 主函数

***********************************************************************/

void main()



U16 i, j, testnum;


EA = 0;


Timer0_Init();        //定时器 0 初始化

Data_Init();


Initial_DS1302();


EA = 1;


L1602_init();


L1602_string(1,1,"        Welcome to My ");


L1602_string(2,1,"Infrared Monitor");


//延时

for (i=0;i<1000;i++)


for (j=0;j<1000;j++)


{;}


//清屏                                       
                               
L1602_string(1,1,"        T        C");               
                       
L1602_string(2,1,"        H        %");       




while(1)


{


//查询报警信号


//FlagSet=0 为报警状态,


//FlagSet=1 为关报警状态,


//FlagSet=2,3,4,5,6,7 依次为设置年,月,日,时,分,秒状态


if ((FlagSet==1)&&(In_Alert==0))        //首次触发报警则存入报警时间

{


SaveAlert();


FlagAlert=1;


Beep=0;


Led_Alert = 0;



}


else  //报警未打开或者无警可报

{


FlagAlert=0;


Beep=1;


Led_Alert = 1;


}


if (FlagStartRH == 1)


{


//温湿度转换标志检查

TR0 = 0;


testnum = RH();


FlagStartRH = 0;


TR0 = 1;


//读出温湿度,只取整数部分

humidity = U8RH_data_H;


temperature = U8T_data_H;


//读出日期时间值

DS1302_GetTime(&CurrentTime);


year = CurrentTime.Year;


month = CurrentTime.Month;


day = CurrentTime.Day;


hour = CurrentTime.Hour;


minute = CurrentTime.Minute;


second = CurrentTime.Second;


DateToStr(&CurrentTime);


TimeToStr(&CurrentTime);


//如果不处于查询状态则显示当前日期时间温度湿度

if (FlagReview==0)


{


//清屏

L1602_string(1,1,"        T        C");


L1602_string(2,1,"        ");


L1602_string(2,12,"H        %");


//显示温湿度

if (temperature<0)


{


L1602_string(2,7,"-");


}


temperature = abs(temperature);


int2str(temperature,str1);


L1602_string(1,14,str1);


int2str(humidity,str1);



L1602_string(2,14,str1);


L1602_string(1,1,CurrentTime.DateString);


L1602_string(2,1,CurrentTime.TimeString);


//产生时间设定时的闪烁效果,只在未查询且闪烁标志置位时运行

if (hide==1)


{


switch (FlagSet)                               
                                                                                               
{                                                                                               
                                                                                       
                case 0:                                                               
                                                                               
                case 1:                                       
                                                                       
                break;                                                       
                                                               
                case 2:        //年       
                                                               
                L1602_string(1,1,"        ");               
                                                               
                break;                               
                                               
                case 3:        //月       
                                                       
                L1602_string(1,4,"        ");               
                                                               
                break;                               
                                               
                case 4:        //日       
                                                       
                L1602_string(1,7,"        ");               
                                                               
                break;                               
                                               
                case 5:        //时       
                                                       
                L1602_string(2,1,"        ");               
                                                               
                break;                               
                                               
                case 6:        //分       
                                                       
                L1602_string(2,4,"        ");               
                                                               
                break;                               
                                               
                case 7:        //秒       
                                                       
                L1602_string(2,7,"        ");               
                                                               
                break;                               
                                                       
                default:                                       
                                               
                break;                               
                                                                                       
}                                                                                       

}


}


}


//以下为键盘查询,当有按键从按下到弹起时,该按键被响应。

if ((Key_Up)&&(keyUp==0)) {FlagKeyPress = 1; keyvalue = 1;}


else if ((Key_Down)&&(keyDown==0)) {FlagKeyPress = 1; keyvalue = 2;} else if ((Key_Set)&&(keySet==0)) {FlagKeyPress = 1; keyvalue = 3;}

else if ((Key_Review)&&(keyReview==0)) {FlagKeyPress = 1; keyvalue = 4;} if (FlagKeyPress == 1)

{


KeyProcess(keyvalue);


FlagKeyPress = 0;



}


if (!Key_Up) keyUp = 0;


else keyUp = 1;


if (!Key_Down) keyDown = 0;


else keyDown = 1;


if (!Key_Set) keySet = 0;


else keySet = 1;


if (!Key_Review) keyReview = 0;


else keyReview = 1;


}

此帖出自51单片机论坛

最新回复

楼主其实不用贴这么一大堆没用的代码,就是某个地方少了分号。 你看懂英文描述就知道怎么解决问题了。  详情 回复 发表于 2018-5-17 20:27
点赞 关注
 

回复
举报

7231

帖子

192

TA的资源

五彩晶圆(高级)

沙发
 
#define U8 uint8

——--------
应该是uint8没有
#define U8 unsigned char
此帖出自51单片机论坛
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

板凳
 
都告诉你

missing ';'

你还不知道怎么做?
此帖出自51单片机论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

4
 
楼主其实不用贴这么一大堆没用的代码,就是某个地方少了分号。
你看懂英文描述就知道怎么解决问题了。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表