zgskfolt 发表于 2025-5-29 15:11:08

32G12K128

#include <STC32G.H>
#include "DELAY.H"

#define BEEP P54//定义BEEP,将BEEP替换为P54
bit Run_start=0;//0表示关机,1表示开机
bit Run_working=0;//表示是否正在工作
unsigned int LEDnum=0;
void main()
{
      
      EAXFR=1;            //扩展寄存器(XFR)访问使能
    CKCON=0x00;      //提高访问XRAM速度
    WTST=0x00;         //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    P4M0 = 0x00; P4M1 = 0x00;
    P6M0 = 0x00; P6M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
      P40=0;
      while(1)
      {
      //------------------按下P32键,进行开机启动
                if(P32==0)
                {
                        delay(20);
                        while(P32==0);
                        delay(20);
                        if(Run_start==0)      //关机状态下
                        {
                              Run_start=1;      //将模式切换为开机
                              BEEP=0;
                              delay(10);
                              BEEP=1;
                              P6=0x00;
                              delay(200);
                              P6=0xff;
                        }
                        else
                        {
                              Run_start=0;       //模式切换为关机
                              BEEP=0;
                              delay(10);
                              BEEP=1;
                              P6=0xff;
                              LEDnum=0;          //模式清0
                              Run_working=0;   //工作状态清0
                        }
                }
                //-----------------------------按下P33键,进行模式选择
                if(P33==0)   //在开机模式下才可执行下面操作
                {
                        delay(20);
                        while(P33==0);
                        delay(20);
                        if(Run_start==1)      //在开机模式下才可执行下面操作
                        {
                              if(Run_working==0)//在未启动下可调试
                              {
                                        BEEP=0;
                                        delay(10);
                                        BEEP=1;
                                        if(LEDnum>=8)
                                        {
                                                LEDnum=0;
                                        }
                                        LEDnum++;          //模式灯调节切换
                                        P6=~(0x01<<LEDnum-1);
                            }
                        }
                }
                //--------------------按下P34键,启动功能(LED灯持续闪烁且不可执行其他操作)
                if(P34==0)
                {
                        delay(20);
                        while(P34==0);
                        delay(20);
                        if(LEDnum>0)   //有选择模式下方可执行
                        {
                              BEEP=0;
                              delay(10);
                              BEEP=1;
                        }
                        Run_working=~Run_working;      //不启动与启动交替变换                                                                                                                                                                        
                }
                if(Run_working==1)
                {
                        P6=0xff;
                        delay(500);
                        P6=~(0x01<<LEDnum-1);
                        delay(500);
                }
                else
                {
                        P6=~(0x01<<LEDnum-1);
                }
    }
}
我这个程序时蜂鸣器那章节的作业。在没按P32键之前,先按P34键,之后按P32键。之后按P33键就没反应。长按P33也不行,有时P32也没反应。是什么原因啊冲哥

国芯人工智能 发表于 2025-5-29 15:12:00

尊敬的用户,您好!根据您的描述,您提供的代码和说明似乎属于一个控制台键盘或按键操作的场景。由于您提供的代码中包含了一些特定的变量(如bit、unsigned int)和条件判断,因此我需要进一步了解您想要实现的功能或需求,请您提供更多的细节或明确的目标,以便我可以更好地帮助您优化或完善代码。

如果您有其他问题或需要进一步的解释,请随时告诉我,我会尽力协助您!

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 2025-5-29 15:53:55

你这个P3口都没初始化呀
页: [1]
查看完整版本: 32G12K128