gylg3344love 发表于 2020-9-29 11:01:43

STC8G1k08A的IO口不能推挽输出问题

请教各位大神,如题问题。做了很多测试这系列STC8G1K的芯片的推挽不能输出高电平,非要上拉电阻;也试过内部强上拉4.1K还是不行,不知道各位是否遇到这个问题,还请不吝赐教!感谢!

wye11083 发表于 2020-9-29 11:20:44

pp没问题,你要先开exr才能写io模式。仔细看例程代码。

古调独弹 发表于 2020-9-29 11:34:57

用了8脚的STC8G1k08,推挽可以输出高电平,而且感觉不是开漏的话都可以不用上拉电阻的,还请检查电路设计

fxhfxh 发表于 2020-9-29 13:36:25

用的20脚的STC8G1K08,不用加上拉电阻,可以可靠的驱动继电器。

gylg3344love 发表于 2020-9-29 15:50:39

wye11083 发表于 2020-9-29 11:20
pp没问题,你要先开exr才能写io模式。仔细看例程代码。

请问你说的是P_SW2寄存器的最高位EAXFR吗?这个一直有置1; 如果不是确实没有找到你说的那个exr是什么

小李非刀 发表于 2020-9-29 16:54:01

IO口是最基本的,没有问题。

gylg3344love 发表于 2020-10-4 11:12:32

已经解决好了,感谢大家的建议;
情况是这样的:在初始化IO模式设置的时候,以往的12 15等系列都是用的 |= 来设置的,一直用得挺好没有任何问题,所以一直都没有注意到这点;这次被逼到没办法了所有程序都删除了就留下上电就一个拉高口子的程序还是拉不高,就怀疑|=,就直接把 |= 改为 = 来使用就好了,你们可以试试。
和STC技术沟通过没有解决,也是建议我删掉所有程序只留简单的IO拉高测试。
ps:手上的芯片有两款:一个STC8G1k08A sop8,一个STC8G1k08 tssop20,一样的情况。

anta09 发表于 2020-11-13 14:54:28

IO是最普通的,一般不会有问题吧

小李非刀 发表于 2020-11-13 21:28:36

gylg3344love 发表于 2020-10-4 11:12
已经解决好了,感谢大家的建议;
情况是这样的:在初始化IO模式设置的时候,以往的12 15等系列都是用的 |=...

我一直用的是 | 或者&操作,从没发现楼主说的问题。下面是我定义在头文件的:
#define P0n_standard(bitn)                        P0M1 &= ~(bitn),        P0M0 &= ~(bitn)        /* 00*/
#define P0n_push_pull(bitn)                        P0M1 &= ~(bitn),        P0M0 |=(bitn)        /* 01*/
#define P0n_pure_input(bitn)                P0M1 |=(bitn),        P0M0 &= ~(bitn)        /* 10*/
#define P0n_open_drain(bitn)                P0M1 |=(bitn),        P0M0 |=(bitn)        /* 11*/

#define P1n_standard(bitn)                        P1M1 &= ~(bitn),        P1M0 &= ~(bitn)
#define P1n_push_pull(bitn)                        P1M1 &= ~(bitn),        P1M0 |=(bitn)
#define P1n_pure_input(bitn)                P1M1 |=(bitn),        P1M0 &= ~(bitn)
#define P1n_open_drain(bitn)                P1M1 |=(bitn),        P1M0 |=(bitn)

#define P2n_standard(bitn)                        P2M1 &= ~(bitn),        P2M0 &= ~(bitn)
#define P2n_push_pull(bitn)                        P2M1 &= ~(bitn),        P2M0 |=(bitn)
#define P2n_pure_input(bitn)                P2M1 |=(bitn),        P2M0 &= ~(bitn)
#define P2n_open_drain(bitn)                P2M1 |=(bitn),        P2M0 |=(bitn)

#define P3n_standard(bitn)                        P3M1 &= ~(bitn),        P3M0 &= ~(bitn)
#define P3n_push_pull(bitn)                        P3M1 &= ~(bitn),        P3M0 |=(bitn)
#define P3n_pure_input(bitn)                P3M1 |=(bitn),        P3M0 &= ~(bitn)
#define P3n_open_drain(bitn)                P3M1 |=(bitn),        P3M0 |=(bitn)

#define P4n_standard(bitn)                        P4M1 &= ~(bitn),        P4M0 &= ~(bitn)
#define P4n_push_pull(bitn)                        P4M1 &= ~(bitn),        P4M0 |=(bitn)
#define P4n_pure_input(bitn)                P4M1 |=(bitn),        P4M0 &= ~(bitn)
#define P4n_open_drain(bitn)                P4M1 |=(bitn),        P4M0 |=(bitn)

#define P5n_standard(bitn)                        P5M1 &= ~(bitn),        P5M0 &= ~(bitn)
#define P5n_push_pull(bitn)                        P5M1 &= ~(bitn),        P5M0 |=(bitn)
#define P5n_pure_input(bitn)                P5M1 |=(bitn),        P5M0 &= ~(bitn)
#define P5n_open_drain(bitn)                P5M1 |=(bitn),        P5M0 |=(bitn)

#define P6n_standard(bitn)                        P6M1 &= ~(bitn),        P6M0 &= ~(bitn)
#define P6n_push_pull(bitn)                        P6M1 &= ~(bitn),        P6M0 |=(bitn)
#define P6n_pure_input(bitn)                P6M1 |=(bitn),        P6M0 &= ~(bitn)
#define P6n_open_drain(bitn)                P6M1 |=(bitn),        P6M0 |=(bitn)

#define P7n_standard(bitn)                        P7M1 &= ~(bitn),        P7M0 &= ~(bitn)
#define P7n_push_pull(bitn)                        P7M1 &= ~(bitn),        P7M0 |=(bitn)
#define P7n_pure_input(bitn)                P7M1 |=(bitn),        P7M0 &= ~(bitn)
#define P7n_open_drain(bitn)                P7M1 |=(bitn),        P7M0 |=(bitn)
页: [1]
查看完整版本: STC8G1k08A的IO口不能推挽输出问题