打印

C8051F推挽输出设置问题

[复制链接]
2721|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gluebi|  楼主 | 2013-5-6 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当XBR1使能交叉开关功能时,P2设置推挽输出,结果输出的都是高电平,设置低电平输出也输出高电平
查阅DATASHEET里面表示
注意:为使端口引脚工作在标准端口I/O的输出方式,交叉开关必须被使能。当交叉开关被禁止时,端口输出驱动器被禁止

求教啊,难道推挽输出不能输出低电平的???

相关帖子

沙发
lyjian| | 2013-5-6 12:40 | 只看该作者
可以输出低电平
估计你就没设置对

使用特权

评论回复
板凳
ayb_ice| | 2013-5-6 13:32 | 只看该作者
这种问题当然程序问题了,

使用特权

评论回复
地板
zuimingyue| | 2013-10-12 16:07 | 只看该作者
#include <c8051f340.h>
sbit S1=P2^4;
sbit S2=P2^5;
sbit S3=P2^6;
sbit S4=P2^7;
sbit D1=P2^0;
sbit D2=P2^1;
sbit D3=P2^2;
sbit D4=P2^3;
void OSCILLATOR_Init (void);           
void PORT_Init (void);
void main (void)
{
   PCA0MD &= ~0x40;                    // WDTE = 0 (clear watchdog timer
                                       // enable)

   PORT_Init();                        // Initialize Port I/O
   OSCILLATOR_Init ();                 // Initialize Oscillator
  
   while (1)
   {
      if (S1 == 0)                    // If switch depressed
      {
         D1 = 1;                     // Turn on LED
      }
          else   
      {  
         D1 = 0;                     // Else, turn it off
      }                  
          
      if (S2 == 0)                    // If switch depressed
      {
         D2 = 1;                     // Turn on LED
      }
          else   
      {  
         D2 = 0;                     // Else, turn it off
      }                        
     if (S3 == 0)                    // If switch depressed
      {
         D3 = 1;                     // Turn on LED
      }
          else   
      {  
         D3 = 0;                     // Else, turn it off
      }            
      if (S4 == 0)                    // If switch depressed
      {
         D4 = 1;                     // Turn on LED
      }
          else   
      {  
         D4 = 0;                     // Else, turn it off
      }           
           }                                   // end of while(1)
}                                      // end of main()
void OSCILLATOR_Init (void)
{
   OSCICN |= 0x03;                     // Configure internal oscillator for
                                       // its maximum frequency (24.5 Mhz)
}
void PORT_Init (void)
{
   P2MDIN |= 0xF0;                     // Lower four pins on P2 are digital

   P2MDOUT = 0x0F;                     // enable LEDs as push-pull outputs
                                       // enable Switches as open-drain

   P2     |= 0xF0;                     // Set port latches for P2.0
                                       // and P2.1 to '1'

   XBR1    = 0x40;                     // Enable crossbar and enable
                                       // weak pull-ups
}

使用特权

评论回复
5
zuimingyue| | 2013-10-12 16:07 | 只看该作者
参考一下上面的基本输入输出程序

使用特权

评论回复
6
zd420325| | 2013-10-17 09:06 | 只看该作者
请使用配置向导配置IO口功能模式。方便快捷

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

39

帖子

1

粉丝