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 + -
显示快捷键?