📄 common.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 + -