找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM8S003串口控制電機(jī)鎖程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:167344 發(fā)表于 2017-3-1 11:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
STM8S003單片機(jī)通串口控制電機(jī)鎖

完整代碼下載:
lock.rar (651.73 KB, 下載次數(shù): 30)

下面是主程序:
  1. #include "IOSTM8S103F3.h"
  2. #include "led.h"
  3. #include "uart.h"
  4. #include "common.h"
  5. #include "motor.h"
  6. #include "timer.h"

  7. void rxdata_pro();
  8. void handle_pro();
  9. u8 rx_flag = 0;
  10. extern u32 time;
  11. extern u8 RxBuffer[RxBufferSize];
  12. u8 lockstatus = 2;
  13. u8 check = 0;
  14. u8 oldpos;
  15. u8 cmd_flag;
  16. u8 qzflag = 0;
  17. void main()
  18. {
  19.   CLK_CKDIVR = 8;

  20.   uart_conf();
  21.   lock_config();
  22.   PWM_Timer1_config();
  23.   PWM_Start();
  24.   delay_config();
  25.   enableInterrupts();
  26. // wdg_config();
  27.    unlock();
  28.    while(1)
  29.    {
  30.      feetdog();
  31.      rxdata_pro();
  32.      if(!HOARE_LVALUE) led_tongle();
  33.      if(!HOARE_RVALUE) led_on();
  34.       handle_pro();
  35.    }

  36. }

  37. void rxdata_pro()
  38. {
  39.     int i;
  40.     if(!rx_flag) return;
  41.     check = 0;
  42.     for(i = 0;i < 3;i++)
  43.       check ^= RxBuffer[i];
  44.     if(check != RxBuffer[3])
  45.       return;
  46.     cmd_flag = 1;
  47.     switch(RxBuffer[2])
  48.     {
  49.       case 1:
  50.         if(HOARE_RVALUE) lock();
  51.         break;
  52.         
  53.       case 2://關(guān)門
  54.          if(HOARE_LVALUE)  unlock();break;
  55.          
  56.        case 3://強(qiáng)制閉鎖
  57.          //if(HOARE_RVALUE) qzlock();
  58.          if(!qzflag){
  59.             qzlock();qzflag = 0;
  60.          }
  61.          break;
  62.     case 4:
  63.       if(!qzflag){
  64.         qxqzbs();qzflag = 0;break;
  65.       }
  66.     break;
  67.    
  68.     default:break;
  69.    
  70.     }
  71.     rx_flag = 0;
  72. }
  73. void wdg_config()
  74. {
  75.   CLK_ICKR |= 1<<3;
  76.   while(!(CLK_ICKR & (1<<4)));
  77.   
  78.   IWDG_KR = 0x55; //解鎖
  79.   IWDG_PR = 6;//128k 256分頻  500hz
  80.   IWDG_RLR = 255;
  81.   IWDG_KR = 0xCC;
  82. }

  83. void feetdog()
  84. {
  85.    IWDG_KR = 0xAA;
  86. }

  87. void handle_pro()
  88. {
  89.     if(HOARE_LVALUE && HOARE_RVALUE)
  90.     {
  91.         cmd_flag = 0;
  92.         if(!oldpos)  lock();
  93.         else
  94.           unlock();
  95.     }
  96. if(GetDoorStatus())
  97. {
  98.   if(HOARE_LVALUE)
  99.   {
  100.       delay(1000);

  101.       unlock();
  102.   }

  103. }

  104. }



復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:237623 發(fā)表于 2017-10-7 13:49 | 只看該作者
看看怎么樣呢?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表