有没有活跃一点的51交流QQ群呀?

2020-02-02 09:18发布

        本人菜鸟一名,自学51一段时间(机械专业),其中很多不懂,有问题来论坛发帖也很久才有人回复,大多稍稍点到为止,所以本人想找个好一点的51QQ群,及时交流,更多更好的向51大神们学习。

另外发一下最近一直困扰我的一段程序,发了几次贴,问题还没有解决,再发一次,目的和问题都在里边,望大神们指点,本人不胜感激。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
daxiaolijun
1楼-- · 2020-02-04 02:02
daxiaolijun 发表于 2012-11-21 17:12
呵呵,好像是这样的

帮我看看问题出在哪,不一定非得找出来,给点你认为有问题的地方就OK,3Q!
TANK99
2楼-- · 2020-02-04 07:56
 精彩回答 2  元偷偷看……
daxiaolijun
3楼-- · 2020-02-04 09:54
Anqi90 发表于 2012-11-21 17:20
不是用的rar打的包吗,怎么还要安什么软件...

压缩文件属性石Zip的,应该是一样的吧?能打开,直接点开里面就是hex的文本文档呀。
Anqi90
4楼-- · 2020-02-04 12:12
只有一个说明:

尊敬的用户:

    您当前使用的压缩软件无法直接查看或解压这个压缩包,因其在打包过程中采用
了快压的超高压缩技术。

这里为您列出压缩包中的内容:
1、试验.c


    如要使用压缩包的全部内容,请您使用以下链接下载并安装快压压缩软件。
http://www.kuaizip.com/down/KuaiZip_installer.exe

=======================================================================
快压简介:快压(KuaiZip)是一款免费、方便、快速的压缩和解压缩利器,拥有
一流的压缩技术,是国内第一款具备自主压缩格式的软件。快压自身的压缩格式KZ
具有超大的压缩比和超快的压缩解压速度,兼容 RAR, ZIP 和 7Z 等40余种压缩文
件。快压特有的虚拟化技术,还可挂载压缩包、光驱镜像和虚拟机。
=======================================================================

像这种强行推广的软件我是不会用的
daxiaolijun
5楼-- · 2020-02-04 14:36
Anqi90 发表于 2012-11-21 18:45
只有一个说明:

尊敬的用户:

呵呵,对不起,我用的压缩文件就是快压的,没想到这软件这么霸道。我把程序发在下面吧,认为哪有问题希望大神不吝赐教。

//目的:两个按键控制两个直流电机的加速和减速,长按(>=2S)加速,短按减速,上电时两电机均有个初速。
//问题:在该程序下连接两个电机时按键操作没反应,去掉一个电机按键全都是减速,加速没反应。
//有人给的建议键盘扫描不要一起扫,我分开扫,毛病同上;有人说开关语句里没有default,我觉得不重要,但还是加了,毛病依然。
//(补充:我按这个程序写一个按键控制一个电机时达到目的,到两个按键就没反应了)        帖子发了几篇,还没解决问题,我也没辙了。               
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit U1=P1^1;
sbit U2=P1^2;
sbit KEY1=P3^4;
sbit KEY2=P3^3;

uchar num,num1,num2,keytime,numt,num1_speed,num2_speed;

void delayms(uchar xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}

void keyscan()
{
        uchar keynum=0;

        if((KEY1==0)||(KEY2==0))
        {
                delayms(10);
                if((KEY1==0)||(KEY2==0))
                {
                        while((!KEY1)||(!KEY2))
                        {
                                TR1=1;
                                if(KEY1==0) keynum=1;
                                if(KEY2==0) keynum=2;
                        }
                        TR1=0;
                        keytime=numt;
                        numt=0;
                }

                if(keytime>=40)
                {
                        switch(keynum)
                        {
                                case 1:       
                                {
                                        num1_speed=num1_speed+1;               
                                        if(num1_speed>17)
                                                num1_speed=8;
                                }
                                        keynum=0;
                                        break;

                                case 2:
                                {
                                        num2_speed=num2_speed+1;               
                                        if(num2_speed>17)
                                                num2_speed=8;
                                }       
                                        keynum=0;
                                        break;

                                default: break;                //keynum=0的情况直接跳出
                        }
                }

                if(keytime<40)
                {
                        switch(keynum)
                        {
                                case 1:       
                                {
                                        num1_speed=num1_speed-1;
                                        if(num1_speed<8)
                                                num1_speed=8;
                                }
                                        keynum=0;
                                        break;
                       
                                case 2:
                                {
                                        num2_speed=num2_speed-1;
                                        if(num2_speed<8)
                                                num2_speed=8;
                                }
                                        keynum=0;
                                        break;
                               
                                default: break;
                        }
                }
       
        keytime=0;
        }
}

void init()
{
        TMOD|=0x11;
        TH0=(65536-20)/256;                //20us
        TL0=(65536-20)%256;
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        EA=1;
        ET0=1;                                //开定时器0中断
        ET1=1;                                //开定时器1中断
        TR0=1;                                //启动定时器0
}

void main()
{       
        init();
        num1_speed=12;
        num2_speed=12;
        while(1)
        {
                keyscan();
        }
}

void Time0_Init() interrupt 1    //定时器0作用是控制PWM
{
        TH0=(65536-20)/256; //20us        
        TL0=(65536-20)%256;
        num1++;       
        num2++;

        if(num1<num1_speed)       
                U1=1;
                else U1=0;
                if(num1>17)
                        num1=0;

        if(num2<num2_speed)
                U2=1;
                else U2=0;
                if(num2>17)
                        num2=0;
}

void Time1_Init() interrupt 3       
{
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        numt++;                               
}

renpeng009
6楼-- · 2020-02-04 14:43
我修改了下,Keil软仿通过。因为我没有你的实物,请自行测试。

无标题.png (51.52 KB, 下载次数: 0)

下载附件

2012-11-22 01:52 上传

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit U1=P1^1;
  5. sbit U2=P1^2;
  6. sbit KEY1=P3^4;
  7. sbit KEY2=P3^3;

  8. uchar num,num1,num2,num1_speed,num2_speed;
  9. volatile uint keytime,numt;

  10. void delayms(uchar xms)
  11. {
  12.         uint i,j;
  13.         for(i=xms;i>0;i--)
  14.                 for(j=110;j>0;j--);
  15. }

  16. void keyscan()
  17. {
  18.         uchar keynum=0;

  19.         if((KEY1==0)||(KEY2==0))
  20.         {
  21.                 delayms(5);
  22.                 if((KEY1==0)||(KEY2==0))
  23.                 {
  24.                         TR0=1;
  25.                                                                                                 while((!KEY1)||(!KEY2))
  26.                         {
  27.                                 
  28.                                 if(KEY1==0) keynum=1;
  29.                                 else keynum=2;
  30.                         }
  31.                         TR0=0;
  32.                         keytime=numt;
  33.                         numt=0;
  34.                 }

  35.                 if(keytime>=40)
  36.                 {
  37.                         switch(keynum)
  38.                         {
  39.                                 case 1:        
  40.                                 {
  41.                                         num1_speed=num1_speed+1;               
  42.                                         if(num1_speed>17)
  43.                                                 num1_speed=8;
  44.                                 }
  45.                                         keynum=0;
  46.                                         break;

  47.                                 case 2:
  48.                                 {
  49.                                         num2_speed=num2_speed+1;               
  50.                                         if(num2_speed>17)
  51.                                                 num2_speed=8;
  52.                                 }        
  53.                                         keynum=0;
  54.                                         break;

  55.                                 default: break;                //keynum=0的情况直接跳出
  56.                         }
  57.                 }

  58.                 if(keytime<40)
  59.                 {
  60.                         switch(keynum)
  61.                         {
  62.                                 case 1:        
  63.                                 {
  64.                                         num1_speed=num1_speed-1;
  65.                                         if(num1_speed<8)
  66.                                                 num1_speed=8;
  67.                                 }
  68.                                         keynum=0;
  69.                                         break;
  70.                         
  71.                                 case 2:
  72.                                 {
  73.                                         num2_speed=num2_speed-1;
  74.                                         if(num2_speed<8)
  75.                                                 num2_speed=8;
  76.                                 }
  77.                                         keynum=0;
  78.                                         break;
  79.                                 
  80.                                 default: break;
  81.                         }
  82.                 }
  83.         
  84.         keytime=0;
  85.         }
  86. }

  87. void init()
  88. {
  89.         TMOD|=0x11;
  90.         TH0=(65536-20)/256;                //20us
  91.         TL0=(65536-20)%256;
  92.         TH1=(65536-45872)/256;
  93.         TL1=(65536-45872)%256;
  94.         
  95.         ET0=1;                                //开定时器0中断
  96.         ET1=1;                                //开定时器1中断
  97.         TR1=1;                                //启动定时器0
  98.                                 EA=1;
  99. }

  100. void main()
  101. {        
  102.         init();
  103.         num1_speed=12;
  104.         num2_speed=12;
  105.         while(1)
  106.         {
  107.                 keyscan();
  108.         }
  109. }

  110. void Time0_Init() interrupt 1    using 1//定时器0作用是控制PWM
  111. {

  112.         TH0=(65536-45872)/256;
  113.         TL0=(65536-45872)%256;
  114.         numt++;   
  115. }

  116. void Time1_Init() interrupt 3     using 2   
  117. {
  118.         TH1=(65536-20)/256; //20us        
  119.         TL1=(65536-20)%256;
  120.         num1++;        
  121.         num2++;

  122.         if(num1<num1_speed)        
  123.                 U1=1;
  124.                 else U1=0;
  125.                 if(num1>17)
  126.                         num1=0;

  127.         if(num2<num2_speed)
  128.                 U2=1;
  129.                 else U2=0;
  130.                 if(num2>17)
  131.                         num2=0;                    
  132. }
复制代码

一周热门 更多>