找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2936|回复: 1
打印 上一主题 下一主题
收起左侧

STM8S003串口控制电机锁程序

[复制链接]
跳转到指定楼层
楼主
STM8S003单片机通串口控制电机锁

完整代码下载:
lock.rar (651.73 KB, 下载次数: 29)

下面是主程序:
  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://关门
  54.          if(HOARE_LVALUE)  unlock();break;
  55.          
  56.        case 3://强制闭锁
  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. }



复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:237623 发表于 2017-10-7 13:49 | 只看该作者
看看怎么样呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表