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

用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 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧