zoukankan      html  css  js  c++  java
  • MSP430G2553 模拟交通灯

    交通灯状态转换:

    (其中黄灯会进行闪烁)

    #include <msp430.h>
    
    typedef unsigned char uchar;
    typedef unsigned int uint;
    
    const uchar STATES[4] = { 0xCC, 0xD4, 0x78, 0xAC };
    volatile uint i, j, current = 0;
    
    int main(void){
    	WDTCTL = WDTPW | WDTHOLD;
    	
    	P1DIR = 0xFF;
    	P1OUT = 0xDB;//所有红灯亮
    	
        while(1){
            for(i = 10000; i > 0; i--)
                ;
            P1OUT = STATES[current];
            
            if(current == 1){
                //黄灯闪烁
                for(j = 8; j > 0; j--){
                    for(i = 5000; i > 0; i--)
                        ;
                    P1OUT ^= 0x08;
                }
            }
            else if(current == 3){
                //黄灯闪烁
                for(j = 8; j > 0; j--){
                    for(i = 5000; i > 0; i--)
                        ;
                    P1OUT ^= 0x40;
                }
            }
    
            //两种情况合并
            // if(current == 1 || current == 3){
            //    
            //     uchar bit_of_yellow_light = current == 1 ? 0x08 : 0x40;
            //
            //     for(j = 8; j > 0; j--){
            //         for(i = 5000; i > 0; i--)
            //             ;
            //         P1OUT ^= bit_of_yellow_light;
            //     }
            // }
    
            current = current == 3 ? 0 : current + 1;
        }
    }
    

      

    效果

    注意:这里采用共阳极接法,引脚输出低电平时对应的发光二极管导通

  • 相关阅读:
    html例题——简历
    求值
    c#语句实例(排大小)
    3.6语言基础笔记
    2016.3.5进制间的转换
    3.26-1
    3.23(网页)
    3.23
    3.22
    3.20
  • 原文地址:https://www.cnblogs.com/yl-xy/p/13384612.html
Copyright © 2011-2022 走看看