有没有活跃一点的51交流QQ群呀?
本人菜鸟一名,自学51一段时间(机械专业),其中很多不懂,有问题来论坛发帖也很久才有人回复,大多稍稍点到为止,所以本人想找个好一点的51QQ群,及时交流,更多更好的向51大神们学习。另外发一下最近一直困扰我的一段程序,发了几次贴,问题还没有解决,再发一次,目的和问题都在里边,望大神们指点,本人不胜感激。 q群是个最不方便交流的东西,,{:smile:} wkman 发表于 2012-11-21 15:10 static/image/common/back.gif
q群是个最不方便交流的东西,,
{:2_28:} {:2_25:} 关键是自己学,我觉得找个交流群总比自己想当然要好得多。 没有东西啊 WXF_mabg 发表于 2012-11-21 15:47 static/image/common/back.gif
没有东西啊
不会吧?我把hex文件压缩了,再传下吧 活跃意味着全是新手 qq群,一帮人问问题,即使有人回答,也都是日经问题,,没有一点积累。。。有问题还是论坛比较好 感觉51没多少东西,做个数码管时钟基本就了解的差不多了,剩下的就是熟悉相关的外设了
要找个专门讨论51的恐怕不太容易吧 yuyu87 发表于 2012-11-21 16:14 static/image/common/back.gif
活跃意味着全是新手
呵呵,好像是这样的 Anqi90 发表于 2012-11-21 16:39 static/image/common/back.gif
感觉51没多少东西,做个数码管时钟基本就了解的差不多了,剩下的就是熟悉相关的外设了
要找个专门讨论51的 ...
我觉得你说的这些有道理,大部分我也按这个做的,但是到实际脱离书本自己想做点东西的时候还是好多无从下手。能看下我那个程序问题出在哪吗?谢谢! renpeng009 发表于 2012-11-21 16:30 static/image/common/back.gif
楼上说的是实情
哎,俺也知道事实就这样,但论坛我也发了,没什么结果,估计大神们都不屑看这些新手帖。帮我看下我的程序到底出在哪好吗?给点提示,谢谢。折腾我好久了。 daxiaolijun 发表于 2012-11-21 17:15 static/image/common/back.gif
我觉得你说的这些有道理,大部分我也按这个做的,但是到实际脱离书本自己想做点东西的时候还是好多无从下 ...
给点提示吧,谢谢!!! 不是用的rar打的包吗,怎么还要安什么软件... daxiaolijun 发表于 2012-11-21 17:12 static/image/common/back.gif
呵呵,好像是这样的
帮我看看问题出在哪,不一定非得找出来,给点你认为有问题的地方就OK,3Q! 只有卖开发板的才会建一些群,你找一下。 Anqi90 发表于 2012-11-21 17:20 static/image/common/back.gif
不是用的rar打的包吗,怎么还要安什么软件...
压缩文件属性石Zip的,应该是一样的吧?能打开,直接点开里面就是hex的文本文档呀。 只有一个说明:
尊敬的用户:
您当前使用的压缩软件无法直接查看或解压这个压缩包,因其在打包过程中采用
了快压的超高压缩技术。
这里为您列出压缩包中的内容:
1、试验.c
如要使用压缩包的全部内容,请您使用以下链接下载并安装快压压缩软件。
http://www.kuaizip.com/down/KuaiZip_installer.exe
=======================================================================
快压简介:快压(KuaiZip)是一款免费、方便、快速的压缩和解压缩利器,拥有
一流的压缩技术,是国内第一款具备自主压缩格式的软件。快压自身的压缩格式KZ
具有超大的压缩比和超快的压缩解压速度,兼容 RAR, ZIP 和 7Z 等40余种压缩文
件。快压特有的虚拟化技术,还可挂载压缩包、光驱镜像和虚拟机。
=======================================================================
像这种强行推广的软件我是不会用的 Anqi90 发表于 2012-11-21 18:45 static/image/common/back.gif
只有一个说明:
尊敬的用户:
呵呵,对不起,我用的压缩文件就是快压的,没想到这软件这么霸道。我把程序发在下面吧,认为哪有问题希望大神不吝赐教。
//目的:两个按键控制两个直流电机的加速和减速,长按(>=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++;
}
我修改了下,Keil软仿通过。因为我没有你的实物,请自行测试。
#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,num1_speed,num2_speed;
volatile uint keytime,numt;
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(5);
if((KEY1==0)||(KEY2==0))
{
TR0=1;
while((!KEY1)||(!KEY2))
{
if(KEY1==0) keynum=1;
else keynum=2;
}
TR0=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;
ET0=1; //开定时器0中断
ET1=1; //开定时器1中断
TR1=1; //启动定时器0
EA=1;
}
void main()
{
init();
num1_speed=12;
num2_speed=12;
while(1)
{
keyscan();
}
}
void Time0_Init() interrupt 1 using 1//定时器0作用是控制PWM
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
numt++;
}
void Time1_Init() interrupt 3 using 2
{
TH1=(65536-20)/256; //20us
TL1=(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;
} renpeng009 发表于 2012-11-22 01:53 static/image/common/back.gif
我修改了下,Keil软仿通过。因为我没有你的实物,请自行测试。
非常非常感谢,我会好好看看,好人一生平安!!!{:smile:} 本帖最后由 Anqi90 于 2012-11-22 14:56 编辑
按键检测里最好加一个超时跳出,这里面: while((!KEY1)||(!KEY2))
这样就不会是松开按键以后才有反应,而是按到两秒就开始动作了
不过这样的话还要加一个标志位,标志按键按下后是否抬起来过,不然一循环又检测到按键按下了,其实是上次的还没抬起来
按键的记录最好也是分开保存, 而不是把两个按键都放一个变量里,这样两个键同时操作也没问题
当然相应的控制部分也需要变一下
总之就是设4个变量,比如key1_down, key2_down, key1_up, key2_up
只有在up之后才检测是否down,down之后只检测是否up
同样的按键时间也会用到两个,可以在按键按下的时候记录一个起始时间,抬起时再记录一个终止时间,这样就可以计算出按下时间,也不复杂
以上只是看了你的代码后的一些想法,可能对你目前的问题没有多大帮助,不过根据你的描述感觉可能和两个按键的检测有关
先把按键检测的逻辑理清楚吧,感觉问题不是很复杂,要有信心啊
=========修改错别字 170548848这个群还不错 上路新手 发表于 2012-11-22 11:17 static/image/common/back.gif
170548848这个群还不错
{:victory:} 加进去看看。3Q Anqi90 发表于 2012-11-22 10:25 static/image/common/back.gif
按键检测里最好加一个超时跳出,这里面: while((!KEY1)||(!KEY2))
这样就不会是松开按键以后才有反应,而 ...
乍一听起来有点晕,得好好消化你的意见。非常感谢你的意见,好人一生平安!3Q!
页:
[1]