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

📄 play.lst

📁 基于c8051f单片机的工控机的开发
💻 LST
📖 第 1 页 / 共 5 页
字号:
 773   1          P2MDOUT = 0xFF; // Output configuration for P2 
 774   1          P3MDOUT = 0x61; // Output configuration for P3      
 775   1              SFRPAGE=LEGACY_PAGE;
 776   1              //*****************************************************************
 777   1              //RSTSRC init******************************************************     
 778   1              RSTSRC=0x06;//选择时钟丢失监测器和VDD监视器为复位源。
 779   1              //*****************************************************************     
 780   1              //电压基准**********************************************************
 781   1              REF0CN=0x03;//内部基准,2.4V,且采用偏置电压
 782   1              //*****************************************************************     
 783   1              //TCON*************************************************************
 784   1              TCON=0x05;//INT0 and INT1 are active in edge mode
 785   1              //*****************************************************************
 786   1              //UART and Timer n config******************************************
 787   1              CKCON=0x00;//define T0 clock is sysclk/12, T1 clock is sysclk/12
 788   1              TMR2CF=0x08;//T2 clock is SYSCLK
 789   1              TMR2H=0xFF;//UART0 BR is 9600
 790   1              TMR2L=0x61;
 791   1              RCAP2H=0xFF;
 792   1              RCAP2L=0x61;
 793   1              SFRPAGE=TMR3_PAGE;
 794   1              TMR3CF=0x00;//T3 clock is SYSCLK/12
 795   1              TMR3H=0x00;
 796   1              TMR3L=0x00;
 797   1              RCAP3H=0x00;
C51 COMPILER V7.07   PLAY                                                                  04/24/2003 17:03:47 PAGE 14  

 798   1              RCAP3L=0x00;
 799   1              SFRPAGE=LEGACY_PAGE;
 800   1              //TMR4CF=0x00;//T4 clock is SYSCLK/12   
 801   1              TMOD=0x21;//Timer0 is in mode 1; Timer1 is in mode 2
 802   1              SCON0=0x40;//UART0 is in the mode 1 and REN0 is close, then UART0 can send but receive data
 803   1              SSTA0=0x05;//UART0 use T2 to be the TX and RX BR generator
 804   1              SFRPAGE=UART1_PAGE;
 805   1              SCON1=0x40;//UART1 is in the 8 bit mode and can't receive data
 806   1              SFRPAGE=LEGACY_PAGE;
 807   1              TL0=0x7F;
 808   1              TH0=0x60;//这样T0就在12ms内中断一次
 809   1              TH1=0x96;//UART1 BR is 9600
 810   1              TL1=0x96;
 811   1              TR1=1;//open the UART1 BR
 812   1              TR2=1;//open the UART0 BR       
 813   1              //*****************************************************************
 814   1              ADC0LTL=0xA0;
 815   1              ADC0LTH=0x02;//上限为4mA报警
 816   1              ADC0CF=0x58;//加大SAR时钟,1MHz
 817   1              ADC0CN=0xC0;//开ADC0并且设置为转换才跟踪方式,设置为向AD0BUSY写1判断AD0INT为1方式启动ADC0
 818   1              //*********************************************************************
 819   1              //interrupt define*************************************************
 820   1              IP=0x10;//UART0 is the highest level int
 821   1              //IE=0x07;//INT0 and T0 and INT1 are active
 822   1              IE=0x12;//uart0 and T0 are active
 823   1              //EIE1=0x04;//允许ADC0窗口比较中断
 824   1              EIE1=0x00;
 825   1              EIE2=0x40;//允许UART1中断
 826   1              TR0=1;//开始清狗
 827   1              EA=1;//open the interrupt
 828   1              //*****************************************************************
 829   1              BEEP=0;//close the beep
 830   1              MOTORSTOP;//关电机
 831   1              TPFCOFF;//关二位四通阀  
 832   1              //*****************************************************************
 833   1      }
 834          //*********************************************************************
 835          void workshow()
 836          {
 837   1              uint temp;
 838   1              bit ZERO=0;
 839   1              //***********************************
 840   1              READAI(0x56);
 841   1              temp=AIBUF[0]+AIBUF[1]*256;
 842   1              LCDFCOLOR(4);//前景色为红色
 843   1              LCDXY(24,1);//光标到(24,1)
 844   1              if(ZERO==0 && temp/1000==0)
 845   1              {
 846   2                      LCDDAT(' ');
 847   2              }
 848   1              else
 849   1              {       
 850   2                      ZERO=1;
 851   2                      LCDDAT(temp/1000+0x30);
 852   2              }       
 853   1              if(ZERO==0 && temp/100%10==0)
 854   1              {
 855   2                      LCDDAT(' ');
 856   2              }
 857   1              else
 858   1              {       
 859   2                      ZERO=1;
C51 COMPILER V7.07   PLAY                                                                  04/24/2003 17:03:47 PAGE 15  

 860   2                      LCDDAT(temp/100%10+0x30);
 861   2              }
 862   1              if(ZERO==0 && temp%100/10==0)
 863   1              {
 864   2                      LCDDAT(' ');
 865   2              }
 866   1              else
 867   1              {       
 868   2                      LCDDAT(temp%100/10+0x30);
 869   2              }               
 870   1              LCDDAT(temp%10+0x30);
 871   1              //***********************************
 872   1              LCDXY(35,1);//光标到(35,1)
 873   1              LCDFCOLOR(1);//前景色为兰色
 874   1              ZERO=0;
 875   1              if(ZERO==0 && REALPOWER/100==0)
 876   1              {
 877   2                      LCDDAT(' ');
 878   2              }
 879   1              else
 880   1              {       
 881   2                      ZERO=1;
 882   2                      LCDDAT(REALPOWER/100+0x30);
 883   2              }
 884   1              if(ZERO==0 && REALPOWER/10%10==0)
 885   1              {
 886   2                      LCDDAT(' ');
 887   2              }
 888   1              else
 889   1              {       
 890   2                      LCDDAT(REALPOWER/10%10+0x30);
 891   2              }
 892   1              LCDDAT(REALPOWER%10+0x30);//显示实时压力值
 893   1      }
 894          //
 895          void workshow_temp()
 896          {
 897   1              uint temp;
 898   1              bit ZERO=0;
 899   1              //***********************************
 900   1              READAI(0x56);
 901   1              temp=AIBUF[0]+AIBUF[1]*256;
 902   1              LCDFCOLOR(4);//前景色为红色
 903   1              LCDXY(24,1);//光标到(24,1)
 904   1              if(ZERO==0 && temp/1000==0)
 905   1              {
 906   2                      LCDDAT(' ');
 907   2              }
 908   1              else
 909   1              {       
 910   2                      ZERO=1;
 911   2                      LCDDAT(temp/1000+0x30);
 912   2              }       
 913   1              if(ZERO==0 && temp/100%10==0)
 914   1              {
 915   2                      LCDDAT(' ');
 916   2              }
 917   1              else
 918   1              {       
 919   2                      ZERO=1;
 920   2                      LCDDAT(temp/100%10+0x30);
 921   2              }
C51 COMPILER V7.07   PLAY                                                                  04/24/2003 17:03:47 PAGE 16  

 922   1              if(ZERO==0 && temp%100/10==0)
 923   1              {
 924   2                      LCDDAT(' ');
 925   2              }
 926   1              else
 927   1              {       
 928   2                      LCDDAT(temp%100/10+0x30);
 929   2              }               
 930   1              LCDDAT(temp%10+0x30);
 931   1              //***********************************
 932   1              LCDXY(35,1);//光标到(35,1)
 933   1              LCDFCOLOR(1);//前景色为兰色
 934   1              ZERO=0;
 935   1              if(ZERO==0 && 13/100==0)
 936   1              {
 937   2                      LCDDAT(' ');
 938   2              }
 939   1              else
 940   1              {       
 941   2                      ZERO=1;
 942   2                      LCDDAT(13/100+0x30);
 943   2              }
 944   1              if(ZERO==0 && 13/10%10==0)
 945   1              {
 946   2                      LCDDAT(' ');
 947   2              }
 948   1              else
 949   1              {       
 950   2                      LCDDAT(13/10%10+0x30);
 951   2              }
 952   1              LCDDAT(13%10+0x30);//显示实时压力值
 953   1      }
 954          //
 955          void work()//进入工作状态
 956          {
 957   1              uchar i;
 958   1              bit ZERO;
 959   1              bit first;
 960   1              uchar key;
 961   1              ulong xdata alltime;
 962   1              ulong xdata temptime;
 963   1              ulong xdata TOTALTIME;
 964   1              uint xdata temptemp;
 965   1              uint xdata tempt;
 966   1              uchar xdata temppwr;
 967   1              uchar xdata tempp;
 968   1              uchar xdata segtemp;
 969   1              uint xdata temp1,temp2,temp3;
 970   1              uint DACVALUE;
 971   1              uchar X1L[2],X1H[2],X2L[2],X2H[2],Y1L[2],Y1H[2],Y2L[2],Y2H[2];
 972   1              float scale1,scale2,scale3;
 973   1              //
 974   1              uchar temppower;
 975   1              uchar ttpp;
 976   1              //
 977   1              AISAVE();
 978   1              WRITEAI(0x0D,TEMPRATURE_lo);
 979   1              WRITEAI(0x0E,TEMPRATURE_hi);
 980   1              WRITEAI(0x00,1);
 981   1              //
 982   1      again:
 983   1              PIDEN=0;
C51 COMPILER V7.07   PLAY                                                                  04/24/2003 17:03:47 PAGE 17  

 984   1              LCDSHOW(WORKSCREEN);
 985   1              LCDASIIC();//西文方式
 986   1              LCDFCOLOR(7);//设置前景色为白色
 987   1              LCDXY(19,0);//光标到(19,0)
 988   1              if(GYNUM/10==0)
 989   1              {
 990   2                      LCDDAT(' ');
 991   2              }
 992   1              else
 993   1              {
 994   2                      LCDDAT(GYNUM/10+0x30);
 995   2              }       
 996   1              LCDDAT(GYNUM%10+0x30);//显示工艺序号
 997   1              for(i=1,alltime=0;i<20;i++)
 998   1              {
 999   2                      if(GY[GYNUM].time[i]!=0)
1000   2                      {
1001   3                              alltime+=GY[GYNUM].time[i];
1002   3                      }
1003   2                      else
1004   2                      {
1005   3                              break;
1006   3                      }
1007   2              }
1008   1              TOTALTIME=alltime;
1009   1              //x轴上时间刻度
1010   1              LCDFCOLOR(2);//前景色为绿色
1011   1              LCDXY(34,13);
1012   1              alltime=alltime+5;
1013   1              scale1=250.0/alltime;
1014   1              LCDDAT(alltime/600+0x30);       
1015   1              LCDDAT(alltime/60%10+0x30);
1016   1              LCDDAT(':');
1017   1              LCDDAT(alltime%60/10+0x30);
1018   1              LCDDAT(alltime%10+0x30);
1019   1              alltime=alltime/4;
1020   1              for(i=0;i<3;i++)
1021   1              {
1022   2                      LCDXY(10+8*i,13);       
1023   2                      temptime=alltime*(i+1);
1024   2                      LCDDAT(temptime/600+0x30);
1025   2                      LCDDAT(temptime/60%10+0x30);
1026   2                      LCDDAT(':');
1027   2                      LCDDAT(temptime%60/10+0x30);
1028   2                      LCDDAT(temptime%10+0x30);
1029   2              }
1030   1              //Y轴上刻度显示
1031   1              temptemp=(TEMPRATURE_hi-TEMPRATURE_lo)/3;
1032   1              temppwr=(POWER_hi-POWER_lo)/3;
1033   1              ZERO=0;

⌨️ 快捷键说明

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