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