?? avr_pq1a.h
字號:
/*******************************************
文件:AVR_PQ1A.H
功能:定義一些AVR_PQ1A開發(fā)板上應(yīng)用程序用到的常量
/******************************************/
#include <iom16v.h> //包含型號頭文件
#include <macros.h> //包含"位"操作頭文件
/******************數(shù)據(jù)類型宏定義******************/
#define uchar unsigned char
#define uint unsigned int
/******************數(shù)碼管和LED常量******************/
#define LEDLK PA2 //LED鎖存器控制端
#define SEGLK PA3 //數(shù)碼管段選鎖存器控制端
#define BITLK PA4 //數(shù)碼管位選鎖存器控制端
#define TRUE 1
#define FALSE 0
#define ALLLED 0XFF
/*******************************************
函數(shù)名稱: Delayus
功 能: 延時(shí)指定微秒(8M晶振)
參 數(shù): US--延時(shí)的微秒數(shù)(大約,不是很精確,MS越大越準(zhǔn)確)
返回值 : 無
/********************************************/
void Delayus(uint US)
{
uint i;
US=US*5/4; //5/4是在8MHz晶振下,通過軟件仿真反復(fù)實(shí)驗(yàn)得到的數(shù)值
for( i=0;i<US;i++);
}
/*******************************************
函數(shù)名稱: Delayms
功 能: 延時(shí)指定毫秒(8M晶振)
參 數(shù): MS--延時(shí)的毫秒數(shù)
返回值 : 無
/********************************************/
void Delayms(uint MS)
{
uint i,j;
for( i=0;i<MS;i++)
for(j=0;j<1141;j++); //1141是在8MHz晶振下,通過軟件仿真反復(fù)實(shí)驗(yàn)得到的數(shù)值
}
/*******************************************
函數(shù)名稱: Board_init
功 能: 初始化實(shí)驗(yàn)板,關(guān)閉全部功能
參 數(shù): 無
返回值 : 無
/********************************************/
void Board_init(void)
{
SPCR=0x00;
DDRA=0xFF; //將四個(gè)IO口全部配置為輸出
DDRB=0xFF;
DDRC=0xFF;
DDRD=0xFF;
PORTA|=BIT(PA6)|BIT(PA1)|BIT(PA5); //(PA6)關(guān)閉蜂鳴器,(PA1)關(guān)閉DA,(PA5)關(guān)閉DS18B20
PORTC&=~(BIT(PC6));//|BIT(PC7)); //(PC6)初始化繼電器為常閉連接狀態(tài),(PC7)關(guān)閉RTC
PORTB=0xFF; //關(guān)閉LED
Delayus(5);
PORTA|=BIT(LEDLK); //鎖存數(shù)據(jù),使LED熄滅
Delayus(15);
PORTA&=~BIT(LEDLK);
PORTB=0x00; //輸出段選
Delayus(5);
PORTA|=BIT(SEGLK);
Delayus(15);
PORTA&=~BIT(SEGLK);
PORTB=0xFF; //輸出位選
Delayus(5);
PORTA|=BIT(BITLK);
Delayus(15);
PORTA&=~BIT(BITLK);
PORTD=0xF0; //關(guān)閉USB
Delayus(5);
PORTA|=BIT(PA7);
Delayus(5);
PORTA&=~BIT(PA7);
}
/******************1602液晶常量及操作******************/
#define LCDa_CTRL PORTD //1602控制端口定義
#define LCDa_CTRL_DDR DDRD //控制端口方向寄存器定義
#define LCDa_RS PD4 //定義三個(gè)控制引腳
#define LCDa_RW PD5
#define LCDa_E PD6
#define LCDa_L1 0x80 //第一行的地址:0x80+addr ,addr為列數(shù)
#define LCDa_L2 0xC0 //第二行的地址:0x80+0x40+addr
#define LCDa_CGRAM_ADDR 0x40 //CGRAM的開始地址
#define LCDa_CGMAX 64 //CGRAM存儲的最大字節(jié)數(shù)
#define LCDa_SET_RS LCDa_CTRL|=BIT(LCDa_RS) //三個(gè)控制管腳的控制操作
#define LCDa_SET_RW LCDa_CTRL|=BIT(LCDa_RW)
#define LCDa_SET_E LCDa_CTRL|=BIT(LCDa_E)
#define LCDa_CLR_RS LCDa_CTRL&=~BIT(LCDa_RS)
#define LCDa_CLR_RW LCDa_CTRL&=~BIT(LCDa_RW)
#define LCDa_CLR_E LCDa_CTRL&=~BIT(LCDa_E)
#define LCDa_DO PORTB //輸出數(shù)據(jù)總線端口定義
#define LCDa_DI PINB //輸入數(shù)據(jù)總線端口定義
#define LCDa_DATA_DDR DDRB //數(shù)據(jù)總線方向寄存器定義
#define LCDa_FUNCTION 0x38 // 液晶模式為8位,2行,5*8字符
#define iDat 1 //數(shù)據(jù)標(biāo)志
#define iCmd 0 //指令標(biāo)志
#define LCDa_CLS 0x01 // 清屏
#define LCDa_HOME 0x02 // 地址返回原點(diǎn),不改變DDRAM內(nèi)容
#define LCDa_ENTRY 0x06 // 設(shè)定輸入模式,光標(biāo)加,屏幕不移動
#define LCDa_C2L 0x10 // 光標(biāo)左移
#define LCDa_C2R 0x14 // 光標(biāo)右移
#define LCDa_D2L 0x18 // 屏幕左移
#define LCDa_D2R 0x1C // 屏幕又移
#define LCDa_ON 0x0C // 打開顯示
#define LCDa_OFF 0x08 // 關(guān)閉顯示
#define LCDa_CURON 0x0E // 顯示光標(biāo)
#define LCDa_CURFLA 0x0F // 打開光標(biāo)閃爍
/******************12864液晶常量及操作******************/
#define LCDb_CTRL PORTD //12864控制端口定義
#define LCDb_CTRL_DDR DDRD //控制端口方向寄存器定義
#define LCDb_RS PD4 //定義四個(gè)控制引腳
#define LCDb_RW PD5
#define LCDb_E PD6
#define LCDb_RST PD7
#define LCDb_L1 0x80 //第一行的地址
#define LCDb_L2 0x90 //第二行的地址
#define LCDb_L3 0x88 //第三行的地址
#define LCDb_L4 0x98 //第四行的地址
#define LCDb_CGRAM_ADDR 0x40 //CGRAM的開始地址
#define LCDb_CGMAX 64 //CGRAM存儲的最大字節(jié)數(shù)
#define LCDb_SET_RS LCDb_CTRL|=BIT(LCDb_RS) //四個(gè)控制管腳的控制操作
#define LCDb_SET_RW LCDb_CTRL|=BIT(LCDb_RW)
#define LCDb_SET_E LCDb_CTRL|=BIT(LCDb_E)
#define LCDb_SET_RST LCDb_CTRL|=BIT(LCDb_RST)
#define LCDb_CLR_RS LCDb_CTRL&=~BIT(LCDb_RS)
#define LCDb_CLR_RW LCDb_CTRL&=~BIT(LCDb_RW)
#define LCDb_CLR_E LCDb_CTRL&=~BIT(LCDb_E)
#define LCDb_CLR_RST LCDb_CTRL&=~BIT(LCDb_RST)
#define LCDb_DO PORTB //輸出數(shù)據(jù)總線端口定義
#define LCDb_DI PINB //輸入數(shù)據(jù)總線端口定義
#define LCDb_DATA_DDR DDRB //數(shù)據(jù)總線方向寄存器定義
#define LCDb_FUNCTION 0x38 // 液晶模式為8位,2行,5*8字符
#define LCDb_BASCMD 0x30 // 基本指令集
#define LCDb_CLS 0x01 // 清屏
#define LCDb_HOME 0x02 // 地址返回原點(diǎn),不改變DDRAM內(nèi)容
#define LCDb_ENTRY 0x06 // 設(shè)定輸入模式,光標(biāo)加,屏幕不移動
#define LCDb_C2L 0x10 // 光標(biāo)左移
#define LCDb_C2R 0x14 // 光標(biāo)右移
#define LCDb_D2L 0x18 // 屏幕左移
#define LCDb_D2R 0x1C // 屏幕又移
#define LCDb_ON 0x0C // 打開顯示
#define LCDb_OFF 0x08 // 關(guān)閉顯示
#define LCDb_EXTCMD1 0x34 // 擴(kuò)充指令集,關(guān)閉繪圖顯示
#define LCDb_EXTCMD2 0x36 // 擴(kuò)充指令集,打開繪圖顯示
#define LCDb_EXTCLS 0x01 // 清屏
#define LCDb_REVL1 0x04 // 反顯第1行
#define LCDb_REVL2 0x05 // 反顯第1行
#define LCDb_REVL3 0x06 // 反顯第1行
#define LCDb_REVL4 0x07 // 反顯第1行
/******************按鍵常量******************/
#define KEY_DDR DDRD //按鍵方向定義
#define KEY_PORTO PORTD //按鍵斷口輸出定義
#define KEY_PORTI PIND //按鍵斷口輸入定義
#define OUT 0xFF //輸出常量
#define IN 0xF0 //輸入常量
/******************按鍵外部中斷常量******************/
#define GLOBAL 7 //全局中斷位宏定義
#define EXTINT1 7 //外部中斷1位宏定義
#define EXTINT0 6 //外部中斷0位宏定義
/******************串行DA常量******************/
#define DA_DATA PB5 //串行數(shù)據(jù)線
#define DA_CLK PB7 //串行時(shí)鐘線
#define DA_CS PA1 //片選線
/******************DS18B20常量******************/
#define DS18B20 PA5
/******************TWI(IIC)常量******************/
#define START 0x08 //START信號發(fā)送完畢狀態(tài)
#define MT_SLA_ACK 0x18 //從器件地址發(fā)送,返回ACK
#define MT_SLA_NOACK 0x20 //從器件地址發(fā)送,但是返回NOACK
#define MT_DATA_ACK 0x28 //數(shù)據(jù)已發(fā)送,返回ACK
#define MT_DATA_NOACK 0x30 //數(shù)據(jù)已發(fā)送,返回NOACK
#define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)) //產(chǎn)生START信號
#define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN)) //產(chǎn)生STOP信號
#define Wait() while(!(TWCR&(1<<TWINT))) //等待當(dāng)前操作完成
#define TestACK() (TWSR&0xF8) //取出狀態(tài)碼
#define SetACK() (TWCR|=(1<<TWEA)) //產(chǎn)生ACK
#define Writebyte(twi_d) {TWDR=(twi_d);TWCR=(1<<TWINT)|(1<<TWEN);} //發(fā)送一個(gè)字節(jié)(twi_d為寫入的數(shù)據(jù))
/******************蜂鳴器音樂常量******************/
#define BEEP PA6
// 計(jì)時(shí)值=65536-8000000/8/2/頻率
// 音名 計(jì)時(shí)值 頻率Hz
#define DO_L 63627 //262
#define DOA_L 63731 //277
#define RE_L 63835 //294
#define REA_L 63928 //311
#define MI_L 64021 //330
#define FA_L 64103 //349
#define FAA_L 64185 //370
#define SO_L 64270 //392
#define SOA_L 64331 //415
#define LA_L 64400 //440
#define LAA_L 64463 //466
#define TI_L 64524 //494
#define DO 64580 //523
#define DOA 64633 //554
#define RE 64684 //587
#define REA 64732 //622
#define MI 64777 //659
#define FA 64820 //698
#define FAA 64860 //740
#define SO 64898 //784
#define SOA 64934 //831
#define LA 64968 //880
#define LAA 65000 //932
#define TI 65030 //988
#define DO_H 65058 //1046
#define DOA_H 65085 //1109
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -