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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2311|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC單片機帶x5045看門狗與串口效驗框架源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:401506 發(fā)表于 2018-9-23 10:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STC12C5A60S2串口通信帶CRC效驗,合適新手,希望有高手指點

單片機源程序如下:
  1. /*
  2. 串口協(xié)議
  3. 功能:通過判斷串口發(fā)送數(shù)據(jù),按數(shù)組0到最后一位進(jìn)行判斷
  4. ,用特定一個數(shù)組判斷選擇,用break跳出循環(huán),執(zhí)行數(shù)據(jù)  */
  5. #include "gobal.h"
  6. #include "Uart_Handle.h"
  7. #include "Uart.h"
  8. #include "x5045.h"
  9. void Uart_Handle(void)    //通訊協(xié)議判斷
  10. {
  11.   uchar cmd_temp;
  12.   //if(Recdata[REC_CMD1] ==0x00)   //判斷設(shè)備地址
  13.                 if((Recdata[REC_CMD1]==0x00)&&(Recdata[REC_CMD2]==0x0B)&&(Recdata[REC_CMD3]==0x01)&&(Recdata[REC_CMD4]==0x00)&&(Recdata[REC_CMD5]==0x01)
  14.                         &&(Recdata[REC_CMD6]==0x0A)&&(Recdata[REC_CMD7]==0x00)&&(Recdata[REC_CMD8]==0x01)&&(Recdata[REC_CMD9]==0x01)&&(Recdata[REC_CMD10]==0x7F))
  15.   {
  16.    
  17.       cmd_temp = Recdata[REC_CMD9]; //解析命令字
  18.       switch(cmd_temp)
  19.                 {
  20.         case sj2://0x01開燈
  21.           sj1();
  22.           break;  
  23.         case xj2://0x00關(guān)燈
  24.           xj1();
  25.           break;  
  26.                           case gkm://關(guān)看門狗命令
  27.           gkm1();
  28.           break;  
  29.         case kkm://開看門狗命令
  30.           kkm1();
  31.           break;
  32.         default://other
  33.           break;
  34.       }
  35.   }
  36. }


  37. void sj1(void)//開燈
  38. {
  39.                                 uchar To_PC_Data[12];        
  40.                                 To_PC_Data[0] = 0xCC;         //接收包頭CC
  41.                                 To_PC_Data[1] = 0x00;                         //應(yīng)答包字節(jié)數(shù)10
  42.                                 To_PC_Data[2] = 0x0C;//地址
  43.                                 To_PC_Data[3] = 0x01;                         //命令字
  44.                                 To_PC_Data[4] = 0x00;
  45.                                 To_PC_Data[5] = 0x01;
  46.                                 To_PC_Data[6] = 0x0A;
  47.               To_PC_Data[7] = 0x00;
  48.               To_PC_Data[8] = 0x00;
  49.               To_PC_Data[9] = 0x00;
  50.               To_PC_Data[10] = 0x00;
  51.               To_PC_Data[11] = 0x7F;
  52.                                 UART0_Send_String(To_PC_Data,12);
  53.                JDQ=1;
  54.         dogflag=1;
  55. }

  56. void xj1(void)//關(guān)燈
  57. {
  58.                                 uchar To_PC_Data[12];        
  59.                                 To_PC_Data[0] = 0xCC;         //接收包頭CC
  60.                                 To_PC_Data[1] = 0x00;                         //應(yīng)答包字節(jié)數(shù)10
  61.                                 To_PC_Data[2] = 0x0C;//地址
  62.                                 To_PC_Data[3] = 0x01;                         //命令字
  63.                                 To_PC_Data[4] = 0x00;
  64.                                 To_PC_Data[5] = 0x01;
  65.                                 To_PC_Data[6] = 0x0A;
  66.               To_PC_Data[7] = 0x00;
  67.               To_PC_Data[8] = 0x00;
  68.               To_PC_Data[9] = 0x00;
  69.               To_PC_Data[10] = 0x00;
  70.               To_PC_Data[11] = 0x7F;
  71.                                 UART0_Send_String(To_PC_Data,12);
  72.         JDQ=0;
  73.         dogflag=0;
  74. }
  75. void gkm1(void)//開燈
  76. {
  77.         WriteSR(0x32);
  78. }
  79. void kkm1(void)//開燈
  80. {
  81.         WriteSR(0x12);
  82. }
復(fù)制代碼
  1. #include "x5045.h"
  2. #include "gobal.h"

  3. /*****************************************************
  4. 函數(shù)功能:從X5045的當(dāng)前地址讀出數(shù)據(jù)
  5. 出口參數(shù):x
  6. ***************************************************/
  7. // unsigned char ReadCurrent(void)
  8. // {
  9. //           unsigned char i;
  10. //         unsigned char x=0x00;      //儲存從X5045中讀出的數(shù)據(jù)
  11. //         SCK=1;                     //將SCK置于已知的高電平狀態(tài)
  12. //    for(i = 0; i < 8; i++)
  13. //         {
  14. //            SCK=1;                 //拉高SCK
  15. //            SCK=0;                 //在SCK的下降沿輸出數(shù)據(jù)        
  16. //            x<<=1;  //將x中的各二進(jìn)位向左移一位,因為首先讀出的是字節(jié)的最高位數(shù)據(jù)           
  17. //                 x|=(unsigned char)SO;  //將SO上的數(shù)據(jù)通過按位"或"運算存入 x      
  18. //         }
  19. //         return(x);   //將讀取的數(shù)據(jù)返回
  20. //  }
  21. /*****************************************************
  22. 函數(shù)功能:寫數(shù)據(jù)到X5045的當(dāng)前地址
  23. 入口參數(shù):dat
  24. ***************************************************/
  25. void WriteCurrent(unsigned char dat)
  26. {
  27.    unsigned char i;
  28.         SCK=0;                 //將SCK置于已知的低電平狀態(tài)
  29.   for(i = 0; i < 8; i++)  // 循環(huán)移入8個位
  30.         {
  31.          SI=(bit)(dat&0x80);   //通過按位"與"運算將最高位數(shù)據(jù)送到S
  32.                                     //因為傳送時高位在前,低位在后
  33.          SCK=0;
  34.          SCK=1;               //在SCK上升沿寫入數(shù)據(jù)
  35.     dat<<=1;   //將y中的各二進(jìn)位向左移一位,因為首先寫入的是字節(jié)的最高位
  36.   }
  37. }

  38. /*****************************************************
  39. 函數(shù)功能:寫狀態(tài)寄存器 ,可以設(shè)置看門狗的溢出時間及數(shù)據(jù)保護(hù)
  40. 入口參數(shù):rs;  //儲存寄存器狀態(tài)值
  41. ***************************************************/
  42. void WriteSR(unsigned char rs)
  43. {
  44.          CS=0;                 //拉低CS,選中X5045
  45.          WriteCurrent(WREN);   //寫使能鎖存器允許
  46.          CS=1;                 //拉高CS
  47.          CS=0;                 //重新拉低CS,否則下面的寫寄存器狀態(tài)指令將被丟棄
  48.          WriteCurrent(WRSR);   //寫狀態(tài)寄存器
  49.          WriteCurrent(rs);     //寫入新設(shè)定的寄存器狀態(tài)值
  50.          CS=1;                 //拉高CS
  51. }

  52. /********** *******************************************
  53. 函數(shù)功能:寫數(shù)據(jù)到X5045的指定地址
  54. 入口參數(shù):addr
  55. ***************************************************/
  56. // void WriteSet(unsigned char dat,unsigned char addr)
  57. // {
  58. //           SCK=0;                 //將SCK置于已知狀態(tài)
  59. //     CS=0;                  //拉低CS,選中X5045
  60. //         WriteCurrent(WREN);    //寫使能鎖存器允許
  61. //         CS=1;                  //拉高CS
  62. //     CS=0;                  //重新拉低CS,否則下面的寫入指令將被丟棄
  63. //         WriteCurrent(WRITE);   //寫入指令
  64. //         WriteCurrent(addr);    //寫入指定地址
  65. //         WriteCurrent(dat);     //寫入數(shù)據(jù)
  66. //         CS=1;                  //拉高CS
  67. //    SCK=0;                 //將SCK置于已知狀態(tài)
  68. // }

  69. /*****************************************************
  70. 函數(shù)功能:從X5045的指定地址讀出數(shù)據(jù)
  71. 入口參數(shù):addr
  72. 出口參數(shù):dat
  73. ***************************************************/
  74. // unsigned char ReadSet(unsigned char addr)
  75. // {
  76. //  unsigned char dat;
  77. //  SCK=0;                 //將SCK置于已知狀態(tài)
  78. //  CS=0;                 //拉低CS,選中X5045
  79. //  WriteCurrent(READ);   //開始讀
  80. //  WriteCurrent(addr);   //寫入指定地址
  81. //  dat=ReadCurrent();    //讀出數(shù)據(jù)
  82. //  CS=1;                 //拉高CS
  83. //  SCK=0;                //將SCK置于已知狀態(tài)
  84. //  return dat;           //返回讀出的數(shù)據(jù)
  85. //  }

  86. /*****************************************************
  87. 函數(shù)功能:看門狗復(fù)位程序
  88. ***************************************************/
  89. void WatchDog(void)
  90. {
  91. CS=1;    //拉高CS
  92. CS=0;    //CS引腳的一個下降沿復(fù)位看門狗定時器
  93. CS=1;    //拉高CS
  94. }
  95. ///*****************************************************
  96. //函數(shù)功能:主程序
  97. //***************************************************/
  98. //void main(void)
  99. //{
  100. //  WriteSR(0x12);        //寫狀態(tài)寄存器(設(shè)定看門狗溢出時間為600ms,寫不保護(hù))  
  101. //  delaynms(10);         //X5045的寫入周期約為10ms
  102. //  while(1)
  103. //  {
  104. //         WriteSet(0xaa,0x10);  //將數(shù)據(jù)"0xaa"寫入指定地址"0x10"
  105. //         delaynms(10);         //X5045的寫入周期約為10ms
  106. //   P1=ReadSet(0x10);      //將數(shù)據(jù)讀出送P1口顯示
  107. //    WatchDog();           //復(fù)位看門狗
  108. //  }
  109. //}ssss

復(fù)制代碼


所有資料51hei提供下載:
STC帶CRC效驗框架.rar (59.8 KB, 下載次數(shù): 10)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区不卡 | 在线视频91 | 97caoporn国产免费人人 | 免费一区二区三区 | 91动漫在线观看 | 欧美久久免费观看 | 久久久国产一区 | 99热在线免费 | 在线不卡 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 日韩一区二区三区视频在线播放 | 国产精品1区2区3区 欧美 中文字幕 | 日本精品一区二区三区四区 | 国产三级国产精品 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 在线亚洲一区二区 | 欧美一区二区三区国产 | av在线免费观看网站 | 蜜臀av日日欢夜夜爽一区 | 亚洲一区二区久久久 | 成人欧美一区二区三区黑人孕妇 | 午夜丁香视频在线观看 | 精品乱人伦一区二区三区 | www.com久久久 | 99精品99久久久久久宅男 | 中文字幕久久精品 | 欧美日韩国产一区二区 | 亚洲美女一区 | 九色porny自拍视频 | 日韩精品一区二区三区中文在线 | 一区二区三区四区在线视频 | 99热最新网址 | 亚洲欧美国产一区二区三区 | 日本在线视频中文字幕 | 精品久久久久久亚洲精品 | 日韩电影免费观看中文字幕 | 伊人精品在线视频 | 九九综合| 亚洲精品一区二区在线观看 | 在线观看免费av网 | 老外几下就让我高潮了 |