[Atmel] 用AtmelStudio6.2跑mega16例程(28)交通灯

[复制链接]
 楼主| ddllxxrr 发表于 2014-10-6 14:58 | 显示全部楼层 |阅读模式
这个程序绝的地方是在switch语句中,指定下一个case的值。

程序如下:
  1. /*
  2. * GccApplication12.c
  3. *
  4. * Created: 2014-10-6 14:20:00
  5. *  Author: Administrator
  6. */

  7. #define F_CPU 0x8000000UL

  8. #include <avr/io.h>
  9. #include <util/delay.h>
  10. #include <stdint.h>

  11. #define RED_EW_ON() PORTC &= ~_BV(PC0)
  12. #define YELLOW_EW_ON() PORTC &=~_BV(PC1)
  13. #define GREEN_EW_ON() PORTC &=~_BV(PC2)

  14. #define  RED_EW_OFF() PORTC |= _BV(PC0)
  15. #define  YELLOW_EW_OFF() PORTC |= _BV(PC1)
  16. #define  GREEN_EW_OFF() PORTC |= _BV(PC2)

  17. #define  RED_SN_ON() PORTC &=~_BV(PC3)
  18. #define  YELLOW_SN_ON() PORTC &=~_BV(PC4)
  19. #define  GREEN_SN_ON() PORTC &=~_BV(PC5)

  20. #define  RED_SN_OFF() PORTC |= _BV(PC3)
  21. #define  YELLOW_SN_OFF() PORTC |= _BV(PC4)
  22. #define  GREEN_SN_OFF() PORTC |= _BV(PC5)

  23. #define  YELLOW_EW_BLINK() PORTC^=_BV(PC1)
  24. #define YELLOW_SN_BLINK() PORTC^=_BV(PC4)

  25. uint8_t Flash_Count = 0,Operation_Type = 1;

  26. void Traffic_Light()
  27. {
  28.         switch(Operation_Type)
  29.         {
  30.                 case 1:
  31.                          RED_EW_OFF(); YELLOW_EW_OFF();GREEN_EW_ON();
  32.                                  RED_SN_ON();YELLOW_SN_OFF();GREEN_SN_OFF();
  33.                                  _delay_ms(30);
  34.                                  Operation_Type = 2;
  35.                                  break;
  36.                                  
  37.                 case 2:
  38.                         _delay_ms(30);
  39.                                 YELLOW_EW_BLINK();
  40.                                 GREEN_EW_OFF();
  41.                                 if(++Flash_Count != 3)return;
  42.                                 Flash_Count = 0;
  43.                                 Operation_Type = 3;
  44.                                 break;
  45.                                
  46.                 case 3:
  47.                         RED_EW_ON(); YELLOW_EW_OFF();GREEN_EW_OFF();
  48.                                 RED_SN_OFF();YELLOW_SN_OFF();GREEN_SN_ON();
  49.                                 _delay_ms(30);
  50.                                 Operation_Type = 4;
  51.                                 break;
  52.                 case 4:
  53.                       _delay_ms(30);
  54.                           YELLOW_SN_BLINK();
  55.                           GREEN_SN_OFF();
  56.                           if(++Flash_Count != 3) return;
  57.                           Flash_Count = 0;
  58.                           Operation_Type = 1;
  59.                           break;
  60.                           
  61.                                                             
  62.         }
  63. }


  64. int main(void)
  65. {
  66.     DDRC=0xFF;PORTC=0xFF;
  67.         while(1)
  68.     {
  69.         Traffic_Light();
  70.     }
  71. }

仿真截图:



Studio6.20编译截图:



本帖子中包含更多资源

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

×
senzh01 发表于 2014-10-6 15:07 | 显示全部楼层
看版主辛苦推广,比较感慨。M16试过的确好用。现在优势不明显。
dirtwillfly 发表于 2014-10-6 18:24 | 显示全部楼层
AtmelStudio6.2安装后好大~
 楼主| ddllxxrr 发表于 2014-10-6 19:50 | 显示全部楼层
dirtwillfly 发表于 2014-10-6 18:24
AtmelStudio6.2安装后好大~

恩,真是英雄所见略同
 楼主| ddllxxrr 发表于 2014-10-6 19:51 | 显示全部楼层
senzh01 发表于 2014-10-6 15:07
看版主辛苦推广,比较感慨。M16试过的确好用。现在优势不明显。

我手头上就M16熟,等以后再慢慢搞32位的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

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