📄 tvrem.plm
字号:
/* filename: tvrem.plm */
start:do;
$include(reg51.dcl)
declare (data1,data2,data4,ah,al,jihaopow,jihao,bjihao,dap3,ask,i) byte at (30h);
declare (h,g) word;
receive:procedure interrupt 4 using 1;
disable;
jihao=sbuf;
ri=0;
;/* power control*/
jihaopow=jihao;
jihao=jihao and 7fh;
jihaopow=jihaopow and 80h;
if jihaopow=80h and jihao=bjihao then p17=0;
if jihaopow=00h and jihao=bjihao then p17=1;
if data4=0e2h then
do;
if jihao=bjihao then
do;
data4=0;
p33=1;
dap3=not(dap3);
sbuf=dap3; /* txd */
do while ti=0;
end;
ti=0;
p33=0;
do while ri=0;
end;
ask=sbuf;
if ask=dap3 and dap3<>0 then
do;
p34=0;
do i=0 to 7;
call time(254);
end;
end;
p34=1;
end;
end;
ip=0;
enable;
end receive;
rem:procedure interrupt 0;/* int0 */
declare k byte;
DISABLE;
if data4=02eh then goto int0end;
k=16;
data1=0;
loop1:
call time(2);
h=0;
do while p32=0;
h=h+1;
if h>3000 then goto int0end;
end;
th0=0;
tl0=0;
tr0=1;
call time(2);
h=0;
do while p32=1;
h=h+1;
if h>3000 then goto int0end;
end;
tr0=0;
ah=th0;
al=tl0;
if ah>=4 then cy=1;
else cy=0;
data1=scl(data1,1);
k=k-1;
if k=8 then data2=data1;
if k<>0 then goto loop1;
if data2>0e0h then
do;
data4=data2;
end;
if data2=0e2h then
do;
data4=data2;
data2=0;
dap3=0;
if data1=00 then dap3=01h;
if data1=10h then dap3=02h;
if data1=08h then dap3=04h;
if data1=18h then dap3=08h;
if data1=80h then dap3=10h;
if data1=90h then dap3=20h;
if data1=88h then dap3=40h;
if data1=4ch then dap3=80h;
end;
int0end: ip=0;
enable;
end rem;
main$program:
p1=0ffh;
p3=0ffh;
p33=0;
dap3=0ffh;
scon=50h;
pcon=00h;
tmod=21h;
tl1=0fdh; /* 9600 baud rate for 11.0592Mhz */
th1=0fdh;
th0=0;
tl0=0;
tr1=1;
es=1;
ex0=1;
data2=0;
data4=0;
bjihao=01;
ie0=0;
enable;
LOOP:goto loop;
end start;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -