打印
[Atmel]

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

[复制链接]
1329|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这个程序绝的地方是在switch语句中,指定下一个case的值。

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

#define F_CPU 0x8000000UL

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

#define RED_EW_ON() PORTC &= ~_BV(PC0)
#define YELLOW_EW_ON() PORTC &=~_BV(PC1)
#define GREEN_EW_ON() PORTC &=~_BV(PC2)

#define  RED_EW_OFF() PORTC |= _BV(PC0)
#define  YELLOW_EW_OFF() PORTC |= _BV(PC1)
#define  GREEN_EW_OFF() PORTC |= _BV(PC2)

#define  RED_SN_ON() PORTC &=~_BV(PC3)
#define  YELLOW_SN_ON() PORTC &=~_BV(PC4)
#define  GREEN_SN_ON() PORTC &=~_BV(PC5)

#define  RED_SN_OFF() PORTC |= _BV(PC3)
#define  YELLOW_SN_OFF() PORTC |= _BV(PC4)
#define  GREEN_SN_OFF() PORTC |= _BV(PC5)

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

uint8_t Flash_Count = 0,Operation_Type = 1;

void Traffic_Light()
{
        switch(Operation_Type)
        {
                case 1:
                         RED_EW_OFF(); YELLOW_EW_OFF();GREEN_EW_ON();
                                 RED_SN_ON();YELLOW_SN_OFF();GREEN_SN_OFF();
                                 _delay_ms(30);
                                 Operation_Type = 2;
                                 break;
                                 
                case 2:
                        _delay_ms(30);
                                YELLOW_EW_BLINK();
                                GREEN_EW_OFF();
                                if(++Flash_Count != 3)return;
                                Flash_Count = 0;
                                Operation_Type = 3;
                                break;
                               
                case 3:
                        RED_EW_ON(); YELLOW_EW_OFF();GREEN_EW_OFF();
                                RED_SN_OFF();YELLOW_SN_OFF();GREEN_SN_ON();
                                _delay_ms(30);
                                Operation_Type = 4;
                                break;
                case 4:
                      _delay_ms(30);
                          YELLOW_SN_BLINK();
                          GREEN_SN_OFF();
                          if(++Flash_Count != 3) return;
                          Flash_Count = 0;
                          Operation_Type = 1;
                          break;
                          
                                                            
        }
}


int main(void)
{
    DDRC=0xFF;PORTC=0xFF;
        while(1)
    {
        Traffic_Light();
    }
}

仿真截图:



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安装后好大~

恩,真是英雄所见略同

使用特权

评论回复
5
ddllxxrr|  楼主 | 2014-10-6 19:51 | 只看该作者
senzh01 发表于 2014-10-6 15:07
看版主辛苦推广,比较感慨。M16试过的确好用。现在优势不明显。

我手头上就M16熟,等以后再慢慢搞32位的吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2399

主题

6963

帖子

68

粉丝