❶ 求單片機msp430x14x config.h頭文件
config.h 430單片機頭文件代碼最後的復制代碼保存到電腦的方式實現下載:
/********************************************************************
//msp430單片機最小系統板外部資源配置文件Config.h
//包含板載各個資源的硬體配置,如果用戶使用過程中,對應的硬體發生了更改,可利用該頭文件更改使用
//SD/MMC卡初始化硬體配置未包含
//調試環境:EW430 V5.30
//時間:2014.03.01
********************************************************************/
//延時函數,IAR自帶,經常使用到
#define CPU_F ((double)8000000) //外部高頻晶振8MHZ
//#define CPU_F ((double)32768) //外部低頻晶振32.768KHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
//自定義數據結構,方便使用
#define uchar unsigned char
#define uintunsigned int
#define ulong unsigned long
//8個LED燈,連接在P6口,可通過斷開電源停止使用,ADC使用時斷開電源
#define LED8DIR P6DIR
#define LED8 P6OUT //P6口接LED燈,8個
//4個獨立按鍵連接在P10~P13
#define KeyPort P1IN //獨立鍵盤接在P10~P13
//串口波特率計算,當BRCLK=CPU_F時用下面的公式可以計算,否則要根據設置加入分頻系數
#define baud 9600 //設置波特率的大小
#define baud_setting (uint)((ulong)CPU_F/((ulong)baud))//波特率計算公式
#define baud_h (uchar)(baud_setting>>8) //提取高位
#define baud_l (uchar)(baud_setting) //低位
//RS485控制管腳,CTR用於控制RS485處於收或者發狀態
#define RS485_CTR1 P5OUT |= BIT2; //控制線置高,RS485發送狀態
#define RS485_CTR0 P5OUT &= ~BIT2; //控制線置低,RS485接收狀態
//2.8寸TFT彩屏顯示控制相關硬體配置
#define RS_CLR P5OUT &= ~BIT5 //RS置低
#define RS_SET P5OUT |=BIT5 //RS置高
#define RW_CLR P5OUT &= ~BIT6 //RW置低
#define RW_SET P5OUT |=BIT6 //RW置高
#define RD_CLR P5OUT &= ~BIT7 //E置低
#define RD_SET P5OUT |=BIT7 //E置高
#define CS_CLR P5OUT &= ~BIT0 //CS置低
#define CS_SET P5OUT |=BIT0 //CS置高
#define RST_CLR P5OUT &= ~BIT3 //RST置低
#define RST_SET P5OUT |=BIT3 //RST置高
#define LE_CLR P5OUT &= ~BIT1 //LE置低
#define LE_SET P5OUT |=BIT1 //LE置高
//2.8寸TFT彩屏觸摸屏控制相關硬體配置
#define PEN_CLR P2OUT &= ~BIT0 //PEN置低,觸碰觸摸屏時,Penirq引腳由未觸摸時的高電平變為低電平
#define PEN_SET P2OUT |=BIT0 //PEN置高
#define PEN (P2IN & 0x01) //P2.0輸入的值
#define TPDO_CLR P2OUT &= ~BIT1 //TPDO置低
#define TPDO_SET P2OUT |=BIT1 //TPDO置高
#define TPDOUT ((P2IN>>1)&0x01) //P2.1輸入的值
#define BUSY_CLR P2OUT &= ~BIT3 //BUSY置低
#define BUSY_SET P2OUT |=BIT3 //BUSY置高
#define TPDI_CLR P2OUT &= ~BIT4 //TPDI置低
#define TPDI_SET P2OUT |=BIT4 //TPDI置高
#define TPCS_CLR P2OUT &= ~BIT5 //TPCS置低
#define TPCS_SET P2OUT |=BIT5 //TPCS置高
#define TPCLK_CLR P2OUT &= ~BIT6 //TPCLK置低
#define TPCLK_SET P2OUT |=BIT6 //TPCLK置高
//彩屏/12864液晶/1602液晶的數據口,三液晶共用
#define DataDIR P4DIR //數據口方向
#define DataPort P4OUT //P4口為數據口
//12864/1602液晶控制管腳
#define RS_CLR P5OUT &= ~BIT5 //RS置低
#define RS_SET P5OUT |=BIT5 //RS置高
#define RW_CLR P5OUT &= ~BIT6 //RW置低
#define RW_SET P5OUT |=BIT6 //RW置高
#define EN_CLR P5OUT &= ~BIT7 //E置低
#define EN_SET P5OUT |=BIT7 //E置高
#define PSB_CLR P5OUT &= ~BIT0 //PSB置低,串口方式
#define PSB_SET P5OUT |=BIT0 //PSB置高,並口方式
#define RST_CLR P5OUT &= ~BIT1 //RST置低
#define RST_SET P5OUT |= BIT1 //RST置高
//12864應用指令集
#define CLEAR_SCREEN 0x01 //清屏指令:清屏且AC值為00H
#define AC_INIT0x02 //將AC設置為00H。且游標移到原點位置
#define CURSE_ADD 0x06 //設定游標移到方向及圖像整體移動方向(默認游標右移,圖像整體不動)
#define FUN_MODE 0x30 //工作模式:8位基本指令集
#define DISPLAY_ON 0x0c //顯示開,顯示游標,且游標位置反白
#define DISPLAY_OFF 0x08 //顯示關
#define CURSE_DIR 0x14 //游標向右移動:AC=AC+1
#define SET_CG_AC 0x40 //設置AC,范圍為:00H~3FH
#define SET_DD_AC 0x80 //設置DDRAM AC
#define FUN_MODEK 0x36 //工作模式:8位擴展指令集
//顏色代碼,TFT顯示用
#define White 0xFFFF //顯示顏色代碼
#define Black 0x0000
#define Blue 0x001F
#define Blue2 0x051F
#define Red 0xF800
#define Magenta 0xF81F
#define Green 0x07E0
#define Cyan 0x7FFF
#define Yellow 0xFFE0
//NRF2401模塊控制線
#defineRF24L01_CE_0 P1OUT &=~BIT5 //CE在P15
#defineRF24L01_CE_1 P1OUT |= BIT5
#defineRF24L01_CSN_0 P2OUT &=~BIT7 //CS在P27
#defineRF24L01_CSN_1 P2OUT |= BIT7
#defineRF24L01_SCK_0 P3OUT &=~BIT3 //SCK在P33
#defineRF24L01_SCK_1 P3OUT |= BIT3
#defineRF24L01_MISO_0 P3OUT &=~BIT2 //MISO在P32
#defineRF24L01_MISO_1 P3OUT |= BIT2
#defineRF24L01_MOSI_0 P3OUT &=~BIT1 //MOSI在P31
#defineRF24L01_MOSI_1 P3OUT |= BIT1
#defineRF24L01_IRQ_0 P1OUT &=~BIT4 //IRQ在P14
#defineRF24L01_IRQ_1 P1OUT |= BIT4
//DS18B20控制腳,單腳控制
#define DQ_IN P1DIR &= ~BIT7 //設置輸入,DS18B20接單片機P53口
#define DQ_OUT P1DIR |= BIT7 //設置輸出
#define DQ_CLR P1OUT &= ~BIT7 //置低電平
#define DQ_SET P1OUT |= BIT7 //置高電平
#define DQ_R P1IN & BIT7 //讀電平
//紅外接收頭H1838控制腳,單腳控制
#define RED_IN P1DIR &= ~BIT6 //設置輸入,紅外接收頭接單片機PE3口
#define RED_OUT P1DIR |=BIT6 //設置輸出
#define RED_L P1OUT &= ~BIT6 //置低電平
#define RED_H P1OUT |= BIT6 //置高電平
#define RED_R (P1IN & BIT6) //讀電平
//***********************************************************************
// 系統時鍾初始化,外部8M晶振
//***********************************************************************
void Clock_Init()
{
uchar i;
BCSCTL1&=~XT2OFF; //打開XT2振盪器
BCSCTL2|=SELM1+SELS; //MCLK為8MHZ,SMCLK為8MHZ
do{
IFG1&=~OFIFG; //清楚振盪器錯誤標志
for(i=0;i<100;i++)
_NOP();
}
while((IFG1&OFIFG)!=0); //如果標志位1,則繼續循環等待
IFG1&=~OFIFG;
}
//***********************************************************************
// 系統時鍾初始化,內部RC晶振
//***********************************************************************
void Clock_Init_Inc()
{
uchar i;
// DCOCTL = DCO0 + DCO1 + DCO2; // Max DCO
// BCSCTL1 = RSEL0 + RSEL1 + RSEL2; // XT2on, max RSEL
DCOCTL = 0x60 + 0x00; //DCO約3MHZ,3030KHZ
BCSCTL1 = DIVA_0 + 0x07;
BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0;
}
//***********************************************************************
// 系統時鍾初始化,外部32.768K晶振
//***********************************************************************
void Clock_Init_Ex32768()
{
uchar i;
BCSCTL2|=SELM1 + SELM0 + SELS; //MCLK為32.768KHZ,SMCLK為8MHZ
do{
IFG1&=~OFIFG; //清楚振盪器錯誤標志
for(i=0;i<100;i++)
_NOP();
}
while((IFG1&OFIFG)!=0); //如果標志位1,則繼續循環等待
IFG1&=~OFIFG;
}
//***********************************************************************
// MSP430內部看門狗初始化
//***********************************************************************
void WDT_Init()
{
WDTCTL = WDTPW + WDTHOLD; //關閉看門狗
}
❷ 單片機中斷處理初始化config=0x39是什麼意思
就是給變數config賦初值39H,具體所表達的意思,需要源代碼全貌和原理圖才能知道。
❸ PIC單片機 __CONFIG(0x3B31);
該語句是對PIC單片機配置字的操作,涉及到一些硬體相關的東西,比如晶振的選擇、WDT/BOR等的配置,去掉後燒寫器會選擇默認值,就會導致硬體和軟體相沖突,比如軟體按內置晶振運行,結果燒成外晶振了。
❹ 在PIC單片機中_CONFIG(0X3B31);這個指令有什麼作用,我是剛學PIC的
__CONFIG是picc的關鍵字,對應於匯編偽指令__CONFIG。它是用來定義pic單片機的配置字的(即configuration word),可以查看datasheet,上面有說明。不同pic單片機的配置字可能會有所差異,但是大概都是以下幾項:晶元時鍾選擇,看門狗是否啟用,上電復位延時是否啟用,低電壓檢測復位是否啟用,代碼保護是否啟用等。以pic16f877a為例,你的配置為關閉flash保護,打開在線debug,關閉代碼保護,關閉低壓檢測復位,關閉上電延時,選擇外部時鍾XT模式(455KHz~4MHz晶振)。具體參看datasheet。如果你學習過AVR單片機,你可以理解為類似於「熔絲」一類的東西,因此你也可以不使用這個關鍵字來定義配置字,在maplab裡面選擇configure -> configuration bits,你用滑鼠點擊選擇有一樣的效果 還不懂的話,歡迎追問。
❺ pic單片機中__CONFIG(0x3f71);和__PROG_CONFIG(0X3F71);是什麼意思0X3F71是怎麼得到的
這個語句是對CPU晶元各個功能進行配置(器件配置位)。數值是由不同的配置得來的,不同的器件其數值不一樣。比如配置振盪器選擇位,可以選擇HS,XT,LP,PLL等
❻ PIC單片機config配置問題
我專門給你編了個PIC16F1823的C程序,用的是PICC9.8。
其配置位的含義,請把這些程序編譯後在MPLABIDE的配置位窗口看,就知道了。
程序實現對一個埠的LED閃亮功能,圖為在PROTEUS模擬的結果,證明結果是正確的,我用的是PROTEUS7.9的,低的版本沒有這個單片機。
#include<pic.h>
//第一個配置設置為:振盪器為內部RC,各種功能(看門狗,上電定時器等)
__CONFIG(0x09E4);
//第二個配置設置為:關閉PLL鎖相環,掉電復位電壓為2.4V,低電壓寫使能
__CONFIG(0x3EFF);
#defineLEDRA5
voidDELAY(unsignedint);
voidmain(void)
{ //未對ODSCCON設置,即用默認的500kHz的內部振盪器,指令周期為8us
TRISA5=0;
LED=1;
while(1)
{ DELAY(3);
LED=!LED;
}
}
voidDELAY(unsignedintn)
{ unsignedinti;
for(i=0;i<n;i++)
{ NOP();
NOP();
NOP();
NOP();
}
}
❼ 如何給單片機系統進行初始化
復位電路和晶振電路屬於純硬體,不用理會,其它的需要軟體做好初始化。軟體的初始化一般是以下幾個步驟。
如果採用的是匯編語言,一般有如下幾項內容
1、設置堆棧地址:比如MOV SP, #60H。
2、設定PSW值,也就是預設的工作寄存器區。
3、設定與定時器、中斷、串口相關的特殊功能寄存器
4、設定各IO口的初始狀態,比如將連接鍵盤的輸入輸出口均設為1,紅外發射電路的初始狀態。
5、內存中需要賦初值的寄存器賦初值,比如上電後要顯示的內容最好先賦個初值。
6、打開中斷允許、啟動定時器(這一步也可根據具體需要放在前面或其它地方)
7、開始主程序循環
對前兩項的設置可能不是必須的,但是應該成為一種好的習慣。
如果是C語言,除了第1、2項不用管,其它也一樣。
如果整個系統在上電後,需要一段時間才能進入穩定狀態,可在一開始加入一段循環延時程序,然後再進行其它初始化操作。
❽ PIC16F1937單片機的config是怎麼設置的,分別是什麼意思
都沒什麼區別,8位,有uart也就是232通信,可以做i2c從機,個別有can之類的。就是用來做監控的,可以有ad轉換,外部中斷和定時器,還可以做通信介面
❾ 單片機config配置 為什麼48分頻,實際是32分頻謝謝!
倍頻又分頻是為了讓某些只有在特定頻率工作的部件正常工作而設置的,比如STM32F4的USB需要工作在48MHz,所以倍頻的時候最好是48的整倍數然後再分頻,比如倍頻到336MHz,這樣USB就336/48=7分頻,分頻電路設計簡單,控制也方便.