📄 main.lst
字号:
888 2 case 7:LcdPrint("C4=");ComPrint("C4= ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" PF\n");brea
-k;
889 2 //case 0x90:ComPrint("Parameter:\n");break;
890 2 //case 0x80:ComPrint("MinR= ");DisplayData(i,MinR);ComPrint("0 KΩ\n");break;
891 2 //case 0x81:ComPrint("MaxR= ");DisplayData(i,MaxR);ComPrint("0 KΩ\n");break;
892 2 //case 0x82:ComPrint("MinC= ");DisplayData(i,MinC);ComPrint(" PF\n");break;
893 2 //case 0x83:ComPrint("MaxC= ");DisplayData(i,MaxC);ComPrint(" PF\n");break;
894 2 }
895 1 }
896 void DisplayData(unsigned char i,unsigned int n)
897 {
898 1 #define BUFLEN 6
899 1 char bf[BUFLEN];
900 1 char j;
901 1 bf[BUFLEN-1]=0;
902 1 if(i<0x80 && n>3000)
903 1 {
904 2 for(j=0;j<BUFLEN-1;j++) bf[j]='-';
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 16
905 2 }
906 1 else
907 1 {
908 2 for(j=1;j<BUFLEN-1;j++) bf[j]='0';
909 2 bf[0]=' ';
910 2 for(j=BUFLEN-2;j>0;j--)
911 2 {
912 3 bf[j]=n%10+'0';
913 3 n/=10;
914 3 }
915 2 bf[0]=n+'0';
916 2 if(i<4)
917 2 {
918 3 if(bf[1]!='0')
919 3 {
920 4 bf[4]=bf[3];
921 4 bf[3]='.';
922 4 }
923 3 else
924 3 {
925 4 bf[1]=bf[2];
926 4 bf[2]='.';
927 4 }
928 3 }
929 2 else
930 2 {
931 3 for(j=0;j<BUFLEN-2;j++)
932 3 {
933 4 if(bf[j]=='0')
934 4 {
935 5 bf[j]=' ';
936 5 }
937 4 else
938 4 {
939 5 break;
940 5 }
941 4 }
942 3 }
943 2 }
944 1 if(i<0x80)
945 1 {
946 2 bf[0]=' ';
947 2 LcdPrint(& bf[1] );
948 2 }
949 1 ComPrint(bf);
950 1 }
951 void LongPrint(unsigned long d)
952 {
953 1 char bf[11],i,dv;
954 1 bit e;
955 1 e=0;
956 1 for(i=0;i<9;i++) bf[i]=' ';
957 1 i=9;
958 1 for(i=9;i>=0;i--)
959 1 {
960 2 dv=d % 10;
961 2 d/=10;
962 2 bf[i]=dv+'0';
963 2 if(d==0) break;
964 2 }
965 1 bf[10]=0;
966 1 ComPrint(bf);
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 17
967 1 }
968 void Timer1 (void) interrupt TIMER1INT using 1
969 {
970 1 tn++;
971 1 }
972 char Remote(void)
973 {
974 1 if(RI)
975 1 {
976 2 RI=0;
977 2 return(SBUF);
978 2 }
979 1 return(0);
980 1 }
981 bit CheckAuto(bit AUTO)
982 {
983 1 char i,j;
984 1 i=0;j=0;
985 1 while(AUTO!=AUTOSTEP)
986 1 {
987 2 DelayMs(10);
988 2 if(++i>3)
989 2 {
990 3 AUTO=AUTOSTEP;
991 3 break;
992 3 }
993 2 if(++j>20) break;
994 2 }
995 1 return(AUTO);
996 1 }
997 char WaitKey(void)
998 {
999 1 char i,c;
1000 1 ComPrint("Waiting Key\n");
1001 1 twingle=0;
1002 1 while(!STEP)
1003 1 {
1004 2 c=Remote();
1005 2 if(c) return(c);
1006 2 }
1007 1 while(1)
1008 1 {
1009 2 c=Remote();
1010 2 if(c) return(c);
1011 2 if(STEP)
1012 2 {
1013 3 i=0;
1014 3 }
1015 2 else
1016 2 {
1017 3 i++;
1018 3 DelayMs(10);
1019 3 }
1020 2 if(i>3) break;
1021 2 }
1022 1 AUTO=CheckAuto(AUTO);
1023 1 if(AUTO)
1024 1 {
1025 2 return('A');
1026 2 }
1027 1 else
1028 1 {
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 18
1029 2 return('S');
1030 2 }
1031 1 }
1032
1033 void Initial(void)
1034 {
1035 1 EA=0;
1036 1 IE=0;
1037 1 P0=0xff;
1038 1 IT0=IT1=1;
1039 1 P1=P2=P3=0xff;
1040 1 // INPORT=0XFF;
1041 1 TMOD=0X11; //timer0:mode1(low 4bit),timer1:mode1(high 4bit)
1042 1 EX0=0;
1043 1 EX1=0;
1044 1
1045 1 ET0=1;
1046 1 TR0=1;
1047 1 TL0=CYCLE % 256;
1048 1 TH0=CYCLE/256;
1049 1 // TL2=RCAP2L=CYCLE % 256;
1050 1 // TH2=RCAP2H=CYCLE/256;
1051 1 // T2CON=0;
1052 1 // TR2=1;
1053 1 // ET2=1;
1054 1
1055 1 TL2=RCAP2L=0xb1;
1056 1 TH2=RCAP2H=0xff;
1057 1 SCON = 0x50; //串口模式: 模式1 接收允许
1058 1 T2CON=0x30;
1059 1 TI=1;
1060 1 TR2=1;
1061 1 // SCON = 0x50; //串口模式: 模式1 接收允许
1062 1 // TMOD |= 0x20; //定时器模式:定时器工作在模式2
1063 1 // PCON |= 0x80; //SMOD=1; 倍波特率
1064 1 // TH1 = 0xF3; //Baud:9600fosc=24MHz
1065 1 // ES = 0; //串行中断允许
1066 1 // TI = 1;
1067 1 // TR1 = 1; //定时器1启动
1068 1
1069 1 EA=1;
1070 1 }
1071 void LcdClear(void)
1072 {
1073 1 LCM_RST=0;
1074 1 delay(10);
1075 1 LCM_RST=1;
1076 1 init_lcd();
1077 1 CurrentX=CurrentY=0;
1078 1 ComPrint("\n");
1079 1 }
1080 void LcdPrint(char * DisBuf)
1081 {
1082 1 code unsigned char Line[]={0x80,0x90,0x88,0x98};
1083 1 char kk=0;
1084 1 // printf(DisBuf);
1085 1 wr_lcd(comm,0x30);
1086 1 while(DisBuf[kk])
1087 1 {
1088 2 if(DisBuf[kk]=='\n'||CurrentX>=16)
1089 2 {
1090 3 CurrentX=0;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 19
1091 3 CurrentY++;
1092 3 if(CurrentY<4) wr_lcd(comm,Line[CurrentY]);
1093 3 }
1094 2 else
1095 2 {
1096 3 if(CurrentY>=4)
1097 3 {
1098 4 LcdClear();
1099 4 }
1100 3 wr_lcd(dat,DisBuf[kk]);
1101 3 CurrentX++;
1102 3 }
1103 2 kk++;
1104 2 }
1105 1 // ComPrint(DisBuf);
1106 1 return;
1107 1 }
1108 void DelayMs(int a)
1109 {
1110 1 td=a/5;
1111 1 while(td);
1112 1 }
1113
1114
1115 /*------------------初始化-----------------*/
1116 void init_lcd (void)
1117 {
1118 1 rst=1;
1119 1 // psb=0;
1120 1 wr_lcd (comm,0x30); /*30---基本指令动作*/
1121 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
1122 1 delay (100);
1123 1 wr_lcd (comm,0x06); /*光标的移动方向*/
1124 1 wr_lcd (comm,0x0c); /*开显示,关游标*/
1125 1 }
1126
1127 /*----------------------------------------------*/
1128 void wr_lcd (uchar dat_comm,uchar content)
1129 {
1130 1 uchar a,i,j;
1131 1 delay (50);
1132 1 a=content;
1133 1 cs=1;
1134 1 sclk=0;
1135 1 std=1;
1136 1 for(i=0;i<5;i++) //先输入五个连续的1 -----》是同步位字符串,此时输入记数被重置并且串行传输被同步。
1137 1 {
1138 2 sclk=1;
1139 2 sclk=0;
1140 2 }
1141 1 std=0; //RW位
1142 1 sclk=1;
1143 1 sclk=0;
1144 1 if(dat_comm) //RS位
1145 1 std=1; //data
1146 1 else
1147 1 std=0; //command
1148 1 sclk=1;
1149 1 sclk=0; //第8位规定为0
1150 1 std=0;
1151 1 sclk=1;
1152 1 sclk=0;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 20
1153 1 for(j=0;j<2;j++)
1154 1 {
1155 2 for(i=0;i<4;i++) //每一个8位指令将被分为两个字节接收到.
1156 2 {
1157 3 a=a<<1;
1158 3 std=CY;
1159 3 sclk=1;
1160 3 sclk=0;
1161 3 }
1162 2 std=0;
1163 2 for(i=0;i<4;i++)
1164 2 {
1165 3 sclk=1;
1166 3 sclk=0;
1167 3 }
1168 2 }
1169 1 }
1170 /*-----------------------------------*/
1171 void delay (uint us) //delay time
1172 {
1173 1 while(us--);
1174 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 5533 ----
CONSTANT SIZE = 662 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 85 90
IDATA SIZE = ---- ----
BIT SIZE = 5 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -