❶ 求单片机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分频,分频电路设计简单,控制也方便.