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

📄 choice_transmit.lst

📁 校园打铃系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -