belen 发表于 2025-7-19 14:58:21

Ai8H1K17T, P16 / P17口无法输入 | 原理图的管脚图搞错

请教一下大家有没有碰到 P16 / P17 口 无法输入问题?
试了好多种方法都没办法读到IO状态。
是不是晶振口就不能用着输入呀???

    P_SW2 |= 0x80;
          P1IE = 0xff;
      ADC_CONTR = 0;
//      CMP_CR1=0;
          P3M0 = 0x00;
    P3M1 = 0x00;
          P1M0 = 0x00;
    P1M1 = 0x00;
          P5M0 = 0x00;
    P5M1 = 0x00;
      
          //P3M0 = 0xbc; P3M1 = 0x40;
         //P3M0 = 0xbc; P3M1 = 0x43;

          P1M0 = 0x00;
          P1M1 = 0xc3;
         // P1NCS = 0x00;


belen 发表于 2025-7-19 15:52:02

我所有的功能都关了,还有不能接收到输入。不知道是什么问题?
    P_SW2 |= 0x80;
          
          ADC_CONTR = 0;
       // CMP_CR1=0;
          I2CCFG &= ~0x03;   // 释放I2C对P16/P17的控制
          P3M0 = 0x00;
    P3M1 = 0x00;
          P5M0 = 0x00;
    P5M1 = 0x00;
          RTCCR =0;
          X32KCR = 0;
          XOSCCR =0;
          P3M0 = 0xbc; P3M1 = 0x40;
       //P3M0 = 0xbc; P3M1 = 0x43;
    P16=0;
          P17 =0;
          P1M0 = 0x00;
          P1M1 = 0xc3;
          P1IE = 0xc3;

belen 发表于 2025-7-19 15:53:46

电路是正常的。在IO口端量是可以量到高低电平的,就是MCU读不到这个值。换成其他脚也是正常的

belen 发表于 2025-7-19 16:00:07

P_SW2 |= 0x80;
          
          ADC_CONTR = 0;
          CMPCR1=0;
          CMPCR2=0;
          SPCTL =0;
          I2CCFG &= ~0x03;   // 释放I2C对P16/P17的控制
          P3M0 = 0x00;
    P3M1 = 0x00;
          P5M0 = 0x00;
    P5M1 = 0x00;
          RTCCR =0;
          X32KCR = 0;
          XOSCCR =0;
所有的功能全关了还是不行。是不是P1617就不能作为输入使用呀?板子都做了一批,程序跑不起来{:4_167:}{:4_167:}

神农鼎 发表于 2025-7-19 16:52:52






#include "stc8h.h"                                 //包含STC8H的头文件
#include "intrins.h"

void Delay1ms(void)                                //@40.000MHz
{
        unsigned char data i, j;

        _nop_();
        i = 52;
        j = 240;
        do
        {
                while (--j);
        } while (--i);
}

void main(void)
{
        P_SW2 |= 0x80;                                  //允许访问扩展的特殊寄存器,XFR

                                                                //32位8051需要使用下面3句进行初始化
//        EAXFR = 1;                                        //允许访问扩展的特殊寄存器,XFR
//        WTST = 0;                                        //设置取程序代码等待时间,赋值为0表示不等待,程序以最快速度运行
//        CKCON = 0;                                        //设置访问片内的xdata速度,赋值为0表示用最快速度访问,不增加额外的等待时间

        P0M0 = 0x38; P0M1 = 0x20;        //设置P03、P04为推挽输出,P05为开漏输出,其余为准双向口模式
        P1M0 = 0x00; P1M1 = 0x00;         //设置 P1 口为准双向口模式
        P2M0 = 0x00; P2M1 = 0x00;         //设置 P2 口为准双向口模式
        P3M0 = 0x30; P3M1 = 0x3b;         //P30、P31为高阻输入,P32为准双向口、P33为高阻输入、P34和P35为开漏输出
        P3PU |= 0x38;                                 //打开P33、P34、P35的内部上拉电阻,并且仅修改这三个I/O的上拉电阻打开状态
//        P3M0 = 0x00; P3M1 = 0x00;         //设置 P3 口为准双向口模式
//        P3M0 = 0x00; P3M1 = 0x3c;         //设置P32、P33、P34、P35为高阻输入,其余引脚为准双向口模式
//        P3PU = 0x3c;                                 //需要同时开启对应端口的上拉电阻
        P4M0 = 0x00; P4M1 = 0x00;         //设置 P4 口为准双向口模式
        P5M0 = 0x00; P5M1 = 0x00;         //设置 P5 口为准双向口模式
        P6M0 = 0x00; P6M1 = 0x00;         //设置 P6 口为准双向口模式
        P7M0 = 0x00; P7M1 = 0x00;         //设置 P7 口为准双向口模式
       
        Delay1ms();                                        //延时1ms,等待IO口电平稳定,因为前面刚改变了模式
                                                                //立刻读可能会读到错误的电平,所以需要先等待电平变化稳定后再读
        EA = 1;                                                //打开总中断
        P40 = 0;                                        //打开LED部分的供电
        while(1)
        {
                if(P32 == 0)P62 = 0;        //P32为低电平,则LED02亮
                else P62 = 1;                        //P32为高电平,则LED02灭
               
                if(P33 == 0)P63 = 0;        //P33为低电平,则LED03亮
                else P63 = 1;                        //P33为高电平,则LED03灭
               
                if(P34 == 0)P64 = 0;        //P34为低电平,则LED04亮
                else P64 = 1;                        //P34为高电平,则LED04灭
               
                if(P35 == 0)P65 = 0;        //P35为低电平,则LED05亮
                else P65 = 1;                        //P35为高电平,则LED05灭
        }
}




神农鼎 发表于 2025-7-19 16:53:34

参考下,另外把你 原理图的 PDF发上来,大家帮您分析

神农鼎 发表于 2025-7-19 16:58:21

输入的口,设置为高阻输入,打开内部上拉/或外部有上拉为好

belen 发表于 2025-7-19 18:09:59

没起到作用,我在外部上拉。

belen 发表于 2025-7-19 18:11:15

belen 发表于 2025-7-20 08:51:46


找到问题了,被加立创的EDA给坑了。
立创的系统的元件库有问题。




页: [1] 2
查看完整版本: Ai8H1K17T, P16 / P17口无法输入 | 原理图的管脚图搞错