找回密码
 立即注册
查看: 64|回复: 3

AI8051-34k48-LQFP48部分IO无法当输入用,是啥原因?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-12-03 13:22:35
已绑定手机

4

主题

11

回帖

50

积分

注册会员

积分
50
发表于 2025-11-25 09:31:32 | 显示全部楼层 |阅读模式
//本软件在Ai8051-34K48上运行,外部晶振频率40Mhz
//问题:P13、P14无法做输入口?
#include "comm\AI8051U.h"
sbit  Lrun  = P3^3; //指示灯
sbit  Lerr  = P0^4; //指示灯
sbit  D1    = P1^3; //输入端
sbit  D2    = P1^4; //输入端
void flash(char);
void init_Io(void);
void delay4u(void);
void delay100us(unsigned char ns);   
void delay1ms(unsigned int ms);   
void main(void)
{   init_Io();   //接口初始化
          flash(10);   //跑马灯10次,运行正常
        D1=1;         D2=1;         //P13、P14置高电平
g:Lrun=D1;       //P13输入高、低电平,检测灯不变
        Lerr=D2;       //P14输入高、低电平,检测灯不变
        goto g;
}
void flash(char a) //闪灯34k36
{       
          char i;
          Lrun   = 1;
          Lerr   = 1;
        for(i=0;i<a;i++){
                Lerr   = 0;delay1ms(50);Lerr   = 1;delay1ms(50);       
          Lrun   = 1;delay1ms(50);Lrun   = 0;delay1ms(50);
          }
}       
void init_Io(void)
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

          P0M1 = 0x00;      //0 0 0 0   0 0 0 0        0  0   准双向
    P0M0 = 0x00;      //1 0 1 1   1 0 0 0        0  1   推挽                          
    P0PU = 0x00;      // p05=ad4  p04=ad3
          P0PD = 0x00;     
    P0IE = 0x00;      //x0xx 0000    0 模拟量输入,1数字量输入
       
          P1M1 = 0x00;     //x x x 1   1 0 0 0         1  0   高阻                           
    P1M0 = 0x00;     //x x x 0   0 0 0 0         1  1   开漏
          P1PU = 0x00;     //        0 0 0 0   0 0 0 0
    P1PD = 0x00;     // p14=ad1  p11=ad2
    P1IE = 0x00;     //111x x001    0 模拟量输入,1数字量输入       
          P1SR = 0x00;
          P1DR = 0xFF;       
       
    P2M1 = 0x00;     // x x 0 0   0 0 0 0                                    
    P2M0 = 0x00;     // x x 1 0   0 0 0 0
          P2PU = 0x00;     // 0 0 0 0   0 0 0 0
    P2PD = 0x00;
               
          P3M1 = 0x00;     //0 0 0 0   0 0 0 0                                   
    P3M0 = 0x00;     //1 0 1 0   1 0 1 0
          P3PU = 0x00;     // 0 0 0 0   0 0 1 0         P3.1上拉4kΩ
    P3PD = 0x00;     // 0 0 0 0   0 1 0 1         P3.2下拉47kΩ
       
          P4M1 = 0x00;     // x 0 x 0   x 0 0 x                                    
    P4M0 = 0x00;     // x 0 x 0   x 0 1 x
    P4PU = 0x00;
                P4PD = 0x00;
       
          P5M1 = 0x00;     //1 0 x x   0 0 0 0                                    
    P5M0 = 0x00;     //0 1 x x   1 0 0 1       
          P5PU = 0x00;     // 0 0 0 0   0 1 0 1
    P5PD = 0x00;
    XOSCCR = 0x80 ;           //100x 00x0  启动外边频率源40Mhz               
          while(!(XOSCCR & 0x01));  //
          CLKDIV = 0x01;            //时钟不分频
          CLKSEL = 0x01;            // 0000 0001 选择外边晶振位系统时钟
}
       
void delay4u(void)         //delay time 4us
{                                         //32 MHz晶体
    int i;
    for (i=0; i<26; i++) {;}
}

void delay100us(unsigned char ns)   //1=100us;00100=10ms
{
  unsigned char i,j;          
  for(i=0;i<ns;i++) {
    for(j=0;j<24;j++) {
      delay4u();
          }
        }
}
void delay1ms(unsigned int ms)   //1=1ms;100=100ms 无中断
{                                                                 //1=2.8ms;100=280ms 无中断
  unsigned int i;
  for(i=0;i<ms;i++) delay100us(10);
}


回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-12-03 13:22:35
已绑定手机

4

主题

11

回帖

50

积分

注册会员

积分
50
发表于 2025-11-25 09:37:46 | 显示全部楼层
在P13、P14上加5KΩ上拉电阻, P13、P14换成高阻、OC开路方式,也不能当输入用,更换不同批次买的芯片,效果一样的。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:645
  • 最近打卡:2025-12-16 08:20:22
已绑定手机

93

主题

6932

回帖

1万

积分

超级版主

积分
13007
发表于 2025-11-25 10:09:17 | 显示全部楼层
截图202511251008037968.jpg
截图202511251009148910.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-12-03 13:22:35
已绑定手机

4

主题

11

回帖

50

积分

注册会员

积分
50
发表于 2025-11-25 10:17:30 | 显示全部楼层
Debu***:谢谢你,按照你说的,改了一下,就正常了。谢谢你了
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-16 17:51 , Processed in 0.114431 second(s), 58 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表