帮我看看程序错在哪里了!

来源:百度知道 编辑:UC知道 时间:2024/05/19 17:40:04
我在用Keil编译下面这个C程序时总是提示语法错误,由于刚接触单片机,看了半天不知道错在哪里。
注:提示“sfr”附近语法错误。
谁能告诉我,这个于标准C不同的新类型,到底应该怎么用啊?
谢谢~

#include<at89x51.h>
#include<stdio.h>

void main(void)
{

int a;
SCON = 0x50; //串口方式1,允许接收
TH1 = 0xE8; //11.0592MHz 1200波特率
TL1 = 0xE8;
TI = 1;
sfr P1=0X90;
P1=1;
for(a=9;a>0;a--)
{
printf("The P1 is:%d\n",P1);
P1=P1-1;
}

}

把SFR去掉,因为在at89x51.h中己定义P1口。再次定义就重复了。

附加一个AT89X51.H的头文件:
/*--------------------------------------------------------------------------
AT89X51.H

Header file for the low voltage Flash Atmel AT89C51 and AT89LV51.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __AT89X51_H__
#define __AT89X51_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;