试设计一个高速计数器的程序,要求如下: (1)、信号源是一个编码器,通过脉冲信号; (2)、当脉冲数为500的奇数倍时,点亮信号灯A,关断信号灯B; (3)、当脉冲数为500的偶数倍时,点亮信号灯B,关断信号灯A; (4)、当总计数值达到50 000时,计数器复位重新开始,整个过程一直循环进行下去。
自己乱编的,不知道对不对,请师傅们帮我指点一下,转成T型图看一下,由于没有人带着,学的好辛苦。
// 计数器初始化
LD SM0.1
MOVB 16#D8, SMB37
MOVD 0, SMD38
HDEF 0, 0
HSC 0
Network 2
// 由于计数器的值是双子所以要转化为字
LD SM0.0
DTI HC0, VW0
Network 3
// 在计数器小于50000的条件下用完全整除法判断是否为500的倍数,如果被整除余数肯定为0,在继续向下判断商除以2是否有余数,余数等于0则是偶数,余数不等于0则是奇数
LD SM0.0
AD< HC0, 50000
MOVW VW0, VW4
AENO
DIV 500, VD2
AENO
AW= VW2, 0
MOVW VW3, VW8
AENO
DIV 2, VD6
AENO
LPS
AW= VW6, 0
= M0.1
LPP
AW<> VW6, 0
= M0.2
Network 4
// q0.1为A灯,Q0.2为B灯
LD M0.1
S Q0.2, 1
R Q0.1, 1
Network 5
LD M0.2
S Q0.1, 1
R Q0.2, 1
Network 6
// 如果计数器大于50000,就等于在初始化计数器,重新开始计数,就这样一直循环下去
LD SM0.0
AD>= HC0, 50000
EU
MOVB 16#D8, SMB37
MOVD 0, SMD38
HSC 0