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

📄 main.lst

📁 这是一个单片机的项目
💻 LST
📖 第 1 页 / 共 3 页
字号:
 194          bit FlagOrderSaved = 1;    //命令已保存的标志。
 195          bit FlagSendSlaveData =0 ; //发送从机命令
 196          bit FlagExtInterrupt = 0;
 197          bit FlagMainFirstExtInterrupt = 0;
 198          /******************************************标识位定义信息****************************************/
 199          
 200          /******************************************其它变量相关******************************************/
 201          uchar    RecvCount = 0;              //串口中断里的计数。
 202          uchar    RecvState = InitState;      //接收的状态。
 203          uchar    RecvSize = 0;               //需要接收的数据长度。
 204          xdata    uchar  RecvOrderBuff[LEN];  //串口接受缓冲区。
 205          xdata    uchar  CopyToComRamBuff[NUM1];
 206          xdata    uchar  CopyToMyRamBuff[NUM1];
 207          xdata    uchar  SendSlaveDataBuff[NUM1];
 208          uchar    TimesCount = 0;
 209          /******************************************其它变量相关******************************************/
 210          
 211          uchar code valid_cmd[256]={ // 如果输入命令有效则为1,为了验证数据包的有效性。
 212          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00 - 0F
 213          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 1F
 214          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 2F
 215          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 3F
 216          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 4F
 217          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 5F
 218          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 6F
 219          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 7F
 220          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 80 - 8F
 221          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 90 - 9F
 222          0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, // A0 - AF
 223          0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B0 - BF
 224          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C0 - CF
 225          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D0 - DF
 226          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E0 - EF
 227          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // F0 - FF
 228          };
 229          
 230          /****************************************************************************************
 231          功能:Delay
 232          描述:延时函数
 233          参数:t
 234          返回:无
 235          ****************************************************************************************/
 236          void Delay(uint t)
 237          {
 238   1          while(t!=0)
 239   1              t--;
 240   1      }
 241          
C51 COMPILER V7.50   MAIN                                                                  03/17/2008 20:43:15 PAGE 5   

 242          /****************************************************************************************
 243          功能:InitSerialComm
 244          描述:串口初始化
 245          参数:无
 246          返回:无
 247          ****************************************************************************************/
 248          void InitSerialComm(void)
 249          {
 250   1          SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
 251   1          TMOD |= 0x21;       //TMOD: timer 1, mode 2, 8-bit reload 
 252   1          PCON |= 0x80;       //SMOD=1; 
 253   1          TH1   = 0xF3;       //Baud:4800  fosc=12MHz 
 254   1          IE   |= 0x93;       //Enable Serial Interrupt 
 255   1          TR1   = 1;          // timer 1 run 
 256   1              IT0   = 1;
 257   1         // TI=1; 
 258   1      }
 259          
 260          /*****************************************************************************************
 261          功能:Time0Initial()
 262          描述:定时器0初始化,主要设定初值
 263          参数:无
 264          返回:无
 265          *****************************************************************************************/
 266          void Time0Initial()
 267          {
 268   1         TR0=0;
 269   1         TH0=0x3C;  //50ms
 270   1         TL0=0xB0;
 271   1         TR0=1;
 272   1      }
 273          
 274          /*****************************************************************************************
 275          功能:Time0
 276          描述:产生定时器0中断
 277          参数:无
 278          返回:无
 279          *****************************************************************************************/
 280          void Time0() interrupt 1 using 2
 281          {
 282   1            TimeCount++;
 283   1                if(TimeCount >= MAX)
 284   1                {
 285   2                       FlagTime0=1;
 286   2                       TimeCount = 0;
 287   2                }
 288   1            Time0Initial();
 289   1      }
 290          
 291          /****************************************************************************************
 292          功能:SendCharCom
 293          描述:向串口发送一个字符 
 294          参数:ch
 295          返回:无
 296          ****************************************************************************************/
 297          void SendCharCom(unsigned char ch)  
 298          {
 299   1          SBUF=ch;
 300   1          while(TI==0);
 301   1          TI=0;
 302   1      }
 303          
C51 COMPILER V7.50   MAIN                                                                  03/17/2008 20:43:15 PAGE 6   

 304          /****************************************************************************************
 305          功能:SendStringCom
 306          描述:向串口发送一个字符串,strlen为该字符串长度 
 307          参数:str---要发送的字符串指针 strlen---字符串长度
 308          返回:无
 309          ****************************************************************************************/
 310          void SendStringCom(unsigned char *str,unsigned int strlen)
 311          {
 312   1          unsigned int k=0;
 313   1          while( (k < strlen) && (strlen > 0) )
 314   1          {
 315   2              SendCharCom(*(str + k));
 316   2              k++;
 317   2          }
 318   1      }
 319          
 320          /****************************************************************************************
 321          功能:Extern0;产生外部中断0,是仲裁机分配IIC使用权的。
 322          描述:FlagMutex---用于隔离外部中断,假如一次外部中断没有执行完,能响应下一次外部中断;
 323               FlagExt0---外部中断期间标志;P20---保证IIC使用权已经完全释放才可以再次响应。
 324          参数:无
 325          返回:无
 326          ****************************************************************************************/
 327          void Extern0() interrupt 0 using 3
 328          {
 329   1         if((FlagExt0 == 0) && (P20 == 1))
 330   1         {
 331   2            FlagExt0 = 1;
 332   2         }
 333   1      }
 334          
 335          /****************************************************************************************
 336          功能:SendEndSignal
 337          描述:发送结束字符
 338          参数:无
 339          返回:无
 340          ****************************************************************************************/
 341          void SendEndSignal()
 342          {
 343   1         xdata uchar temp[2];
 344   1         temp[0]=0x44;
 345   1         temp[1]=0x44;
 346   1         SendStringCom(temp,2);
 347   1      }
 348          
 349          /****************************************************************************************
 350          功能:ClearMyRom
 351          描述:清零字节数存储地址
 352          参数:无
 353          返回:无
 354          ****************************************************************************************/
 355          void ClearMyRam(uint address)
 356          {
 357   1          xdata uchar temp[2];
 358   1          temp[0]=0x00;
 359   1          temp[1]=0x00;
 360   1          MyWriteBytes(address,temp,2);
 361   1      }
 362          
 363          /****************************************************************************************
 364          功能:SetDataBytes
 365          描述:设置自带RAM的字节长度
C51 COMPILER V7.50   MAIN                                                                  03/17/2008 20:43:15 PAGE 7   

 366          参数:address---存放长度的地址 len---长度值
 367          返回:无
 368          ****************************************************************************************/
 369          void SetMyDataBytes(uint address,uchar len)
 370          {
 371   1          xdata uchar temp[2];
 372   1              uint num;
 373   1              MyReadBytes(address,temp,2);
 374   1              num = temp[0] + temp[1] * 0x100 + len;     
 375   1              temp[0]=num%256;
 376   1              temp[1]=num/256;  
 377   1          MyWriteBytes(address,temp,2);
 378   1      }
 379          
 380          /****************************************************************************************
 381          功能:GetMyDataBytes
 382          描述:得到自带RAM里的数据字节数
 383          参数:address---存放长度的地址
 384          返回:uint
 385          ****************************************************************************************/
 386          uint GetMyDataBytes(uint address)
 387          {       
 388   1              xdata uchar temp[2];
 389   1          uint num;
 390   1              MyReadBytes(address,temp,2);
 391   1              num = temp[0] + temp[1] * 0x100;
 392   1              return num;
 393   1      }
 394          
 395          /*****************************************************************************************

⌨️ 快捷键说明

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