该用户失联中 2024-10-22 14:50 采纳率: 62.5%
浏览 30
已结题

按要求编写汇编语言,并设计仿真电路图

1、P0.0和P0.1各接两个LED0和LED1,P3.2和P3.3各接两个开关,将INT0设置为电平触发中断方式,将INT1设置为边沿触发中断方式,如果INT0发生中断,点亮LED0,如果INT1发生中断,点亮LED1,分析两种触发方式的不同点。

img

2、P1口接8个发光二极管,利用定时计数器0编写程序,使8个发光二极管轮流点亮,每个二极管点亮100ms,设晶振为6MHZ。(分别利用查询方式、中断方式分别实现)
3、P0接8个LED,P3.2接按钮,如果P3.2按钮按下发生INT0中断,P3.2按钮按下奇数次,点亮LED由高位向低位流水点亮,P3.2按钮按下偶数次,点亮LED由低位向高位流水点亮。
4、P0接8个LED,P1口接8段数码管,P3.2和P3.3各接两个按钮,如果INT0发生中断,点亮LED由高位向低位流水点亮2轮,如果INT1发生中断,点亮8段数码管显示“0-9”2轮。

  • 写回答

29条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-10-22 14:50
    关注
    获得0.30元问题酬金

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    为了实现上述需求,你需要使用PROTEUS进行编程和仿真。首先,我们需要创建一个电路图来表示你的设计。然后,你可以在PROTEUS中编写汇编程序以控制LED和开关的触发信号。最后,你可以通过编程来控制INT0和INT1的触发状态,从而实现LED的亮灭效果。

    以下是一个基本的示例电路图:

    电路图

    在PROTEUS中,我们可以编写如下代码来模拟LED和开关的触发信号:

    #INCLUDE <PROTEUS.H>
    
    #DEFINE LED_PIN 0
    #DEFINE LED_0_PIN 1
    #DEFINE LED_1_PIN 2
    #DEFINE LED_0_STATE 0
    #DEFINE LED_1_STATE 1
    
    #DEFINE INT_PIN 3
    #DEFINE INT_0_PIN 4
    #DEFINE INT_1_PIN 5
    #DEFINE INT_0_STATE 0
    #DEFINE INT_1_STATE 1
    
    VOID SETUP() {
      PINMODE(LED_PIN, OUTPUT);
      PINMODE(LED_0_PIN, OUTPUT);
      PINMODE(LED_1_PIN, OUTPUT);
    
      PINMODE(INT_PIN, INPUT_PULLUP);
    }
    
    VOID LOOP() {
      IF (DIGITALREAD(LED_0_PIN) == LOW && DIGITALREAD(LED_1_PIN) == LOW) {
        DIGITALWRITE(LED_0_PIN, HIGH); // LED0亮
        DIGITALWRITE(LED_1_PIN, LOW); // LED1熄
        SERIAL.PRINTLN("LED0亮");
        DELAY(1000); // 每秒闪烁一次
      } ELSE IF (DIGITALREAD(LED_0_PIN) == LOW || DIGITALREAD(LED_1_PIN) == LOW) {
        DIGITALWRITE(LED_0_PIN, LOW); // LED0熄
        DIGITALWRITE(LED_1_PIN, HIGH); // LED1亮
        SERIAL.PRINTLN("LED1亮");
        DELAY(1000); // 每秒闪烁一次
      }
    }
    

    在这个例子中,我们首先定义了几个寄存器,用于控制LED和开关的状态。然后,在SETUP()函数中,我们在LED和开关上分别设置了输出端口和输入端口,并且在LOOP()函数中,当LED和开关的状态都变为低时,就会执行我们的逻辑。这样就可以实现LED亮起并保持一段时间后,再熄灭的功能。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 创建了问题 10月22日