初级会员
- 积分
- 55
- 金钱
- 55
- 注册时间
- 2016-7-2
- 在线时间
- 8 小时
|
5金钱
本帖最后由 东山居士 于 2017-6-2 12:09 编辑
各位大神好,在下小白一个。想请教几个问题。
手头有一要改进项目,因为原项目就用C8051F021,为了简单就沿用了。实现功能很简单,就是充当连线器。意即,拨码开关拨动产生数字信号输入某些管脚,再由某些管脚输出,控制数字芯片。
因为当时设计电路图时的布局,导致跨过单片机,直接由拨码开关控制数字芯片基本不可能。背景讲述完毕,下面想请教几个问题:
1、是不是P0、P1、P2这些端口的8个位,一定要统一全做输入或者输出?可不可以P0.0 P0.1 P0.2输入,P0.3 P0.4 P0.5 P0.6 输出呢?
2、如果第一个问题答案是否定的,想把我的设计附上,让高手在端口配置上给建议,谢谢!
我的配置是这样的:
void PORT_Init (void)
{
XBR1 |= 0x00; //sysclk enable
XBR2 = 0x40; // Enable crossbar and enable weak pull-up
P0MDOUT = 0x00; P0=0xff; //P0 digital in set PxMDOUT OD REG set1
P3MDOUT = 0x00; P3=0xff; //P3 digital in
}
主函数main()中加入死循环用来把赋值(连线)(SW1->SW5 & SW1_2->SW5_2意即两组5位拨码开关,分别和截图中的IO_1_1->IO5_1 & IO1_2->IO5_2对应)
while(1)
{
delay(200);
GC0=1;
GC6=0;
GC0_2=1;
GC6_2=0;
GC1=SW1;
GC2=SW2;
GC3=SW3;
GC4=SW4;
GC5=SW5;
GC1_2=SW1_2;
GC2_2=SW2_2;
GC3_2=SW3_2;
GC4_2=SW4_2;
GC5_2=SW5_2;
}
其实很简单,就是一个赋值操作,就像乾坤大挪移,把一些端口的输入,赋给另一些端口用于输出。但是不知道是不是配置问题,还是一组端口中,不能某些位用于输入,另一些位用于输出,结果总不如所愿,有几个端口大概符合结果。有些就不听话。求大神点拨一二啊!!
|
|