请教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文件夹里去啦啊,求高手解答啊。。小弟谢啦 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"这个头文件好了,程序自己写的那些不要也可以!你的错误是重新定义了。。。。 重复定义了,把这两行去掉
sfr P4=0xc0;
sfr P4SW=0xff; STC12C5A60S2这芯片我也用过,刚用时,发现P4用不了,后面找到问题了,原来P4口是复用端口,要先配置相关寄存器才能用P4口的,系统默认P4口是它复用的其他功能。虽然编译器提示重定义,就算你去掉(sfr P4=0xc0;sfr P4SW=0xff)也是没有的。还是要先按手册配置相关寄存器的。 回复【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 ......
-----------------------------------------------------------------------
谢谢啦。。 谢谢各位的解答 我懂啦。。
页:
[1]