找回密码
 立即注册
楼主: 神***

I/O口, 输入/输出, 用啥工作模式 ?

[复制链接]
  • TA的每日心情
    开心
    18 分钟前
  • 签到天数: 205 天

    [LV.7]常住居民III

    22

    主题

    246

    回帖

    401

    积分

    中级会员

    积分
    401
    发表于 2024-3-24 13:26:51 | 显示全部楼层
    zhudean11 发表于 2023-12-19 11:39
    IO口用作输入时是不是设置成高阻输入并开启内部4K上拉是最优的模式?

    我现在用的方法就是准双向口,设置高阻的话不能正常使用,外部上拉也不行。所以IO输入我就用准双向口模式
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 338 天

    [LV.8]以坛为家I

    31

    主题

    1253

    回帖

    3081

    积分

    论坛元老

    积分
    3081
    发表于 2024-4-4 18:45:32 | 显示全部楼层
    qepuemc 发表于 2024-3-24 13:26
    我现在用的方法就是准双向口,设置高阻的话不能正常使用,外部上拉也不行。所以IO输入我就用准双向口模式 ...

    还有这种情况?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    18 分钟前
  • 签到天数: 205 天

    [LV.7]常住居民III

    22

    主题

    246

    回帖

    401

    积分

    中级会员

    积分
    401
    发表于 2024-4-5 07:58:58 | 显示全部楼层
    jwd 发表于 2024-4-4 18:45
    还有这种情况?

    反正我是只能用准双向口。应该是还有不会用的地方没设置好。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 338 天

    [LV.8]以坛为家I

    31

    主题

    1253

    回帖

    3081

    积分

    论坛元老

    积分
    3081
    发表于 2024-4-19 22:12:20 | 显示全部楼层
    qepuemc 发表于 2024-4-5 07:58
    反正我是只能用准双向口。应该是还有不会用的地方没设置好。

    确实,我今天也遇见了高阻+上拉,电压不对,改为准双向口就好了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 338 天

    [LV.8]以坛为家I

    31

    主题

    1253

    回帖

    3081

    积分

    论坛元老

    积分
    3081
    发表于 2024-4-30 09:59:20 | 显示全部楼层
    qepuemc 发表于 2024-4-5 07:58
    反正我是只能用准双向口。应该是还有不会用的地方没设置好。

    我今天又试了一下,使用屠龙刀板子,按键P33是可以使用高阻+上拉来检测的,但是我外部用光耦的就不行
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    18 分钟前
  • 签到天数: 205 天

    [LV.7]常住居民III

    22

    主题

    246

    回帖

    401

    积分

    中级会员

    积分
    401
    发表于 2024-4-30 13:52:45 | 显示全部楼层
    jwd 发表于 2024-4-30 09:59
    我今天又试了一下,使用屠龙刀板子,按键P33是可以使用高阻+上拉来检测的,但是我外部用光耦的就不行 ...

    光耦检测低电平。我再试一下。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 227 天

    [LV.7]常住居民III

    16

    主题

    138

    回帖

    806

    积分

    高级会员

    积分
    806
    发表于 2024-5-13 15:40:42 来自手机 | 显示全部楼层
    学习
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    79

    主题

    784

    回帖

    941

    积分

    高级会员

    积分
    941
    发表于 2024-5-19 00:40:13 来自手机 | 显示全部楼层
    输入用高阻抗,高阻抗不是说两边都悬空吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    79

    主题

    784

    回帖

    941

    积分

    高级会员

    积分
    941
    发表于 2024-5-19 01:56:45 来自手机 | 显示全部楼层
    输出p33用推挽,p54用高阻或者高阻加上拉都不正常,通电led就闪,
    p54换成 双向和推挽都正常
    备注:我的led是正极接p33,负极接地。p54接io口和地。
    用的stc8g1k08a
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    79

    主题

    784

    回帖

    941

    积分

    高级会员

    积分
    941
    发表于 2024-5-19 09:32:47 | 显示全部楼层
    #include <STC8G.H>  
    #include "Delay.h"  
    #include "Key.h"  
    #include "Timer0.h"  
      
    sbit LED=P3^3;  
    unsigned char Counter, Compare;  
    unsigned char KeyNum, Speed;  
      
    void main()  
    {  
            LED=0;
        P3M0 = 0x08; P3M1 = 0x00;
        P5M0 = 0x00; P5M1 = 0x10;
        P5PU = 0x10;
        P5NCS = 0x00;


        Timer0_Init();  // 初始化定时器 0 和其中断  
    //    Compare = 66;   // 设置初始占空比  
      
        while(1)  
        {  
            KeyNum = Key(); // 读取按键值  
      
            if(KeyNum == 1) // 假设 Key() 返回 1 表示某个特定按键被按下  
            {  
                Speed++;  
                Speed %= 4; // 限制 Speed 的值在 0 到 3 之间  
      
                switch(Speed)  
                {  
                    case 0: Compare = 0; break;  
                    case 1: Compare = 1; break;  
                    case 2: Compare = 10; break;  
                    case 3: Compare = 100; break;  
    //                case 4: Compare = 30; break;  
    //                case 5: Compare = 40; break;  
    //                case 6: Compare = 80; break;  
    //                case 7: Compare = 100; break;  
                }  
      
                // 去除不必要的 Delay 调用,因为按键检测和处理应该是即时的  
            }  
        }  
    }  
      
    void Timer0_Routine() interrupt 1 // 定时器 0 的中断服务程序  
    {  
        TL0 = 0xF4; // 设置定时初始值(根据定时器的配置和需要的频率来计算)  
        TH0 = 0xFF;  
      
        Counter++;  
        Counter = Counter % 100; // 确保 Counter 在 0 到 99 之间循环  
      
        if(Counter < Compare)  
        {  
            LED = 1; // LED 亮  
        }  
        else  
        {  
            LED = 0; // LED 灭  
        }  
    }

    一晚上都没搞懂这个为什么闪,按照老大的说明来的,输出led用的推挽,输入按键p54用的高阻,4k上拉,施密特都打开了。还是闪。
    头都晕了
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-1 07:16 , Processed in 0.154986 second(s), 76 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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