test.lst
来自「校园打铃系统」· LST 代码 · 共 1,256 行 · 第 1/4 页
LST
1,256 行
902 1 mask=0x80;
903 1 for(i = 0;i < 8;i++)
904 1 {
905 2 CLK=0;
906 2 if(Ctrl_Data & mask)
907 2 {
908 3 Din=1;
909 3 }
910 2 else
911 2 {
912 3 Din=0;
913 3 }
914 2 CLK=1;
915 2 mask = mask >> 1;
916 2 Din=0;
917 2 }
918 1 CLK=0;
919 1 ENB=0;
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 16
920 1 mask=0x80000000;
921 1 ENB=1;
922 1 for(i = 0;i < 32;i++)
923 1 {
924 2 CLK=0;
925 2 if(Ref_Data & mask)
926 2 {
927 3 Din=1;
928 3 }
929 2 else
930 2 {
931 3 Din=0;
932 3 }
933 2 CLK=1;
934 2 mask = mask >> 1;
935 2 Din=0;
936 2 }
937 1 CLK=0;
938 1 ENB=0;
939 1 mask = 0x8000;
940 1 for(i = 0;i < 16; i++)
941 1 {
942 2 CLK=0;
943 2 if(Tx_Count & mask)
944 2 {
945 3 ADin=1;
946 3 }
947 2 else
948 2 {
949 3 ADin=0;
950 3 }
951 2 if(Rx_Count & mask)
952 2 {
953 3 Din=1;
954 3 }
955 2 else
956 2 {
957 3 Din=0;
958 3 }
959 2 CLK=1;
960 2 mask = mask >> 1;
961 2 ADin=0;
962 2 Din=0;
963 2 CLK=0;
964 2 }
965 1 ENB=1;
966 1 ENB=0;
967 1 }
968
969
970
971
972
973
974
975 /***********************************************/
976 void set_frequency()
977 {
978 1 LCD_init();
979 1 LCD_write_string(0,0,frequency0[hh]);
980 1 LCD_write_string(7,0,"<--");
981 1 LCD_write_string(0,1,frequency0[hh+1]);
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 17
982 1 while(scan_key()!=0x28)
983 1 {
984 2 while(!judge_hitkey());//有键按下转下步
985 2 switch (scan_key())
986 2 { case 0x48:if(hh==0)
987 3 hh=0;
988 3 else
989 3 hh--;
990 3 LCD_init();
991 3 LCD_write_string(0,0,frequency0[hh]);
992 3 LCD_write_string(8,0,frequency1[hh]);
993 3 LCD_write_string(14,0,"<--");
994 3 LCD_write_string(0,1,frequency0[hh+1]);
995 3 LCD_write_string(8,1,frequency1[hh+1]);
996 3 delay_nms(100);
997 3 break;
998 3
999 3 case 0x88:if(hh==8)
1000 3 hh=8;
1001 3 else
1002 3 hh++;
1003 3 LCD_init();
1004 3 LCD_write_string(0,0,frequency0[hh]);
1005 3 LCD_write_string(8,0,frequency1[hh]);
1006 3 LCD_write_string(14,0,"<--");
1007 3 LCD_write_string(0,1,frequency0[hh+1]);
1008 3 LCD_write_string(8,1,frequency1[hh+1]);
1009 3 delay_nms(100);
1010 3 break;
1011 3 case 0x18:MC145162_Reset(0x90,0x31904000,fry0[hh],fry1[hh]);
1012 3 LCD_init();
1013 3 LCD_write_string(5,0,"OK!");
1014 3 delay_nms(100);
1015 3 LCD_init();
1016 3 LCD_write_string(0,0,frequency0[hh]);
1017 3 LCD_write_string(8,0,frequency1[hh]);
1018 3 LCD_write_string(14,0,"<--");
1019 3 LCD_write_string(0,1,frequency0[hh+1]);
1020 3 LCD_write_string(8,1,frequency1[hh+1]);
1021 3 delay_nms(100);
1022 3 break;
1023 3 //case 0x28:zhuye();
1024 3
1025 3 default: break;
1026 3 }
1027 2 }
1028 1 }
1029 /***********************************************************************************/
1030
1031 /******************************ad*************************************************/
1032 sbit adclk = P2^0;
1033 sbit adadr = P2^1;
1034 sbit adout = P2^2;
1035 sbit adcs = P3^4;
1036
1037 unsigned int tlc1543(unsigned char port)
1038 {
1039 1 unsigned int xdata ad;
1040 1 unsigned int xdata i;
1041 1 unsigned char xdata al=0,ah=0;
1042 1 ad=0x0000;
1043 1 adclk=0;
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 18
1044 1 adcs=0;
1045 1 port<<=4;
1046 1 for (i=0;i<4;i++) //把通道号打入1543
1047 1 {
1048 2 adadr=(bit)(port&0x80);
1049 2 adclk=1;
1050 2 adclk=0;
1051 2 port<<=1;
1052 2 }
1053 1 for (i=0;i<6;i++) //填充6个CLOCK
1054 1 {
1055 2 adclk=1;adclk=0;
1056 2 }
1057 1
1058 1 adcs=1;
1059 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1060 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1061 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
1062 1 _nop_();_nop_();_nop_();
1063 1 adcs=0; //等待AD转换
1064 1
1065 1 _nop_();_nop_();_nop_();
1066 1
1067 1 for (i=0;i<2;i++) //取D9,D8
1068 1 {
1069 2 //adadr=1;
1070 2 adclk=1;
1071 2 ah<<=1;
1072 2 if (adout) ah|=0x01;
1073 2 adclk=0;
1074 2 }
1075 1 for (i=0;i<8;i++) //取D7--D0
1076 1 {
1077 2 adout=1;
1078 2 adclk=1;
1079 2 al<<=1;
1080 2 if (adout) al|=0x01;
1081 2 adclk=0;
1082 2 }
1083 1
1084 1 adcs=1;
1085 1 ad=ah*256;
1086 1 ad+=al;
1087 1 return (ad);
1088 1 }
1089 /***********************************************************/
1090
1091 void adc()
1092 {
1093 1 int xdata ad;
1094 1 float xdata ad_data;
1095 1 uchar xdata ah,al;
1096 1 SBUF=0x0fa;//修改控制字段
1097 1 delay_nms(10);
1098 1 SBUF=0x0a0;
1099 1 delay_nms(100);
1100 1 while(scan_key()!=0x28)
1101 1 {
1102 2 ad=tlc1543(0x00);
1103 2 ad_data=(ad/1024.0)*5;
1104 2 LCD_write_string(0,0,"NO.1");
1105 2 FLOAT_NUM_Display(ad_data,6,0);
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 19
1106 2 ah=ad/256;
1107 2 al=ad%256;
1108 2 ah=ah | 0x0a0;
1109 2 SBUF=ah;
1110 2 delay_nms(10);
1111 2 SBUF=al;
1112 2 delay_nms(100);
1113 2 /****************1通道********************/
1114 2 ad=tlc1543(0x01);
1115 2 ad_data=(ad/1024.0)*5;
1116 2 LCD_write_string(0,1,"NO.2");
1117 2 FLOAT_NUM_Display(ad_data,6,1);
1118 2 ah=ad/256;
1119 2 al=ad%256;
1120 2 ah=ah | 0x0a0;
1121 2 ah=ah+8;
1122 2 SBUF=ah;
1123 2 delay_nms(10);
1124 2 SBUF=al;
1125 2 delay_nms(100);
1126 2 /****************2通道********************/
1127 2 }
1128 1 }
1129 /************************ad over************************************/
1130
1131
1132
1133
1134 void choice_transmit()//选择传输类型
1135 {
1136 1 LCD_init();
1137 1 LCD_write_string(0,0,"Welcome you!");
1138 1 delay_nms(150);
1139 1 LCD_write_string(0,0,"1 LED");
1140 1 LCD_write_string(7,0,"2 frequency");
1141 1 LCD_write_string(0,1,"3 AD");
1142 1 LCD_write_string(5,1,"4 message");
1143 1 while(1)
1144 1 {
1145 2 while(!judge_hitkey());//有键按下转下步
1146 2 switch(scan_key())
1147 2 { case 0x11:led();
1148 3 LCD_init();
1149 3 LCD_write_string(0,0,"1 LED");
1150 3 LCD_write_string(7,0,"2 frequency");
1151 3 LCD_write_string(0,1,"3 AD");
1152 3 LCD_write_string(5,1,"4 message");
1153 3 break;
1154 3
1155 3 case 0x12:set_frequency();
1156 3 LCD_init();
1157 3 LCD_write_string(0,0,"1 LED");
1158 3 LCD_write_string(7,0,"2 frequency");
1159 3 LCD_write_string(0,1,"3 AD");
1160 3 LCD_write_string(5,1,"4 message");
1161 3 break;
1162 3 case 0x14:adc();
1163 3 LCD_init();
1164 3 LCD_write_string(0,0,"1 LED");
1165 3 LCD_write_string(7,0,"2 frequency");
1166 3 LCD_write_string(0,1,"3 AD");
1167 3 LCD_write_string(5,1,"4 message");
C51 COMPILER V7.06 TEST 06/07/2007 21:23:10 PAGE 20
1168 3 break;
1169 3 case 0x18:send_message();
1170 3 LCD_write_string(0,0,"1 LED");
1171 3 LCD_write_string(7,0,"2 frequency");
1172 3 LCD_write_string(0,1,"3 AD");
1173 3 LCD_write_string(5,1,"4 message");
1174 3 break;
1175 3 default:break;
1176 3 }
1177 2 }
1178 1 }
1179
1180 void main()
1181 {SCON=0x40;//设置串行方式1,REN=0
1182 1 EA=1;
1183 1 ES=0;
1184 1 PCON=0x00;//波特率不增倍
1185 1 TMOD=0x20;//定时1工作2
1186 1 TL1=0x00;//波特率
1187 1 TH1=0x00;
1188 1 TR1=1;
1189 1 choice_transmit();
1190 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3391 ----
CONSTANT SIZE = 259 ----
XDATA SIZE = 35 14
PDATA SIZE = ---- ----
DATA SIZE = 88 35
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?