找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2900|回复: 13
打印 上一主题 下一主题
收起左侧

那位高手帮我设计一个单片机多任务定时控制程序

[复制链接]
跳转到指定楼层
楼主
ID:280226 发表于 2018-1-28 22:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚学单片机不久,对于多任务系统不太了解,特求助大神。想用一只89S52制作一个定时程序控制三只继电器,具体做法是:由三个光电开关感应模块分接P1三个端口,分别控制P2三个端口继电器,当某一模块因物体阻挡,光电模块输出低电平时接通所控继电器工作20分种,20分种到继电器自动断开。当物体离开,光电模恢复输出高电平时,继电器也马上断开停止工作。要求三组可同时工作也可独立工作,互不干扰。希望高手帮我设计一套C51程序,谢谢老师!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2018-1-29 21:16 | 只看该作者
虽然你的要求比较简单,像布置任务的样子一般不会有人给你写程序,这样的事情需要自己做,遇到具体困难再求助。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:280226 发表于 2018-1-30 15:46 | 只看该作者
wulin 发表于 2018-1-29 21:16
虽然你的要求比较简单,像布置任务的样子一般不会有人给你写程序,这样的事情需要自己做,遇到具体困难再求 ...

诚心求教,不妥之处请鉴谅,谢谢您的批评!下回发贴会注意。
回复

使用道具 举报

地板
ID:269508 发表于 2018-2-20 21:16 | 只看该作者
兄弟,做的怎样了?我最近也是在做类似的,可以交流下吗?
回复

使用道具 举报

5#
ID:284323 发表于 2018-2-21 15:31 | 只看该作者
非常容易,自己动手写写代码想一想就知道了  设3个变量 每毫秒加1  时间到了重新计数或停止就行了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:111634 发表于 2018-2-21 16:23 | 只看该作者
你可以用一个定时器中断计时,计满20分种,建立标志1;计满40分种,建立标志2。在主程序中等待,标志1=1,接通继电器工作,同时标志1=0;标志2=1,断开继电器,同时标志2=0。用外中断(物体离开,光电模恢复输出高电平)作高优先级中断,断开继电器。
回复

使用道具 举报

7#
ID:47286 发表于 2018-2-21 17:04 | 只看该作者
先定义计数器0或计数器1作计时器 比如没1s产生一个中断 定义3个全局变量 在对应的中断服务中 每产生一个中断 3个全局变量自加

3个输入端分别对应3个全局变量之一 当有触发时 先给对应的全局变量清零然后打开继电器 即 开始计数 然后判断变量值是否达到设定值 比如你要求的20分钟 如果达到则控制继电器反转 如果计数期间触发状态反转则直接把计数器设置成大于设定值的数字 比如设定20就直接设置成=21 依旧可以触发继电器反转

6楼的方法也可以 不过我习惯尽量不用中断或者尽快共用中断 单片机的中断资源实在太少了 处理速度也不能和PC类的比 中断用的越多相当于耽误的时间越多 开始养成这个习惯利于以后写更大的程序

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:280226 发表于 2018-2-22 10:33 | 只看该作者
本帖最后由 xmcai 于 2018-2-22 10:58 编辑

下面的程序就是用一个光电开关的,当物体遮挡时,光电开关输出高电平,继电器1吸合,5分钟后自动断开,在5分钟内如果物体离开,继电器马上断开,已测试正常。现在需要用到三个光电开关,各自控制三个继电器,有物体时继电器吸合5分钟,当物体离开时,继电器马上断开,三者互不影响。但如何写成多任务系统,我还不熟悉,请高手帮忙完善。(这个光电扫描程序是参照wulin老师的)
#include <reg52.H>
#define uint unsigned int
typedef unsigned int u16;
sbit iR1=P1^0;                                            //红外线端口1定义   
sbit iR2=P1^1;                                            //红外线端口2定义
sbit iR3=P1^5;                                            //红外线端口3定义
sbit Relay1=P0^0;                                         //继电器1端口定义
sbit Relay2=P0^1;                                         //继电器2端口定义
sbit Relay3=P0^2;                                         //继电器3端口定义
//sbit Relay4=P0^3;                                         //继电器4端口定义
/***********************************************
定时函数
************************************************/
void Timer0Init()                                          //50毫秒@12.000MHz
{
        TMOD= 0x01;                                        //设置定时器模式
        TL0 = 0xB0;                                        //设置定时初值
        TH0 = 0x3C;                                        //设置定时初值
              EA=1;                                              //开总中断
        ET0=1;                                             //开定时器0中断
}
/***********************************************
红外开关扫描子程序
************************************************/
void iRscan()                                              //红外开关信号识别子程序
{
         static bit iR_sign1=0;                            //红外开关1有效标志
//               static bit iR_sign2=0;                            //红外开关2有效标志
//               static bit iR_sign3=0;                            //红外开关3有效标志                  
         if(iR1==1)                                         //检测信号如果为1
         {
                                   if(iR_sign1==0)
                 {                        
                        iR_sign1=1;                        //红外开关1有效标志置1
                         TR0 = 1;                          //启动定时器
                         Relay1=0;                         //继电器接通
//                                                                               Relay2=0;
                }
         }
         else                                               //红外开关1信号消失
        {
                 iR_sign1=0;                                //红外开关1有效标志清0
                 Relay1=1;                                  //继电器断开
                                                                 Relay2=1;                                 
                 TR0=0;                                     //关闭定时器
        }
//                                 if(iR2==1)                                         //检测信号如果为1
//         {
//                                   if(iR_sign2==0)
//                 {                        
//                        iR_sign2=1;                        //红外开关1有效标志置1
//                         TR0 = 1;                          //启动定时器
//                         Relay2=0;                         //继电器接通
//                                                                               Relay3=0;
//               }
//         }
//         else                                               //红外开关1信号消失
//        {
//                 iR_sign2=0;                                //红外开关1有效标志清0
//                 Relay2=1;                                  //继电器断开
//                                                                 Relay3=1;                                 
//                 TR0=0;                                     //关闭定时器
//        }
// }
/***********************************************
主函数
************************************************/
void main()
{
         Timer0Init();                                //定时器0初始化
         while(1)
         {
             iRscan();                                //按键扫描
        }
}
/***********************************************
中断函数
************************************************/
void Timer0() interrupt 1   //50毫秒@12.000MHz
{
                                 u16 temp;
         TL0 = 0xB0;                //设置定时初值
         TH0 = 0x3C;                //设置定时初值
                                 temp++;
         if(temp==(20*60)*5)        //20*60为1分钟,5为分钟数
         {
                 temp=0;
                 Relay1=1;          //继电器断开
//                                               Relay2=1;
           }
                                 }

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:213173 发表于 2018-2-22 12:28 | 只看该作者
xmcai 发表于 2018-2-22 10:33
下面的程序就是用一个光电开关的,当物体遮挡时,光电开关输出高电平,继电器1吸合,5分钟后自动断开,在5 ...

在这种情况下多任务使用一个定时器就不能直接操作TR0,而是操作3个标志来分别计时。给你改一下,以达抛砖引玉。
#include <reg52.H>
typedef unsigned char u8;
typedef unsigned int u16;
sbit iR1=P1^0; //红外线端口1定义   
sbit iR2=P1^1; //红外线端口2定义
sbit iR3=P1^5; //红外线端口3定义
sbit Relay1=P0^0;//继电器1端口定义
sbit Relay2=P0^1;//继电器2端口定义
sbit Relay3=P0^2;//继电器3端口定义
//sbit Relay4=P0^3;//继电器4端口定义
bit flag_1=0,flag_2=0,flag_3=0;//计时标志
u16 temp_1,temp_2,temp_3;//中断计数变量
/***********************************************
定时函数
************************************************/
void Timer0Init()//50毫秒@12.000MHz
{
        TMOD= 0x01;  //设置定时器模式
        TL0 = 0xB0;  //设置定时初值
        TH0 = 0x3C;  //设置定时初值
        TR0 = 1;     //开启定时器
        EA=1;        //开总中断
        ET0=1;       //开定时器0中断
}
/***********************************************
红外开关扫描子程序
************************************************/
void iRscan()           //红外开关信号识别子程序
{
        static bit iR_sign1=0; //红外开关1有效标志
        static bit iR_sign2=0; //红外开关2有效标志
        static bit iR_sign3=0; //红外开关3有效标志                  
        if(iR1==1)             //检测iR1信号如果为1
        {
                if(iR_sign1==0)        //防止重复响应
                {                        
                        iR_sign1=1;//红外开关1有效标志置1
                        temp_1=0;  //中断计数变量清0
                        flag_1=1;  //计时标志置1
                        Relay1=0; //继电器接通
                }
        }
        else //红外开关1信号消失
        {
                iR_sign1=0;//红外开关1有效标志清0
                Relay1=1; //继电器断开
        }
        if(iR2==1)  //检测iR2信号如果为1
        {
                if(iR_sign2==0)        //防止重复响应
                {                        
                        iR_sign2=1;//红外开关1有效标志置1
                        temp_2=0;  //中断计数变量清0
                        flag_2=1;  //计时标志置1
                        Relay2=0; //继电器接通
                }
        }
        else //红外开关2信号消失
        {
                iR_sign2=0;//红外开关2有效标志清0
                Relay2=1; //继电器断开
        }
        if(iR3==1) //检测iR3信号如果为1
        {
                if(iR_sign3==0)        //防止重复响应
                {                        
                        iR_sign3=1;//红外开关1有效标志置1
                        temp_3=0;  //中断计数变量清0
                        flag_3=1;  //计时标志置1
                        Relay3=0; //继电器接通
                }
        }
        else //红外开关3信号消失
        {
                iR_sign3=0;//红外开关3有效标志清0
                Relay3=1; //继电器断开
        }
}
/***********************************************
主函数
************************************************/
void main()
{
        Timer0Init();  //定时器0初始化
        while(1)
        {
                iRscan();  //红外开关信号扫描
        }
}
/***********************************************
中断函数
************************************************/
void Timer0() interrupt 1   //50毫秒@12.000MHz
{
        TL0 = 0xB0;                //设置定时初值
        TH0 = 0x3C;                //设置定时初值
        if(flag_1==1)             //如果计时标志为1
        {
                temp_1++;                      //中断计数变量自+1
                if(temp_1>=(20*60)*1)  //20*60为1分钟
                {
                        flag_1=0;          //计时标志置0
                        Relay1=1;          //继电器断开
                }
        }
        if(flag_2==1)             //如果计时标志为1
        {
                temp_2++;                      //中断计数变量自+1
                if(temp_2>=(20*60)*1)  //20*60为1分钟
                {
                        flag_2=0;          //计时标志置0
                        Relay2=1;          //继电器断开
                }
        }
        if(flag_3==1)             //如果计时标志为1
        {
                temp_3++;                      //中断计数变量自+1
                if(temp_3>=(20*60)*1)  //20*60为1分钟
                {
                        flag_3=0;          //计时标志置0
                        Relay3=1;          //继电器断开
                }
        }
}

评分

参与人数 1黑币 +90 收起 理由
admin + 90 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

10#
ID:280226 发表于 2018-2-22 15:37 | 只看该作者
wulin 发表于 2018-2-22 12:28
在这种情况下多任务使用一个定时器就不能直接操作TR0,而是操作3个标志来分别计时。给你改一下,以达抛砖 ...

wulin老师,谢谢您!这个程序一直受到您的帮助指导,受益菲浅。
回复

使用道具 举报

11#
ID:284815 发表于 2018-2-22 17:54 | 只看该作者
那么简答
回复

使用道具 举报

12#
ID:280226 发表于 2018-3-8 15:25 | 只看该作者
wulin 发表于 2018-2-22 12:28
在这种情况下多任务使用一个定时器就不能直接操作TR0,而是操作3个标志来分别计时。给你改一下,以达抛砖 ...

wulin老师,现在我要增加一个强制按钮,按下后不论什么状态,三路继电器均接通15分钟,然后断开。但编译通不过,不知错在哪里,麻烦您再指导修正,不胜感激!谢谢您!
#include <reg52.H>
//typedef unsigned char u8;
typedef unsigned int u16;
#define uint unsigned int
sbit iR1=P1^4; //红外线端口1定义   
sbit iR2=P1^5; //红外线端口2定义
sbit iR3=P1^6; //红外线端口3定义
sbit Relay1=P0^0;//继电器1端口定义
sbit Relay2=P0^1;//继电器2端口定义
sbit Relay3=P0^2;//继电器3端口定义
sbit k=P1^7;     //强制按键定义
bit flag_1=0,flag_2=0,flag_3=0; flag_4=0;//计时标志
u16 temp_1,temp_2,temp_3;temp_4;//中断计数变量
/***********************************************
定时函数
************************************************/
void Timer0Init()//50毫秒@12.000MHz
{
        TMOD= 0x01;  //设置定时器模式
        TL0 = 0xB0;  //设置定时初值
        TH0 = 0x3C;  //设置定时初值
        TR0 = 1;     //开启定时器
        EA=1;        //开总中断
        ET0=1;       //开定时器0中断
}
/***********************************************
红外开关扫描子程序
************************************************/
void iRscan()           //红外开关信号识别子程序
{
        static bit iR_sign1=0; //红外开关1有效标志
        static bit iR_sign2=0; //红外开关2有效标志
        static bit iR_sign3=0; //红外开关3有效标志
        static bit k_sign4=0; //强制开关有效标志       
              static uint  count=0;  //计数变量
        if(iR1==1)             //检测iR1信号如果为1
         {
                 if(iR_sign1==0)        //防止重复响应
                {                        
                         iR_sign1=1;    //红外开关1有效标志置1
                         temp_1=0;      //中断计数变量清0
                         flag_1=1;      //计时标志置1
                         Relay1=0;      //继电器接通
                }
         }
         else                           //红外开关1信号消失
        {
                 iR_sign1=0;            //红外开关1有效标志清0
                 Relay1=1;              //继电器断开
        }
                               
         if(iR2==1)                     //检测iR2信号如果为1
         {
                 if(iR_sign2==0)        //防止重复响应
                {                        
                         iR_sign2=1;    //红外开关2有效标志置1
                         temp_2=0;      //中断计数变量清0
                         flag_2=1;      //计时标志置1
                         Relay2=0;      //继电器接通
                }
         }
         else                           //红外开关2信号消失
        {
                 iR_sign2=0;            //红外开关2有效标志清0
                 Relay2=1;              //继电器断开
        }
                               
         if(iR3==1)                     //检测iR3信号如果为1
         {
                 if(iR_sign3==0)        //防止重复响应
                {                        
                         iR_sign3=1;    //红外开关1有效标志置1
                         temp_3=0;      //中断计数变量清0
                         flag_3=1;      //计时标志置1
                         Relay3=0;      //继电器接通
                }
         }
         else                           //红外开关3信号消失
        {
                 iR_sign3=0;            //红外开关3有效标志清0
                 Relay3=1;              //继电器断开
        }
                                if(k==1)                        //检测手动消毒开关如果为1
                                {
                                        count++;                //消抖计数
               if((count>=500)&&(k_sign4==0))  //防止重复响应
                                                                {
                                                                        k_sign4=1;      //手动消毒开关标志置1
                                          temp_4=0;      //中断计数变量清0
                        flag_4=1;      //计时标志置1
                        Relay1=0;      //继电器接通
                        Relay2=0;      //继电器接通
                        Relay3=0;      //继电器接通
                                                            }       
                                                                }
                                else
                                {
                                              iR_sign1=0;            //红外开关1有效标志清0
                                              iR_sign2=0;            //红外开关2有效标志清0
                                               iR_sign3=0;            //红外开关3有效标志清0
                                              k_sign4=0;            //强制开关有效标志清0
                                              Relay1=1;              //继电器断开
                                              Relay2=1;              //继电器断开
                                              Relay3=1;              //继电器断开
                                        }
                       
/***********************************************
主函数
************************************************/
void main()
{
         Timer0Init();                  //定时器0初始化
        while(1)
         {
                 iRscan();              //红外开关信号扫描
        }
}
/***********************************************
中断函数
************************************************/
void Timer0() interrupt 1                       //50毫秒@12.000MHz
{
        TL0 = 0xB0;                             //设置定时初值
        TH0 = 0x3C;                             //设置定时初值
        if(flag_1==1)                           //如果计时标志为1
         {
                 temp_1++;                      //中断计数变量自+1
                 if(temp_1>=(20*60)*15)          //20*60为1分钟
                {
                         flag_1=0;              //计时标志置0
                         Relay1=1;              //继电器断开
                }
         }
                                 
         if(flag_2==1)                          //如果计时标志为1
         {
                 temp_2++;                      //中断计数变量自+1
                 if(temp_2>=(20*60)*15)          //20*60为1分钟
                {
                         flag_2=0;              //计时标志置0
                         Relay2=1;              //继电器断开
                }
         }
                                 
         if(flag_3==1)                          //如果计时标志为1
         {
                 temp_3++;                      //中断计数变量自+1
                 if(temp_3>=(20*60)*15)          //20*60为1分钟
                {
                         flag_3=0;              //计时标志置0
                         Relay3=1;              //继电器断开
                }
         }
                                  if(flag_4==1)                           //如果计时标志为1
         {
                 temp_4++;                      //中断计数变量自+1
                 if(temp_4>=(20*60)*15)          //20*60为1分钟
                {
                         flag_4=0;              //计时标志置0
                         Relay1=1;              //继电器断开
                                                                               Relay2=1;              //继电器断开
                                                                               Relay3=1;              //继电器断开
                }
         }
}
回复

使用道具 举报

13#
ID:213173 发表于 2018-3-8 21:44 | 只看该作者
xmcai 发表于 2018-3-8 15:25
wulin老师,现在我要增加一个强制按钮,按下后不论什么状态,三路继电器均接通15分钟,然后断开。但编译 ...

编译通不过的主要原因是你添加的语句部分使用了中文{ }符号,现在已经改正并做了调整,K部分的语句只适合用转换开关,不适合按钮。按住15分钟以上显然不合理。如果必须用按钮那程序就要再增加一个标志,按一次置1,执行强制指令,再按一次置0,解除强制为自动。
#include <reg52.H>
//typedef unsigned char u8;
typedef unsigned int u16;
#define uint unsigned int
sbit iR1=P1^4; //红外线端口1定义   
sbit iR2=P1^5; //红外线端口2定义
sbit iR3=P1^6; //红外线端口3定义
sbit Relay1=P0^0;//继电器1端口定义
sbit Relay2=P0^1;//继电器2端口定义
sbit Relay3=P0^2;//继电器3端口定义
sbit k=P1^7;     //强制按键定义
bit flag_1=0,flag_2=0,flag_3=0; flag_4=0;//计时标志
u16 temp_1,temp_2,temp_3;temp_4;//中断计数变量
/***********************************************
定时函数
************************************************/
void Timer0Init()//50毫秒@12.000MHz
{
        TMOD= 0x01;  //设置定时器模式
        TL0 = 0xB0;  //设置定时初值
        TH0 = 0x3C;  //设置定时初值
        TR0 = 1;     //开启定时器
        EA=1;        //开总中断
        ET0=1;       //开定时器0中断
}
/***********************************************
红外开关扫描子程序
************************************************/
void iRscan()           //红外开关信号识别子程序
{
        static bit iR_sign1=0; //红外开关1有效标志
        static bit iR_sign2=0; //红外开关2有效标志
        static bit iR_sign3=0; //红外开关3有效标志
        static bit k_sign4=0; //强制开关有效标志        
        static uint  count=0;  //计数变量
        if(k==1)       //检测手动消毒开关如果为1
        {
                count++;                //消抖计数
                if((count>=500)&&(k_sign4==0))  //防止重复响应
                {
                        k_sign4=1;      //手动消毒开关标志置1
                        temp_4=0;      //中断计数变量清0
                        flag_4=1;      //计时标志4置1
                        flag_1=0;                //计时标志1清0
                        flag_2=0;                //计时标志2清0
                        flag_3=0;                //计时标志3清0
                        Relay1=0;      //继电器1接通
                        Relay2=0;      //继电器2接通
                        Relay3=0;      //继电器3接通
                }        
        }
        else        //强制开关复位执行自动检测
        {
//                iR_sign1=0;            //红外开关1有效标志清0
//                iR_sign2=0;            //红外开关2有效标志清0
//                iR_sign3=0;            //红外开关3有效标志清0
                count=0;                                                //消抖计数清0
                k_sign4=0;            //强制开关有效标志清0
                Relay1=1;              //继电器断开
                Relay2=1;              //继电器断开
                Relay3=1;              //继电器断开

                if(iR1==1)             //检测iR1信号如果为1
                {
                        if(iR_sign1==0)        //防止重复响应
                        {                        
                                iR_sign1=1;    //红外开关1有效标志置1
                                temp_1=0;      //中断计数变量清0
                                flag_1=1;      //计时标志置1
                                Relay1=0;      //继电器接通
                        }
                }
                else                           //红外开关1信号消失
                {
                        iR_sign1=0;            //红外开关1有效标志清0
                        Relay1=1;              //继电器断开
                }
       
                if(iR2==1)                     //检测iR2信号如果为1
                {
                        if(iR_sign2==0)        //防止重复响应
                        {                        
                                iR_sign2=1;    //红外开关2有效标志置1
                                temp_2=0;      //中断计数变量清0
                                flag_2=1;      //计时标志置1
                                Relay2=0;      //继电器接通
                        }
                }
                else                           //红外开关2信号消失
                {
                        iR_sign2=0;            //红外开关2有效标志清0
                        Relay2=1;              //继电器断开
                }
       
                if(iR3==1)                     //检测iR3信号如果为1
                {
                        if(iR_sign3==0)        //防止重复响应
                        {                        
                                iR_sign3=1;    //红外开关1有效标志置1
                                temp_3=0;      //中断计数变量清0
                                flag_3=1;      //计时标志置1
                                Relay3=0;      //继电器接通
                        }
                }
                else          //红外开关3信号消失
                {
                        iR_sign3=0;    //红外开关3有效标志清0
                        Relay3=1;      //继电器断开
                }
        }
}                 
/***********************************************
主函数
************************************************/
void main()
{
        Timer0Init();                  //定时器0初始化
        while(1)
        {
                iRscan();              //红外开关信号扫描
        }
}
/***********************************************
中断函数
************************************************/
void Timer0() interrupt 1                       //50毫秒@12.000MHz
{
        TL0 = 0xB0;                             //设置定时初值
        TH0 = 0x3C;                             //设置定时初值
        if(flag_1==1)                           //如果计时标志为1
        {
                temp_1++;                      //中断计数变量自+1
                if(temp_1>=(20*60)*15)          //20*60为1分钟
                {
                        flag_1=0;              //计时标志置0
                        Relay1=1;              //继电器断开
                }
        }

        if(flag_2==1)                          //如果计时标志为1
        {
                temp_2++;                      //中断计数变量自+1
                if(temp_2>=(20*60)*15)          //20*60为1分钟
                {
                        flag_2=0;              //计时标志置0
                        Relay2=1;              //继电器断开
                }
        }

        if(flag_3==1)                          //如果计时标志为1
        {
                temp_3++;                      //中断计数变量自+1
                if(temp_3>=(20*60)*15)          //20*60为1分钟
                {
                        flag_3=0;              //计时标志置0
                        Relay3=1;              //继电器断开
                }
        }
        if(flag_4==1)                           //如果计时标志为1
        {
                temp_4++;                      //中断计数变量自+1
                if(temp_4>=(20*60)*15)          //20*60为1分钟
                {
                        flag_4=0;              //计时标志置0
                        Relay1=1;              //继电器断开
                        Relay2=1;              //继电器断开
                        Relay3=1;              //继电器断开
                }
        }
}
回复

使用道具 举报

14#
ID:280226 发表于 2018-3-9 09:03 | 只看该作者
wulin 发表于 2018-3-8 21:44
编译通不过的主要原因是你添加的语句部分使用了中文{ }符号,现在已经改正并做了调整,K部分的语句只适合 ...

谢谢wulin老师!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表