q2616444 发表于 2011-5-16 19:17:32

请教STC12C5A60S2P4口问题,该添得添啦,定义的也定义啦,问什么还是编译错误,急啊!

#include <REG5a60s2.h>
sfr P4=0xc0;
sfr P4SW=0xff;
sbit P4_6=P4^6;
main()
{
P4_6=0;
}


Build target 'Target 1'
compiling Text2.C...
TEXT2.C(2): error C231: 'P4': redefinition
TEXT2.C(3): error C231: 'P4SW': redefinition
Target not created

什么原因??
我把头文件已经添到INC文件夹里去啦啊,求高手解答啊。。小弟谢啦

Marxt 发表于 2011-7-20 19:55:08

sfrP4         =   0xc0;       //I/O端口4            Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                              //位描述                P4.7    P4.6    P4.5    P4.4    P4.3    P4.2    P4.1    P4.0
                              //初始值=1111,1111      1       1       1       1       1       1       1       1

sbit P47      =   P4^7;       //I/O口P4.7
sbit P46      =   P4^6;       //I/O口P4.6
sbit P45      =   P4^5;       //I/O口P4.5
sbit P44      =   P4^4;       //I/O口P4.4
sbit P43      =   P4^3;       //I/O口P4.3
sbit P42      =   P4^2;       //I/O口P4.2
sbit P41      =   P4^1;       //I/O口P4.1
sbit P40      =   P4^0;       //I/O口P4.0

sbit RST      =   P4^7;       //复位脚,可通过编程器设置
sbit EX_LVD   =   P4^6;       //外部低压检测引脚

sbit P4SPISCLK=   P4^3;       //SPI总线的时钟脚
sbit P4SPIMISO=   P4^2;       //SPI总线的主出从入脚
sbit P4SPIMOSI=   P4^1;       //SPI总线的主入从出脚
sbit P4SPISS    =   P4^0;       //SPI总线的从机选择脚

sbit P4CEX1   =   P4^3;       //比较/捕获/PWM1外部引脚
sbit P4CEX0   =   P4^2;       //比较/捕获/PWM0外部引脚
sbit P4ECI      =   P4^1;       //比较/捕获/PWM模块的外部时钟输入脚(最大值为Fosc/2)

sbit P4TXD2   =   P4^3;       //串口2数据输出脚
sbit P4RXD2   =   P4^2;       //串口2数据输入脚

sfrP4SW       =   0xbb;       //P4口的功能开关      Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                              //位描述                -    LVD_P4.6 ALE_P4.5 NA_P4.4-       -       -       -
                              //初始值=x000,xxxx      x       0       0       0       x       x       x       x

#define P46EN       0x40      //传统的EA脚 0:为LVD的信号引入脚 1:为P4.6
#define P45EN       0x20      //传统的ALE脚 0:仍为ALE 1:为P4.5
#define P44EN       0x10      //传统的PSEN脚 0:无任何功能 1:为P4.4

上面是头文件有内容,既然你已经把头文件添加了进出,那你就直接用"STC12C5A.H"这个头文件好了,程序自己写的那些不要也可以!你的错误是重新定义了。。。。

vtte 发表于 2011-7-20 20:32:35

重复定义了,把这两行去掉
sfr P4=0xc0;
sfr P4SW=0xff;

251540866 发表于 2011-7-22 15:43:17

STC12C5A60S2这芯片我也用过,刚用时,发现P4用不了,后面找到问题了,原来P4口是复用端口,要先配置相关寄存器才能用P4口的,系统默认P4口是它复用的其他功能。虽然编译器提示重定义,就算你去掉(sfr P4=0xc0;sfr P4SW=0xff)也是没有的。还是要先按手册配置相关寄存器的。

q2616444 发表于 2011-7-28 12:19:50

回复【1楼】Marxt
sfrp4         =   0xc0;       //i/o端口4            bit7    bit6    bit5    bit4    bit3    bit2    bit1    bit0
                              //位描述                p4.7    p4.6    p4.5    p4.4    p4.3    p4.2    p4.1    p4.0
                              //初始值=1111,1111      1       1       1       1       1       1       1       1
sbit p47      =   p4^7;       //i/o口p4.7
sbit p46   ......
-----------------------------------------------------------------------

谢谢啦。。

q2616444 发表于 2011-7-28 12:20:13

谢谢各位的解答 我懂啦。。
页: [1]
查看完整版本: 请教STC12C5A60S2P4口问题,该添得添啦,定义的也定义啦,问什么还是编译错误,急啊!