学习志 2024-04-21 23:57 采纳率: 0%
浏览 5

proteus仿真结果与代码不匹配

img

img


我keil里面写的是将p2端口调成点亮一个灯,但在仿真里面变成间隔亮一次

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-21 23:57
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,看起来您在使用Proteus进行单片机(AT89C52)的硬件仿真,并且尝试通过Keil编译器编写了一个简单的程序,该程序目的是将P2口设置为高电平(除了最低位),然后进入无限循环,期望这会使得连接到P2口某个引脚的黄色LED持续发光。然而,实际的仿真结果显示,LED是闪烁的,而不是持续亮着。

    首先,我们需要确认您的硬件配置是否正确。在图1中,P2.2被标记为A10,通常情况下,我们不会将LED直接连接到地址线(A10),而是应该将其连接到I/O端口(例如P0、P1、P2)。为了简化问题,让我们假设您已经正确地将LED连接到了P2.0(A8),并且您的电路中有一个上拉电阻(比如10K欧姆)确保当P2.0输出低电平时LED不会亮起。

    接下来,让我们分析一下代码。在main()函数中的第5行,您设置了P2寄存器的值为0XFE,这意味着P2口的所有位都被置为高,除了最低位(P2.0)是低电平。理论上,这应该会使LED保持熄灭状态。但根据您的描述,LED在闪烁,这可能是因为其他原因导致的,例如定时器溢出产生的中断,或者其他部分代码影响了P2口的状态。

    要解决这个问题,可以尝试以下步骤:

    1. 确保没有其他代码影响P2口的值。检查整个程序,特别是中断服务例程(ISR),看是否有任何地方改变了P2寄存器的值。

    2. 检查中断系统设置。确保没有定时器或其他中断源可能导致中断并改变P2口的值。在Keil中,可以通过项目设置 -> C/C++ Build -> Linker -> Options for Target -> Category: MCUs & Memories -> Interrupt Vector Table Configuration 来检查中断向量表设置。

    3. 如果您的程序确实包含中断处理,考虑在主循环中禁用所有中断,以排除它们的影响。在开始无限循环之前添加以下代码:

      EA = 0; // 关闭全局中断
      

      并在结束时重新打开中断:

      while(1) {
          P2 = 0XFE;
          // ...
      }
      EA = 1; // 开启全局中断
      
    4. 最后,确保仿真设置正确。在Proteus中,检查LED元件的属性,确保其模型在数字输入为0时处于熄灭状态,为1时处于点亮状态。

    如果以上步骤都确认无误,但问题仍然存在,那么可能是仿真软件本身的问题或者是硬件连接出现了问题。在这种情况下,您可以尝试更新Proteus软件版本,或者检查硬件连线是否正确,包括电源、信号线以及LED的连接。

    这是一个简化版的代码示例,用于排除干扰因素:

    #include <REGX52.H>
    
    void main(void) {
        EA = 0; // 关闭全局中断
        TRISIO2 = 0; // 设置P2为输出模式
        P2 = 0XFE; // 设置P2口为高电平,除P2.0外
        while (1) {
            // LED应始终保持熄灭
        }
        EA = 1; // 开启全局中断(如果不需要中断功能,可忽略此行)
    }
    

    如果问题依然存在,请提供更多信息,比如完整的代码、详细的硬件连接图,以便更深入地分析问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月21日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件