电磁炮
0
一个简单的单片机控制电磁枪程序
着迷者1 2013-1-5 14:17:40
刚学单片机C语言不久,只会用简单的单片机程序来控制可控硅的导通,因可控硅导通后不用关断,所以也就没有加入关断程序,只有在可控硅全部触发后给于复位,延时的时间只要调整a的值就可以,因还没有用到实用中所以只是随便写了一个数。还请高手指点,程序如下
#include<reg52.h>
unsigned int a;
sbit S=P1^0;
sbit O1=P2^0;
sbit O2=P2^1;
sbit O3=P2^2;
sbit O4=P2^3;
sbit O5=P2^4;
sbit O6=P2^5;
sbit O7=P2^6;
sbit O8=P2^7;
sbit O9=P3^0;
sbit F=P3^1;
void delay20ms(void)
{  
unsigned char i,j;
  for(i=0;i<100;i++)
   for(j=0;j<100;j++)
    
}
void main()
{
while(1)
{
P0=0xff;
P1=0xff;
P2=0x00;
P3=0x00;
if(S==0)
{
  delay20ms();
   if(S==0)
   {
    O1=1;
a=3;
    while(a--);
    O2=1;
a=3;
    while(a--);
    O3=1;
    a=3;
while(a--);
a=3;
while(a--);
    O4=1;
a=3;
while(a--);
O5=1;
a=3;
while(a--);
O6=1;
a=3;
while(a--);
O7=1;
a=3;
while(a--);
O8=1;
a=3;
while(a--);
O9=1;
a=3;
while(a--);
F=1;
a=3;
while(a--);
      
   }
}
while(S==0)
;
}
}
+10  美国28注册币    听我说瞎话   2013-01-06   看不懂上午撸过.....坐等友友教我,哈哈
2013-1-5 16:05:22
1楼
0
额。。有点简陋。

多加个开火保险检测,防止误触发。
2013-8-5 21:18:33
2楼
0
楼主能不能 把单片机控制可控硅的电路给一下啊![s:256]  我的电路有问题! 给个指教啊![s:261]牛人!
2013-8-12 10:16:53
3楼
0
学了不久,不过我看上去你学了比我久,我学的点点而已
2013-12-3 23:48:36
4楼
0
后一级的起动时间有没有太快了啊,才减三次就起动下一级。确定是算好的?
2014-6-15 14:12:56
5楼
0
神马情况,你的单片机程序全不全呀,我照你的写,只是修改延迟时间,提示错误太多,好像第一句都有问题,提示“&”错误
2014-6-16 17:58:39
6楼
0
你用什么编译软件?
我用Keil uVision3编译软件,第一句就提示错误
7楼
0
编写程序这事累吗,在那里能学到[s:13]
8楼
0
貌似很多错误?还是我的编译器有问题?
9楼
0
第一句是这个:#include<reg52.h>
10楼
0
把第一句改成如上,错误如下:LED.C(54): error C202: 'O7': undefined identifier
LED.C(57): error C202: 'O8': undefined identifier
LED.C(60): error C202: 'O9': undefined identifier
LED.C(63): error C202: 'F': undefined identifier
LED.C(69): error C202: 'S': undefined identifier
Target not created
按照错误提示改了,错误越改越多,我用Keil uVision3编译软件,不知道什么原因
11楼
0
将所有的     <     替换成    <    即可。

#include<reg52.h>


unsigned int a;
sbit S=P1^0;
sbit O1=P2^0;
sbit O2=P2^1;
sbit O3=P2^2;
sbit O4=P2^3;
sbit O5=P2^4;
sbit O6=P2^5;
sbit O7=P2^6;
sbit O8=P2^7;
sbit O9=P3^0;
sbit F=P3^1;
void delay20ms(void)
{  
unsigned char i,j;
  for(i=0;i<100;i++);
   for(j=0;j<100;j++) ;
}
void main()
{
while(1)
{
P0=0xff;
P1=0xff;
P2=0x00;
P3=0x00;
if(S==0)
{
  delay20ms();
   if(S==0)
   {
    O1=1;
a=3;
    while(a--);
    O2=1;
a=3;
    while(a--);
    O3=1;
    a=3;
while(a--);
a=3;
while(a--);
    O4=1;
a=3;
while(a--);
O5=1;
a=3;
while(a--);
O6=1;
a=3;
while(a--);
O7=1;
a=3;
while(a--);
O8=1;
a=3;
while(a--);
O9=1;
a=3;
while(a--);
F=1;
a=3;
while(a--);
      
   }
}
while(S==0)
;
}
}
12楼
0
终于看到了期待已久的Build target 'Target 1'
compiling s.c...
linking...
Program Size: data=11.0 xdata=0 code=291
creating hex file from "s"...
"s" - 0 Error(s), 0 Warning(s).
非常感谢liunian198,不然这几天头都大了,如果能告诉我a=3和微秒的换算关系,那就太好了
2014-6-19 09:27:41
13楼
0
w1s2n3g 发表于 2014-6-17 16:15
终于看到了期待已久的Build target 'Target 1'
compiling s.c...
linking...


设置好时钟周期后,在调试里面调试候的时候,就可以看到执行每条指令的时间。以24M时钟周期为例,每条基本指令(比如给引脚赋高低电平)基本都是2us,其余有调取函数的,不同函数有不同的调取时间和返回时间,基本都在10us内。while(a--)刚我调试了一下,执行时间为:a*4.5us+5us(跳出时间)。
2016-2-4 19:18:12
14楼
0
请问这个什么情况下s才能为0
15楼
0
大家看看,我的车咋样258825

2016-2-9 19:59:10
16楼
0
学习了,不知道有没有用
2019-3-27 19:00:50
17楼
0

2019年考古的路过,问个问题,就是其中a=3应该是预设值吧,最后调整的时候每一级的a值应当都是不同的?

2019-3-29 01:14:01
18楼
0

@powkp

应该是的

想参与大家的讨论?现在就 登录 或者 注册。