51单片机程序问题求解?

程序无错,烧录成功
单片机型号普中51实验板
在板子上无运行

#include <REGX52.H>
sbit LED=P2^0;
sbit Motor=P1^0;
sbit key1=P3^1;
sbit key3=P3^2;
sbit key2=P3^0;
sbit key4=P3^3;
void PWM(unsigned char j){
        unsigned char a;
    for(a=0;a<=j;a++)
        Motor=1;
    for(a=0;a<10-j;a++)
        Motor=0;
}
void main(){
    while(1){
    if(key1==0){
        while(key1==0);
        LED=~LED;
  }
    if(key2==0){
        while(key3!=0||key4!=0){
                    PWM(10);}
    }
    if(key3==0){
        while(key2!=0||key4!=0){
                    PWM(4);}
    }
    if(key4==0){
        while(key3!=0||key2!=0){
                    PWM(0);}
    }
 }
}

那就是程序逻辑有错。说说你希望的效果和实际的效果。
以一般的思路来说,我觉得 while(key3!=0||key4!=0)这个 || 应该写成 &&,当然,如果你想法特别,那就不好说了。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7579331
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:51单片机定时器中断函数中变量初始化的问题
  • 除此之外, 这篇博客: 51单片机按键亮灯汇编,作者刚刚开始学习汇编中的 51单片机按键亮灯 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ORG     0000H
    		LCALL   DEF
    		LCALL   ABC
    		LCALL   BCD
    		LCALL   CDE
        	LCALL   MAIN
    DEF:                 ;按下k1,p2.0和p2.7的灯亮起,若想只亮一   	盏灯,即删除其中的一个LED就可以
    		LED0 BIT P2.0
    		LED7 BIT P2.7
    		K1  BIT P3.1
    ABC:                 ;同上
    		LED1 BIT P2.1
    		LED6 BIT P2.6
    		K2  BIT P3.0
    BCD:                 ;同上
    		LED2 BIT P2.2
    		LED5 BIT P2.5
    		K3  BIT P3.2
    CDE:                 ;同上
    		LED3 BIT P2.3
    		LED4 BIT P2.4	
    		K4  BIT P3.3
    DELAY:              ;延时函数
    		MOV    R5,#2
    		MOV    R6,#0
            MOV    R7,#0
    DELAYLOOP:       
    		NOP
            DJNZ   R7,DELAYLOOP
            DJNZ   R6,DELAYLOOP
    		DJNZ   R5,DELAYLOOP
            RET
    KEY1:					;定义按键key1,按下k1,LED0和LED7灯亮起
    		JB K1, KEY_OUT
    		LCALL DELAY 
    		CPL LED0
    		CPL LED7
    		JB K1, KEY_OUT
    		
    KEY2:
    		JB K2, KEY_OUT
    		LCALL DELAY
    		CPL LED1
    		CPL LED6 		
    		JB K2, KEY_OUT
    		
    KEY3:		
    		JB K3, KEY_OUT
    		LCALL DELAY 
    		CPL LED2
    		CPL LED5
    		JB K3, KEY_OUT
    KEY4:		 
    		
    		JB K4, KEY_OUT
    		LCALL DELAY 
    		CPL LED3
    		CPL LED4
    		JB K4, KEY_OUT 	
    KEY_LOOP:	
    		JNB K1, KEY_LOOP 
    		JNB K2, KEY_LOOP 
    		JNB K3, KEY_LOOP 
    		JNB K4, KEY_LOOP 
    KEY_OUT:
    		RET
    MAIN:  	    
    		LCALL  KEY1
    		LCALL  KEY2
    		LCALL  KEY3
    		LCALL  KEY4
            LJMP   MAIN
    		RET
    		
    		END
    
    
  • 您还可以看一下 朱有鹏老师的巫妖王51单片机开发板配套视频课程课程中的 安装51单片机开发环境小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    对于单片机的问题求解,需要提供具体的背景和描述才能给出相应的解答和建议。以下是我对单片机常见问题的一些解决方案的概述:

    1. 计算功率级传递函数的直流增益: 对于计算功率级传递函数的直流增益,可以使用控制系统理论中的方法进行计算。其中,直流增益可以通过测量输入和输出的电压或电流来计算。

    2. 计算功率级极点频率: 计算功率级极点频率的方法可以根据具体的电路和系统进行选择。一种常见的方法是使用频率响应曲线来分析系统的频率特性,并确定极点频率。

    3. 峰值电流控制: 峰值电流控制是用来控制电路中电流的峰值,以达到保护电路和提高效率的目的。可以使用电流传感器来检测电流,并使用控制算法来调整电路的工作状态。

    4. 斜坡补偿: 斜坡补偿是一种常见的控制方法,用来补偿输入电压引起的扰动。可以使用斜坡产生器来生成补偿信号,并将其与输入信号进行比较,从而得出需要的调整量。

    5. 环路设计策略: 环路设计策略是为了保证系统的稳定性和性能。可以采用经典的控制理论方法,如PID控制器,来设计环路,并根据系统需求进行参数调整和优化。

    6. 单片机的有效应用: 单片机在各个领域有着广泛的应用。可以根据具体的需求选择适合的单片机型号,并结合相关的硬件和软件开发工具进行系统设计和开发。

    7. 物联网的特征和特点: 物联网是一种广泛应用于各种感知技术的网络,具有全面感知、可靠传递、智能控制和数据融合等特点。可以根据具体的应用场景和需求选择适合的物联网技术和平台进行开发和部署。

    8. 嵌入式的特点: 嵌入式系统具有专用软硬件、低功耗高可靠性、代码短小、实时性和交互性等特点。可以根据具体的应用需求选择适合的嵌入式系统平台和开发工具进行系统设计和开发。

    以上是对单片机问题求解的一些概述和解决方案的思路,具体的解答和建议需要根据具体的问题和背景进行详细分析,才能给出更具体和准确的解决方案。