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

📄 common.h

📁 无线射频程序
💻 H
字号:
/**********************************************************
 
 **********************************************************/
#ifndef _COMMON_H
#define _COMMON_H

#include <avr/interrupt.h>
#include <string.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/boot.h>
#include <util/delay.h>
#include <util/twi.h>
#include <avr/wdt.h>

//#define SCAN_WIRE_KEYBOARD                  /* enable scan wire keyboard*/

/**********************************************************
    Macro defination
 **********************************************************/
#define FOSC                                7372800
#define BAUD                                115200
#define BYTE_FLAG_TRUE                      0xFF
#define BYTE_FLAG_FALSE                     0x00
#define SET_FLAG(a)                         (a = BYTE_FLAG_TRUE)
#define CLEAR_FLAG(a)                       (a = BYTE_FLAG_FALSE)
#define Nop()                               asm("nop")
/**********************************************************
    TWI related variable, const, defination
 **********************************************************/
#define M8_TWI_ADDRESS                      0x20
#define SetACK()                            {TWCR|=_BV(TWEA); TWCR|=_BV(TWINT);}
#define SetNOACK()                          (TWCR |= _BV(TWINT))
#define GetTwiStatus()                      (TW_STATUS&0xf8)
#define MAX_TWI_TX_BUFF_SIZE		        32
#define MAX_TWI_RX_BUFF_SIZE		        32
volatile unsigned char  g_ucTwi_Rx_Buff[MAX_TWI_RX_BUFF_SIZE],
                        g_ucTwi_Tx_Buff[MAX_TWI_TX_BUFF_SIZE],
                        g_ucTwi_Rx_Count,
                        g_ucTwi_Tx_Count;
volatile unsigned char  g_ucCheck_buff[32];
volatile unsigned char  g_ucNormal_Byte_Flag;
volatile unsigned char  g_ucDelayReleaseKeyBoard;
volatile unsigned char  g_ucKeyValueSend_Byte_Flag;
volatile unsigned char  g_ucKeyValueSendDelay;
#define KEYBOARD_INTERVAL_DELAY                 20
#define ClearReleaseKeyBoardDelay()             (g_ucDelayReleaseKeyBoard=0)
#define NO_BUTTON_PUSH_VALUE                    0xff
#define MAX_KEYVALUE_BUFF_SIZE                  10
volatile unsigned char g_ucKeyValueQueueCount;
volatile unsigned char g_ucKeyValueQueueBuff[MAX_KEYVALUE_BUFF_SIZE+1];
#define ClearKeyValueQueueCount()               (g_ucKeyValueQueueCount=0)
#define ClearKeyValueSendDelay()                (g_ucKeyValueSendDelay=0)
#define KEYVALUE_SEND_INTERVAL                  3
/**********************************************************
    timer0 related variable, const, defination 
 **********************************************************/
#define TIMER0_RELOAD_VALUE                     0xA4              /* 0.8 ms timer0 interrupt, in 7372800 Hz*/
#define TIMER0_TASK_INTERVAL                    25              /* 100 ms */
#define ClearTimer0IRQCount()                   (g_ucTimer0_IRQ_Count=0)
volatile unsigned char g_ucTimer0_IRQ_Count;
#define TIMER1_RELOAD_VALUE                     0xEDFF              /* 5 ms timer1 interrupt */
/**********************************************************/
/*  MCU work status related variable, const, defination   */
/**********************************************************/

/**********************************************************
    keyboard hardware 
 **********************************************************/
#define Enable_Key_Y1()                 asm("cbi 0x15,0")           /* PC0 */
#define Disable_Key_Y1()                asm("sbi 0x15,0")

#define Enable_Key_Y2()                 asm("cbi 0x12,5")           /* PD5 */
#define Disable_Key_Y2()                asm("sbi 0x12,5")

#define Enable_Key_Y3()                 asm("cbi 0x12,4")           /* PD4 */
#define Disable_Key_Y3()                asm("sbi 0x12,4")

#define ReadKeyBoard()                  (PINC&0x0E)

unsigned char g_ucLockKeyBoard_Byte_Flag;

/**********************************************************
    remote key value defination
 **********************************************************/

#define INFRARED_SOUND_ADD_KEYVALUE             0x02
#define INFRARED_SOUND_DEC_KEYVALUE             0x0a
#define INFRARED_MUTE_KEYVALUE                  0x0d
#define INFRARED_PLAY_KEYVALUE                  0x0e
#define INFRARED_LEFT_ARROW_KEYVALUE            0x15
#define INFRARED_RIGHT_ARROW_KEYVALUE           0x1b
#define INFRARED_UP_KEYVALUE                    0x1f
#define INFRARED_DOWN_KEYVALUE                  0x16
#define INFRARED_EXIT_KEYVALUE                  0x4C
#define INFRARED_OK_KEYVALUE                    0x11
#define INFRARED_BACK_KEYVALUE                  0x1e
#define INFRARED_FRONT_KEYVALUE                 0x1a
#define INFRARED_MENU_KEYVALUE                  0x00
#define INFRARED_TV_LCD_KEYVALUE                0x40
#define INFRARED_BACKPLAY_KEYVALUE              0x54
#define INFRARED_ZOOMIN_KEYVALUE                0x05
#define INFRARED_ZOOMOUT_KEYVALUE               0x4d
#define INFRARED_POWER_KEYVALUE                 0x09

#define IIC_SOUND_ADD_KEYVALUE                  0x18
#define IIC_SOUND_DEC_KEYVALUE                  0x5b
#define IIC_MUTE_KEYVALUE                       0x1b
#define IIC_PLAY_KEYVALUE                       0x0D
#define IIC_LEFT_ARROW_KEYVALUE                 0x12
#define IIC_RIGHT_ARROW_KEYVALUE                0x0E
#define IIC_UP_KEYVALUE                         0x5A
#define IIC_DOWN_KEYVALUE                       0x1D
#define IIC_EXIT_KEYVALUE                       0x1A
#define IIC_OK_KEYVALUE                         0x1E
#define IIC_BACK_KEYVALUE                       0x19
#define IIC_FRONT_KEYVALUE                      0x07
#define IIC_MENU_KEYVALUE                       0x1F
#define IIC_TV_LCD_KEYVALUE                     0x1C
#define IIC_BACKPLAY_KEYVALUE                   0x0f
#define IIC_ZOOMIN_KEYVALUE                     0xff
#define IIC_ZOOMOUT_KEYVALUE                    0xff
#define IIC_POWER_KEYVALUE                      0x17


#define PINC_KEYBOARD_MASK_VALUE                0x0F
#define PIND_KEYBOARD_MASK_VALUE                0x30
                                                
#define nSURE_KEY_VALUE                         0x07
#define nDOWN_KEY_VALUE                         0x0B
#define nUP_KEY_VALUE                           0x0D
#define nMENU_KEY_VALUE                         0x0E
                                                
#define nPOWER_KEY_VALUE                        0x10
#define nREC_KEY_VALUE                          0x20
                                                
#define ReadPINCKeyBoard()                      (PINC&0x0F)
#define ReadPINDKeyBoard()                      (PIND&0x30)

unsigned char g_ucLockKeyBoard_Byte_Flag;

unsigned char g_ucPowerSwitch_Byte_Flag;

unsigned char g_ucSpecialCommand_Byte_Flag;

#define MCU_REQ			                PD7
#define Interrupt_REQ()                 (PORTD ^= _BV(MCU_REQ))


#define POWER_STATUS	                PD6
#define POWER_STD_LED	                PB5
#define POWER_ON_LED	                PB4
#define RECORD_LED		                PB3

#ifdef SCAN_WIRE_KEYBOARD
#define OpenPowerSupply()               {PORTD |= _BV(POWER_STATUS);    \
                                         PORTB |= _BV(POWER_STD_LED);   \
                                         PORTB &= ~_BV(POWER_ON_LED);}
#define ClosePowerSupply()              {PORTD &= ~_BV(POWER_STATUS);   \
                				         PORTB &= ~_BV(POWER_STD_LED);  \
                				         PORTB |= _BV(POWER_ON_LED);}
#else
#define OpenPowerSupply()               asm("sbi 0x12,6")
#define ClosePowerSupply()              asm("cbi 0x12,6")
#endif


volatile unsigned char Rmt_code[5];
volatile unsigned char key_val;
volatile unsigned char key_press_time;
volatile unsigned char Cnt_t0_800us;

#define RMT_PING	                    PD2
#define RMT_DATA                        (PIND & _BV(PD2))
#define RMT_ID                          0x00   				//不同的遥控器的ID

#define EnableTimer0()                  {TIMSK = (1<<TOIE0)||(1<<TOIE1);}
#define DiableTimer0()                  {TIMSK = (1<<TOIE1);}

#define Start_800us()                   {TCCR0 = 0x00; TCNT0=TIMER0_RELOAD_VALUE; TCCR0=0x03; EnableTimer0();}
#define Stop_800us()                    {TCCR0 = 0x00; DiableTimer0();}

volatile unsigned char g_ucRMTData_Byte_Flag;
volatile unsigned char g_ucISRmtStart_Byte_Flag;

/**********************************************************
    functions defination
 **********************************************************/
void InitCheckBuff(void);
void ProcessAllTask(void);
void Timer0Task(void);
void init_devices(void);
void LoadCheckString(void);
void AddVaildKeyValueToQueue(unsigned char key_value);
void ClearRMTDataBuff(void);

#endif

⌨️ 快捷键说明

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