标题: 请教stc8g1k08单片机设置推挽输出后无法设置为低电平 [打印本页]

作者: Dokkis    时间: 2024-7-9 09:41
标题: 请教stc8g1k08单片机设置推挽输出后无法设置为低电平
用的是stc8g1k08-16pin的,BI FI FAN lock连接的都是led灯,设置推挽输出后四个灯都可以亮,但是置0后lock灯还亮着,我量了引脚的电压是5v,这是为什么呀,灯的另一头都是接地的


#include "stc8g.h"

sbit BI = P1^1;           //电机后退输入D连接引脚2
sbit FI = P1^0;           //电机前进输入C连接引脚1
sbit FAN = P5^4;          //风扇G连接引脚引脚5
sbit lock = P5^5;         //锁扣I连接引脚14
void main()
{
            P1M0 = 0x03; P1M1 = 0x00;
            P3M0 = 0x20; P3M1 = 0x00;
           P5M0 = 0x10; P5M1 = 0x00;     //设置推挽输出           

                        BI = 0;
                        FI = 0;
                        FAN = 0;
                        lock = 0



}



作者: lkc8210    时间: 2024-7-9 11:06
while(1)呢?
作者: szqinyi    时间: 2024-7-9 11:36
STC单片机在上电瞬间都是高电平。
要想上电瞬间低电平:先把端口设为输入,再设为低电平,然后再把端口设为推挽输出,这样上电瞬间就是低电平了。
至于你的程序有错误,缺少while{}大循环程序,一般执行都需要在大循环内部。
作者: xiaobendan001    时间: 2024-7-9 13:08
lock并没有被设置为推挽模式,但是不影响输出0的。你后面注释是链接14脚,那个是P3.5,P3.5的确是推挽,所以,是你的sbit那里打错了,3打成了5
作者: coody_sz    时间: 2024-7-9 17:32
我觉得,你要先入门一下C语言。
作者: kxcuser    时间: 2024-7-10 08:38
你P5两个想设置推挽输出应该是:P5M0 = 0x30;P5M1 = 0x00;要不你把P5那路删了,把P3那路改成P5,LOCK那路设置成推挽就对了,要不改P5那路。你自己把LOCK那路换成二进制看看,是不是设置错了
作者: Dokkis    时间: 2024-7-10 09:16
xiaobendan001 发表于 2024-7-9 13:08
lock并没有被设置为推挽模式,但是不影响输出0的。你后面注释是链接14脚,那个是P3.5,P3.5的确是推挽,所 ...

天呐,确实是这里写错了,谢谢你,太粗心了我




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1