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

📄 sample_main.c

📁 AVR单片机的菜单制作工具
💻 C
字号:
/*******************************************************************************
**                                AVR GUI v2.0                                **
**                                                                            **
**                                                                            **
**                                          Build by GUI Builder v2.0.0.10    **
**                                                     Program by aleyn.wu    **
**                                                 e-mail:aleyn@e-midas.cn    **
**                                                                            **
********************************************************************************
**                                                                            **
**   Menu Author :                                                            **
**   Last update : 2008-06-19 09:23                                           **
**                                                                            **
*******************************************************************************/

#include <Mega16.h>
#include <Delay.h>
#include "Sample.h"

BYTE LED_FlashType=0;
#define LED_TYPE_STOP                                 0
#define LED_TYPE_NUM_INC                              1
#define LED_TYPE_NUM_DEC                              2
#define LED_TYPE_SHIFT_LEFT                           3
#define LED_TYPE_SHIFT_RIGHT                          4
#define LED_TYPE_NUM_XOR                              5

#include "Sample_Event.c"

/*******************************************************************************
** 函数名称: timer0_ovf_isr                                                   **
** 功能描述: 时间中断函数                                                     **
** 输入参数: 无                                                               **
** 输出参数: 无                                                               **
*******************************************************************************/
BYTE TimeInt=0;

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{   
    TimeInt = 1;
}

/*******************************************************************************
** 函数名称: TIMER0_Init                                                      **
** 功能描述: TIMER0 定时器初始化                                              **
** 输入参数: 无                                                               **
** 输出参数: 无                                                               **
*******************************************************************************/
void TIMER0_Init(void)
{  
    TCCR0  = 0x00;  
    TCNT0  = 0x00;  
    OCR0   = 0x00;  
    TIMSK |= 0x01;  
    TCCR0  = 0x4D;  
}

/*******************************************************************************
** 函数名称: PORT_Init                                                        **
** 功能描述: MCU的端口初始化                                                  **
** 输入参数: 无                                                               **
** 输出参数: 无                                                               **
*******************************************************************************/
void PORT_Init(void)
{
    DDRC  = 0xFF;
    PORTC = 0xFF;
}

/*******************************************************************************
** 函数名称: DisplayVersion                                                   **
** 功能描述: 显示自己的版本                                                   **
** 输入参数: 无                                                               **
** 输出参数: 无                                                               **
*******************************************************************************/
void DisplayVersion(void)
{
    LCD_Clear();
    LCD_Position(1,1);
    LCD_PutStrF("GUI Builder");
    LCD_Position(2,1);
    LCD_PutStrF("Version 2.0");
}

/*******************************************************************************
** 函数名称: main                                                             **
** 功能描述: 主程序                                                           **
** 输入参数: 无                                                               **
** 输出参数: 无                                                               **
*******************************************************************************/
void main(void)
{
    BYTE cnt100MS=0;
    BYTE OldKey=NO_KEY;
    BYTE KeyDelay=0;

    BYTE LedDelay;
    BYTE LedData;

    PORT_Init();
    TIMER0_Init();
    LCD_Init();
    delay_ms(100);
    KEY_Init();
    GUI_Init();
    DisplayVersion();

    CTV_DELAY_TIME = 5;
    LedDelay = CTV_DELAY_TIME;
    LedData = 0;

    #asm("sei");

    while (1)
    {
        if (TimeInt)
        {
            TimeInt = 0;
            cnt100MS++;
            if (KeyDelay<100) KeyDelay ++;
            GUI_ProgressMessage();
        }

        if (cnt100MS >=6)
        {
            cnt100MS = 0;
            Key = KEY_GetChar();
            if (Key!=NO_KEY)
            {
                if (Key==OldKey)
                {
                    if (KeyDelay>2)
                    {
                        OldKey=Key;
                        KeyDelay=0;
                    }
                    else
                    {
                        Key=NO_KEY;
                    }
                }
                else
                {
                    OldKey=Key;
                    KeyDelay=0;
                }
            }

            if (LedDelay==0)
            {
                switch (LED_FlashType)
                {
                    case LED_TYPE_NUM_INC:{LedData++;break;}
                    case LED_TYPE_NUM_DEC:{LedData--;break;}
                    case LED_TYPE_SHIFT_LEFT:{LedData=(LedData<<1)|(LedData>>7);break;}
                    case LED_TYPE_SHIFT_RIGHT:{LedData=(LedData>>1)|(LedData<<7);break;}
                    case LED_TYPE_NUM_XOR:{LedData^=0xFF;break;}
                }
                LedDelay = CTV_DELAY_TIME;
            }
            else
                LedDelay -- ;

            if ( LED_FlashType != LED_TYPE_STOP )
                PORTC = ~LedData;
            else
                PORTC = 0xFF;

        }
    };
}

/*******************************************************************************
**                                END OF FILE                                 **
*******************************************************************************/

⌨️ 快捷键说明

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