⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6-2.txt

📁 单片机应用开发实例.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
 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 + -