[Atmel] 用AtmelStudio6.2跑mega16例程(72)控制直流电机

[复制链接]
1124|1
 楼主| ddllxxrr 发表于 2014-12-16 21:31 | 显示全部楼层 |阅读模式
运行本例时,按下K1可使直流电机正转,按下K2可使直流电机反转,按下K3时停止。

Proteus运行时截图:


Atmel Studio6.2 编译通过截图:


程序清单:

  1. /*
  2. * GccApplication35.c
  3. *
  4. * Created: 2014-12-16 20:52:59
  5. *  Author: Administrator
  6. */

  7. #define  F_CPU 4000000UL
  8. #include <util/delay.h>
  9. #include <avr/io.h>
  10. #include <stdint.h>

  11. #define K1_DOWN()((PIND & _BV(PD1))==0x00)
  12. #define K2_DOWN()((PIND& _BV(PD4))==0x00)
  13. #define K3_DOWN() ((PIND & _BV(PD7))==0x00)

  14. #define LED1_ON() (PORTC = 0B11111110)
  15. #define LED2_ON() (PORTC = 0B11111101)
  16. #define LED3_ON() (PORTC = 0B11111011)

  17. #define MA_0() (PORTB &= ~_BV(PB2))
  18. #define MA_1() (PORTB |= _BV(PB2))
  19. #define MB_0() (PORTB &= ~_BV(PB1))
  20. #define MB_1() (PORTB |= _BV(PB1))

  21. int main(void)
  22. {
  23.     DDRB = 0xFF;PORTB = 0xFF;
  24.         DDRC = 0xFF;PORTC = 0xFF;
  25.         DDRD = 0x00;PORTD = 0xFF;
  26.         LED3_ON();
  27.         while(1)
  28.     {
  29.         if(K1_DOWN())
  30.                 {
  31.                     while(K1_DOWN());
  32.                         LED1_ON();MA_0();MB_1();
  33.                 }
  34.                 if(K2_DOWN())
  35.                 {
  36.                     while(K2_DOWN());
  37.                         LED2_ON(); MA_1();MB_0();
  38.                 }
  39.                 if(K3_DOWN())
  40.                 {
  41.                     while(K3_DOWN())
  42.                         LED3_ON();MA_0();MB_0();
  43.                 }
  44.     }
  45. }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
XHB7906021 发表于 2016-3-1 22:01 | 显示全部楼层
要是能把PROTEUS 及ATIMEL ST6。2程序,全部都有传上来,那更好。多谢了!!!:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部