专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

C8051F320-并行端口与交*开关

作者:佚名   来源:本站原创   点击数:  更新时间:2011年09月09日   【字体:

     C8051F320具有25个I/O引脚,分别为P0、P1、P2、P3.0。为了能根据需要使用内部数字系统资源,必须利用数字交*开关将所用的资源映射到具体引脚上。分析如下:

       如果没有用到任何资源,那么所有25个引脚都可以作为正常的并行引脚使用,若用到数字资源,必须牺牲一部分并行口,将引脚提供给内部资源使用。假设有A、B、C三种资源,所需要的引脚数分别为2、1、3。

       1、如果ABC都不用,那么可以正常使用P0、P1、P2以及P3.0

       2、如果使用A资源,那么将会占用P0.0、P0.1,其余引脚照样可以作为并行口用,但是被占用的口无法控制

       3、如果同时使用ABC资源,则需要6个脚,故P0口只剩下P0.6、P0.7可用,其他口不受影响

       以上只是大概意思,不精确。以下为详细笔记。

 

       一、寄存器

       P0口有P0MDIN、P0MDOUT、P0SKIP三个控制寄存器,同理P1、P2都有,P3没有SKIP

       PxMDIN:设置对应并行端口是否作为模拟输入,“0”表示模拟输入。当任意引脚作为模拟输入时,不能作为IO口受到控制

       PxMDOUT:设置对应并行端口为漏极开路或推挽,“0”表示开漏。开漏时只能输出低电平或高阻,若需要输出高电平,需要另外加上拉电阻,其电流小于推挽。不过实测还没感觉出开漏与推挽的区别,待查。

       PxSKIP:用来保护特定的引脚不被内部资源使用。为“1”时,表示该引脚被跳过。本来内部数字资源是按照优先级列表按顺序占用并行端口,如果某个脚你希望留下来自己用,那么可以设置为“1”,那么该脚必然不被占用,可以作为正常的IO口。

       二、交*开关

       寄存器XBR0、XBR1用来分配引脚给内部数字资源,收到PxSKIP寄存器的影响,分配优先级见下图:

 

           三、实测细节

准备工作:1、P0口连接八个发光二极管,P1.0连接触点开关,P1.1~P1.7连接7个发光二极管。 

                 2、编程,首先令PxMDIN=FF,PxMDOUT=FF。再令PxSKIP=0,但P1.0例外,跳过,否则没法测试

                                 main函数的作用是开关控制所有的灯,按下全亮,松开全暗。

                                 *XBR1的D6必须等于1,要不所有引脚全都不受控。

测试:1、XBR0=01,XBR1=40   UART I/O使能

                结果:P0.4和P0.5灯灭,不受控制

                分析:串行口的TX0固定在P0.4,RX0固定在P0.5

          2、XBR0=02,XBR1=40   SPI I/O使能 (增强型串行外设接口)

                结果:P0.0、P0.1、P0.2、P0.3灯灭,不受控制

                分析:对应SCK MISO MOSI NSS信号

          3、XBR0=04,XBR1=40   SMBus I/O使能 (双向串行总线)

                结果:P0.0、P0.1灯灭,不受控制

                分析:对应SDA SCL

      * XBR0=03  P0.0~P0.5 (1+2)        XBR0=06  P0.0~P0.5(2+3)       XBR0=07 P0口(1+2+3)

          4、XBR0=08,XBR1=40   SYSCLK输出使能

                结果:P0.0常亮

                分析:不清楚具体作用

          5、XBR0=10/20/40/80,XBR1=40   分别为比较器0和比较器1的输出使能/异步输出使能

                结果:P0.0常亮

                分析:不清楚具体作用

     * XBR0=F0 P0.0~P0.3全亮    

     * XBR0=F7     若P1SKIP=01 P0全灭 P1.1~P1.4常亮 剩余灯受控

                           若P1SKIP=03 P0全灭 P1.2~P1.5常亮 其余等受控

       分析结果略,就是上面“寄存器”那段话

          6、XBR0=0,XBR1=40~47   PCA(16位可编程计数器/定时器阵列) 外部计数输入使能

                结果:40等于没有

                          46,47为保留功能,也等于没有

                          41~45每次多一个引脚不受控制,即41时仅P0.0,45时从P0.0到P0.4全部失控

                分析:5个脚对应PCA5个捕捉/比较模块的IO线

          7、XBR0=0,XBR1=48 50 60   分别为PCA T0 T1计数使能引脚能

                结果:都是P0.0不受控制

                分析:未验证计数器如何使用,待研究。。

          8、XBR0=0,XBR1=c0   弱上拉禁止

                结果:毫无结果,不管开关也好,发光二极管也好,都不受影响

                分析:学艺不精,还看不出问题。。。。

 

简易结论:只要PxMDIN=FF,PxMDOUT随便,PxSKIP=00,XBR0=00,XBR1=40,C8051F320基本功能的操作和51一模一样

关闭窗口

相关文章