?? avr_xqv12._h
字號:
#define TRUE 0xff //真
#define FALSE 0x00 //假
#define null 0x00 //空
#define Open_LED PORTA|=0x10 //使能LED
#define Close_LED PORTA&=~0x10 //關閉LED
#define LED PORTB //LED端口
#define SMG PORTB //數碼管端口
#define Open_SMG_DATA PORTA|=0x08 //使能數碼管數據
#define Close_SMG_DATA PORTA&=~0x08 //關閉數碼管數據
#define Open_SMG_BIT PORTA|=0x04 //使能數碼管位選擇
#define Close_SMG_BIT PORTA&=~0x04 //關閉數碼管位選擇
#define KEY0 (PIND&0x04) //INT0
#define KEY1 (PIND&0x08) //INT1
#define SetSclk (PORTC|=0x80) //LCD12864 CLK
#define ClrSclk (PORTC&=~0x80)
#define SetRs (PORTD|=0x40) //LCD12864 CS
#define ClrRs (PORTD&=~0x40)
#define SetSid (PORTC|=0x40) //LCD12864 DATA
#define ClrSid (PORTC&=~0x40)
#define D0 0x20 //18B20 DATA
#define port PORTA
#define ddrt DDRA
#define pin PINA
#define Set_CS5615 (PORTB|=0x20) //片選5615
#define Clr_CS5615 (PORTB&=~0x20) //釋放
#define Period 0x6bfe //PWM脈沖周期20ms
#define rd_device_add 0xa3 //定義器件讀地址
#define wr_device_add 0xa2 //定義器件寫地址
#define START 0x08 //起始信號
#define MT_SLA_ACK 0x18
#define MT_DATA_ACK 0x28
#define RE_START 0x10
#define MR_SLA_ACK 0x40
#define MR_DATA_NOACK 0x58
#define START 0x08
#define MT_SLA_ACK 0x18
#define MT_DATA_ACK 0x28
#define RE_START 0x10
#define MR_SLA_ACK 0x40
#define MR_DATA_NOACK 0x58
#define MR_DATA_ACK 0x50
#if AD==TRUE //條件編譯指令
unsigned char Adc_Mux=0;
unsigned int Adc0_Rel=0;
unsigned int Adc1_Rel=0;
unsigned int Adc0_Catch=0;
unsigned int Adc1_Catch=0;
unsigned int Adc0_Conver[20];
unsigned int Adc1_Conver[20];
unsigned char Adc0_F;
unsigned char Adc1_F;
#endif //條件編譯結束
unsigned char Key_Number; //全局變量:按鍵標志
unsigned int temprter;
#pragma data:code
const unsigned char SMG_Conver[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
//數碼管譯碼數組
#pragma data:data
/*******************************************************/
/****** 函數名稱: Scan_Key() ******/
/****** 功 能: 鍵盤掃描 ******/
/****** 參 數: 無 ******/
/****** 返回值 : 按鍵的鍵值,無按鍵時返回null ******/
/*******************************************************/
unsigned char Scan_Key(void)
{
unsigned char i;
PORTC=0x00;
DDRC =0xf0; //設置端口高4位輸出,低四位輸入
PORTC=0x0f; //低四位內部上拉
delay_nus(1); //短暫延時
i=PINC&0x0f; //讀取端口電平
if(i!=0x0f) //判斷是否有鍵按下
{
PORTC=0x00;
DDRC =0x0f; //設置端口低4位輸出,高四位輸入
PORTC=0xf0; //高四位內部上拉
delay_nus(10); //短暫延時,去抖
if((PINC&0xf0)!=0xf0) //再次判斷是否有鍵按下
{
i+=(PINC&0xf0); //讀取端口電平
while((PINC&0xf0)!=0xf0); //等待按鍵釋放
return i; //返回鍵值
}
}
return null; //無按鍵按下返回null
}
/*******************************************************/
/****** 函數名稱: Key_Num() ******/
/****** 功 能: 轉換鍵值為0-f十六進制數 ******/
/****** 參 數: key--鍵值 ******/
/****** 返回值 : 0-f ******/
/*******************************************************/
unsigned char Key_Num(unsigned char key)
{
switch(key)
{
case 0xe7:return 0; //按鍵0
case 0xd7:return 1; //按鍵1
case 0xb7:return 2; //按鍵2
case 0x77:return 3; //按鍵3
case 0xeb:return 4; //按鍵4
case 0xdb:return 5; //按鍵5
case 0xbb:return 6; //按鍵6
case 0x7b:return 7; //按鍵7
case 0xed:return 8; //按鍵8
case 0xdd:return 9; //按鍵9
case 0xbd:return 10; //按鍵A
case 0x7d:return 11; //按鍵B
case 0xee:return 12; //按鍵C
case 0xde:return 13; //按鍵D
case 0xbe:return 14; //按鍵E
case 0x7e:return 15; //按鍵F
default: return 16; //無按鍵按下
}
}
/*******************************************************/
/****** 函數名稱: Display_One_SMG() ******/
/****** 功 能: 顯示指定內容在指定位 ******/
/****** 參 數: bit--位(1-8), ******/
/****** data--顯示內容(0-15,16為全滅)****/
/****** 返回值 : 無 ******/
/*******************************************************/
void Display_One_SMG(unsigned char bit,unsigned char data)
{
SMG=SMG_Conver[data]; //送顯示數據
Open_SMG_DATA; //鎖存數據
Close_SMG_DATA;
SMG=~BIT(bit); //送位數據
Open_SMG_BIT; //鎖存數據
Close_SMG_BIT;
delay_nms(2);
}
/*******************************************************/
/****** 函數名稱: Display_One_SMG_Point() ******/
/****** 功 能: 顯示小數點在指定位 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void Display_One_SMG_Point(unsigned char bit)
{
SMG=0x80; //送顯示數據
Open_SMG_DATA; //鎖存數據
Close_SMG_DATA;
SMG=~BIT(bit); //送位數據
Open_SMG_BIT; //鎖存數據
Close_SMG_BIT;
delay_nms(2);
}
/*******************************************************/
/****** 函數名稱: En_Led() ******/
/****** 功 能: 使能LED功能 ******/
/****** 參 數: 無 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void En_Led(void)
{
DDRB=0xff; //設置輸出
PORTB=0xff; //輸出高電平
Open_LED; //打開LED功能
}
/*******************************************************/
/****** 函數名稱: Un_Led() ******/
/****** 功 能: 關閉LED功能 ******/
/****** 參 數: 無 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void Un_Led(void)
{
DDRB=0xff; //設置輸出
PORTB=0xff; //輸出高電平
Open_LED; //打開LED功能
Close_LED; //關閉LED功能
}
/*******************************************************/
/****** 函數名稱: Clear_SMG() ******/
/****** 功 能: 關閉數碼管功能 ******/
/****** 參 數: 無 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void Clear_SMG(void)
{
DDRB=0xff; //設置輸出
PORTB=0x00; //輸出高電平
Open_SMG_DATA; //鎖存數據
Close_SMG_DATA;
Open_SMG_BIT;
Close_SMG_BIT;
}
/*******************************************************/
/****** 函數名稱: Spi_Init() ******/
/****** 功 能: 初始化SPI接口 ******/
/****** 參 數: 無 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void Spi_Init(void)
{
unsigned char i;
DDRB|=0xb0; //MISO輸入MOSI,SCK,SS輸出
DDRB&=~0x40;
PORTB|=0x40; //MISO上拉有效
SPSR=0x01; //SPI允許,主機模式,高位在先,極性00,1/2系統時鐘速率
SPCR=0x50;
i=SPSR;
i=SPDR; //清空SPI,和中斷標志,使SPI空閑
}
/*******************************************************/
/****** 函數名稱: PutSPIchar() ******/
/****** 功 能: 用SPI發送數據 ******/
/****** 參 數: data--待發的數據 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void PutSPIchar(char data)
{
SPDR=data;
while(!(SPSR&(1<<SPIF))); //等待發送完畢
}
/*******************************************************/
/****** 函數名稱: CPU_Init() ******/
/****** 功 能: 初始化CPU端口 ******/
/****** 參 數: 無 ******/
/****** 返回值 : 無 ******/
/*******************************************************/
void CPU_Init(void)
{
PORTB=0xff;
DDRB=0xff;
PORTA=0x80;
DDRA=0xdc;
DDRB=0x00;
PORTC=0xff;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -