⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 C
字号:
//-----------------------------------------------------------------
//  名称: TMR1控制交通指示灯
//-----------------------------------------------------------------
//  说明: 东西向绿灯亮5秒后,黄灯闪烁,闪烁5次后亮红灯,
//        红灯亮后,南北向由红灯变为绿灯,5秒后南北向黄灯闪烁, 
//        闪烁5次后亮红灯,东西向绿灯亮,如此往复.
//        本例将时间设得较短是为了调试的时候能较快的观察到运行效果.
//                
//-----------------------------------------------------------------
#include <pic.h> 
#define INT8U   unsigned char
#define INT16U  unsigned int
#define _XTAL_FREQ 4000000UL
#define     RED_EW_ON()  RB0 = 1             //东西向指示灯开
#define  YELLOW_EW_ON()  RB1 = 1
#define   GREEN_EW_ON()  RB2 = 1

#define     RED_EW_OFF() RB0 = 0             //东西向指示灯关
#define  YELLOW_EW_OFF() RB1 = 0
#define   GREEN_EW_OFF() RB2 = 0
 
#define     RED_SN_ON()  RB3 = 1             //南北向指示灯开
#define  YELLOW_SN_ON()  RB4 = 1
#define   GREEN_SN_ON()  RB5 = 1

#define     RED_SN_OFF() RB3 = 0             //南北向指示灯关
#define  YELLOW_SN_OFF() RB4 = 0
#define   GREEN_SN_OFF() RB5 = 0

#define   YELLOW_EW_BLINK() RB1 = ~RB1       //东西向黄灯闪烁
#define   YELLOW_SN_BLINK() RB4 = ~RB4       //南北向黄灯闪烁

#define   BEEP() (RD3 = ~RD3)                //蜂鸣器
//延时倍数,闪烁次数,操作类型变量
INT8U Time_Count = 0, Flash_Count = 0, Operation_Type = 1;
//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main() 
{ 




}

//------------------------------------------------------------------
// 黄灯警报声音输出
//------------------------------------------------------------------
void Yellow_Light_Alarm()
{   
   for (INT8U i = 0; i < 100; i++)
   {
       BEEP(); __delay_us(180);
   }
}

//-----------------------------------------------------------------
// TMR1定时器溢出中断服务程序(控制交通指示灯切换显示)
//-----------------------------------------------------------------
void interrupt TMR1_Interrupt_ISR()
{
    if (TMR1IF)
    { 
        switch (Operation_Type)
        {
            case 1:  //东西向绿灯与南北向红灯亮,5秒后绿灯灭


            
            case 2:  //东西向绿灯灭,黄灯开始闪烁


            
            case 3:  //东西向红灯与南北向绿灯亮


            
            case 4:  //南北向绿灯灭,黄灯开始闪烁


         }
        //重装定时初值




        TMR1IF = 0;
    } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -