发布于 2004-04-23 17:21:03
0楼
贴一下我的程序把,
主程序main:
LD SM0.1
MOVD +0, VD100
MOVD +0, VD104
MOVD +0, VD108
MOVD +0, VD112
MOVD +0, VD116
LDN M0.1
TON T96, +500 //定义对每个端口查询周期为500ms
LD T96
= M0.1 //定义标志位M0.1为T96
R M0.1, 1 //首先置位M0.1
LD M0.1
INCB VB0
AB>= VB0, 5 //如果VB0大于5(选址通道3-1数)
MOVB 0, VB0 //则重新置VB0为0
LD V0.0
= Q0.0
LD V0.1
= Q0.1
LD V0.2
= Q0.2
CALL HSC
子程序HSC:
LD SM0.1
O M0.1
MOVB 16#F8, SMB37 //送控制字给hsc0
MOVD +0, SMD38 //hsc0初始值为0
MOVD +5000, SMD42 //hsc0的预设值为5000(对应的电流为20mA,对应的电压为10v)
HDEF 0, 0 //定义hsc0的工作模式为0
HSC 0
ATCH Stop,12 ATCH time_over, 22
ENI
中断stop:
LD SM0.0
STOP
中断time_over:
LD SM0.0
MOVD HC0, AC0
*D +20, AC0
/D +5000, AC0 //经换算后ac0中存放换算后的模拟值
MOVD +0, SMD38
MOVB 16#D8, SMB37 //送控制字给hsc0
MOVD +0, SMD38 //hsc0初始值为0
MOVD +5000, SMD42
LDB= VB0, 0
MOVD AC0, VD100
LDB= VB0, 1
MOVD AC0, VD104
MOVD +0, SMD38
LDB= VB0, 2
MOVD AC0, VD108
MOVD +0, SMD38
LDB= VB0, 3
MOVD AC0, VD112
MOVD +0, SMD38
LDB= VB0, 4
MOVD AC0, VD116