我正在用 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
我认为错误必须来自变量中的未匹配。主要代码在附件中。
非常感谢。
附件: 文件