找回密码
 立即注册

QQ登录

只需一步,快速开始

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

步进电机单片机代码运行不了

[复制链接]
跳转到指定楼层
楼主
为什么我的代码运行不了?我想按键按一下松开后,电机正向转动,再按另一个按键,电机反向转动。可是代码运行不了,检查了,但是不知道问题出哪里了,求大神指教
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define out P2
  5. sbit pos=P0^0;
  6. sbit neg=P0^1;
  7. uchar posflag,negflag;
  8. void delayms(uint);
  9. uchar code turn[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
  10. void keyscan(void)
  11. {
  12. if(pos==0)
  13. {
  14. delayms(2);
  15. if(pos==0)
  16. {
  17. while(!pos);
  18. posflag=1;
  19. negflag=0;
  20. }
  21. }
  22. else if(neg==0)
  23. {
  24. delayms(2);
  25. if(neg==0)
  26. {
  27. while(!neg);
  28. negflag=1;
  29. posflag=0;
  30. }
  31. }
  32. }

  33. void main(void)
  34. {
  35. uchar i;
  36. out=0x03;
  37. keyscan();
  38. while(1)
  39. {
  40. if(posflag==1)
  41. {
  42. i=i<8?i+1:0;
  43. out=turn[i];
  44. delayms(100);
  45. }
  46. else if(negflag==1)
  47. {
  48. i=i>0?i-1:7;
  49. out=turn[i];
  50. delayms(100);
  51. }
  52. }
  53. }
  54. void delayms(uint j)
  55. {
  56. uchar i;
  57. for(;j>0;j--)
  58. {
  59. i=250;
  60. while(--i);
  61. i=249;
  62. while(--i);
  63. }
  64. }
复制代码


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

使用道具 举报

沙发
ID:387733 发表于 2018-9-11 06:51 | 只看该作者
        keyscan(); 这个语句只是在初始化的时候执行一次,进入主循环后不再执行。应该后移2行,放入主循环内。
回复

使用道具 举报

板凳
ID:393864 发表于 2018-9-11 08:37 | 只看该作者
swhich case 语句  试试。
回复

使用道具 举报

地板
ID:396524 发表于 2018-9-11 16:24 | 只看该作者
键值获取只执行了一次,把keyscan()移入while里面,或者用中断获取按键状态,写在主函数很容易跟延时函数冲突
回复

使用道具 举报

5#
ID:389893 发表于 2018-9-11 21:13 | 只看该作者
sxhwdz 发表于 2018-9-11 06:51
keyscan(); 这个语句只是在初始化的时候执行一次,进入主循环后不再执行。应该后移2行,放入主循环 ...

哦哦,真的是耶!谢谢
回复

使用道具 举报

6#
ID:389893 发表于 2018-9-11 21:14 | 只看该作者
gaojiafeng66 发表于 2018-9-11 08:37
swhich case 语句  试试。

试过了,是我的键值获取函数调用放错地方了,谢谢
回复

使用道具 举报

7#
ID:389893 发表于 2018-9-11 21:15 | 只看该作者
1462634349 发表于 2018-9-11 16:24
键值获取只执行了一次,把keyscan()移入while里面,或者用中断获取按键状态,写在主函数很容易跟延时函数冲 ...

好的,谢谢,检查出来就是keyscan()放错地方了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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