找回密码
 立即注册
查看: 96|回复: 11

STC8h2k08u IO输入无效

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 35 天

    [LV.5]常住居民I

    8

    主题

    6

    回帖

    220

    积分

    中级会员

    积分
    220
    发表于 2024-4-23 11:36:55 | 显示全部楼层 |阅读模式
    示波器检测电压正常,IO输出控制正常,唯有作为输入时检测不到IO状态,一共用了三个按键,都检测不到,图上是测试程序和初始化IO,请大佬帮看看
    截图202404231133289172.jpg
    截图202404231133502361.jpg
    截图202404231136329551.jpg
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 35 天

    [LV.5]常住居民I

    8

    主题

    6

    回帖

    220

    积分

    中级会员

    积分
    220
     楼主| 发表于 2024-4-23 11:38:07 | 显示全部楼层
    仿真时按按键就没进if里,但是程序也在扫着
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:01
  • 签到天数: 45 天

    [LV.5]常住居民I

    2

    主题

    35

    回帖

    284

    积分

    中级会员

    积分
    284
    发表于 2024-4-23 13:12:42 | 显示全部楼层
    代码贴全一点
    盲猜while(1);
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:16
  • 签到天数: 157 天

    [LV.7]常住居民III

    25

    主题

    724

    回帖

    1807

    积分

    金牌会员

    积分
    1807
    发表于 2024-4-23 14:10:17 | 显示全部楼层
    star串了10k电阻?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:16
  • 签到天数: 157 天

    [LV.7]常住居民III

    25

    主题

    724

    回帖

    1807

    积分

    金牌会员

    积分
    1807
    发表于 2024-4-23 14:10:51 | 显示全部楼层
    是不是编译优化掉了?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 69 天

    [LV.6]常住居民II

    11

    主题

    388

    回帖

    1133

    积分

    金牌会员

    积分
    1133
    发表于 2024-4-23 15:17:09 | 显示全部楼层
    使能内部上拉试试
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 35 天

    [LV.5]常住居民I

    8

    主题

    6

    回帖

    220

    积分

    中级会员

    积分
    220
     楼主| 发表于 2024-4-23 17:19:19 | 显示全部楼层
    Lkck8210 发表于 2024-4-23 13:12
    代码贴全一点
    盲猜while(1);

    #include "stc8h.h"
    #include "intrins.h"

    sbit Sda = P3^7;
    sbit STAR = P3^4;
    sbit keyjia = P3^3;
    sbit keyjian = P3^2;



    void Timer0_Init(void)                //1毫秒@5.5296MHz
    {
            AUXR |= 0x80;                        //定时器时钟1T模式
            TMOD &= 0xF0;                        //设置定时器模式
            TL0 = 0x66;                                //设置定时初始值
            TH0 = 0xEA;                                //设置定时初始值
            TF0 = 0;                                //清除TF0标志
            TR0 = 1;                                //定时器0开始计时
            ET0 = 1;                                //使能定时器0中断
    }
    void Delay1ms(void)        //@5.5296MHz
    {
            unsigned char data i, j;

            _nop_();
            _nop_();
            i = 8;
            j = 43;
            do
            {
                    while (--j);
            } while (--i);
    }

    void Delay100us(void)        //@5.5296MHz
    {
            unsigned char data i;

            _nop_();
            i = 182;
            while (--i);
    }

    void Delay20ms(void)        //@5.5296MHz
    {
            unsigned char data i, j;

            _nop_();
            _nop_();
            i = 144;
            j = 157;
            do
            {
                    while (--j);
            } while (--i);
    }
    void delayms(unsigned int ms)
    {
            while(--ms)
            {
                    Delay1ms();
            }
    }
    void Wait(unsigned int us)
    {
            while(--us)
            {
            Delay100us();
            }
    }
    void on_line(unsigned char Addr)
    {
            char i;
            Wait(30);
            for(i=0;i<8;i++)
            {
                    Sda=1;
                    if(Addr&1)
                    {
                            Wait(15);Sda=0;Wait(5);
                    }
                    else{
                            Wait(5);
                            Sda=0;
                            Wait(15);
                    }Addr>>=1;
            }Sda=1;
    }

    bit star_bofang = 0;
    void key_star()
    {
            if(STAR == 0)
                    {
                            Wait(300);
                            if(STAR == 1)
                            {
                                    star_bofang =! star_bofang;
                            }
                    }
    }
    unsigned int jia_time = 0,jian_time = 0;
    unsigned char keyjia_flag = 0,keyjian_flag = 0;
    unsigned char jia_key = 0,jian_key = 0;//按键值
    void key_jia()
    {
            if(keyjia == 0)
            {
                    keyjia_flag = 1;
            }
                    if(keyjia == 1 && jia_time<1000 && keyjia_flag == 1)
                    {
                            keyjia_flag = 0;
                            jia_time = 0;
                            jia_key = 1;//短按
                    }
                    if(keyjia == 1 && jia_time>2000 && keyjia_flag == 1)
                    {
                            keyjia_flag = 0;
                            jia_time = 0;
                            jia_key = 2;//长按
                    }

    }
    void key_jian()
    {
            if(keyjian == 0)
            {
                    keyjia_flag = 1;
            }
                    if(keyjian == 1 && jian_time<1000 && keyjian_flag == 1)
                    {
                            keyjian_flag = 0;
                            jian_time = 0;
                            jian_key = 1;//短按
                    }
                    if(keyjian == 1 && jia_time>2000 && keyjian_flag == 1)
                    {
                            keyjian_flag = 0;
                            jian_time = 0;
                            jian_key = 2;//长按
                    }

    }

    void pwm_init(unsigned int zhouqi,unsigned int zhankongbi)
    {
              P_SW2 = 0x80;
        PWMA_CCER1 = 0x00;                          //写CCMRx前必须先清零CCERx关闭通道
        PWMA_CCMR1 = 0x60;                          //设置CC1为PWMA输出模式
        PWMA_CCER1 = 0x01;                          //使能CC1通道
        PWMA_CCR1 = zhankongbi;                            //设置占空比时间
        PWMA_ARR = zhouqi;                             //设置周期时间
        PWMA_ENO = 0x01;                            //使能PWM1P端口输出
        PWMA_BKR = 0x80;                            //使能主输出
        PWMA_CR1 = 0x01;                            //开始计时
    }
    unsigned int PWM_zhouqi,PWM_zhankongbi = 0,zhendong =  0;
    void Delay300ms(void)        //@5.5296MHz
    {
            unsigned char data i, j, k;

            _nop_();
            _nop_();
            i = 9;
            j = 107;
            k = 90;
            do
            {
                    do
                    {
                            while (--k);
                    } while (--j);
            } while (--i);
    }

    void main()
    {
           
            unsigned char yinliang = 0xe3;
                P0M0 = 0x00;
        P0M1 = 0x00;
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
                        P3M0 = 0x20; P3M1 = 0x00; //电机口推挽

        P3M0 &= ~0x10; P3M1 &= ~0x10;
    //   P3M0 |= 0x10; P3M1 |= 0x10;

           
            on_line(0xf1);//切换到u盘
            Wait(500);
            on_line(0xf7);//循环播放
            Wait(500);
            on_line(0xe3);//音量设置        d2-f0
            Timer0_Init();//1毫秒定时
            EA = 1;
            //pwm_init(100,PWM_zhankongbi);
            while(1)
            {
    //                 key_star();
    //                 key_jia();
    //                key_jian();
    //                if(!STA )
    //                {
    //                                on_line(0xfa);//播放
    //                        zhendong = 1;
    //                }else{ on_line(0xfb);zhendong = 0;}//暂停
                   
                    if(jia_key == 1)//短按
                    {
                            jia_key = 0;
                            PWM_zhankongbi++;
                            pwm_init(100,PWM_zhankongbi);
                    }
                    if(jian_key == 1)//短按
                    {
                            jia_key = 0;
                            PWM_zhankongbi--;
                            pwm_init(100,PWM_zhankongbi);
                    }
                   
                    if(jia_key == 2)//长按
                    {
                            jia_key = 0;
                            yinliang++;
                            on_line(yinliang);//音量设置        d2-f0
                    }
                    if(jian_key == 2)//长按
                    {
                            jia_key = 0;
                            yinliang--;
                            on_line(yinliang);//音量设置        d2-f0
                    }

                    if(P33 == 0)
                    {
                            Delay20ms();
                            if(P33 == 0)
                            {
                                    zhendong =! zhendong;
                            }
                    }
            }
    }

    void Timer0_Isr(void) interrupt 1
    {
            static int i,pwm_time;
            i++;
            if(i>500)
            {
                    P15 =! P15;
                    i = 0;
            }
            if(keyjia_flag == 1)//判断按下的时间
            {
                    jia_time++;
            }
            if(keyjian_flag == 1)//判断按下的时间
            {
                    jian_time++;
            }
            if(zhendong == 1){
                    pwm_time++;
                    if(pwm_time<PWM_zhankongbi)
                    P35 = 1;
                    if(pwm_time>PWM_zhankongbi&&pwm_time<PWM_zhouqi)
                    P35 = 0;
                    if(pwm_time>PWM_zhouqi)
                    pwm_time = 0;
            }else  P35 = 0;
           
    }
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-23 23:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    5

    回帖

    25

    积分

    新手上路

    积分
    25
    发表于 2024-4-23 23:29:25 来自手机 | 显示全部楼层
    P3=0xff;
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 20:26
  • 签到天数: 86 天

    [LV.6]常住居民II

    13

    主题

    328

    回帖

    750

    积分

    荣誉版主

    热心市民

    积分
    750
    发表于 2024-4-23 23:49:37 | 显示全部楼层
    脱离仿真环境,直接下载固件到单机全速运行试试
    睁开眼睛做场梦~~~
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 02:02
  • 签到天数: 68 天

    [LV.6]常住居民II

    4

    主题

    414

    回帖

    1122

    积分

    金牌会员

    积分
    1122
    发表于 2024-4-24 07:58:24 | 显示全部楼层

    可以在初始化程序中,加入P3=0xff试试
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-4 06:53 , Processed in 0.085427 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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