FC如下:
IN:InSignal Real
DB_No Pointer
DataLength Int
StartAddr Pointer
// function:Analog data left shift
// copy data in DBD【X-P#4.0】 to DBD【X】
L P##StartAddr
LAR1
L D 【AR1,P#2.0】
L DW#16#84000000
-D
T #Start_Addr
L P##DB_No
LAR1
L W 【AR1,P#4.0】
T #DB_Number
//calculate the Max_Addr of the data source
L #DataLength
L 4
*I
SLW 3
L #Start_Addr
+D
T #Buff
L P#4.0
<D
JC EXT
L #Buff
L P#4.0
-D
T #Addr
OPN DB 【#DB_Number】 //open the data source
L #DataLength //load the data length
L 1
-I
LP1: T #Index
L #Addr
L P#4.0
-D
T #Addr_small
L DBD 【#Addr_small】 //shift left
T DBD 【#Addr】
L #Addr_small
T #Addr
L #Index
LOOP LP1
LAR1 #Start_Addr
L #InSignal
T DBD 【AR1,P#0.0】
EXT: SET
SAVE
BEU
只知道功能是每Insignal得电,就将数据记录在DB的某个区域内,类似于堆栈。可是具体程序就看不懂了,尤其是开头。。望达人解释指教。小弟在此谢过~
楼主最近还看过