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

用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 将安全信息用到以下对象时发生以下错误:c:dumpstack.log.tmp 另一个程序正在使用此文件,因此无法访问
  • ¥15 速度位置规划实现精确定位的问题
  • ¥15 代码问题:df = pd.read_excel('c:\User\18343\Desktop\wpsdata.xlxs')路径读不到
  • ¥15 为什么视频算法现在全是动作识别?
  • ¥15 编写一段matlab代码
  • ¥15 用Python做岩石类别鉴定软件
  • ¥15 关于调取、提交更新数据库记录的问题
  • ¥15 之前删了盘从下vs2022遇见这个问题 搞了一整天了
  • ¥15 从Freecad中宏下载的DesignSPHysics,出现如下问题是什么原因导致的(语言-python)
  • ¥30 notepad++ 自定义代码补全提示