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

📄 main.lst

📁 51上面的UCOS编程 基本实现了液晶 LED 和按键 AD等外设功能 适合学习
💻 LST
📖 第 1 页 / 共 4 页
字号:
 770   2                      EA = 1;
 771   2                      getstr8255();
 772   2                      myprintf(SAD1,TA_LEFT,72,162,"%s",do8255a);
 773   2                      myprintf(SAD1,TA_LEFT,72,182,"%s",do8255b);
 774   2                      myprintf(SAD1,TA_LEFT,72,202,"%s",do8255c);
 775   2                      break;
 776   2              default:
 777   2                      break;
 778   2              }
 779   1      }
 780          void showselect(unsigned char select,unsigned char fill)
 781          {
 782   1              if(fill == 0)
 783   1                      rectangle(SAD2,6+(select/11)*160,2+(select%11)*20,150+(select/11)*160,19+(select%11)*20,0);
 784   1              else
 785   1                      rectangle(SAD2,6+(select/11)*160,2+(select%11)*20,150+(select/11)*160,19+(select%11)*20,1);
 786   1      }
 787          
 788          void doinput() reentrant
 789          {
 790   1              unsigned char h,l;
 791   1              switch(buttonselect)
 792   1              {
 793   2              case 17://RS485out
 794   2                      if(getstr(216,122,8))
 795   2                      {
 796   3                              h = 0;
 797   3                              while(disstr[h] != 0)
C51 COMPILER V8.08   MAIN                                                                  03/18/2008 13:49:06 PAGE 14  

 798   3                              {
 799   4                                      rs485out = disstr[h];
 800   4                                      bout485 = 1;
 801   4                                      RS485 = 0;                      
 802   4                                      TI = 1;
 803   4                                      OSTimeDly(2);
 804   4                                      h++;
 805   4                              }                       
 806   3                      }
 807   2                      break;
 808   2              case 18://AD667
 809   2                      if(getstrnumber(216,142,4))
 810   2                      {
 811   3                              da667 = (unsigned int)atoi(disstr);             
 812   3                              if(da667>4095)
 813   3                                      da667 = 4095;
 814   3                              l=da667%16;
 815   3                              l=l*16;
 816   3                              h=(unsigned char)(da667/16);
 817   3                              LDA667=l;
 818   3                              HDA667=h;
 819   3                              vda667 = da667;
 820   3                              vda667 /=409.5;
 821   3                      }
 822   2                      break;
 823   2              case 19:
 824   2                      if(getstr(240,162,8))
 825   2                      {
 826   3                              tem8255a = 0;
 827   3                              for(h=0;h<8;h++)
 828   3                              {
 829   4                                      tem8255a *= 2;  
 830   4                                      if(disstr[7-h] == '1')
 831   4                                              tem8255a |= 0x01;                                                       
 832   4                              }
 833   3                              EA = 0;
 834   3                              COM8255=0x80;
 835   3                              A8255 = tem8255a;
 836   3                              B8255 = tem8255b;
 837   3                              C8255 = tem8255c;               
 838   3                              EA = 1;
 839   3                      }
 840   2                      break;
 841   2              case 20:
 842   2                      if(getstr(240,182,8))
 843   2                      {
 844   3                              tem8255b = 0;
 845   3                              for(h=0;h<8;h++)
 846   3                              {
 847   4                                      tem8255b *= 2;
 848   4                                      if(disstr[7-h] == '1')
 849   4                                              tem8255b |= 0x01;
 850   4                              }
 851   3                              EA = 0;
 852   3                              COM8255=0x80;
 853   3                              A8255 = tem8255a;
 854   3                              B8255 = tem8255b;
 855   3                              C8255 = tem8255c;               
 856   3                              EA = 1;
 857   3                      }
 858   2                      break;
 859   2              case 21:
C51 COMPILER V8.08   MAIN                                                                  03/18/2008 13:49:06 PAGE 15  

 860   2                      if(getstr(240,202,8))
 861   2                      {
 862   3                              tem8255c = 0;
 863   3                              for(h=0;h<8;h++)
 864   3                              {
 865   4                                      tem8255c *= 2;  
 866   4                                      if(disstr[7-h] == '1')
 867   4                                              tem8255c |= 0x01;                                                       
 868   4                              }
 869   3                              EA = 0;
 870   3                              COM8255=0x80;
 871   3                              A8255 = tem8255a;
 872   3                              B8255 = tem8255b;
 873   3                              C8255 = tem8255c;               
 874   3                              EA = 1;
 875   3                      }
 876   2                      break;
 877   2              default:
 878   2                      setsysini();
 879   2                      showmain1();
 880   2                      break;
 881   2              }
 882   1      }
 883          
 884          //电磁接触器检测
 885          void main1test(void *lcnpdata) reentrant
 886          {
 887   1              unsigned char curstaut = 0;
 888   1              
 889   1              buttonselect=0;
 890   1              lcnpdata = lcnpdata;
 891   1              showmain1();
 892   1              showselect(buttonselect,1);
 893   1              while(1)
 894   1              {
 895   2                      OSSemPend(KeySem,10,&lcnerr);
 896   2                      if(lcnerr==OS_NO_ERR)
 897   2                      {
 898   3                              switch(key)
 899   3                              {                       
 900   4                              case INPUT://系统参数   
 901   4                                      doinput();
 902   4                                      showselect(buttonselect,1);
 903   4                                      break;  
 904   4                              case DOWN:
 905   4                                      showselect(buttonselect,0);
 906   4                                      if(buttonselect < 21)
 907   4                                      {
 908   5                                              buttonselect++;
 909   5                                      }
 910   4                                      else
 911   4                                      {
 912   5                                              buttonselect=0;
 913   5                                      }
 914   4                                      showselect(buttonselect,1);
 915   4                                      break;
 916   4                              case UP:
 917   4                                      showselect(buttonselect,0);
 918   4                                      if(buttonselect > 0)
 919   4                                              buttonselect--;
 920   4                                      else
 921   4                                              buttonselect=21;
C51 COMPILER V8.08   MAIN                                                                  03/18/2008 13:49:06 PAGE 16  

 922   4                                      showselect(buttonselect,1);
 923   4                                      break;
 924   4                              case LEFT:
 925   4                              case RIGHT:
 926   4                                      showselect(buttonselect,0);
 927   4                                      if(buttonselect > 10)
 928   4                                              buttonselect-=11;
 929   4                                      else
 930   4                                              buttonselect+=11;
 931   4                                      showselect(buttonselect,1);
 932   4                                      break;
 933   4                              default:
 934   4                                      break;
 935   4                              }
 936   3                      }
 937   2                      getcurvault();  
 938   2                      showvaultall();
 939   2                      if(bSecond)
 940   2                      {
 941   3                              bSecond=0;      
 942   3                              myprintf(SAD1,TA_LEFT,216,2,  "%5u",count8253[0][0]);   
 943   3                              myprintf(SAD1,TA_LEFT,216,22, "%5u",count8253[1][0]);   
 944   3                              myprintf(SAD1,TA_LEFT,216,42, "%5u",count8253[2][0]);   
 945   3                              myprintf(SAD1,TA_LEFT,216,62, "%5u",count8253[3][0]);   
 946   3      #if OS_TASK_STAT_EN     
                                      myprintf(SAD1,TA_LEFT,295,2,"%3u",(unsigned int)OSCPUUsage);    
              #endif
 949   3                              readtimer(disstr,0);
 950   3                              myprintf(SAD1,TA_LEFT,254,223,disstr);
 951   3                      }
 952   2              }
 953   1      }
 954          
 955          void getcurvault() reentrant
 956          {
 957   1              if(buttonselect>7)
 958   1                      return;
 959   1              getad();
 960   1              adtemp[adtemp1] = advaut;
 961   1              switch(buttonselect)
 962   1              {
 963   2              case 1:
 964   2                      ADNUMBER1=0;
 965   2                      ADNUMBER2=1;
 966   2                      ADNUMBER3=1;
 967   2                      adtemp1=1;                              
 968   2                      break;
 969   2              case 2:
 970   2                      ADNUMBER1=1;
 971   2                      ADNUMBER2=0;
 972   2                      ADNUMBER3=1;
 973   2                      adtemp1=2;
 974   2                      break;
 975   2              case 3:
 976   2                      ADNUMBER1=0;
 977   2                      ADNUMBER2=0;
 978   2                      ADNUMBER3=1;
 979   2                      adtemp1=3;
 980   2                      break;
 981   2              case 4:
 982   2                      ADNUMBER1=1;
 983   2                      ADNUMBER2=1;
C51 COMPILER V8.08   MAIN                                                                  03/18/2008 13:49:06 PAGE 17  

 984   2                      ADNUMBER3=0;
 985   2                      adtemp1=4;
 986   2                      break;
 987   2              case 5:
 988   2                      ADNUMBER1=0;
 989   2                      ADNUMBER2=1;
 990   2                      ADNUMBER3=0;
 991   2                      adtemp1=5;
 992   2                      break;
 993   2              case 6:
 994   2                      ADNUMBER1=1;
 995   2                      ADNUMBER2=0;
 996   2                      ADNUMBER3=0;
 997   2                      adtemp1=6;
 998   2                      break;
 999   2              case 7:
1000   2                      ADNUMBER1=0;
1001   2                      ADNUMBER2=0;
1002   2                      ADNUMBER3=0;
1003   2                      adtemp1=7;
1004   2                      break;
1005   2              case 0:
1006   2                      ADNUMBER1=1;
1007   2                      ADNUMBER2=1;
1008   2                      ADNUMBER3=1;
1009   2                      adtemp1=0;
1010   2                      break;
1011   2              default:
1012   2                      break;
1013   2              }
1014   1              result[adtemp1] = adtemp[adtemp1];
1015   1              result[adtemp1] /= 409.5;       //10V
1016   1      }
1017          
1018          void main (void) 
1019          {
1020   1              OSInit();    
1021   1          InitTimer2();
1022   1          OSTaskCreate(sys_init, (void *)0, &sys_init_Stk[0],1);
1023   1          OSStart();
1024   1      }

C51 COMPILATION COMPLETE.  1 WARNING(S),  1 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -