久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6792|回復: 2
收起左側

keil編程時error C202: 'TR0': undefined identifier求大佬指點,怎么改,謝謝謝謝!

[復制鏈接]
ID:919246 發表于 2021-5-11 20:32 | 顯示全部樓層 |閱讀模式
  1. #include<modbus.h>
  2. #define uchar unsigned char
  3. #define uint8 unsigned char
  4. #define uint16 unsigned char
  5. bit  Search_Counta;//首次尋優標志 1
  6. bit  Search_Countb;//首次尋優標志 2
  7. uint8 Count; //尋優計數值
  8. uint8 ReceCount;  //串行口1的接收數據計數值
  9. uint8 SendCount;   //串行口1發送數據計數值
  10. uint16 Init_Value=0;   //尋優初值
  11. uint16 Term_Value=50;   //尋優終值
  12. uint8 Search_Steps=50;//尋優步數
  13. uint8 idata resvbuf[16],Sendbuf[64];//串行口 1 的接收緩沖區和發送緩沖區
  14. uint16 xdata ReWrbuf[32];    //可讀寫緩沖區
  15. uint16 xdata Register[32];   //寄存器緩沖區
  16. uint16 D_Val;           //占空比的數字量
  17. bit Error;   //錯誤標志位
  18. uint8 bdata Coil1=0xff;//8 位線圈狀態
  19. sbit Coil1_bit0=Coil1^0;
  20. sbit Coil1_bit1=Coil1^1;
  21. sbit Coil1_bit2=Coil1^2;
  22. sbit Coil1_bit3=Coil1^3;
  23. sbit Coil1_bit4=Coil1^4;
  24. sbit Coil1_bit5=Coil1^5;
  25. sbit Coil1_bit6=Coil1^6;
  26. sbit Coil1_bit7=Coil1^7;
  27. void InitSystem(); //初始化函數
  28. void Delay(void); //延時函數
  29. void CheckMessage(void);//功能碼判斷函數
  30. void SendData();//發送數據函數                             
  31. void ReadCoil(void);//讀線圈函數
  32. void ReadRegisters(void);//讀寄存器函數
  33. void ForceSingalCoil(void);//強置單線圈函數
  34. void SetOneRegisterVal(void);//預置單寄存器函數
  35. uint8 GetSWVal(uint16 Address);
  36. bit SetCoilVal(uint16 Address,bit Val);
  37. bit SetRegisterVal(uint16 Address1,uint16 Val1);
  38. uint16 crccheck(uint8*puchMsg, uint8 usDataLen);
  39. void Delay_us(uint8 t);
  40. void Write_TLC(uint16 dat);
  41. void Self_optimization();

  42. //CRC 校驗查表碼值

  43. const uint8 code auchCRCHi[] ={  
  44. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  
  45. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  
  46. 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  
  47. 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,  
  48. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  
  49. 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,  
  50. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  
  51. 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  
  52. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  
  53. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,  
  54. 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  
  55. 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,  
  56. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  
  57. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,  
  58. 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  
  59. 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,  
  60. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  
  61. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  
  62. 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  
  63. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,   
  64. 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,  
  65. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,  
  66. 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,  
  67. 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,  
  68. 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,  
  69. 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40};  

  70. const uint8 code auchCRCLo[] = {  
  71. 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,  
  72. 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,  
  73. 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,  
  74. 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,  
  75. 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,  
  76. 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,  
  77. 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,  
  78. 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,  
  79. 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,  
  80. 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,  
  81. 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,  
  82. 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,  
  83. 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,  
  84. 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,  
  85. 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,  
  86. 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,  
  87. 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,  
  88. 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,  
  89. 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,  
  90. 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,  
  91. 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,  
  92. 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,  
  93. 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,  
  94. 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,  
  95. 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,  
  96. 0x43, 0x83, 0x41, 0x81, 0x80, 0x40};  

  97. void timer0_INT(void)interrupt 1 using 1      //定時/計數器 0 中斷
  98. {
  99.   TR0=0;
  100.   Error=1;
  101.   if((resvbuf[0]==IN_Address)&&(ReceCount>=8))// 判斷接收到的設備地址是否與上位機的地址相等,并成功接收上位機發送的指令
  102.   Error=0;
  103. }
  104. void Uart1_INT(void)interrupt 4 using 3       //串口 1 中斷
  105. {
  106.    if(RI)     //RI 為接收中斷標志位,為 1 表示一個數據已經收到。
  107.     {
  108.       RI=0;
  109.       resvbuf[ReceCount++]=SBUF;
  110.       TR0=0;
  111.       TH0=(65536-3688)/256;
  112.       TL0=(65536-3688)%256;   //定時器 0 定時 4ms
  113.       TR0=1;     
  114.     }
  115.    if(TI)      ////TI 為發送中斷標志位,為 1 表示一個數據已經發送完畢。
  116.     {
  117.      TI=0;
  118.     }
  119. }
  120. /********************************************
  121. Function:CRC 校驗子函數

  122. ********************************************/
  123. uint16 crccheck(uint8*puchMsg, uint8 us DataLen)  
  124. {  
  125.   uint8 uchCRCHi = 0xFF ;  
  126.   uint8 uchCRCLo = 0xFF ;  
  127.   uint8 uIndex ;  
  128.   while(usDataLen--)  
  129.   {
  130.   uIndex = uchCRCHi^*puchMsg++ ;  
  131.   uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;  
  132.   uchCRCLo = auchCRCLo[uIndex] ;  
  133.   }  
  134.   return (uchCRCHi << 8 | uchCRCLo) ;     //生成校驗碼,高位在前,低位在后。
  135. }
  136. /********************************************
  137. Function
  138. :延時子函數

  139. ********************************************/
  140. void Delay(void)
  141. {
  142.   uint16 i;
  143.   for(i=0;i<3600;i++)
  144.   {
  145.    _nop_();
  146.   }
  147. }
  148. //初始化函數

  149. void Init System()
  150. {  
  151.   Rece Count=0;
  152.   Rece2Count=0;
  153.   Count   = 0;
  154.   Search_Counta = 0;
  155.   Search_Countb = 0;
  156.   DA_Val = 0;
  157.   Register[9] = 0;//初始化時占空比輸出為 0
  158.   Re Wrbuf[21] = 0;//初始工作時控制信號為 0
  159.   Re Wrbuf[22] = 0;//初始工作時電流為 0
  160.   Re Wrbuf[23] = 0;//初始工作時電流為 0
  161.   TMOD=0x21;//定時器 1 工作方式 2,作為波特率發生器,定時器 0 工作方式1
  162.   SCON=0x50;//串行口 1 工作方式 1,允許接收
  163.   BRT=0xfd;   //串行口 2 波特率 [url=mailto:9600@11.0592MHz]9600@11.0592MHz[/url]
  164.   TH1=0xfd;
  165.   TL1=0xfd;//串行口 1 波特率 [url=mailto:9600@11.0592MHz]9600@11.0592MHz[/url]
  166.   IT0 = 0;             //設置外部中斷 0 為低電平觸發
  167.   IE=0x93;//EA=1,ES=1,ET0=1,EX0 = 1
  168.   AUXR=0x10;//AUXR:輔助寄存器。BRTR=1,允許獨立波特率發生器運行。
  169. S2SMOD=0,串口 2 的波特率不加倍.
  170.       //EXTRAM=0,允許使用內部擴展的 1024 字節擴展 RAM。
  171.   TR1=1;//啟動定時器 1
  172.   CJ();
  173. }
  174. /********************************************
  175. Function
  176. :單片機應答(發送數據)子函數

  177. ********************************************/
  178. void Send Data()
  179. {
  180.   uint8 i;
  181.   uint16 crctemp;
  182.   Sendbuf[0]=resvbuf[0]; //發送數據的第一個字節為上位機的地址
  183.   Sendbuf[1]=resvbuf[1]; //發送數據的第二個字節為功能碼
  184.   crctemp=crccheck(Sendbuf,Send Count-2);//計算發送的校驗碼
  185.   Sendbuf[Send Count-2]=crctemp&0xff;
  186.   Sendbuf[Send Count-1]=crctemp>>8; //發送消息時,CRC 低位在前、高位在后
  187.   for(i=0;i<Send Count;i++)
  188.   {  
  189.    SBUF=Sendbuf[i];
  190.    Delay();
  191.   }
  192. }

  193. /**********************************
  194. 函數功能:Modbus 功能判斷函數
  195. **********************************/  
  196. void Check Message(void)      
  197. {  
  198.   uint16 crctemp,temp;
  199.   crctemp=crccheck(resvbuf,Rece Count-2); //生成校驗碼
  200.   temp=resvbuf[Rece Count-1];//接收到的校驗碼的高字節
  201.   temp=temp<<8|resvbuf[Rece Count-2];
  202.   if(temp!=crctemp) //判斷接收到的校驗碼和生成的校驗碼是否一致
  203.   {
  204.     Error=1;   //校驗碼不一致,錯誤標志位置 1.
  205.   }
  206.   Rece Count=0;   //單片機接收數據(上位機發送的數據)無效,接收字節變量清零。
  207.   if(!Error)//校驗碼一致
  208.   {  
  209.    ES=0;//關串口 1 中斷
  210.    ET0=0;//關定時器 0 中斷
  211.    switch(resvbuf[1])  //判斷功能碼
  212.    {
  213. case 2:  Read Coil();break;
  214.      case 3:  Read Registers();break;
  215.      case 5:  Force Singal Coil();break;
  216.      case 6:  Set One Register Val();break;
  217.         default:   Error=1;
  218.    }
  219.    ET0=1;
  220.    ES=1;
  221.   }
  222. }
  223. /**********************************
  224. 函數功能:讀取位函數
  225. Sendbuf[i+3]表示 P0.0-P0.7 的開關狀態
  226. 若為高電平,則表明端口對應的開關斷開;
  227. 若為低電平,則表明端口對應的開關閉合;
  228. **********************************/  
  229. void Read Coil(void)
  230. {
  231.   uint16 Start Address;//寄存器起始地址
  232.   uint16 temp Address;
  233.   uint8 Coil Num,i,Byte Num,j;
  234.   uint8 Coil Val;
  235.   bit exit=0;  //是否讀完輸入開關狀態標志位(exit=1 表示讀完了)
  236.   Start Address=resvbuf[2];   //起始地址高 8 位
  237.   Start Address=Start Address|resvbuf[3];//起始地址低 8 位
  238.   temp Address=Start Address;
  239.   Coil Num=resvbuf[5];//讀取的位數
  240.   Byte Num=Coil Num/8; //折算成字節
  241.   if(Coil Num%8!=0)
  242.   Byte Num++;
  243.   Sendbuf[2]=Byte Num;//返回的字節數
  244.   for(i=0;i<Byte Num;i++)
  245.    {
  246.     Sendbuf[i+3]=0;//返回的數據 1 初始值為 0  
  247.     for(j=0;j<8;j++)
  248.     {
  249.      Coil Val=Get SWVal(Start Address);
  250.      Sendbuf[i+3]|=Coil Val<<j;//讀取每一位的狀態
  251.      Start Address++;
  252.      if(Start Address>=temp Address+Coil Num)//判斷是否讀完 Coil Num個線圈狀態
  253.      {
  254.       exit=1;
  255.       break;//讀完退出
  256.      }
  257.     }
  258.     if(exit==1)
  259.      break;
  260.    }
  261.   Send Count=5+Byte Num;//發送的字節數(發送的地址碼、功能碼、從機返回的字節數、CRC 校驗碼共占 5 個字節)
  262.   Send Data();
  263. }
  264. /**********************************
  265. 函數功能:獲取開關狀態函數。8 路數字量輸入 Address1=上位機中設置的寄存
  266. 器地址減 1.在上位機中增加通道:寄存器類型設置成【1 區】輸入繼電器,寄存
  267. 器地址依次設置成 1-8
  268. **********************************/
  269. uint8 Get SWVal(uint16 Address1)
  270. {
  271.   uint8 Coil Val,Switch=0xff;
  272.   Switch=P0;
  273.   switch(Address1&0x0f)
  274.   {
  275.    case 0:   Coil Val=Switch>>1&0x01;break;   // P0.0 的開關狀態
  276.    case 1:   Coil Val=Switch>>2&0x01;break;   // P0.1 的開關狀態
  277.    case 2:   Coil Val=Switch>>3&0x01;break;   // P0.2 的開關狀態
  278.    case 3:   Coil Val=Switch>>4&0x01;break;   // P0.3 的開關狀態
  279.    case 4:   Coil Val=Switch>>5&0x01;break;   // P0.4 的開關狀態   
  280.    case 5:   Coil Val=Switch>>6&0x01;break;   // P0.5 的開關狀態
  281.    case 6:   Coil Val=Switch>>7&0x01;break;   // P0.6 的開關狀態
  282.    case 7:   Coil Val=Switch>>8&0x01;break;   // P0.7 的開關狀態
  283.     default:  break;
  284.   }
  285.   return Coil Val;
  286. }
  287. /**********************************
  288. 函數功能:讀取寄存器函數

  289. **********************************/
  290. void Read Registers(void)
  291. {
  292.   uint16 Start Address;
  293.   uint8 Byte Count,i;
  294.   Start Address=resvbuf[2];
  295.   Start Address=Start Address<<8|resvbuf[3];
  296.   Byte Count=resvbuf[5]*2; //一個寄存器數據占 2 個字節   
  297.   Sendbuf[2]=resvbuf[5]*2; //上位機寄存器為 16 位占用兩個字節  ?
  298.   Sendbuf[2]=resvbuf[5]*2
  299.   for(i=0;i<Byte Count;i+=2)//一個寄存器數據占 2 個字節
  300.      {
  301.    Sendbuf[i+4]=Re Wrbuf[Start Address]&0xff;
  302.    Sendbuf[i+3]=Re Wrbuf[Start Address]>>8; //高位在前、低位在后
  303.    Start Address++;
  304.   }
  305.   Send Count=Byte Count+5;
  306.   Send Data();
  307.   if(resvbuf[3] == 0x00)
  308.    CJ(); //讀電能采集模塊數據
  309. }
  310. /**********************************
  311. 函數功能:強制單線圈函數

  312. **********************************/
  313. void Force Singal Coil(void)
  314. {
  315.   uint16 Address,On Off;
  316.   bit temp,Coil Val;
  317.   Address=resvbuf[2]<<8|resvbuf[3];
  318.   On Off=resvbuf[4]<<8|resvbuf[5];
  319.   if(On Off==0x0000)
  320.   {
  321.    Coil Val=0;
  322.    temp=Set Coil Val(Address,Coil Val);
  323.   }
  324.   else if(On Off==0x FF00)
  325.   {
  326.    Coil Val=1;
  327.    temp=Set Coil Val(Address,Coil Val);
  328.   }
  329.   if(temp==1)     //成功返回原命令
  330.   {   
  331.   Sendbuf[2]=resvbuf[2];   
  332.   Sendbuf[3]=resvbuf[3];
  333.   Sendbuf[4]=resvbuf[4];
  334.   Sendbuf[5]=resvbuf[5];
  335.   Send Count=8;
  336.   Send Data();
  337.   }
  338.   else
  339.    Error=1;
  340. }
  341. /**********************************
  342. 函數功能:設置位值函數
  343. 6 路數字量輸出,Address=上位機中設置的寄存器地址減 1.
  344. 上位機中增加通道:寄存器類型設置成【0 區】輸出繼電器,操作方式設置成只
  345. 寫 , 寄 存 器 地 址 依 次 設 置 成 1-6 , 即 可 強 制 Q55-Q0(P2.0-P2.5)
  346. 的 狀 態 。
  347. **********************************/
  348. bit Set Coil Val(uint16 Address,bit Val)
  349. {
  350.   bit result=1;
  351.   switch(Address&0x0f)
  352.   {
  353.    case 0:   Coil1_bit0=Val;break;   //強制 P2.0(Q5)的狀態
  354.    case 1:   Coil1_bit1=Val;break;   //強制 P2.1(Q4)的狀態
  355.    case 2:   Coil1_bit2=Val;break;   //強制 P2.2(Q3)的狀態
  356.    case 3:   Coil1_bit3=Val;break;   //強制 P2.3(Q2)的狀態
  357.    case 4:   Coil1_bit4=Val;break;   //強制 P2.4(Q1)的狀態
  358.    case 5:   Coil1_bit5=Val;break;   //強制 P2.5(Q0)的狀態
  359.    case 6:   Self_optimization();break;   //自尋優開始
  360.    default:  result=0;break;
  361.   }
  362.   return result;   
  363. }
  364. /**********************************
  365. 函數功能:設置單寄存器函數
  366. **********************************/
  367. void Set One Register Val(void)
  368. {
  369.   uint16 R_Address,Register Val;
  370.   bit temp1;
  371.   R_Address=resvbuf[2];
  372.   R_Address=R_Address<<8|resvbuf[3];
  373.   R_Address=R_Address-90;   //要設置的寄存器地址
  374.   Register Val=resvbuf[4];
  375.   Register Val=Register Val<<8|resvbuf[5];//要設置的寄存器值
  376.   temp1=Set Register Val(R_Address,Register Val);
  377.   if((temp1 == 1)&&(R_Address == 9))   //成功返回原命令
  378.   {
  379.    Sendbuf[2]=resvbuf[2];
  380.    Sendbuf[3]=resvbuf[3];
  381.    Sendbuf[4]=resvbuf[4];
  382.    Sendbuf[5]=resvbuf[5];
  383.    Send Count = 8;
  384.    Send Data();
  385.    D_Val = Register[9];
  386.    Write_TLC(D_Val); //輸出 D 值
  387.   }
  388.   else if((temp1 == 1)&&(R_Address == 10))
  389.   {
  390.    Sendbuf[2]=resvbuf[2];
  391.    Sendbuf[3]=resvbuf[3];
  392.    Sendbuf[4]=resvbuf[4];
  393.    Sendbuf[5]=resvbuf[5];
  394.    Send Count = 8;
  395.    Send Data();
  396.    Harm_Times = Register[10]&0x FF;   
  397.   }
  398.   else if((temp1 == 1)&&(R_Address == 11))
  399.   {  
  400.    Sendbuf[2]=resvbuf[2];
  401.    Sendbuf[3]=resvbuf[3];
  402.    Sendbuf[4]=resvbuf[4];
  403.    Sendbuf[5]=resvbuf[5];
  404.    Send Count = 8;
  405.    Send Data();  
  406.    Init_Value = Register[11];
  407.    Search_Counta = 0;
  408.   }
  409.   else if((temp1 == 1)&&(R_Address == 12))
  410.   {
  411.    Sendbuf[2]=resvbuf[2];
  412.    Sendbuf[3]=resvbuf[3];
  413.    Sendbuf[4]=resvbuf[4];
  414.    Sendbuf[5]=resvbuf[5];
  415.    Send Count = 8;
  416.    Send Data();  
  417.    Term_Value = Register[12];
  418.    Search_Countb = 0;
  419.   }
  420.   else if((temp1 == 1)&&(R_Address == 13))
  421.   {
  422.    Sendbuf[2]=resvbuf[2];
  423.    Sendbuf[3]=resvbuf[3];
  424.    Sendbuf[4]=resvbuf[4];
  425.    Sendbuf[5]=resvbuf[5];
  426.    Send Count = 8;
  427.    Send Data();  
  428.    Search_Steps = Register[13]&0x FF;
  429.   }
  430.   else   //否則置錯誤位
  431.    Error=1;
  432. }
  433. /**********************************
  434. 函數功能:設置寄存器值函數
  435. **********************************/
  436. bit Set Register Val(uint16 Address1,uint16 Val1)
  437. {
  438.   uint8 Addr;
  439.   bit result1=1;
  440.   Addr=Address1&0xff; //Register[]數組的大小為 32 個字節
  441.      Register[Addr]=Val1;
  442.   return result1;
  443. }
  444. void Delay_us(uint8 t)
  445. {
  446.   uint8 i;
  447.   for(i=0;i<12*t;i++)
  448.    _nop_();
  449. }
復制代碼
51hei截圖20210511203108.png
51hei截圖20210511203041.png
回復

使用道具 舉報

ID:213173 發表于 2021-5-12 06:52 | 顯示全部樓層
這段程序可能只是一個功能模塊,并且含有外部變量。不可以單獨編譯。
回復

使用道具 舉報

ID:887371 發表于 2021-5-12 09:07 | 顯示全部樓層
#include <REG52.H>

前面加上這句。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年人在线电影 | 精品久久一区 | 黄色国产在线播放 | 日韩毛片在线免费观看 | 国产欧美综合在线 | 国产日韩精品一区二区 | www.四虎.com | 亚洲欧洲精品在线 | 欧美久久一区 | 久久久成人网 | 欧美国产日韩一区二区三区 | 99re热这里只有精品视频 | 精品99久久久久久 | 全免一级毛片 | 亚洲欧洲一区二区 | 狠狠干天天干 | 日韩精彩视频 | 欧美一区二区三区在线 | 亚洲电影在线播放 | 国产精品日韩一区 | 色网站在线免费观看 | 小早川怜子xxxxaⅴ在线 | 精品久久久久一区二区国产 | 国产良家自拍 | 久草热线 | 一区二区在线不卡 | 一级黄色网页 | 亚洲网在线| 久久1区| 免费视频久久久久 | 一区二区三区视频 | 亚洲欧洲一区 | 欧美国产精品一区二区三区 | 欧美成人激情 | 人人射人人草 | 欧美日韩精品一区 | 国产综合av | 麻豆视频在线免费观看 | av日韩精品 | 天堂va在线观看 | 亚洲黄色av网站 |