久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3199|回復: 3
打印 上一主題 下一主題
收起左側

keil編譯錯誤(19):error C129: missing ';' before 'uint'怎樣解決!求大神指點!

[復制鏈接]
跳轉到指定樓層
樓主
ID:704348 發(fā)表于 2020-6-9 19:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#include <string.h>
#include <intrins.h>
#define uchar unsigned char define uint unsigned int sbit SDA=P1^0; // DS1302數據線
sbit CLK=P1^1; //DS1302時鐘線
sbit RST=P1^2; //DS1302復位線

sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;

sbit K1=P3^4; // 選擇
sbit K2=P3^5; // 加
sbit K3=P3^6; // 減
sbit K4=P3^7; // 確定

void Display_LCD_String();

uchar tCount=0;//一年中每個月的天數,2月的天數由年份決定 uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31};
uchar *WEEK[]={"SUN","MON","TUS","WEN","THU","FRI","SAT"};//周日,周一到周六

uchar LCD_DSY_BUFFER1[]={"Date 00-00-00 "}; //LCD顯示緩沖 uchar LCD_DSY_BUFFER2[]={"Time 00-00-00 "};
uchar DateTime[7]; //所讀取的日期時間
char Adjust_Index=-1; //當前調節(jié)的時間:秒,分,時,日, uchar Change_Flag[]="-MHDM-Y";



uchar Read_LCD_State();
void LCD_Busy_Wait();
void Write_LCD_Data(uchar dat);
void Write_LCD_Command(uchar cmd);
void Init_LCD();
void Set_LCD_POS(uchar p);

void DelayMS(uint x)
{
  uchar i;
  while(x--) for(i=0;i<120;i++);
}

uchar Read_LCD_State()
{
  uchar state;
  RS=0;
  RW=1;
  EN=1;
  DelayMS(1);
  state=P0;
  EN=0;
  DelayMS(1);
  return state;
}

void LCD_Busy_Wait()
{
  while((Read_LCD_State()&0x08)==0x80);
  DelayMS(5);
}

void Write_LCD_Data(uchar dat) //寫數據
{
  LCD_Busy_Wait();
  RS=1;
  RW=0;
  EN=0;
  P0=dat;
  EN=1;
  DelayMS(1);
  EN=0;
}

void Write_LCD_Command(uchar cmd)//寫命令
{
  LCD_Busy_Wait();
  RS=0;
  RW=0;
  EN=0;
  P0=cmd;
  EN=1;
  DelayMS(1);
  EN=0;
}

void Init_LCD() //LCD初始化
{
  Write_LCD_Command(0x38); DelayMS(1);
  Write_LCD_Command(0x01); DelayMS(1);
  Write_LCD_Command(0x06); DelayMS(1);
  Write_LCD_Command(0x0C); DelayMS(1);
  Display_LCD_String(0x00,"zhongzhoudaxue");
  //DelayMS(1000);
  Display_LCD_String(0x40,"dian zi ri li");
  DelayMS(2000);
}

void Set_LCD_POS(uchar p)
{
  Write_LCD_Command(p|0x80);
}

void Display_LCD_String(uchar p,uchar *s)
{
  uchar i;
  Set_LCD_POS(p);
  for(i=0;i<16;i++)
  {
    Write_LCD_Data(s[i]);
    DelayMS(1);
  }
}

/*--------------------------
向DS1302寫入一字節(jié)
---------------------------*/

void DS1302_Write_Byte(uchar x)
{
  uchar i;

  for(i=0;i<8;i++)
    {
      SDA=x&1;
      CLK=1;
      CLK=0;
      x>>=1;
    }
}

/*-------------------------------
從DS1302讀取一字節(jié)
--------------------------------*/

uchar DS1302_Read_Byte()
{
  uchar i,b,t;
  for(i=0;i<8;i++)
  {
    b>>=1;
    t=SDA;
    b|=t<<7;
    CLK=1;
    CLK=0;
  }
return b/16*10+b%16;
}

/*-------------------------------
從DS1302指定位置數據
--------------------------------*/

uchar Read_Data(uchar addr)
{
  uchar dat;
  RST=0;
  CLK=0;
  RST=1;
  DS1302_Write_Byte(addr);
  dat=DS1302_Read_Byte();
  CLK=1;
  RST=0;
  return dat;
}

/*-------------------------------
向DS1302某地址寫入數據
--------------------------------*/

void Write_DS1302(uchar addr,uchar dat)
{
  CLK=0;
  RST=1;
  DS1302_Write_Byte(addr);
  DS1302_Write_Byte(dat);
  CLK=0;
  RST=0;
}

/*------------------------------------
設置時間
------------------------------------*/

void SET_DS1302()
{
  uchar i;
  Write_DS1302(0x8e,0x00);
  for(i=0;i<7;i++)
  {
    Write_DS1302(0x80+2*i,(DateTime[i]/10<<4|(DateTime[i]%10)));
  }
Write_DS1302(0x8e,0x80);
}

/*------------------------------------

讀取當前時期時間

------------------------------------*/

void GetTime()
{
  uchar i;
  for(i=0;i<7;i++)
  {
    DateTime[i]=Read_Data(0x81+2*i);
  }
}

/*------------------------------------
時間和日期轉換成數字字符
------------------------------------*/
void Format_DateTime(uchar d,uchar *a)
{
  a[0]=d/10+'0';a[1]=d%10+'0';
}

/*------------------------------------
判斷是否為閏年
------------------------------------*/
uchar isLeapYear(uint y)
{
  return (y%4==0&&y%100!=0)||(y%400==0);
}

/*------------------------------------
星期轉換
------------------------------------*/

void RefreshWeekDay()
{
  uint i,d,w=5;

  for(i=2000;i<2000+DateTime[6];i++)
  {
    d=isLeapYear(i) ? 366 : 365;
    w=(w+d)%7;
  }
d=0;
for(i=1;i<DateTime[4];i++) d+=MonthsDays[i];
d+=DateTime[3];
DateTime[5]=(w+d)%7+1;
}

/*------------------------------------
年月日時分秒++/--
------------------------------------*/

void DateTime_Adjust(char x)
{
  switch (Adjust_Index)
  {
    case 6: //年
    if(x== 1&&DateTime[6]<99) DateTime[6]++;
    if(x==-1&&DateTime[6]>0) DateTime[6]--;
    MonthsDays[2]=isLeapYear(2000+DateTime[6])? 29:28;
    if(DateTime[3]>MonthsDays[DateTime[4]])
    DateTime[3]=MonthsDays[DateTime[4]];
    RefreshWeekDay();
    break;

    case 4: //月
    if(x== 1&&DateTime[4]<12) DateTime[4]++;
    if(x==-1&&DateTime[4]>1) DateTime[4]--;
    MonthsDays[2]=isLeapYear(2000+DateTime[6])? 29:28;
    if(DateTime[3]>MonthsDays[DateTime[4]])
    DateTime[3]=MonthsDays[DateTime[4]];
    RefreshWeekDay();
    break;

    case 3: //日
    MonthsDays[2]=isLeapYear(2000+DateTime[6])? 29:28;
    if(x== 1&&DateTime[3]<MonthsDays[DateTime[4]]) DateTime[3]++;
    if(x==-1&&DateTime[3]>0) DateTime[3]--;
    RefreshWeekDay();
    break;

    case 2: //時
    if(x== 1&&DateTime[2]<23) DateTime[2]++;
    if(x==-1&&DateTime[2]>0) DateTime[2]--;
    break;

    case 1: //秒
    if(x== 1&&DateTime[1]<59) DateTime[1]++;
    if(x==-1&&DateTime[1]>0) DateTime[1]--;
    break;
  }
}

/*------------------------------------
定時器每秒刷新LCD顯示
------------------------------------*/

void T0_INT() interrupt 1
{
  TH0=-50000/256;
  TL0=-50000%256;
  if(++tCount!=2) return;
  tCount=0;
  Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5);
  Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8);
  Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11);
  strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]-1]);

  Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5);
  Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8);
  Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11);

  Display_LCD_String(0x00,LCD_DSY_BUFFER1);
  Display_LCD_String(0x40,LCD_DSY_BUFFER2);
}

/*------------------------------------
鍵盤中斷
------------------------------------*/

void EX_INT0() interrupt 0
{
  if(K1==0) //選擇調整對象:年,月,日,時,分,秒
  {
    while(K1==0);
    if(Adjust_Index==-1||Adjust_Index==1) Adjust_Index=7;
    Adjust_Index--;
    if(Adjust_Index==5) Adjust_Index=4;
    LCD_DSY_BUFFER2[13]='[';
        LCD_DSY_BUFFER2[14]=Change_Flag[Adjust_Index];
    LCD_DSY_BUFFER2[15]=']';
  }

else
if(K2==0) // 加
  {
    while (K2==0); DateTime_Adjust(1);
  }

else
if(K3==0) // 減
  {
    while (K3==0); DateTime_Adjust(-1);
  }

else
if(K4==0) // 確定
  {
    while(K4==0);
    SET_DS1302(); //調整后的時間寫入DS1302
    LCD_DSY_BUFFER2[13]=' ';
    LCD_DSY_BUFFER2[14]=' ';
    LCD_DSY_BUFFER2[15]=' ';
    Adjust_Index=-1;
  }
}

/*------------------------------------
主程序
------------------------------------*/

void main()
{
  Init_LCD(); //LCD初始化
  IE=0x83; // 允許INT0,T0中斷
  IP=0x01;
  IT0=0x01;
  TMOD=0x01;
  TH0=-50000/256;
  TL0=-50000%256;
  TR0=1;

  while(1)
  {
    if(Adjust_Index==-1) GetTime();
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2020-6-10 08:07 | 只看該作者
#define uchar unsigned char define uint unsigned int sbit SDA=P1^0; // DS1302數據線
改成:
#define uchar unsigned char
#define uint unsigned int
sbit SDA=P1^0; // DS1302數據線
回復

使用道具 舉報

板凳
ID:774667 發(fā)表于 2020-6-10 09:31 | 只看該作者
man1234567 發(fā)表于 2020-6-10 08:07
#define uchar unsigned char define uint unsigned int sbit SDA=P1^0; // DS1302數據線
改成:
#define ...

對,這是幾個不同的定義,不能放在同一行進行
回復

使用道具 舉報

地板
ID:707397 發(fā)表于 2020-6-10 11:24 | 只看該作者
小老弟,define宏定義
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产精品 | 国产精品久久久 | 中文字幕一区二区三区在线观看 | 男女羞羞视频网站 | 国产日产欧产精品精品推荐蛮挑 | 欧美日韩三级 | 成人网av| 日韩一区二区三区四区五区 | 国产综合精品一区二区三区 | 国产精品久久久久久吹潮 | 欧美精品在线一区 | 夜夜艹天天干 | 久热免费在线 | 国产精品黄视频 | 中文字幕成人 | 在线播放国产一区二区三区 | 国产高清自拍视频在线观看 | 亚洲看片网站 | 亚洲男人网 | 午夜网站视频 | 久久精品国产一区 | 国产精品免费在线 | 日韩高清一区 | 日韩视频在线观看 | 91精品国产乱码久久久久久久久 | 国产视频中文字幕 | 国产欧美日韩在线一区 | 亚洲三区在线 | 国产精品一二区 | 奇米av| 精品久久国产 | 久久九精品 | 亚洲人成在线观看 | 欧美日本韩国一区二区 | 亚洲免费一区 | 国精日本亚洲欧州国产中文久久 | 日本人爽p大片免费看 | 亚洲综合精品 | 成人免费一区二区 | 日本三级播放 | h在线|