本帖最后由 whoyzf 于 2024-7-17 10:59 编辑
STC8A8K64D4最小系统,5V供电
IO设置准双向口模式,同样的设置,实测:P0口高电压只有1V.而P2却有5V。
请问是什么问题?
测试:
将P0设置为推挽输出,P0高电平为5v
将P0设置为准双向口,P0加上拉电阻(P0PU = 0xff; )高电平为3v
高阻输入 0.6V ; 开漏 0.6V ;
代码如下
- #include "STC8A8K64D4.h"
- #include "intrins.h"
-
- sfr VOCTRL = 0xbb;
- #define IDL 0x01 //PCON.0
- #define PD 0x02 //PCON.1
- //sbit P34 = P3^4;
- //sbit P35 = P3^5;
-
- sbit led3=P4^3; //串口3接收指示灯 太亮,先关掉
- sbit led2=P0^4; //串口2接收指示灯 太亮,先关掉
- sbit led1=P0^5; //秒闪灯
-
-
- void INT0_Isr() interrupt 0
- {
- // P34 = ~P34; //测试端口
- }
-
- void main()
- {
-
- // P1M0 = 0x40; P1M1 = 0x00; //P16(PWR_5V) 推挽,准双向高电平为3V
-
- // VOCTRL = 0x00; //掉电模式时使用内部SCC模\块,功耗约1.5uA
- //// VOCTRL = 0x80; //掉电模式时使用外部SCC模块,功耗约0.15uA
- // EX0 = 1; //使能INT0中断,用于唤醒MCU
- // EA = 1;
- _nop_();
- _nop_();
-
-
- P0M0 = 0x00; P0M1 = 0xff;
- P1M0 = 0x00; P1M1 = 0xff;
- P2M0 = 0x00; P2M1 = 0xff;
- P3M0 = 0x00; P3M1 = 0xff;
- P4M0 = 0x00; P4M1 = 0xff;
- P5M0 = 0x00; P5M1 = 0xff;
-
- P0M0 = 0x00; P0M1 = 0x00;
- P1M0 = 0x00; P1M1 = 0x00;
- P2M0 = 0x00; P2M1 = 0x00;
- P3M0 = 0x00; P3M1 = 0x00;
- P4M0 = 0x00; P4M1 = 0x00;
- P5M0 = 0x00; P5M1 = 0x00;
-
-
-
-
- P1=0xff; P2=0xff; P3=0xff; P4=0xff;P5=0xff;
-
- led3=1;
- led2=1;
- led1=1;
-
- // PCON = IDL; //MCU进入IDLE模式
- // PCON = PD; //MCU进入掉电模式
- _nop_();
- _nop_();
- // P35 = 0;
-
- while (1);
- }
-
复制代码
|