我非常紧急,熬了好个通宵,试着去看懂程序,但是编译上还是有错误,请高手指点,我悉心去领悟
一下面是DS1302时钟的编程程序,但是出现了非法语句,由于自己也是刚刚刚涉及,真的是想去尝试着做出来,现在一直研究着,心里犯难了,想请大家给我帮个忙,指点下这是什么情况,应该怎么编才对,在下万分感谢(这些程序是我下载整个文件包里的,打开来是可以编译的,也能够进行仿真,但是等到我自己去把它输进去是就出现了非法字符)#include <REGX52.H>
#include "LCD1602.h"
#include "DS1302.h"
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
main()
{
SYSTEMTIME CurrentTime;
LCD_Initial();
Initial_DS1302();
GotoXY(0,0);
Print("Date: ");
GotoXY(0,1);
Print("Time: ");
while(1)
{
DS1302_GetTime(&CurrentTime);
DateToStr(&CurrentTime);
TimeToStr(&CurrentTime);
GotoXY(6,0);
Print(CurrentTime.DateString);
GotoXY(6,1);
Print(CurrentTime.TimeString);
Delay1ms(300);
}
}
/*--------------------------------------------------------------------------
AT89X52.H
Header file for the low voltage Flash Atmel AT89C52 and AT89LV52.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __AT89X52_H__
#define __AT89X52_H__
/*------------------------------------------------
Byte Registers
------------------------------------------------*/
sfr P0 = 0x80;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr P1 = 0x90;
sfr SCON = 0x98;
sfr SBUF = 0x99;
sfr P2 = 0xA0;
sfr IE = 0xA8;
sfr P3 = 0xB0;
sfr IP = 0xB8;
sfr T2CON = 0xC8;
sfr T2MOD = 0xC9;
sfr RCAP2L= 0xCA;
sfr RCAP2H= 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;
/*------------------------------------------------
PCON Bit Values
------------------------------------------------*/
#define IDL_ 0x01
#define STOP_ 0x02
#define PD_ 0x02 /* Alternate definition */
#define GF0_ 0x04
#define GF1_ 0x08
#define SMOD_ 0x80
/*------------------------------------------------
TCON Bit Registers
------------------------------------------------*/
sbit IT0= 0x88;
sbit IE0= 0x89;
sbit IT1= 0x8A;
sbit IE1= 0x8B;
sbit TR0= 0x8C;
sbit TF0= 0x8D;
sbit TR1= 0x8E;
sbit TF1= 0x8F;
/*------------------------------------------------
TMOD Bit Values
------------------------------------------------*/
#define T0_M0_ 0x01
#define T0_M1_ 0x02
#define T0_CT_ 0x04
#define T0_GATE_ 0x08
#define T1_M0_ 0x10
#define T1_M1_ 0x20
#define T1_CT_ 0x40
#define T1_GATE_ 0x80
#define T1_MASK_ 0xF0
#define T0_MASK_ 0x0F
/*------------------------------------------------
P1 Bit Registers
------------------------------------------------*/
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;
sbit P1_2 = 0x92;
sbit P1_3 = 0x93;
sbit P1_4 = 0x94;
sbit P1_5 = 0x95;
sbit P1_6 = 0x96;
sbit P1_7 = 0x97;
sbit T2 = 0x90; /* External input to Timer/Counter 2, clock out */
sbit T2EX = 0x91; /* Timer/Counter 2 capture/reload trigger & dir ctl */
/*------------------------------------------------
SCON Bit Registers
------------------------------------------------*/
sbit RI = 0x98;
sbit TI = 0x99;
sbit RB8= 0x9A;
sbit TB8= 0x9B;
sbit REN= 0x9C;
sbit SM2= 0x9D;
sbit SM1= 0x9E;
sbit SM0= 0x9F;
/*------------------------------------------------
P2 Bit Registers
------------------------------------------------*/
sbit P2_0 = 0xA0;
sbit P2_1 = 0xA1;
sbit P2_2 = 0xA2;
sbit P2_3 = 0xA3;
sbit P2_4 = 0xA4;
sbit P2_5 = 0xA5;
sbit P2_6 = 0xA6;
sbit P2_7 = 0xA7;
/*------------------------------------------------
IE Bit Registers
------------------------------------------------*/
sbit EX0= 0xA8; /* 1=Enable External interrupt 0 */
sbit ET0= 0xA9; /* 1=Enable Timer 0 interrupt */
sbit EX1= 0xAA; /* 1=Enable External interrupt 1 */
sbit ET1= 0xAB; /* 1=Enable Timer 1 interrupt */
sbit ES = 0xAC; /* 1=Enable Serial port interrupt */
sbit ET2= 0xAD; /* 1=Enable Timer 2 interrupt */
sbit EA = 0xAF; /* 0=Disable all interrupts */
/*------------------------------------------------
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;
sbit RXD= 0xB0; /* Serial data input */
sbit TXD= 0xB1; /* Serial data output */
sbit INT0 = 0xB2; /* External interrupt 0 */
sbit INT1 = 0xB3; /* External interrupt 1 */
sbit T0 = 0xB4; /* Timer 0 external input */
sbit T1 = 0xB5; /* Timer 1 external input */
sbit WR = 0xB6; /* External data memory write strobe */
sbit RD = 0xB7; /* External data memory read strobe */
/*------------------------------------------------
IP Bit Registers
------------------------------------------------*/
sbit PX0= 0xB8;
sbit PT0= 0xB9;
sbit PX1= 0xBA;
sbit PT1= 0xBB;
sbit PS = 0xBC;
sbit PT2= 0xBD;
/*------------------------------------------------
T2CON Bit Registers
------------------------------------------------*/
sbit CP_RL2= 0xC8; /* 0=Reload, 1=Capture select */
sbit C_T2 = 0xC9; /* 0=Timer, 1=Counter */
sbit TR2= 0xCA; /* 0=Stop timer, 1=Start timer */
sbit EXEN2= 0xCB; /* Timer 2 external enable */
sbit TCLK = 0xCC; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */
sbit RCLK = 0xCD; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */
sbit EXF2 = 0xCE; /* Timer 2 external flag */
sbit TF2= 0xCF; /* Timer 2 overflow flag */
/*------------------------------------------------
T2MOD Bit Values
------------------------------------------------*/
#define DCEN_ 0x01 /* 1=Timer 2 can be configured as up/down counter */
#define T2OE_ 0x02 /* Timer 2 output enable */
/*------------------------------------------------
PSW Bit Registers
------------------------------------------------*/
sbit P = 0xD0;
sbit FL = 0xD1;
sbit OV = 0xD2;
sbit RS0= 0xD3;
sbit RS1= 0xD4;
sbit F0 = 0xD5;
sbit AC = 0xD6;
sbit CY = 0xD7;
/*------------------------------------------------
Interrupt Vectors:
Interrupt Address = (Number * 8) + 3
------------------------------------------------*/
#define IE0_VECTOR 0/* 0x03 External Interrupt 0 */
#define TF0_VECTOR 1/* 0x0B Timer 0 */
#define IE1_VECTOR 2/* 0x13 External Interrupt 1 */
#define TF1_VECTOR 3/* 0x1B Timer 1 */
#define SIO_VECTOR 4/* 0x23 Serial port */
#define TF2_VECTOR 5/* 0x2B Timer 2 */
#define EX2_VECTOR 5/* 0x2B External Interrupt 2 */
#endif
/**************************************************************************
THE 1602 CHAR LCD LIB
COPYRIGHT (c) 2005 BY JJJ.
--ALL RIGHTS RESERVED--
File Name: LCD.h
Author: Jiang Jian Jun
Created: 2005/4/3
Modified: NO
Revision: 1.0
***************************************************************************/
#ifndef LCD_CHAR_1602_2005_4_9
#define LCD_CHAR_1602_2005_4_9
#include <intrins.h>
//Port Definitions**********************************************************
sbit LcdRs = P2^0;
sbit LcdRw = P2^1;
sbit LcdEn = P2^2;
sfrDBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
//内部等待函数**************************************************************************
unsigned char LCD_Wait(void)
{
LcdRs=0;
LcdRw=1; _nop_();
LcdEn=1; _nop_();
//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
//实际硬件时打开此语句
LcdEn=0;
return DBPort;
}
//向LCD写入命令或数据************************************************************
#define LCD_COMMAND 0 // Command
#define LCD_DATA 1 // Data
#define LCD_CLEAR_SCREEN 0x01 // 清屏
#define LCD_HOMING 0x02 // 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
LcdEn=0;
LcdRs=style;
LcdRw=0; _nop_();
DBPort=input; _nop_();//注意顺序
LcdEn=1; _nop_();//注意顺序
LcdEn=0; _nop_();
LCD_Wait();
}
//设置显示模式************************************************************
#define LCD_SHOW 0x04 //显示开
#define LCD_HIDE 0x00 //显示关
#define LCD_CURSOR 0x02 //显示光标
#define LCD_NO_CURSOR 0x00 //无光标
#define LCD_FLASH 0x01 //光标闪动
#define LCD_NO_FLASH 0x00 //光标不闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
}
//设置输入模式************************************************************
#define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00 // default
#define LCD_MOVE 0x01 // 画面可平移
#define LCD_NO_MOVE 0x00 //default
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND, 0x04|InputMode);
}
//移动光标或屏幕************************************************************
/*
#define LCD_CURSOR 0x02
#define LCD_SCREEN 0x08
#define LCD_LEFT 0x00
#define LCD_RIGHT 0x04
void LCD_Move(unsigned char object, unsigned char direction)
{
if(object==LCD_CURSOR)
LCD_Write(LCD_COMMAND,0x10|direction);
if(object==LCD_SCREEN)
LCD_Write(LCD_COMMAND,0x18|direction);
}
*/
//初始化LCD************************************************************
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动
}
//************************************************************************
void GotoXY(unsigned char x, unsigned char y)
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
void Print(unsigned char *str)
{
while(*str!='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
}
}
/*
void LCD_LoadChar(unsigned char user, unsigned char place)
{
unsigned char i;
LCD_Write(LCD_COMMAND,0x40|(place*8));
for(i=0; i<8; i++)
LCD_Write(LCD_DATA,user);
}
*/
//************************************************************************
#endif
/*--------------------------------------------------------------------------
INTRINS.H
Intrinsic functions for C51.
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __INTRINS_H__
#define __INTRINS_H__
extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int_iror_ (unsigned int,unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int_irol_ (unsigned int,unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void _push_ (unsigned char _sfr);
extern void _pop_ (unsigned char _sfr);
#endif
/**************************************************************************
THE REAL TIMER DS1302 DRIVER LIB
COPYRIGHT (c) 2005 BY JJJ.
--ALL RIGHTS RESERVED--
File Name: DS1302.h
Author: Jiang Jian Jun
Created: 2003/7/21
Modified: NO
Revision: 1.0
***************************************************************************/
#ifndef _REAL_TIMER_DS1302_2003_7_21_
#define _REAL_TIMER_DS1302_2003_7_21_
sbitDS1302_CLK = P1^6; //实时时钟时钟线引脚
sbitDS1302_IO= P1^7; //实时时钟数据线引脚
sbitDS1302_RST = P1^5; //实时时钟复位线引脚
sbitACC0 = ACC^0;
sbitACC7 = ACC^7;
typedef struct __SYSTEMTIME__
{
unsigned char Second;
unsigned char Minute;
unsigned char Hour;
unsigned char Week;
unsigned char Day;
unsigned char Month;
unsigned charYear;
unsigned char DateString;
unsigned char TimeString;
}SYSTEMTIME; //定义的时间类型
#define AM(X) X
#define PM(X) (X+12) // 转成24小时制
#define DS1302_SECOND 0x80
#define DS1302_MINUTE 0x82
#define DS1302_HOUR 0x84
#define DS1302_WEEK 0x8A
#define DS1302_DAY 0x86
#define DS1302_MONTH 0x88
#define DS1302_YEAR 0x8C
#define DS1302_RAM(X) (0xC0+(X)*2) //用于计算 DS1302_RAM 地址的宏
void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数)
{
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
{
DS1302_IO = ACC0; //相当于汇编中的 RRC
DS1302_CLK = 1;
DS1302_CLK = 0;
ACC = ACC >> 1;
}
}
unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相当于汇编中的 RRC
ACC7 = DS1302_IO;
DS1302_CLK = 1;
DS1302_CLK = 0;
}
return(ACC);
}
void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要写的数据
{
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(ucAddr); // 地址,命令
DS1302InputByte(ucDa); // 写1Byte数据
DS1302_CLK = 1;
DS1302_RST = 0;
}
unsigned char Read1302(unsigned char ucAddr) //读取DS1302某地址的数据
{
unsigned char ucData;
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(ucAddr|0x01); // 地址,命令
ucData = DS1302OutputByte(); // 读1Byte数据
DS1302_CLK = 1;
DS1302_RST = 0;
return(ucData);
}
void DS1302_SetProtect(bit flag) //是否写保护
{
if(flag)
Write1302(0x8E,0x10);
else
Write1302(0x8E,0x00);
}
void DS1302_SetTime(unsigned char Address, unsigned char Value) // 设置时间函数
{
DS1302_SetProtect(0);
Write1302(Address, ((Value/10)<<4 | (Value%10)));
}
void DS1302_GetTime(SYSTEMTIME *Time)
{
unsigned char ReadValue;
ReadValue = Read1302(DS1302_SECOND);
Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MINUTE);
Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_HOUR);
Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_DAY);
Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_WEEK);
Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MONTH);
Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_YEAR);
Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
}
void DateToStr(SYSTEMTIME *Time)
{
Time->DateString = Time->Year/10 + '0';
Time->DateString = Time->Year%10 + '0';
Time->DateString = '-';
Time->DateString = Time->Month/10 + '0';
Time->DateString = Time->Month%10 + '0';
Time->DateString = '-';
Time->DateString = Time->Day/10 + '0';
Time->DateString = Time->Day%10 + '0';
Time->DateString = '\0';
}
void TimeToStr(SYSTEMTIME *Time)
{
Time->TimeString = Time->Hour/10 + '0';
Time->TimeString = Time->Hour%10 + '0';
Time->TimeString = ':';
Time->TimeString = Time->Minute/10 + '0';
Time->TimeString = Time->Minute%10 + '0';
Time->TimeString = ':';
Time->TimeString = Time->Second/10 + '0';
Time->TimeString = Time->Second%10 + '0';
Time->DateString = '\0';
}
void Initial_DS1302(void)
{
unsigned char Second=Read1302(DS1302_SECOND);
if(Second&0x80)
DS1302_SetTime(DS1302_SECOND,0);
}
/********************************************************************************
void BurstWrite1302(unsigned char *pWClock) //往DS1302写入时钟数据(多字节方式)
{
unsigned char i;
Write1302(0x8e,0x00); // 控制命令,WP=0,写操作?
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(0xbe); // 0xbe:时钟多字节写命令
for (i = 8; i>0; i--) //8Byte = 7Byte 时钟数据 + 1Byte 控制
{
DS1302InputByte(*pWClock); // 写1Byte数据
pWClock++;
}
DS1302_CLK = 1;
DS1302_RST = 0;
}
void BurstRead1302(unsigned char *pRClock) //读取DS1302时钟数据(时钟多字节方式)
{
unsigned char i;
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(0xbf); // 0xbf:时钟多字节读命令
for (i=8; i>0; i--)
{
*pRClock = DS1302OutputByte(); // 读1Byte数据
pRClock++;
}
DS1302_CLK = 1;
DS1302_RST = 0;
}
void DS1302_TimeStop(bit flag) // 是否将时钟停止
{
unsigned char Data;
Data=Read1302(DS1302_SECOND);
DS1302_SetProtect(0);
if(flag)
Write1302(DS1302_SECOND, Data|0x80);
else
Write1302(DS1302_SECOND, Data&0x7F);
}
********************************************************************************/
#endif
*******************************************************************************
下面是 我编译出现的问题
Building DS1302.C
ASEM51 DS1302.C /INCLUDES:"C:\Program Files\Labcenter Electronics\Proteus 7 Professional\TOOLS\ASEM51"
DS1302.C(1):illegal statement syntax
DS1302.C(2):illegal statement syntax
DS1302.C(3):illegal statement syntax
DS1302.C(5):illegal statement syntax
DS1302.C(6):illegal character
DS1302.C(7):illegal statement syntax
DS1302.C(8):illegal statement syntax
DS1302.C(9):illegal statement syntax
DS1302.C(10):illegal character
DS1302.C(12):illegal statement syntax
DS1302.C(13):illegal character
DS1302.C(14):illegal statement syntax
DS1302.C(15):illegal statement syntax
DS1302.C(16):illegal statement syntax
DS1302.C(17):illegal statement syntax
DS1302.C(18):illegal statement syntax
DS1302.C(19):illegal statement syntax
DS1302.C(2):illegal statement syntax
DS1302.C(21):illegal statement syntax
DS1302.C(22):illegal statement syntax
DS1302.C(23):illegal character
DS1302.C(24):illegal statement syntax
DS1302.C(25):illegal statement syntax
DS1302.C(26):illegal statement syntax
DS1302.C(27):illegal statement syntax
DS1302.C(28):illegal statement syntax
DS1302.C(29):illegal statement syntax
DS1302.C(30):illegal statement syntax
DS1302.C(32):illegal statement syntax
DS1302.C(33):illegal character
DS1302.C(34):illegal character
DS1302.C(34):no END statement found
31 errors detected
ASM.EXE reported error code(1L).
Extracting debug data from DS1302.LST...
1; #include <REGX52.H>
^
@@@@@ illegal statement syntax @@@@@
2: #include "LCD1602.h"
^
@@@@@ illegal statement syntax @@@@@
3: #include "DS1302.h"
^
@@@@@ illegal statement syntax @@@@@
5: void Delay1ms(unsigned int count)
^
@@@@@ illegal statement syntax @@@@@
6: {
^
@@@@@ illegal statement syntax @@@@@
7: unsigned int i,j;
^
@@@@@ illegal statement syntax @@@@@
8: for(i=0;i<count;i++)
^
@@@@@ illegal statement syntax @@@@@
9: for(j=0;j<120;j++);
^
@@@@@ illegal statement syntax @@@@@
10: }
^
@@@@@ illegal statement syntax @@@@@
12: main()
^
@@@@@ illegal statement syntax @@@@@
^
@@@@@ illegal statement syntax @@@@@
14: SYSTEMTIME CurrentTime;
^
@@@@@ illegal statement syntax @@@@@
15: LCD_Initial();
@@@@@ illegal statement syntax @@@@@ ^
16: Initial_DS1302();
^
@@@@@ illegal statement syntax @@@@@
18: GotoXY(0,0);
^
@@@@@ illegal statement syntax @@@@@
19: Print("Date: ");
^
@@@@@ illegal statement syntax @@@@@
20: GotoXY(0,1);
^
@@@@@ illegal statement syntax @@@@@
21: Print(Date:");
^
@@@@@ illegal statement syntax @@@@@
22: while(1)
^
@@@@@ illegal statement syntax @@@@@
23: {
^
@@@@@ illegal statement syntax @@@@@
24: DS1302_GetTime(&CurrentTime);
^
@@@@@ illegal statement syntax @@@@@
25: DateToStr(&CurrentTime);
^
@@@@@ illegal statement syntax @@@@@
26: TimeToStr(&CurrentTime);
^
@@@@@ illegal statement syntax @@@@@
27: GotoXY(6,0);
^
@@@@@ illegal statement syntax @@@@@
28: Print(CurrentTime.DateString);
^
@@@@@ illegal statement syntax @@@@@
29: GotoXY(6,1);
^
@@@@@ illegal statement syntax @@@@@
30: Print(CurrentTime.TimeString);
^
@@@@@ illegal statement syntax @@@@@
32: Delay1ms(300);
^
@@@@@ illegal statement syntax @@@@@
33: }
^
@@@@@ illegal statement syntax @@@@@
34: }
^
@@@@@ illegal statement syntax @@@@@
^
}
^
@@@@@ no END statement found @@@@@
Processed 183 lines.
Source code build FAILED with 1 error(s)
**********************************************************************************************
上面就是我编译出现的问题,我是个新手请高手指点一二,拜托!
}
DS1302.C(3):illegal statement syntax
DS1302.C(3):illegal statement syntax
DS1302.C(3):illegal statement syntax
DS1302.C(3):illegal statement syntax 回复【楼主位】knight-long
-----------------------------------------------------------------------
最后的五行是我错打上去了。本人正在做这个时钟,我有个疑惑,怎么原本的文件编译是可以的,但是我自己重新复制过来放到keil中怎么就出现了这些问题呢 回复【1楼】knight-long
-----------------------------------------------------------------------
下面是 我编译出现的问题
Building DS1302.C
ASEM51 DS1302.C /INCLUDES:"C:\Program Files\Labcenter Electronics\Proteus 7 Professional\TOOLS\ASEM51"
--------------------------------------------------------------------------------
我看到你好像是使用Proteus的汇编‘编译器’编译的C文件,呵呵! 回复【2楼】eaststream
-----------------------------------------------------------------------
是的,我第二次重新创建项目将程序复制到keil中之后编译显示的正确的,但是却不能创建hex文件,以至于最后的Proteus仿真中,无法实现。(我在keil中编译文件的的时候已经是将创建hex文件那个勾打了的,当我编译成功的时候,文字提示说hex文件已经是创建了的,但是在我新建项目的文件夹中却没有,想问问这是怎么回事,同时我将先前的hex文件复制到我重新创建的文件夹当的时候,就能够顺利仿真,显示也正确,就是这么个情况,我想问这种情况会不会在我烧制程序的时候有影响。 keil中需要在项目中加载文件及设定环境,编译出现的问题均指示源编译目的有错误,重新创建项目时注意目录和文件均在同一目录中。hex文件的路径有错。
页:
[1]