发布于 2003-06-14 16:01:17
0楼
测圆盘转速(圆盘每转输出120个脉冲即I0.0。其他C0,C1,C2,T0,M1.0,均为测转速服务而设)。
闸门为:每450ms内的第一个脉冲上升沿到最后一个上升沿。
为实现外部复位,现已将图中I0.0改为HSC1的外部复位:I1.0。
计数器脉冲现用455K晶振32分频得。
不知为何实现不了计数,请大侠指点。
初始化程序中:
//HSC1初始化
//HSC1:计闸门内脉冲数
LD SM0.0
MOVB 16#F8, SMB47
HDEF 1, 1
MOVD +0, SMD48
MOVD +1000000, SMD52 //因根本不需要预置值,此处乱写了一个值给SMD52,?
ATCH INT_0, 15
ENI
HSC 1
子程序中:
NETWORK 11
LD C0
A T0
DISI
NETWORK 14
LD C0
A C2
MOVD HC1, VD3020
ENI
//计算转速 转/分
//转速放在VD210中,0.00833表示120个齿,0.00833转/齿,需根据实际情况修改。
//VD206为闸门时间,转换成xxx/分;
//455KHZ晶振32分频后T=7.032967E-2ms;1.172161E-006分
LD C0
A C1
LPS
MOVD VD70, VD206
DTR VD206, VD206
*R 1.172161E-006, VD206
MOVR 1.0, VD94
/R VD206, VD94
MOVR VD206, VD214
*R 60000.0, VD214
ITD VW202, VD210
DTR VD210, VD210
MOVR VD210, VD200
/R VD214, VD200
*R 450.0, VD200
TRUNC VD200, VD200
DTI VD200, VW200
AW< VW200, +2
MOVW +2, VW200
LRD
MOVW VW200, VW202
DECW VW202
LRD
*R 0.008333, VD210
LPP
*R VD94, VD210
中断程序
LD SM0.0
MOVB 16#80, SMB47
HSC 1