📄 play.lst
字号:
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 + -