rdregister:procedure; /* 读看门狗状态寄存器 */ sck=0; cs=0; ; /* register read command */ call outbyt(05h); call inbyt; /* status register read in <DAT> */ sck=0; cs=1; end rdregister;
wbyte:procedure; /* 看门狗存储器字节写入子程序 */ declare comm byte; sck=0; cs=0; comm=02h; /* 写指令 02h */ call outbyt(comm); call outbyt(addrl); call outbyt(dat); /* send one byte data to X25043 */ cs=1; sck=0; call time(150); end wbyte;
rbyte:procedure; /*看门狗存储器字节读出子程序 */ declare comm byte; sck=0; cs=0; comm=03h; /* read command */ call outbyt(comm); call outbyt(addrl); call inbyt; /* read one byte to <DAT> */ sck=0; cs=1; end rbyte;
incdata: procedure; /* 参数修改--"加"键处理子程序+ */ if p10=0 then /* 如果K7键按下*/ do; do while p10=0; /* 等待键松开有效 */ call dog; /* 此处必需调用看门狗复位子程序("喂狗"),否则程序将被看门狗复位*/ end; data=data+1; /* 设定值+1 */ if data>99 then data=1; /* 规定设定值的上限*/ L(1)=data MOD 10; /*将设定值的十位数拆出来送给十位数显示变量L(1) */ L(2)=data/10; /*将设定值的个位数拆出来送给个位数显示变量L(2) */ call display(L(1),L(2)); /* 将改变后的设定值送164显示出来*/ call time(200); /* 延时 */ call dog; call time(200); call dog; call wrenable; /* 置存储器写使能 */ addrl=00h; /* 置存储器地址 */ dat=l(1); call wbyte; /* 将变量L(1)的值写入存储器00h位置 */ call wrenable; addrl=01h; dat=l(2); call wbyte; /* 将变量L(2)的值写入存储器01h位置 */ end; end incdata; decdata: PROCEDURE; /* 参数修改---"减"键处理子程序- */ IF p11=0 THEN /* k8 键处理子程序 */ do; do while p11=0; call dog; end; DATA=DATA-1; /* 设定值-1 */ if data=0 then data=99; L(1)=data MOD 10; L(2)=data/10; call display(l(1),l(2)); call dog; call time(200); call dog; call time(200); call dog; call wrenable; addrl=00h; dat=l(1); call wbyte; call wrenable; addrl=01h; dat=l(2); call wbyte; end; END decdata;
starton: PROCEDURE; /* start */ declare sd byte; if p12=0 THEN /* K9键处理子程序 */ do; do while p12=0; call dog; end; if p17=0 then ok=0; /* 如果p17 口线上有信号输入,则运行标志置0 (停止运行)*/ p13=1; /* 置步进电机正向运转 */ call time(200); call dog; do while ok=1; /* 当运行标志为1时,执行速度延时操作 */ do sd= 0 to data; /* 根据设定值 data的数值延时来确定步进电机运行时的脉冲给定速度*/ call dog; end; end; END starton;
step: PROCEDURE; /* step */ declare sd byte; p13=1; /* 置步进电机正向运转 */ call time(200); call dog; IF p33=0 THEN /* k11键处理子程序 */ do; if p17=0 then ok=0; /* 如果p17上有信号输入,则停止运行*/ do while p33=0; do sd= 0 to data; /* 调用延时,调整步进电机的运行速度 */ call dog; call time(2); end; call run; call dog; end; end; ok=0; END step;
back: PROCEDURE; /* 反向运行处理子程序 */ declare sd byte; IF p34=0 THEN do; do while p34=0; call dog; end; if p15=0 then ok=0; /* 反向运行时,如果遇到p15上有信号输入,则停止步进电机运行 */ p13=0; /* 置步进电机反向运行 */ call time(200); call dog; do while ok=1; do sd=0 to data; /*根据设定值调节步进电机的运行速度 */ call dog; call time(2); end; call run; if (p15=0 or p32=0 ) then ok=0; /* p15 或 p32 口线任意一个有信号输入,停止运行 */ end;