欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3024|回復: 0
收起左側

Freescale-交通燈程序-MC9S12D64

[復制鏈接]
ID:75926 發表于 2015-4-10 18:53 | 顯示全部樓層 |閱讀模式
#include <hidef.h>      /* common defines and macros */

#include "derivative.h"      /* derivative-specific definitions */

typedef unsigned char uint8;
typedef unsigned int uint16;
/****************************************PWM初始化**************************************************/
void PWMInit(void)
{
  PWMPOL = 0x20;    /*脈沖先高后低*/
  PWMCLK = 0x20;    /*使用SA時鐘源*/
  PWMPRCLK = 0x07;  /*時鐘A為總線8分頻*/

  PWMCAE_CAE3 = 0;    /*通道3為左對齊輸出方式*/
  PWMCTL_CON23 = 0;    /*使用通道3*/

  PWMCAE_CAE5 = 0;    /*通道5為左對齊輸出方式*/
  PWMCTL_CON45 = 0;    /*使用通道5*/
  PWMSCLA = 0x05;   /*ClockSA = ClockA/(2*PWMSCLA)為3KHz*/
  PWMPER5 = 0xC8;   /*設定周期*/
}
/****************************************延時程序模塊**************************************************/
void delay(void)
{
  uint16 i, j = 0;

  for(i=0; i<65535; i++)
  {
    j++;
  }

}

void delay_3s(void)
{
  uint16 i, j = 0, m = 10;
  do {

        for(i=0; i<65535; i++)
        {
          j++;
        }
        m--;
      }while(m!=0);
}

void delay_60s(void)
{
  uint16 i, j = 0, m = 200;
  do {

        for(i=0; i<65535; i++)
        {
          j++;
        }
        m--;
      }while(m!=0);
}
/****************************************交通燈模塊**************************************************/
void Traffic_Light(void)
{
  uint8 n = 3;
                                             /*******Traffic Lights 方向寄存器********/
  DDRA_BIT1 = 1;DDRA_BIT2 = 1;DDRA_BIT3 = 1;DDRA_BIT4 = 1;DDRA_BIT5 = 1;DDRA_BIT6 = 1;DDRA_BIT7 = 1; /*A口方向寄存器*/
  DDRB_BIT0 = 1;DDRB_BIT2 = 1;DDRB_BIT7 = 1;/*B口方向寄存器*/
  DDRE_BIT2 = 1;DDRE_BIT3 = 1;/*E口方向寄存器*/
  DDRK_BIT7 = 1;/*K口方向寄存器*/
  DDRM_DDRM4 = 1;DDRM_DDRM5 = 1;DDRM_DDRM6 = 1;DDRM_DDRM7 = 1;/*M口方向寄存器*/

    /*******關閉所有交通燈********/
    PORTA_BIT1 = 1;PORTA_BIT2 = 1;PORTA_BIT3 = 1;PORTA_BIT4 = 1;PORTA_BIT5 = 1;PORTA_BIT6 = 1;PORTA_BIT7 = 1;/*關A口燈*/
    PORTB_BIT0 = 1;PORTB_BIT2 = 1;PORTB_BIT7 = 1;/*關B口燈*/
    PORTE_BIT2 = 1;PORTE_BIT3 = 1;/*關E口燈*/
    PORTK_BIT7 = 1;/*關K口燈*/
    PTM_PTM4 = 1;PTM_PTM5 = 1;PTM_PTM6 = 1;PTM_PTM7 = 1;/*關M口燈*/



                                               /*******Traffic Lights PORT(A/B/E/K/M)********/
    /*******南北通行********/
    PORTA_BIT4 = 0;PORTA_BIT5 = 0;PTM_PTM5 = 0;PORTB_BIT0 = 0;PTM_PTM6 = 0;PORTK_BIT7 = 0;PORTB_BIT7 = 0;
    delay_60s();

    /*******變燈提示********/
    do{  
        PORTA_BIT6 = 0;PORTB_BIT2 = 0;
        delay_3s();
        PORTA_BIT6 = 1;PORTB_BIT2 = 1;
        delay_3s();
        n--;
      }while(n!=0);

    /*******南北停止通行********/  
    PORTA_BIT4 = 1;PORTA_BIT5 = 1;PTM_PTM5 = 1;PORTB_BIT0 = 1;PTM_PTM6 = 1;PORTK_BIT7 = 1;PORTB_BIT7 = 1;

    /*******東西通行********/
    PORTA_BIT7 = 0;PORTA_BIT2 = 0;PORTA_BIT1 = 0;PTM_PTM7 = 0;PORTE_BIT3 = 0;PTM_PTM4 = 0;PORTB_BIT7 = 0;
    delay_60s();

    n =3; /*重新給n賦值*/

    /*******變燈提示********/
    do{  
        PORTA_BIT3 = 0;PORTE_BIT2 = 0;
        delay_3s();
        PORTA_BIT3 = 1;PORTE_BIT2 = 1;
        delay_3s();
        n--;
      }while(n!=0);

    /*******東西停止通行********/
    PORTA_BIT7 = 1;PORTA_BIT2 = 1;PORTA_BIT1 = 1;PTM_PTM7 = 1;PORTE_BIT3 = 1;PTM_PTM4 = 1;PORTB_BIT7 = 1;
}
/****************************************繼電器模塊**************************************************/
void Electrical_Relay(void)
{
  DDRK_BIT4 = 1; DDRK_BIT5 = 1;  /*初始化*/

  PORTK_BIT4 = 1;   /*繼電器開斷*/
  delay();
  PORTK_BIT4 = 0;
  delay();
  PORTK_BIT5 = 1;
  delay();
  PORTK_BIT5 = 0;
  delay();

}

/****************************************蜂鳴器模塊**************************************************/
void Buzzer(void)
{
  PWMInit();     /*初始化PWM*/
  PWME_PWME3 = 1;    /*使能PWM3*/
  PWMDTY3 = 0x0A;    /*設置蜂鳴器占空比5%*/
  delay();
  PWMDTY3 = 0x14;    /*設置蜂鳴器占空比10%*/
  delay();
  PWMDTY3 = 0x28;    /*設置蜂鳴器占空比20%*/
  delay();
  PWMDTY3 = 0x50;    /*設置蜂鳴器占空比40%*/
  delay();
  PWMDTY3 = 0x64;    /*設置蜂鳴器占空比50%*/
  delay();
  PWMDTY3 = 0x78;    /*設置蜂鳴器占空比60%*/
  delay();
  PWMDTY3 = 0x8C;    /*設置蜂鳴器占空比70%*/
  delay();
  PWMDTY3 = 0xA0;    /*設置蜂鳴器占空比80%*/
  delay();
  PWMDTY3 = 0xB4;    /*設置蜂鳴器占空比90%*/
  delay();
  PWMDTY3 = 0xC8;    /*設置蜂鳴器占空比100%*/
  delay();
}
/****************************************Main 函數**************************************************/
void main(void)
{
   uint8 i;

        EnableInterrupts;

  PWMInit();     /*初始化PWM*/
  for(; ;)
  {

    for(i=0; i<=0xC8; i++)
    {
      delay();
      PWMDTY5 = i;    /*設置風扇占空比*/
      PWME_PWME5 = 1;   /*使能PWM5*/
      while (i==0xC8)
      {
        PWME_PWME5 = 0;;   /*關閉使能PWM5*/
        Traffic_Light();/*交通燈模塊*/
        delay();
        PWME_PWME5 = 1;;   /*使能PWM5*/
        delay_3s();
        Electrical_Relay();/*繼電器模塊*/
        delay();
        Buzzer();
      }
    }
  }


}



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表