Us_tini_an_ 2021-10-13 20:11 采纳率: 0%
浏览 98

用C语言对流水灯进行中断设计

img


这个是单片机实验的中断程序的设计,需要用C语言进行编写,对于这个中断,在上课的讲解不是很全面,所有求教学

  • 写回答

1条回答 默认 最新

  • 炸弹气旋 2023-05-30 09:00
    关注

    下面是在没有开发板的情况下手撸的一个含有中断的流水灯示例程序,其中包括中断服务函数,和主函数

    
    #include <REG52.H>
    
    unsigned char led = 0xFE;  // 初始LED状态为11111110
    
    void delay(unsigned int t)  // 延时函数
    {
        unsigned int i, j;
        for (i = 0; i < t; i++)
            for (j = 0; j < 125; j++);
    }
    
    void LED() interrupt 0  // 中断服务函数
    {
        if (led == 0x7F)  // 如果已经到达最后一个LED
            led = 0xFE;  // 则重新从第一个LED开始
        else
            led = (led << 1) | 0x01;  // 否则向左移动一个LED
    
        P1 = led;  // 更新LED状态
    
        delay(500);  // 延时一段时间,以便观察效果
    }
    
    void main()
    {
        EA = 1;  // 全局中断使能
        EX0 = 1;  // 外部中断0使能
        IT0 = 1;  // 外部中断0设置为下降沿触发
    
        while (1);  // 等待中断
    }
    
     此代码默认为51单片机,若使用其他的单片机还需配置相关LED的GPIO引脚等操作,不过大体流程如此。
    

    首先使用了外部中断0来触发LED流水灯的移动。当用户按下外部中断0所连接的按键时,处理器将暂停当前工作并执行中断服务函数LED(),在该函数中实现LED流水灯的移动。当LED流水灯移动到最后一个LED时,LED状态重新设置为初始状态,从第一个LED开始向左移动,到此板子上的led就实现了流水灯的效果。
    码字幸苦,望采纳!!!!

    评论 编辑记录

    报告相同问题?

    问题事件

    • 创建了问题 10月13日

    悬赏问题

    • ¥15 使用QT实现can通信
    • ¥15 想要卸载软件(maltab)但是在控制面板的程序和功能中没有要卸载的软件怎么办?
    • ¥15 关于sp验证的一些东西,求告知如何解决,
    • ¥20 关于#javascript#的问题:但是我写的只能接码数字和字符,帮我写一个解码JS问题
    • ¥15 prophet运行报错,如何解决?
    • ¥15 用GPU跑pytorch搭建的LSTM的时候出现了奇怪的报错
    • ¥20 前端数据是从session等作用域拿到的,如何取值继续传递后端呢
    • ¥15 eclipse无法正常运行
    • ¥15 定义了函数,但是无法根据函数定义触发器
    • ¥20 5变量卡诺图化简得出与非门电路图