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日
  • 展开全部

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?