Cmcoo 2022-12-11 13:36 采纳率: 100%
浏览 84
已结题

51单片机程序纠正错误

我是想要实现按下P3.3按钮后,4个灯按1-3-4-2顺序依次点亮,如此循环。再次按下p3.3按钮后,灯全灭,


****现在遇到的问题是:程序仿真结果为只有D1灯亮,没有D3-4-2不亮

img

img

程序如下

#include<reg52.h>                        //51单片机头文件
#define uchar unsigned char           //把 unsigned char 宏定义为 uchar
uchar i=0;
uchar dianhuo[4]={0xEF,0xBF,0x7F,0xDF};    //气缸点火顺序 1,3,4,2
bit flag=0;
void main ()          //主函数
{
TMOD=0x06;              //设置为T0计数方式2
TH0=0xff;
TL0=0xF6;          //给定初值,满十个脉冲
EA=1;                  //总中断开关闭合
EX1=1;                  //TNT0开关闭合
IT1=1;                  //脉冲触发
ET0=1;                  //T0开关闭合
TR0=1;            //启动T0
while(1){          //一直循环

if (flag==1)  {P2=dianhuo[i];}    
else  {    P2=0xff;    i=0;}   //给1缸点火
}
}
void xunhuan1 () interrupt 1      //中断函数,实现点火循环
{static unsigned char j=0; 
TH0=0xff;
    TL0=0xF6;    
   i++; 
if (j==10) {i++; j=0;    }           //循环函数,i+1
if(i>3) i=0;
}
void qidong1() interrupt 2        //中断函数,给1缸点火,
{
    flag=!flag;
}
    

  • 写回答

4条回答 默认 最新

  • 智者知已应修善业 2022-12-11 17:54
    关注
    #include<reg52.h>                        //51单片机头文件
    #define uchar unsigned char           //把 unsigned char 宏定义为 uchar
    uchar i=0,j=0;
    uchar dianhuo[4]={0xEF,0xBF,0x7F,0xDF};    //气缸点火顺序 1342
    bit flag=0;
    void main ()          //主函数
    {
    TMOD=0x06;              //设置为T0计数方式2
    TH0=0xff;
    TL0=0xf6;          //给定初值,满十个脉冲
    EA=1;                  //总中断开关闭合
    
        EX1=1;                  //TNT0开关闭合
    IT1=1;                  //脉冲触发
    
        ET0=1;                  //T0开关闭合
    TR0=1;            //启动T0
    while(1){          //一直循环
    if (flag==1)  {P2=dianhuo[i];}    
    else  {    P2=0xff;    i=0;}   //1缸点火
    }
    }
    void xunhuan1() interrupt 1      //中断函数,实现点火循环
    {
       j++; 
    if (j==10) {i++; j=0;  
      }           //循环函数,i+1
    if(i>3) i=0;
    }
    void qidong1() interrupt 2        //中断函数,给1缸点火,
    {
        flag=!flag;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 修改了问题 12月11日
  • 修改了问题 12月11日
  • 展开全部

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。