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

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-01 06:31:45
已绑定手机

17

主题

137

回帖

1519

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:32:14
已绑定手机

130

主题

1520

回帖

1855

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:32:14
已绑定手机

130

主题

1520

回帖

1855

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:32:14
已绑定手机

130

主题

1520

回帖

1855

积分

金牌会员

积分
1855
发表于 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上拉,施密特都打开了。还是闪。
头都晕了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-5-19 09:58:23 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-8-28 15:46:32 | 显示全部楼层
输入尽量用高阻输入,输出尽量用强推挽输出
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2025-05-01 15:22:54
已绑定手机

27

主题

693

回帖

1950

积分

金牌会员

打工人

积分
1950
发表于 2024-11-18 05:52:35 | 显示全部楼层
详细
打工人
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:23 , Processed in 0.120872 second(s), 86 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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