完全一样的题目呀,真幸运,看我的吧(我的是8052的,没关系的):
汇编程序:
S1 EQU 30H
S2 EQU 31H
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP INTT1
ORG 0100H
MAIN: ANL TMOD,#0FH
ORL TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB EA
SETB ET1
SETB TR1
MOV DPTR,#TABLE
MOV S1,#00H
MOV S2,#00H
LP: MOV A,S2
MOVC A,@A+DPTR
MOV P1,A
AJMP LP
INTT1: PUSH ACC
INC S1
MOV A,S1
CJNE A,#20,NEXTT1
MOV S1,#00H
INC S2
ANL S2,#07H
NEXTT1: POP ACC
RETI
TABLE: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H
C语言程序:
#include<reg52h>
unsigned char s1=0,s2=0;
unsigned char code table[]=
{
0x05,0x0A,0x50,0xA0,0x55,0xAA,0xFF,0x00
};
void main()
{
TMOD=(TMOD&0X0F)|0X10;
TH1=0X3C;
TL1=0XB0;
EA=1;
ET1=1;
TR1=1;
while(1)
{
P1=table[s2];
}
}
void t1(void) interrupt 3 using 0
{
s1++;
if(s1==20)
{
s1=0;
s2++;
s2=s2&0x07;
}
}
步进电机的转速虽说和脉冲频率有关,但不是任何频率都行的。只能在某个特定的范围内调速才行。脉冲频率太快,会丢步,即步进电机转子振荡很厉害。内部不动,外部在动,那是已经失步了,步进电机在一个位置振荡,根本没启动。
频率不对,也即是你给两个脉冲中间的延时不对。最好是用定时器给一个较精确的延时来调试,找出一个可以让它转的合适的延时。我用过类似的,你是想设定每天比如说晚上6到第二天6亮,别的时候灭吧。哈哈。
首先,你要确认你手里的延时开关可以定时超过12小时。
其次,两个延时开关,互相闭锁接线,两个互相给对方断电复位。就是用自己的常开或常闭触点串到对方的供电线路~
再者,需要说明的话,如果没有别的配件的话,上述方法,可能在第一次上电的时候锁死。只是一个小概率事件,重新上电即可。
额外,视频就算了,自己折腾把。这才有感觉,
加一个定时器T0,在梯形图中表示为T0 K60。T0计时器为100ms计时器,所以延时时间为100ms60=6s,
(1)基本延时环节,下图中当线圈得电后T0延时6s后其触点导通
(2)延时断开电路,下图中T0延时6s后断开,Y0失电。
扩展资料:
1、PLC中的定时器相当于继电器系统中的时间继电器。它有一个设定值寄存器(一个字长)、一个当前值寄存器(一个字长)和一个用来储存其输出触点状态的映像寄存器(占二进制的一位),这三个存储单元使用同一个元件号。FX系列PLC的定时器分为通用定时器和积算定时器。
2、常数K可以作为定时器的设定值,也可以用数据寄存器(D)的内容来设置定时器。例如外部数字开关输入的数据可以存入数据寄存器,作为定时器的设定值。通常使用有电池后备的数据寄存器,这样在断电时不会丢失数据。
什么情况下用?做定时,闪烁,等梯形图时用,如计时1小时,可以用m8014带计数器,计60个数;再如可以用其串联输出点y,使y每1分钟闪烁1次。等等
K60中计数60中的含义是什么?
c0 k60 为:c0计数60次,到60次后c0的常开触点动作(闭合),常闭触点断开。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)