📄 6-2.txt
字号:
M:DO;
DECLARE R0 WORD AT(00H);
DECLARE AD_COMMAND BYTE AT(02H);
DECLARE AD_RESULT WORD AT(02H);
DECLARE HSI_MODE BYTE AT(03H);
DECLARE HSO_TIME WORD AT(04H);
DECLARE HSI_TIME WORD AT(04H);
DECLARE HSO_COMMAND BYTE AT(06H);
DECLARE HSI_STATUS BYTE AT(06H);
DECLARE SBUF BYTE AT(07H);
DECLARE INT_MASK BYTE AT(08H);
DECLARE INT_PENDING BYTE AT(09H);
DECLARE WATCHDOG BYTE AT(0AH);
DECLARE TIMER1 WORD AT(0AH);
DECLARE TIMER2 WORD AT(0CH);
DECLARE BAUD_RATE BYTE AT(0EH);
DECLARE IOPORT0 BYTE AT(0EH);
DECLARE IOPORT1 BYTE AT(0FH);
DECLARE IOPORT2 BYTE AT(10H);
DECLARE SP_CON BYTE AT(11H);
DECLARE SP_STATE BYTE AT(11H);
DECLARE wsr BYTE AT(14H);
DECLARE IOC0 BYTE AT(15H);
DECLARE IOS0 BYTE AT(15H);
DECLARE IOC1 BYTE AT(16H);
DECLARE IOS1 BYTE AT(16H);
DECLARE PWM BYTE AT(17H);
DECLARE IOS2 BYTE AT(17H);
DECLARE W79 BYTE AT(301h);
declare w79d byte at(300h);
declare (porta,portb,portc,portd) byte at(400h);
declare (pta,ptb,ptc,ptd) byte at(500h);
declare keyy(16) byte public data(00h,10h,20h,30h,08h,18h,28h,38h,09h,
19h,29h,39h,01h,11h,21h,31h);
declare (numg,num1,num2,num3,num1g,num2g,num3g,
fcung,f11g,f12g,f13g,f11,f12,f13,f0,f1,f2,f3,f4,
thirdg,
timg,tim1g,tim2g,tim3g,tim4g,tim1,tim2,tim3,tim4,
shiledg,sl1g,sl2g,sl3g,sl4g,sl1,sl2,sl3,sl4,
lokslg,loksl1g,loksl2g,loksl3g,loksl4g,loksl1,loksl2,loksl3,loksl4,
disslg,dissl1g,dissl2g,dissl3g,dissl4g,dissl1,dissl2,dissl3,dissl4) byte at(8000h);
declare (lokadrg,lokadr1g,lokadr2g,lokadr3g,lokadr4g,lokadr1,lokadr2,lokadr3,lokadr4,
lokmerg,lokmer1g,lokmer2g,lokmer3g,lokmer4g,
lokmer1,lokmer2,lokmer3,lokmer4,
lokerrg,lokerr1g,lokerr2g,lokerr3g,lokerr4g,lokerr1,
lokerr2,lokerr3,lokerr4,
lokfirg,lokfir1g,lokfir2g,lokfir3g,lokfir4g,
lokfir1,lokfir2,lokfir3,lokfir4,
datag,year1g,year2g,moun1g,moun2g,day1g,day2g,
year1,year2,year3,year4,moun1,moun2,day1,day2,
h11,h12,h13,h14) byte at(8200h);
declare key byte;
declare (i,ii,iii,j,upp,lockn4,ping,pingbi,prnumb) byte;
declare (b,a,c,d,t1,latt,latter,zsd87,zsd88,zsd89,pt8255,null) word;
declare (ms,tem,temp,fire,error,err24,err5,errbd,errzx,ren7) byte;
declare (sec,min,hour,g,g1,l,m,k,kw,yj,ysbj,soji,fy) byte;
declare (ss,llvv,ff,ll,vv,max,tiao,tiao1,tiao2,tiao3) byte;
declare (lokn4,lokn5,lokn6,lokn7,lokfir,lokerr) byte;
declare (low1,high1,low2,high2,low3,high3,low4,high4) word;
declare (qh,bwh,flor,numb,qd,qdo,decharg,estep,chargtim,ctm,rebin,ptm) byte;
declare kwh byte at(.kw+1);
/* 火警 */
declare test1(97) byte data (9h,8h,0fh,2ah,
00h,00h,80h,70h,00h,00h,00h,0ffh,00h,80h,40h,20h,30h,00h,00h,00h,
80h,92h,8ah,0bfh,0aah,0bbh,0cah,0fah,84h,0a7h,0aah,92h,0aeh,0e2h,0a0h,00h,
00h,00h,00h,00h,00h,00h,18h,3ch,3ch,18h,
0dh,0fh,2ah,
00h,81h,40h,20h,10h,0ch,03h,00h,03h,0ch,10h,20h,40h,0c0h,40h,00h,
00h,00h,00h,0eah,0aah,0aah,0aah,0aah,0aah,0aah,0aah,0eah,00h,00h,00h,00h,
00h,00h,00h,00h,00h,00h,0ch,1eh,1eh,0ch,
0dh,9h,10h,0dh,20h,0dh);
/* 故障 */
declare test2(97) byte data (9h,8h,0fh,2ah,
10h,10h,10h,0ffh,10h,18h,50h,20h,0d0h,1fh,10h,10h,0f0h,18h,10h,00h,
00h,0feh,22h,5ah,86h,10h,0d2h,56h,5ah,53h,5ah,56h,0f2h,58h,10h,00h,
00h,00h,00h,00h,00h,00h,18h,3ch,3ch,18h,
0dh,0fh,2ah,
00h,7fh,21h,21h,21h,7fh,80h,80h,43h,24h,18h,24h,43h,0c0h,40h,00h,
00h,0ffh,08h,10h,27h,20h,27h,25h,25h,0fdh,25h,25h,27h,20h,20h,00h,
00h,00h,00h,00h,00h,00h,0ch,1eh,1eh,0ch,
0dh,9h,10h,0dh,20h,0dh);
/* 自检 */
declare test3(163) byte data (9h,8h,0fh,2ah,
00h,00h,00h,0f8h,48h,4ch,4ah,49h,48h,48h,48h,0fch,08h,00h,00h,00h,
10h,10h,0d0h,0ffh,10h,50h,20h,50h,4ch,43h,4ch,50h,20h,60h,20h,00h,
00h,00h,00h,00h,00h,00h,18h,3ch,3ch,18h,
0dh,0fh,2ah,
00h,00h,00h,0ffh,44h,44h,44h,44h,44h,44h,44h,0ffh,00h,00h,00h,00h,
04h,03h,00h,0ffh,41h,42h,42h,5ch,40h,5fh,40h,50h,4eh,64h,40h,00h,
00h,00h,00h,00h,00h,00h,0ch,1eh,1eh,0ch,
0dh,9h,10h,0dh,20h,0dh,
41h,52h,45h,41h,30h,31h,3ah,20h,30h,30h,20h,0dh,
41h,52h,45h,41h,30h,32h,3ah,20h,30h,30h,20h,0dh,
41h,52h,45h,41h,30h,33h,3ah,20h,30h,30h,20h,0dh,
41h,52h,45h,41h,30h,34h,3ah,20h,30h,30h,20h,0dh,
39h,37h,8ch,31h,31h,8dh,31h,30h,8eh,20h,30h,30h,3ah,30h,30h,
0dh,20h,0dh);
declare test4(179) byte data (9h,8h,0fh,4ah,
00h,00h,90h,88h,44h,4bh,32h,12h,32h,4ah,46h,82h,80h,80h,80h,00h,
00h,0f8h,48h,48h,48h,48h,0ffh,48h,48h,48h,48h,0fch,08h,00h,00h,00h,
10h,10h,10h,0ffh,10h,18h,50h,20h,0d0h,1fh,10h,10h,0f0h,18h,10h,00h,
00h,0feh,22h,5ah,86h,10h,0d2h,56h,5ah,53h,5ah,56h,0f2h,58h,10h,00h,
00h,00h,00h,00h,00h,00h,7ch,0feh,0feh,7ch,
0dh,0fh,4ah,
01h,01h,00h,0ffh,49h,49h,49h,7fh,49h,49h,49h,0ffh,00h,01h,00h,00h,
00h,07h,02h,02h,02h,02h,3fh,42h,42h,42h,42h,47h,40h,70h,00h,00h,
00h,7fh,21h,21h,21h,7fh,80h,80h,43h,24h,18h,24h,43h,0c0h,40h,00h,
00h,0ffh,08h,10h,27h,20h,27h,25h,25h,0fdh,25h,25h,27h,20h,20h,00h,
00h,00h,00h,00h,00h,00h,10h,3bh,3bh,10h,
0dh,9h,10h,0dh,20h,0dh,
39h,37h,8ch,31h,31h,8dh,31h,30h,8eh,20h,30h,30h,3ah,30h,30h,
0dh,20h,0dh);
declare test5(179) byte data (9h,8h,0fh,4ah,
00h,00h,00h,0f1h,12h,14h,10h,10h,10h,14h,12h,0f9h,10h,00h,00h,00h,
00h,20h,30h,0ach,63h,20h,20h,20h,20h,0ffh,90h,92h,94h,0d0h,80h,00h,
10h,10h,10h,0ffh,10h,18h,50h,20h,0d0h,1fh,10h,10h,0f0h,18h,10h,00h,
00h,0feh,22h,5ah,86h,10h,0d2h,56h,5ah,53h,5ah,56h,0f2h,58h,10h,00h,
00h,00h,00h,00h,00h,00h,7ch,0feh,0feh,7ch,
0dh,0fh,4ah,
20h,18h,00h,3bh,41h,41h,45h,49h,59h,41h,41h,73h,00h,08h,30h,00h,
20h,62h,23h,12h,12h,12h,41h,41h,21h,17h,18h,24h,42h,80h,0e0h,00h,
00h,7fh,21h,21h,21h,7fh,80h,80h,43h,24h,18h,24h,43h,0c0h,40h,00h,
00h,0ffh,08h,10h,27h,20h,27h,25h,25h,0fdh,25h,25h,27h,20h,20h,00h,
00h,00h,00h,00h,00h,00h,10h,3bh,3bh,10h,
0dh,9h,10h,0dh,20h,0dh,
39h,37h,8ch,31h,31h,8dh,31h,30h,8eh,20h,30h,30h,3ah,30h,30h,
0dh,20h,0dh);
declare test6(179) byte data (9h,8h,0fh,4ah,
00h,08h,08h,08h,08h,08h,09h,0feh,08h,08h,08h,88h,0ch,08h,00h,00h,
00h,0f8h,48h,48h,48h,48h,0ffh,48h,48h,48h,48h,0fch,08h,00h,00h,00h,
10h,10h,10h,0ffh,10h,18h,50h,20h,0d0h,1fh,10h,10h,0f0h,18h,10h,00h,
00h,0feh,22h,5ah,86h,10h,0d2h,56h,5ah,53h,5ah,56h,0f2h,58h,10h,00h,
00h,00h,00h,00h,00h,00h,7ch,0feh,0feh,7ch,
0dh,0fh,4ah,
40h,40h,41h,41h,41h,41h,41h,7fh,41h,41h,41h,41h,41h,60h,40h,00h,
00h,07h,02h,02h,02h,02h,3fh,42h,42h,42h,42h,47h,40h,70h,00h,00h,
00h,7fh,21h,21h,21h,7fh,80h,80h,43h,24h,18h,24h,43h,0c0h,40h,00h,
00h,0ffh,08h,10h,27h,20h,27h,25h,25h,0fdh,25h,25h,27h,20h,20h,00h,
00h,00h,00h,00h,00h,00h,10h,3bh,3bh,10h,
0dh,9h,10h,0dh,20h,0dh,
39h,37h,8ch,31h,31h,8dh,31h,30h,8eh,20h,30h,30h,3ah,30h,30h,
0dh,20h,0dh);
declare test(200) byte at(9400h);
declare toa(3) structure(mer word,ave byte) at(8400h);
declare tob(3) structure(mer word,ave byte) at(8420h);
declare toc(3) structure(mer word,ave byte) at(8440h);
declare tod(3) structure(mer word,ave byte) at(8480h);
declare tna(64) structure(e1 byte,e2 byte,e3 byte,
f1 byte,f2 byte,f3 byte) at(8800h);
declare tnb(64) structure(e1 byte,e2 byte,e3 byte,
f1 byte,f2 byte,f3 byte) at(8a00h);
declare tnc(64) structure(e1 byte,e2 byte,e3 byte,
f1 byte,f2 byte,f3 byte) at(8d00h);
declare tnd(64) structure(e1 byte,e2 byte,e3 byte,
f1 byte,f2 byte,f3 byte) at(9100h);
declare tor(256) structure(ten byte,fir byte,err byte,mer word,flor byte,soji byte,
numb byte,ready byte,pb byte,shi byte,fen byte,
acunt byte) at(0d000h);
soft: procedure interrupt 5;
disable;
hso_command=38h;
t1=timer1;
hso_time=t1+0a36bh;
ms=ms+1;
wsr=0;
if ms>=9 then
do;
hso_command=20h;
hso_time=timer1+40h;
end;
if ms>=18 then
do;
sec=sec+1;
if sec>59 then
do;
sec=0;
min=min+1;
if min>59 then
do;
min=0;
hour=hour+1;
if hour>23 then hour=0;
w79=86h;
w79d=dec(hour);
end;
w79=85h;
w79d=dec(min);
end;
hso_command=10h;
hso_time=timer1+40h;
ms=0;
end;
if ctm>0 then chargtim=chargtim-min;
if chargtim=10 then
do;
chargtim=0;
ctm=0;
end;
if qdo=1 then
do;
qd=qd+1;
if qd=5 then
do;
pwm=0h;
qdo=0;
qd=0;
end;
end;
enable;
end soft;
hso: procedure interrupt 3;
disable;
;
enable;
end hso;
hsi4: procedure interrupt 2;
disable;
wsr=0;
temp=0h;
temp=hsi_status;
if (temp and 1h)=1h then
if low1=0 then low1=hsi_time;
else high1=hsi_time;
if (temp and 4h)=4h then
if low2=0 then low2=hsi_time;
else high2=hsi_time;
if (temp and 10h)=10h then
if low3=0 then low3=hsi_time;
else high3=hsi_time;
if (temp and 40h)=40h then
if low4=0 then low4=hsi_time;
else high4=hsi_time;
enable;
end hsi4;
/* 十六进制变十进制 */
dec: procedure (q) byte;
declare q byte;
c=0h;
d=0h;
if q>=10 then
do;
c=q/10;
d=q-c*10;
end;
if q<10 then d=q;
q=c*10h+d;
return(q);
end dec;
/* 键终断 */
ext_int: procedure interrupt 7;
declare key1 byte;
disable;
w79=50h;
key1=w79d;
;
if qdo=0 then
do;
qdo=1;
pwm=0ffh;
do i=0 to 15;
if keyy(i)=key1 then
do case i;
do;
key=1h;
call num;
end;
do;
key=2h;
call num;
end;
do;
key=3h;
call num;
end;
call sil;
do;
key=4h;
call num;
end;
do;
key=5h;
call num;
end;
do;
key=6h;
call num;
end;
call exc;
do;
key=7h;
call num;
end;
do;
key=8h;
call num;
end;
do;
key=9h;
call num;
end;
call inn;
do;
key=0h;
call num;
end;
call up;
call down;
call ent;
end;
end;
end;
enable;
return;
end ext_int;
/* 输录数处理 */
num: procedure;
vv=0h;
ll=0h;
tiao=0h;
tiao1=0h;
tiao2=0h;
tiao3=0h;
if numg=55h then /* 第一功能 */
do;
if num3g=55h then /* 判断密码 */
do;
ll=num1;
ll=4*4*(ll);
ll=ll or 0fh;
w79=82h;
w79d=ll;
vv=num2;
vv=4*4*(vv);
vv=vv or key;
num3=key;
key=0h;
w79=83h;
w79d=vv;
num3g=0h;
end;
if num2g=55h then
do;
num2=key;
vv=num1;
vv=4*4*vv;
ll=vv or key;
w79=83h;
w79d=ll;
key=0h;
num2g=0h;
vv=0;
ll=0;
num3g=55h;
end;
if num1g=55h then
do;
num1=key;
w79=83h;
w79d=key;
key=0h;
num1g=0h;
num2g=55h;
end;
end;
if fcung=55h then /* 第二功能 */
do;
if f12g=55h then
do;
f12=key;
f12g=0h;
ll=4*4*f11;
ll=ll or key;
key=0h;
w79=83h;
w79d=ll;
end;
if f11g=55h then
do;
f11=key;
f11g=0h;
f12g=55h;
w79=83h;
w79d=key;
key=0h;
end;
end;
if thirdg=55h then /* 第三功能 */
do;
if timg=55h then
do;
if tim4g=55h then /* n8 */
do;
vv=tim3 or key;
tim4=vv;
key=0h;
w79=83h;
w79d=vv;
tim4g=0h;
end;
if tim3g=55h then
do;
vv=4*4*key;
vv=vv and 0f0h;
tim3=vv;
key=0h;
w79=83h;
w79d=vv;
tim3g=0h;
tim4g=55h;
end;
if tim2g=55h then
do;
vv=tim1 or key;
tim2=vv;
key=0h;
w79=84h;
w79d=vv;
tim2g=0h;
tim3g=55h;
end;
if tim1g=55h then
do;
vv=4*4*key;
vv=vv and 0f0h;
tim1=vv;
key=0h;
w79=84h;
w79d=vv;
tim1g=0h;
tim2g=55h;
end;
end;
if shiledg=55h then /* n3 */
do;
if sl4g=55h then
do;
vv=tiao1 and 0f0h;
vv=vv or key;
sl4=sl3*10+key;
key=0h;
w79=83h;
w79d=vv;
sl4g=0h;
end;
if sl3g=55h then
do;
vv=4*4*key;
sl3=key;
tiao1=vv;
key=0h;
w79=83h;
w79d=vv;
sl3g=0h;
sl4g=55h;
end;
if sl2g=55h then
do;
vv=tiao1 and 0f0h;
vv=vv or key;
sl2=sl1*10+key;
key=0h;
w79=84h;
w79d=vv;
sl2g=0h;
sl3g=55h;
end;
if sl1g=55h then
do;
vv=4*4*key;
sl1=key;
tiao1=vv;
key=0h;
w79=84h;
w79d=vv;
sl1g=0h;
sl2g=55h;
end;
end;
if disslg=55h then /* n5 */
do;
if dissl4g=55h then
do;
vv=tiao1 and 0f0h;
vv=vv or key;
dissl4=dissl3*10+key;
key=0h;
w79=83h;
w79d=vv;
dissl4g=0h;
end;
if dissl3g=55h then
do;
vv=4*4*key;
dissl3=key;
tiao1=vv;
key=0h;
w79=83h;
w79d=vv;
dissl3g=0h;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -