0

我正在用 MiKroc For AVR 编写一个 ds1307 计时器,所以我的代码是:

// Lcd module connections
sbit LCD_RS   at PORTC2_bit ;
sbit  LCD_EN  at PORTC3_bit;
sbit LCD_D4  at PORTC4_bit  ;
sbit LCD_D5  at PORTC5_bit   ;
sbit LCD_D6  at PORTC6_bit   ;
sbit LCD_D7  at PORTC7_bit   ;

sbit LCD_RS_Direction  at DDC2_bit;
sbit LCD_EN_Direction  at DDC3_bit;
sbit LCD_D4_Direction  at DDC4_bit;
sbit LCD_D5_Direction  at DDC5_bit;
sbit LCD_D6_Direction  at DDC6_bit;
sbit LCD_D7_Direction  at DDC7_bit;

int Temp1;
int Temp2;
int Temp3;
unsigned short Temp4;


#define inc(x)           x=x+1;
#define lo(x)           Lo(x);
#define hi(x)           Hi(x);
#define and             &&;
#define mod             %;
#define Mod             %;
#define div             /;
#define or              ||;



void shamsi_to_milady(int ShamsiMonth,int  ShamsiDay,int   ShamsiYear )  {
// Declare a constant array which holds number of days in each month:
//const Gmonth_a as byte[12] = (31,28,31,30,31,30,31,31,30,31,30,31)
int miladiYear2,miladiYear,marchDayDiff,Temp5,remainDay ;


int farvardin1st_iMonth; int farvardin1st_iDay; int dayCount; int i ;
//dim miladiDate_iMonth,miladiDate_iDay,miladiDate_iYear  as integer
char Mmonth_a[12];
//const char ss=1;
 /*
struct farvardin1st_2 {
  int iMonth;
  int iDay ;
}
   */

//ss=1;
//const Mmonth_a as byte[12]   =  (30,31,30,31,31,30,31,30,31,31,28,31)
       Mmonth_a[1] = 30 ;
       Mmonth_a[2] = 31;
       Mmonth_a[3] = 30 ;
       Mmonth_a[4] = 31 ;
       Mmonth_a[5] = 31 ;
       Mmonth_a[6] = 30 ;
       Mmonth_a[7] = 31 ;
       Mmonth_a[8] = 30 ;
       Mmonth_a[9] = 31 ;
       Mmonth_a[10] = 31 ;
       Mmonth_a[11] = 28;
       Mmonth_a[12] = 31;

      miladiYear = ShamsiYear + 621;
      miladiYear2=miladiYear;
      Temp1 = miladiYear2 % 4;
      Temp2 = miladiYear2 % 100;
      Temp3 = miladiYear2 % 400;
      Temp4 = (( Temp2 <> 0) && (Temp1 = 0));
      Temp5=((Temp2 = 0) && (Temp3 == 0) );


}
void main() {
      Lcd_Init()   ;
      Lcd_Cmd(_LCD_CLEAR);               // Clear display
      Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
      Lcd_Out(1,6,txtw);
}

我在这一行遇到错误:

Temp4 = (( Temp2 <> 0) && (Temp1 = 0));

这个错误:

Invalid expression

我认为错误必须来自变量中的未匹配。主要代码在附件中。

非常感谢。

附件: 文件

4

1 回答 1

0
Temp4 = (( Temp2 <> 0) && (Temp1 = 0));

一定是 :

Temp4 = (( Temp2 != 0) && (Temp1 == 0));
于 2015-12-23T18:21:14.690 回答