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

📄 slave.lst

📁 这是一个单片机的项目
💻 LST
📖 第 1 页 / 共 4 页
字号:
 207          #define Channel14          0x0D
 208          #define Channel15          0x0E
 209          #define Channel16          0x0F
 210          //外设数据长度信息。
 211          #define LenRecvWsType1     0x38    //外设类型1的数据长度
 212          #define LenRecvWsType2     0x04    //外设类型2的数据长度
 213          /**********************************************外设信息***************************************************
             -/
 214          
 215          /**********************************************从机信息***************************************************
             -/
 216          //从机编号信息。
 217          #define SlaveCode1         0x01     //从机1编号。
 218          #define SlaveCode2         0x02     //从机2编号。
 219          #define SlaveCode3         0x03     //从机3编号。
 220          #define SlaveCode4         0x04     //从机4编号。
 221          #define SlaveCode5         0x05     //从机5编号。
 222          uchar   SlaveCode = SlaveCode5;     //当前从机编号。
 223          //从机数据存储最大长度。
 224          #define DataLen7053        560      //7053数据存储最大长度。
 225          #define DataLen7017        280      //7017数据存储最大长度。
 226          //从机串口信息。
 227          #define InitState          0        //开始接收状态。
 228          #define DataState          1        //数据接收状态。
 229          #define SlaveStartFlag     0x3E     //数据开始标志。
 230          uchar   n = 1;                      //当前处理的外设编号。
 231          uchar   FlagWsSend[5]={0,0,0,0,0};  //从机外设的数据返回状态。
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 5   

 232          char    RecvDataCount=-1;           //接收外设数据的计数器。
 233          uint    TimeCount = 0;              //串口通讯的计数器。
 234          uchar   RecvState= InitState;       //接收的状态,初始化为初始化接收状态。
 235          uchar   RecvDataSize;               //接收外设数据的长度。
 236          //从机参数信息。
 237          #define SlaveParaLen     0x05        //从机默认参数长度。
 238          uchar   BodeRate;                    //从机与外设通讯的波特率。
 239          uchar   WsNumber;                    //从机的外设个数。
 240          uint    ReadDataRate;                //读取外设数据的时间间隔。
 241          uchar   WsType;                      //外设的类型。
 242          /**********************************************从机信息***************************************************
             -/
 243          /**************************************拷贝数据最大长度定义**************************************/
 244          #define MaxOrderLen              0x6FD
 245          #define MaxSlaveDataLen          0x230
 246          #define MaxGetChannelParaLen     0x7ED
 247          #define MaxAlarmLen              0xFD
 248          /**************************************拷贝数据最大长度定义**************************************/
 249          
 250          /**********************************************标识位定义信息*********************************************
             -/
 251          bit  FlagMutex=0;              //用于隔离外部中断,假如一次外部中断没有执行完,不能响应下一次外部中断。
 252          bit  FlagExt0=0;               //外部中断0标识,也就是IIC使用标识。
 253          bit  FlagTime0=0;              //定时器0中断标识。
 254          bit  FlagStartRecv=0;          //开始接收标识。
 255          bit  FlagProcessRecvData=0;    //处理接收数据标识。
 256          bit  FlagReInit = 0;           //从机参数重置的命令被解析的标识,也是从机参数重置的标志位。
 257          bit  FlagProcessOrderStart = 0;//上位机的命令被从机拷贝的标志,也是处理命令的标志位。
 258          bit  FlagFirst = 1;            //第一次定时器0中断标识。
 259          bit  FlagNewData = 0;          //有新的外设数据标识。
 260          bit  FlagNewOrder = 0;         //有新的服务器的命令标识。
 261          bit  FlagSendOrder = 1;        //发送读取外设数据命令开始标识。
 262          bit  FlagExtInterrupt = 0;
 263          /**********************************************标识位定义信息*********************************************
             -/
 264          
 265          /**********************************************定时器相关信息*********************************************
             -/
 266          #define  WaitLen      10      //发送外设数据采集命令的等待时限。
 267          #define  MAX          20      //定时器的倍频。
 268          #define  SampleBase   1000    //Sample = ReadDataRate/SampleBase即为发送采集外设数据命令的间隔。
 269          #define  DelayTime        5
 270          uchar    Sample = 2;          //发送采集外设数据命令的间隔。
 271          uchar    TimesNum = 0;        //定时中断次数的计数器,用来判断等待的外设数据返回的时限的。
 272          uchar    TimesCount = 0;      //定时中断次数的计数器,用来判断等待的外设数据返回的时限的。
 273          /**********************************************定时器相关信息*********************************************
             -/
 274          
 275          /**********************************************从机IIC使用信息********************************************
             -/
 276          sbit P20=P2^0;                //IIC使用完通知仲裁机的信号。
 277          /**********************************************从机IIC使用信息********************************************
             -/
 278          
 279          /******************************************从机分配的数组*************************************************
             -*/
 280          #define  COPYLEN      200        //I2C中转的缓冲区大小。
 281          #define  PROCESSLEN   20         //处理命令的暂存数组长度。
 282          xdata uchar  RecvDataBuff[60];   //外设数据的接收数组,应大于56。
 283          xdata uchar  SendBuff[4];        //发送读取外设数据的命令数组。
 284          /******************************************从机分配的数组*************************************************
             -*/
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 6   

 285          
 286          /*********************************************************************************************************
             -**
 287          功能:Delay
 288          描述:延时函数
 289          参数:t
 290          返回:无
 291          **********************************************************************************************************
             -**/
 292          void Delay(uint t)     /*延时函数*/
 293          {
 294   1          while(t!=0)
 295   1              t--; 
 296   1      }
 297          
 298          /*********************************************************************************************************
             -**
 299          功能:InitSerialCom
 300          描述:串口初始化
 301          参数:无
 302          返回:无
 303          **********************************************************************************************************
             -**/
 304          void InitSerialCom(void)
 305          {
 306   1          SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
 307   1          TMOD |= 0x21;       //TMOD: timer 1, mode 2, 8-bit reload 
 308   1          PCON |= 0x80;       //SMOD=1; 
 309   1          TH1   = 0xF3;       //Baud:4800  fosc=12MHz 
 310   1          IE   |= 0x93;       //Enable Serial Interrupt 
 311   1          TR1   = 1;          // timer 1 run 
 312   1              IT0   = 1;
 313   1         // TI=1; 
 314   1      }
 315          
 316          /*********************************************************************************************************
             -**
 317          功能:Time0Initial()
 318          描述:定时器0初始化,主要设定初值
 319          参数:无
 320          返回:无
 321          **********************************************************************************************************
             -**/
 322          void Time0Initial()
 323          {
 324   1         TR0=0;
 325   1         TH0=0x3C; //50ms
 326   1         TL0=0xB0;
 327   1         TR0=1;
 328   1      }
 329          
 330          /*********************************************************************************************************
             -**
 331          功能:Time0
 332          描述:产生定时器0中断
 333          参数:无
 334          返回:无
 335          **********************************************************************************************************
             -**/
 336          void Time0() interrupt 1 using 2
 337          {
 338   1            TimeCount++;
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 7   

 339   1                if(TimeCount >= MAX)
 340   1                {
 341   2                    TimeCount=0;
 342   2                        FlagTime0=1;
 343   2                }
 344   1            Time0Initial();
 345   1      }
 346          
 347          /*********************************************************************************************************
             -**
 348          功能:SendCharCom
 349          描述:向串口发送一个字符 
 350          参数:t
 351          返回:无
 352          **********************************************************************************************************
             -**/
 353          void SendCharCom(unsigned char ch)  
 354          {
 355   1          SBUF=ch;
 356   1          while(TI==0);
 357   1          TI=0;
 358   1      }
 359          
 360          /*********************************************************************************************************
             -**
 361          功能:SendStringCom
 362          描述:向串口发送一个字符串,strlen为该字符串长度 
 363          参数:str---要发送的字符串指针 strlen---字符串长度
 364          返回:无
 365          **********************************************************************************************************
             -**/
 366          void SendStringCom(unsigned char *str,unsigned int strlen)
 367          {
 368   1          unsigned int k=0;
 369   1          while( (k < strlen) && (strlen > 0) )
 370   1          {
 371   2              SendCharCom(*(str + k));
 372   2              k++;
 373   2          }
 374   1      }
 375          
 376          /*********************************************************************************************************
             -**
 377          功能:Extern0;产生外部中断0,是仲裁机分配IIC使用权的。
 378          描述:FlagMutex---用于隔离外部中断,假如一次外部中断没有执行完,不能响应下一次外部中断;
 379               FlagExt0---外部中断期间标志;P20---保证IIC使用权已经完全释放才可以再次响应。
 380          参数:无
 381          返回:无
 382          **********************************************************************************************************
             -**/
 383          void EXT0() interrupt 0 using 1
 384          { 
 385   1         if((FlagExt0 == 0) && (P20 == 1))
 386   1         {
 387   2             FlagExt0 = 1;
 388   2         }
 389   1      }
 390          
 391          /*********************************************************************************************************
             -**
 392          功能:ClearMyRom
 393          描述:清零字节数存储地址
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 8   

 394          参数:无
 395          返回:无
 396          **********************************************************************************************************
             -**/
 397          void ClearMyRam(uint address)
 398          {
 399   1          MyWriteOneByte(address,0x00);
 400   1              MyWriteOneByte(address+1,0x00);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -