[家电应用] SH79F161A P0口设成输入后都不到高低电平

[复制链接]
2003|5
 楼主| san123sui 发表于 2018-3-6 21:16 | 显示全部楼层 |阅读模式
大家好
  我在调试的板有3个按键,分别是P00,P02,P10,外部电路是上拉10K到5V,下接1K到按键再接地,按键按下的时候是0.7V左右,不按是5V,但是只有P10能正常都到高低电平,P00,P02一直读到低电平,P00,P02的第二功能是AD和外部中断,但是我都关闭了这些功能。
void        MCUinit(void)
{
        EA=0;
        FLASHCON = 0;
        CLKCON=0x20;   

        IPL0 = 2;
        IPH0 = 0;

        TCON=0;
        TR0=0;            //停止T0定时器
        ET0=0;            //禁止T0定时器

        TMOD=0x01;
        TH0= HIBYTE(T0_125US);
        TL0= LOBYTE(T0_125US);
        ET0=1;
        TR0=1;

///***************************************
//AD初始化设置:
//  ADC时钟周期=8Tsys
//  通道设置AN1、AN2、AN3为ADC口
//****************************************/
        ADT=0x6E;
        ADCH=0x00;    //作为普通IO口

///***************************************
//外部中断初始化设置:
//  INT2、INT3下降沿触发
//****************************************/
        EXF0=0x10;
        IEN1=0x04;
/*************************************************************************8
ADC初始化
***************************************************************************/
        ADCH=0x00;   //作为普通IO口
        ADT=0x6E;

        EA = 1;     //允许中断
}

void        PortDir(void)
{       
        P0        =        Bin(11110111);//P0_2为按键输入,设置初始状态为1
        P0CR  =        Bin(01111000);//P0_2为按键输入,设置为输入
        P0OS |= 0X30;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
        P1          =        Bin(00000001);//P1_6直流电机12V电源
        P1CR        =        Bin(01111110);//P1_6直流电机12V电源
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
       
        P2          =        Bin(11110000);//P2_4为PWM0输出,设置初始状态为1
        P2CR        =        Bin(00011111);//P2_4为PWM0输出,设置为输出
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++=
        P3          =        Bin(00000000);
        P3CR        =        Bin(00000011);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==
//上拉设置
        P0PCR        =        Bin(00110000);
        P1PCR        =        Bin(00000000);
        P2PCR        =        Bin(11100000);
        P3PCR        =        Bin(00000000);
}

main(void)
{
        Delay(100);     //系统启动延时
        MCUinit();      //MCU初始化   
        Delay(100);
        PortDir();
        Delay(100);
    while(1)
        {
                if(Flag2ms)
                {
                        Flag2ms=0;
                        RSTSTAT = 0x00;        //2730.6ms 清看门狗
                        KeyScan();
                        if(Key1)
                        {
                                LD2=0;
                        }
                        else
                        {
                                LD2=1;
                        }
                        if(Key2)
                        {
                                LD2=0;
                        }
                        else  
                        {
                                LD2=1;
                        }
                        if(Key3)
                        {
                                LD2=0;
                        }
                        else  
                        {
                                LD2=1;
                        }
                }
        }
}
LD2是外接的一个LED,=0就亮,=1就灭,我分别测试了Key1,Key2,Key3三部分按键程序,只有Key3不按的时侯LED会亮,按下时,LED灭了,Key1,Key2一直都是灭的
 楼主| san123sui 发表于 2018-3-6 21:18 | 显示全部楼层
有人遇过这种情况吗?
ayb_ice 发表于 2018-3-7 15:24 | 显示全部楼层
本帖最后由 ayb_ice 于 2018-3-7 15:31 编辑

检查下电压,说不定也是零呢
P0上拉没有开启


“SH79F161A提供30位位可编程双向I/O端口。端口数据在寄存器Px中。端口控制寄存器(PxCRy)控制端口是作为输入或者输出。当端口作为输入时,每个I/O端口带有由PxPCRy控制的内部上拉电阻(x = 0-3, y = 0-7)。”
 楼主| san123sui 发表于 2018-3-7 15:39 | 显示全部楼层
原因找到了,在别人电脑上编译下载是没问题的,是keil软件问题,重装后编译下载就好了
桃花落满山前 发表于 2025-10-30 16:59 | 显示全部楼层
SH79F161A P0 口设为输入却读不到高低电平,可能原因:1. 输入模式配置错误,需确认 P0M1/P0M0 寄存器是否设为 10(高阻输入);2. 引脚外部无上下拉电阻,悬空时电平不稳定,需外接或使能内部上拉;3. 引脚被其他外设复用,检查是否正确切换为 GPIO 功能;4. 硬件故障,测引脚是否短路或虚焊。
野玫瑰 发表于 2025-11-3 14:10 | 显示全部楼层
SH79F161A 的 P0 口设为输入后读不到高低电平,可能原因:1. 未正确配置输入模式寄存器(如准双向口 / 高阻输入设置错误);2. 引脚被复用为其他功能,需先关闭复用功能;3. 外部无上下拉电阻,悬空导致电平不确定;4. 端口硬件损坏。可检查寄存器配置,外接拉电阻,测试引脚通断排查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部