用C8051F120编写了一个应用CC1101射频模块的点对点通信的程序,之前买了个最小模块,用的p3口,收发没问题(波特率57600、一个数据包15字节)。自己画的板子,懵懂无知用了p5-p6端口,在原来的程序基础上,改了端口设置后,现在发的程序没问题。但是收的程序却只能正确接收第一个数据包,然后就停住了,调了两天也不知道问题出在哪里。用买的最小模块换到p4-p7任何端口调都存在这个问题,而用p0-p3相应改了端口设置后却都能通。求各位解救~
一开始用的p3端口和UART0:
sbit GDO0 = P3^7;
sbit GDO2 = P3^3;
sbit MISO = P3^2;
sbit MOSI = P3^0;
sbit SCK = P3^1;
sbit CSN = P3^6;
sbit LED = P3^4;
SFRPAGE = CONFIG_PAGE; // SFRPAGE选择CONFIG_PAGE页
P3MDOUT = 0x53;
XBR0 = 0x04; // UART0 Enable
XBR2 = 0x40; // 全局弱上拉、使能交叉开关
后来改用p5、p6口:
sbit GDO0 = P6^4; //修改!!
sbit GDO2 = P6^3;
sbit MISO = P5^4;
sbit MOSI = P5^3;
sbit SCK = P6^2;
sbit CSN = P5^5;
sbit LED = P3^4;
sbit LED1 = P3^5;
SFRPAGE = CONFIG_PAGE; // SFRPAGE选择CONFIG_PAGE页
P3MDOUT = 0x30;
P5MDOUT = 0x28;
P6MDOUT = 0x04;
XBR0 = 0x04; // UART0 Enable
XBR2 = 0x40; // 全局弱上拉、交叉开关使能
我觉得是端口设置的问题,所以把我的端口设置部分的代码也粘上来了,求各位指教,谢谢了! |