msp430常用库函数

合集下载

msp430各功能模块的介绍

msp430各功能模块的介绍

各个时钟信号源介绍如下:1、LFXT1CLK:低频/高频时钟源。

可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器。

2、XT2CLK:高频时钟源。

需要外接两个震荡电容器。

可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器和外部时钟输入。

较常用的晶体是8MHz的。

3、DCOCLK:内部数字可控制的RC振荡器。

MSP430单片机时钟模块提供3个时钟信号以供给片内各部分电路使用,这3个时钟信号分别是:(1)ACLK:辅助时钟信号。

ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后得到的。

由BCSCTL1寄存器设置DIV A相应位来决定分频因子。

ACLK可提供给CPU外围功能模块做时钟信号使用。

(2)MCLK:主时钟信号。

MCLK是由3个时钟源所提供的。

它们分别是:LFXT1CLK、XT2CLK、和DCO时钟源信号。

MCLK主要用于MCU和相关模块做时钟。

同样可设置相关寄存器来决定分频因子及相关设置。

(3)SMCLK:子系统时钟。

SMCLK由2个时钟源信号提供,他们分别是XT2CLK 和DCO。

如果是F11或F11X1系列单片机,则由LFXT1CLK代替XT2CLK。

同样可设置相关寄存器来决定分频因子及相关的设置。

低频振荡器LFXT1:LFXT1支持超低功耗,它在低频模式下使用一个32768Hz的晶体。

不需要任何电容因为在低频模式下内部集成了电容。

低频振荡器也支持高频模式和高速晶体,但连接时每端必须加电容。

电容的大小根据所接晶体频率的高低来选择。

低频振荡器在低频和高频模式下都可以选择从XIN引脚接入一个外部输入时钟信号,但所接频率必须根据所设定的工作模式来选择,并且OSCOFF位必须复位。

高频振荡器LFXT2:LFXT2作为MSP430的第二晶体振荡器。

与低频相比,其功耗更大。

高频晶体真大气外接在XIN2和XOUT2两个引脚,并且必须外接电容。

MSP430程序库之定时器TA的PWM输出

MSP430程序库之定时器TA的PWM输出

MSP430程序库之定时器TA的PWM输出定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。

这里完成一个比较通用的PWM波形产生程序。

1.硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。

它给开发人员提供了较多灵活的选择余地。

当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。

MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA 有三个模块,CCR0-CCR2;TB含有CCR0-CCR67个模块;其中CCR0模块不能完整的输出PWM波形(只有三种输出模式可用);TA可以输出完整的2路PWM波形;TB可以输出6路完整的PWM波形。

定时器的PWM输出有有8种模式:输出模式0 输出模式:输出信号OUTx由每个捕获/比较模块的控制寄存器CCTLx中的OUTx位定义,并在写入该寄存器后立即更新。

最终位OUTx直通。

输出模式1 置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。

输出模式2 PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR 的值等于CCR0时复位。

输出模式3 PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR 的值等于CCR0时复位。

输出模式4 翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。

输出模式5复位模式:输出在TAR的值等于CCRx时复位,并保持低电平直到选择另一种输出模式。

输出模式6PWM翻转/置位模式:输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。

输出模式7PWM复位/置位模式:输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。

msp430延时函数

msp430延时函数

打开CCIE(比较模式),计数到CCR0时置位CCIFG,进入中断TIMERA0_VECTOR
而打开TAIE,当定时器溢出时置位TAIFG,进入中断TIMERA1_VECTOR
__enable_interrupt()比较专一,只是开中断。
而_bis_SR_register可带参数,可以置位SR中的其他位,功能广泛一些。
unsigned int i,j;
for(i = 0;i < time0;j < 30; j++);
}
}
经计算延时5ms 大概就是 20
//尚未得知
void Delay(unsigned int Time)
{
while(Time)
//虽然默认下是1m,但是为了安全起见,这里对其进行校准!
DCOCTL = CALDCO_1MHZ;
BCSCTL1 = CALBC1_1MHZ;
//经验证,这是1M下 5000 为1s 左右的样子! 则0.2ms左右
void delay(unsigned int time)
{
DCOCTL = CALDCO_8MHZ;
BCSCTL1 = CALBC1_8MHZ;
void delay(unsigned int ms)
{
unsigned int i,j;
for( i=0;i<ms;i++)
for(j=0;j<1141;j++); //8MHz晶振时
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))

msp430复习资料

msp430复习资料

1.寄存器R0~R3 :分别为程序计数器、堆栈指针、状态寄存器和常数发生器。

PC(程序计数器即R0)用来存放下一条将要从程序存储器中取出的指令地址。

SP(堆栈指针即R1) 指明堆栈顶。

SR(状态寄存器即R2)各位的含义:15~9 8 7 6 5 4 3 2 1 0 保留V SCG1 SCG00 OscOFF CPUOFF GIE N Z C 状态标志:C进位标志位,运算结果进位时C置位,否则C复位。

Z 零标志,运算结果0置位,否则复位。

N 负标志位,为负结果置位,否则复位。

V 溢出标志,运算结果超出符号位时置位,否则复位, 溢出情况如下:正数+正数=负数正数-负数=负数负数+负数=正数负数-正数=正数控制标志:GIE 中断标志位,控制可屏蔽中断,置位可响应可屏蔽中断。

CPUOFF cpu控制位,置位可是cpu进入关闭模式。

OscOFF 晶振控制位,置位使晶体振荡器处于停止状态。

SCG0,SCG1 时钟控制位,SGC1置位关闭SMCLK ,SGC0 置位关闭DCO发生器。

2.MSP430 单片机存储空间结构:该系列单片机采用的是同一结构,是物理上完全分开离的存储区域,ROM、FLASH、RAM、外围模块、特殊功能寄存器SFR 等,被安排在同一地址空间。

存储空间分布:1)中断向量被在相同的空间:0FFE0~0FFFFH;2)8位、16位外围模块占用相同范围的存储器地址;3)特殊功能寄存器占用相同范围的存储器地址;4)数据存储器都从0200H处开始;5)程序存储器的最高地址都是0FFFFH;3. 中断源:能够对cpu请求中断服务的功能模块。

中断标志:片内或片外在进行中断请求时置位的寄存器。

中断事件:系统在中断时,中断程序所要完成的任务。

中断向量:就是中断向量指针。

中断向量指针:存放中断程序入口地址的存储单元。

4. POR信号产生之后,系统状态为:RST/NMI 引脚被设置为复位模式;I/O引脚被转换成输入模式;状态寄存器复位;看门狗定时器进入看门狗模式;程序计数器PC 指向复位向量的地址(0FFEH) 上电复位(POR)与上电清除(PUC)上电复位(POR)与上电清除(PUC)信号可以使MSP430单片机系统复位。

MSP430程序库六通过SPI操作AD7708

MSP430程序库六通过SPI操作AD7708

MSP430程序库<六>通过SPI操作AD7708AD7708是16位的Σ-Δ型AD转换芯片,在低频应用中,AD7708可以作为单电源供电的完整前端。

AD7708内部含有一个PGA(可编程增益放大器),可以完成对信号的放大;PGA范围是20-28八档可编程,当取参考电压2.5v时可以测量量程20mv到2.56v的电压。

AD7708和AD7718引脚功能完全一样,只是位数AD7718是24位的,若用7718,只需改动少部分的程序,16位的部分改成24位即可。

AD7708是通过SPI接口通信的;程序使用前一篇实现的SPI程序与AD芯片通信,可以作为SPI详细的使用示例。

硬件介绍:硬件主要是MSP430的SPI接口和AD7708芯片的说用说明。

msp430的SPI接口:支持主机模式和从机模式,且始终的极性和相位可调,在于AD 转换芯片通信的时候,需要极性一致。

有关msp430的SPI的详细介绍,参考:MSP4 30程序库<五>SPI同步串行通信。

AD7718 的外部引脚有28 个。

按性质主要分为模拟、数字两个部分。

模拟部分引脚有模拟输入、参考电压输入和模拟电源三类。

模拟输入引脚可以配置为8通道或10通道的伪差分输入,他们共同参考AINCOM端。

数字部分引脚有SPI 接口、数据就绪、通用I/O 口和数字电源四类。

SPI 接口的4 根标准信号线分别是片选信号CS 、串行时钟输入SCLK、串行数据输入DIN 和串行数据输出DOUT。

当AD7718接在SPI 总线上时是从器件,从引脚CS 输入低电平信号使能AD7718。

数据就绪RDY 是一个低电平有效的输出引脚。

当所选通道数据寄存器中有有效数据时,输出低电平信号;数据被读出后,输出高电平。

AD7718 的通用I/O 口是2 个一位口P1 和P2。

它们既可配置成输入也可配置成输出,单片机通过SPI 口读写AD7718 片内相关寄存器实现对P1 和P2 的操作。

IAR C 430标准库函数

IAR C 430标准库函数

ctype.h 字符处理类isalnum int isalnum(int c) 字母还是数字isalpha int isalpha(int c) 是否字母iscntrl int iscntrl(int c) 是否控制码isdigit int isdigit(int c) 是否数字isgraph int isgraph(int c) 是否为可打印的非空字符islower int islower(int c) 是否小写字母isprint int isprint(int c) 是否为可打印字符ispunct int ispunct(int c) 是否为表示标点符号的字符isspace int isspace(int c) 是否为空白字符isupper int isupper(int c) 是否为大写字符isxdigit int isxdigit(int c) 是否为十六进制数tolower int tolower(int c) 转换为小写字符toupper int toupper(int c) 转换为大写字符math.h 数字类acos double acos(double arg) 反余弦函数asin double asin(double arg) 反正弦函数atan double atan(double arg) 反正切函数atan2 double atan2(double arg1,double arg2) 带象限的反正切函数ceil double ceil(double arg) 大于或等于arg的最小正整数cos double cos(double arg) 余弦函数cosh double cosh(double arg) 双余弦函数exp double exp(double arg) 指数函数arg) 双精度的浮点绝对值fabs(doublefabsdoublefloor double floor(double arg) 大于或等于arg的最大正整数fmod double fmod(double arg1,double arg2) 浮点数的余数frexp double frexp(double arg1,int *arg2) 将浮点数分为两部分ldexp(double arg1,int arg2) 乘以2的幂log double log(double arg) 自然对数函数log10 double log10(double arg) 以10为底的对数函数modf double modf(double value,double *iptr) 拆开为整数部分和小数部分pow double pow(double arg1,double arg2) 求幂函数sin double sin(double arg) 正弦函数sinh double sinh(double arg) 双曲正弦sqrt double sqrt(double arg) 平方根函数tan double tan(double arg) 正切函数tanh double tanh(double arg) 双曲正切函数setjmp.h 非局部跳转longjmp void longjmp(jmp_buf env,int val) 长跳转setjmp int setjmp(jmp_buf env) 设置返回点跳转stdio.h 输入和输出类函数intgetchar(void) 获得字符getchar*s) 读字符串*gets(charchargetsprintf int printf(const char *format,…) 写格式化数据putcharvalue) 写字符函数putchar(intint*s) 写字符串函数charputsintputs(constscanf int scanf(const char *format, …) 读格式化数据sprintf int sprintf(char *s,const char *format,) 将格式化数据写入字符串sscanf int sscanf(const char *s,const char *format,…)从字符串中读取格式化数据stdlib.h 通用子程序类abort void abort(void) 非正常结束程序abs int abs(int j) 绝对值函数charatof(const*nptr) 转换ASCII为双精度atofdoubleatoi int atoi(const char *nptr) 转换ASCII为整数atol long atol(const char *nptr) 转换ASCII为长整形*bsearch(constvoid 在数组中搜索voidbsearch*base,void*key,constsize,nmemb,size_tsize_tvoid(*compare)(constint*_base));void*_key,constcalloc void *calloc(size_t nelem,size_t elsize) 为目标数组分配存储器单元div div_t div(int numer,int denom) 除法运算函数status) 结束程序exit(intexitvoid*ptr) 释放存储器单元free(voidvoidfreej) 整形数取绝对值labs long int labs(longintldiv ldiv_t ldiv(long int numer,long int denom) 长整形除法size) 分配存储器*malloc(size_tvoidmallocqsort void qsort(const void *base, 数组排序size_t nmemb,size_t size,int (*compare)(const void*_key,const void *_base));rand(void) 随机数生成函数intrandrealloc void *realloc(void *ptr,size_t,size) 重新分配存储器单元函数srand void srand(unsigned int seed) 设置随机数(的种子)strtod double strtod(const char 将字符串转换为双精度数**endptr)*nptr,charstrtol long int strtol(constchar 将字符串转换为长整形数**endptr,intase)*nptr,charstrtoul unsigned long int strtoul 字符串转换为无符号整形数char*nptr,charconstint)**endptr,basestring.h 字符串处理类memchr void *memchr(const void *s,int c,size_t n) 在存储器中搜索字符memcmp int memcmp(const void *s1,const void *s2,size_t n)比较存储器内容memcpy void *memcpy(void *s1,const void *s2,size_t n) 拷贝存储器内容memmove void *memmove(void *s1,const void *s2,size_t n)移动存储器内容memset void *memset(void *s,int c,size_t n) 置存储器strcat char *strcat(char *s1,const char *s2) 逻辑字符串strchr char *strchr(const char*s,int c) 在字符串中找某一个字符strcmp int strcmp(const char *s1,const char *s2) 比较两个字符串strcoll int strcoll(const char *s1,const char *s2) 比较字符串strcpy char *strcpy(char *s1,const char *s2) 拷贝字符串strcspn size_t strcspn(const char *s1,const char *s2)在字符串中跨过被排除的字符strerror char *strerror(interrnum) 给出一个错误信息字符串char*s) 计算字符串长度函数size_tstrlen(conststrlenstrncat char *strncat(char *s1,const char *s2, size_t n)将指定数量的字符与字符串连接起来strncmp int strncmp(const char *s1,const char *s2, size_t n) 将指定数量的字符与字符串相比较strncpy har *strncpy(char *s1,const char *s2, size_t n)在字符串中复制指定的字符strpbrk char *strpbrk(const char *s1,const char *s2)在字符串中寻找任何指定的字符strrchr char *strrchr(const char *s,int c) 从字符串的右端开始寻找字符strspn size_t strspn(const char *s1,const char *s2) 在字符串中统计和分析字符strstr char *strstr(const char *s1,const char *s2) 在字符串中搜索子字符串strtok char *strtok(char *s1,const char *s2) 将标志前的字符剪掉strxfrm size_t strxfrm(char *s1,const char *s2,size_t n) 转换字符串并返回其长度。

MSP430程序库九数码管显示

MSP430程序库九数码管显示

数码管也是单片机系统最常用的输出设备之一(还有液晶、发光二极管等)。

七段(这里用的是8段,有小数点)数码管可以完成显示0-9数字和一部分的英文字符如:A、b。

本文实现的程序完成显示数字和可显示的英文字符;同时完成数码管显示的printf函数的移植,以支持printf的格式化字符等好用的特点(我用的数码管8个排为一排,方便数字等的显示)。

1.硬件介绍:这里所用到的硬件资源包括8个数码管、和msp430单片机的两个8位IO口(这里用的是P3和P5口,如有改变,可以通过宏定义更改)。

数码管是8个共阴的数码管,a-h8段通过一个200Ω的电阻接到430单片机的P5口。

共阴端是由单片机的P3口控制,单片机的一位IO通过一个三极管接到数码管的共阴端,以完成位选。

单片机的P3口时数码管的位选口,某位为高则选中;P5口时段选口;要数码管显示时,通过P3位选,选中某个数码管亮,P5段选选择8段(a-h)中的那些亮,从而控制某一位显示数字或字符。

要同时显示多个数码管,就要动态扫描;动态扫描时,本程序选用的是由看门狗的中断扫描显示:每1.9ms显示其中的一位,动态扫描显示每一位,从而让数码管看起来是同时亮的。

2.程序实现:数码管显示首先要有一个数码管显示的断码表(完成数字和字符到数码管段值的表),程序中采用了《MSP430系列单片机系统工程设计与实践》这本书推荐的方式实现的这个数码表:先用宏定义定义每段对应的单片机要输出的段值,然后再实现是个表,当硬件改变时,只需更改前面的每段的段值定义即可,改动的地方少了很多,代码如下:/*宏定义,数码管a-h各段对应的比特,更换硬件只用改动以下8行*/#define a0x01//AAAA#define b0x02//F B#define c0x04//F B#define d0x08//GGGG#define e0x10//E C#define f0x20//E C#define g0x40//DDDD HH#define h0x80//小数点/*用宏定义自动生成段码表,很好的写法,值得学习*//*更换硬件无需重写段码表*/const char Tab[]={a+b+c+d+e+f,//Displays"0"b+c,//Displays"1"a+b+d+e+g,//Displays"2"a+b+c+d+g,//Displays"3"b+c+f+g,//Displays"4"a+c+d+f+g,//Displays"5"a+c+d+e+f+g,//Displays"6"a+b+c,//Displays"7"a+b+c+d+e+f+g,//Displays"8"a+b+c+d+f+g,//Displays"9"a+b+c+e+f+g,//Displays"A"c+d+e+f+g,//Displays"B"a+d+e+f,//Displays"C"b+c+d+e+g,//Displays"D"a+d+e+f+g,//Displays"E"a+c+d+e+f,//Displays"G" b+c+e+f+g,//Displays"H" e+f,//Displays"I" b+c+d+e,//Displays"J" b+d+e+f+g,//Displays"K" d+e+f,//Displays"L" a+c+e+g,//Displays"M" a+b+c+e+f,//Displays"N" c+e+g,//Displays"n" c+d+e+g,//Displays"o" a+b+c+d+e+f,//Displays"O" a+b+e+f+g,//Displays"P" a+b+c+f+g,//Displays"Q" e+g,//Displays"r" a+c+d+f+g,//Displays"S" d+e+f+g,//Displays"t" a+e+f,//Displays"T" b+c+d+e+f,//Displays"U" c+d+e,//Displays"v" b+d+f+g,//Displays"W" b+c+d+f+g,//Displays"Y"g,//Displays"-"h,//Displays"."0//Displays"" };#undef a#undef b#undef c#undef d#undef e#undef f#undef g0-9的位置对应显示0-9,之后的是A开始往后显示,为了方便访问这个表格,定义了AA等一系列的常量,方便访问这个表。

MPS430单片机寄存器资料

MPS430单片机寄存器资料

MSP430单片机自学知识点笔记目录1、 PWM(脉冲宽度调制) (3)2、 ADC (3)3、DCO (3)4、 MSP430F1xx基础时钟模块有三个时钟输入源介绍 (3)5、基础时钟模块可以提供三种时钟信号,分别是ACLK、MCLK和SMCLK。

(3)注意:在MSP430单片机中一共有三个时钟源: (3)6、 DCO控制寄存器DCOCTL各位定义如下表: (4)7、基本时钟系统控制寄存器BCSCTL1 (4)8、基本时钟系统控制寄存器BCSCTL2 (5)9、 FCTL1寄存器 (6)10、 FCTL2寄存器 (7)11、 FCTL3寄存器 (8)12、IE1寄存器 (8)13、编程语句注释 (9)14、MSP430 头文件对Bitx的定义 (9)15、IFG1寄存器 (10)16、定时器的定时周期 (10)17、注意:定时器的工作方式 (10)18、#pragma vector=TIMERA0_VECTOR (12)19、TACCTLx寄存器 (12)20、符号运算 (14)21、延时函数 _NOP() (14)22、TACTL寄存器 (14)23、TAIV TA 中断向量寄存器 (15)24、_EINT();与_DINT(); (16)25、I/O端口(共涉及6组34个寄存器) (16)1) P1口 (16)2) P2口 (17)3) P3口 (18)4) P4口 (19)5) P5口 (19)6) P6口 (20)26、IAR快捷键操作 (21)27、语句_BIS_SR(LPM0_bits + GIE);解释 (21)28、定时器A的中断说明: (21)29、ADC12(共涉及32个寄存器和3个共用寄存器) (22)1) ADC12CTL0 转换控制寄存器 (22)2) ADC12CTL1 (24)MSP430单片机自学笔记1、PWM(脉冲宽度调制)脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

MSP430简介(超详细·)

MSP430简介(超详细·)

MSP430简介(超详细·)msp430简介MSP430是德州公司新开发的⼀类具有16位总线的带FLASH 的单⽚机,由于其性价⽐和集成度⾼,受到⼴⼤技术开发⼈员的青睐.它采⽤16位的总线,外设和内存统⼀编址,寻址范围可达64K,还可以外扩展存储器.具有统⼀的中断管理,具有丰富的⽚上外围模块,⽚内有精密硬件乘法器、两个16位定时器、⼀个14路的12位的模数转换器、⼀个看门狗、6路P⼝、两路USART通信端⼝、⼀个⽐较器、⼀个DCO内部振荡器和两个外部时钟,⽀持8M 的时钟.由于为FLASH型,则可以在线对单⽚机进⾏调试和下载,且JTAG⼝直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真⼯具,⽅便实⽤,⽽且,可以在超低功耗模式下⼯作对环境和⼈体的辐射⼩,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电⼲扰运⾏不受影响,适应⼯业级的运⾏环境,适合与做⼿柄之类的⾃动控制的设备.我们相信MSP430单⽚机将会在⼯程技术应⽤中得以⼴泛应⽤,⽽且,它是通向DSP 系列的桥梁,随着⾃动控制的⾼速化和低功耗化, MSP430系列将会得到越来越多⼈的喜爱.⼀、IO⼝(⼀)、P⼝端⼝寄存器:1、PxDIR 输⼊/输出⽅向寄存器(0:输⼊模式 1:输出模式)2、PxIN 输⼊寄存器输⼊寄存器是只读寄存器,⽤户不能对其写⼊,只能通过读取该寄存器的内容知道I/O⼝的输⼊信号。

3、PxOUT 输出寄存器寄存器内的内容不会受引脚⽅向改变的影响。

4、PxIFG 中断标志寄存器(0:没有中断请求 1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共⽤⼀个中断向量,中断标志不会⾃动复位,必须软件复位;外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受;5、PxIES 中断触发沿选择寄存器(0:上升沿中断 1:下降沿中断)6、PxSEL 功能选择寄存器(0:选择引脚为I/O端⼝ 1:选择引脚为外围模块功能)7、PxREN 上拉/下拉电阻使能寄存器(0:禁⽌ 1:使能)(⼆)、常⽤特殊P⼝:1、P1和P2⼝可作为外部中断⼝。

MSP430怎样建立和调用自己的library库函数

MSP430怎样建立和调用自己的library库函数

资源来自网络:前段时间有博友问到在IAR环境下隐藏原始代码开放功能性接口的方法,其实就是库(Library)的概念了,算是一种半开源的方式吧,估计应该是公司里常用到一种开发模式吧,不同分工团队部门之间最后的整合都是通过标准的接口来实现(当然限于大公司了,不是那种一个人负责一个完整项目的小公司),也就是一个分工团队接触不到另一个团队的核心代码,这种模式一定程度上避免了完整产品设计技术的外泄,不过每个团队的人掌握的技术也就有所局限了,于个人水平的提升不利,当然如果你做的足够专就另当别论了,呵呵,总之自己马上要找工作了,也在大公司和小公司之间矛盾的徘徊,哎~前奏啰嗦了一些东西,明天就带队去参加智能车比赛了,今天临走前更新一篇也算是对那位博友有个交代,希望有所帮助,哈哈,不多废话了,下面进入正题(分为生成库文件和调用库文件两部分):生成库文件:1.首先建立好自己的库工程,注意库里不用加main函数,因为库不是线程(不用来执行),而是要被调用的,所以在库工程里写好自己的底层驱动代码封装到C文件里(可以多个C)就OK了,这里我就自己随便添加了个底层驱动(ADC)的C文件建立了BSP_Lib 工程作为例子说说生成和调用Kinetis库,如下图:2.如上图,把自己想要添加的驱动文件都添加到工程里面,不过要保证编译需要的相关头文件和相关C文件(如上图的CPU文件组和Header文件组),另外需要添加BSP_Lib.h 文件,在里面把库里的函数声明成外部函数和添加上调用时需要的一些参数,本例子的BSP_Lib.h文件内容如下图(目前只针对ADC):3.准备工作完毕,然后下面需要对改工程做相应的设置,右键工程名设置如下:4.如上设置好之后,编译连接成功(中间如果编译错误,需要根据自己的情况看下是否是头文件缺失造成的),在$PROJ_DIR$\Debug\Exe文件夹下就可以找到BSP_Lib.a库文件了,这样我们前一阶段的生成库文件就成功了,下面就趁热打铁说说怎么调用上面生成的库文件。

MSP430程序库(二)UART异步串口

MSP430程序库(二)UART异步串口

小数分频是 MSP430单片机的串口特色之一, UxMCTL 寄存器的作用就是控制小数的分频, 控制方法如下:对应位是1,则分频系数加一, 0则分频系数减一;小数分频器会自动依次 取出每一位来调整分频系数。其计算方法:可以先计算小数部分一的个数,然后把 1均匀的
放入 UxMCTL 的8位中,这样计算比较简单,分频系数的小数部分乘以8即得到1的位数, 查表得到对应的 UxMCTL 值;另外一种通过计算每一位的错误率,交互计算,直到得到最 小错误率的 UxMCTL 值,这种方法比较复杂,但得到的小数分频误差更小,这种方法也是 TI 给的计算方法,详细参考 UserGuide。 另外, 有关寄存器, 以及其他单片机硬件有关知识请参考德州仪器提供的用户指南和数据手 册等资料。 2.程序实现: • 宏定义:是程序具有更好的移植性。
baud * 出口参数:无 * 范 波特率
波特率
(300~115200)
例: SetBaudRateRegisters(32768,9600) //用时钟频率32768产生 9600的
************************************************************** **************/ voidSetBaudRateRegisters(longclk,longbaud) { intn = clk / baud; //整数波特率 charmSum = 0; inttxEr0; inttxEr1; chari = 0; UxBR1 = n >> 8; UxBR0 = n & 0xff; UxMCTL = 0; //循环 比较错误率大小 设置 UxMCTL for(;i < 8;i++) { txEr0 = 100 * baud * ((i + 1) * n + mSum) / clk - 100 * (i + 1); txEr1 = 100 * baud * ((i + 1) * n + mSum + 1) / clk - 100 * (i + 1); if(abs(txEr1) < abs(txEr0)) { mSum++; UxMCTL |= (1<<i); } } } 程序可以使用任何的 C 语言编译器编译运行,可供网友们复用此程序。我使用 vs2010编 译运行的,运行结果如下: //Σmi //对应位为0时错误率 //对应位为1时错误率 //循环计数 //高8位 //低8位

msp430单片机入门知识

msp430单片机入门知识
#define BASICTIMER_VECTOR (0*2u) /*0xFFE0 基础定时器)
PORT2_VECTOR (1 * 2u) /* 0xFFE2 P2 */ PORT1_VECTOR (4 * 2u) /* 0xFFE8 P1 */ TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CCR1/2*/ TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CCR0 */ USART0TX_VECTOR (8 * 2u) /* 0xFFF0 串口发送 */ USART0RX_VECTOR (9 * 2u) /* 0xFFF2 串口接收*/ WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */ SD16_VECTOR (12 * 2u) /* 0xFFF8 16位ADC */ NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maskable */ RESET_VECTOR (15 * 2u) /* 0xFFFE Reset */
20
中断的具体过程
1. 事先将中断服务程序入口地址装入中断 向量表。
2. 中断发生后,如果中断被允许(可屏蔽 中断),CPU将当前程序地址和CPU状 态寄存器SR压入堆栈。
3. 跳转到中断服务程序入口,备份寄存器 入堆栈。
4. 开始执行中断服务程序。 5. 退出中断前,恢复寄存器。CPU取回SR
寄存器,跳转回中断前主程序地址。
6
MSP430FE425A资源 1. 8M/s处理速度 2. 512RAM(数据)+16KB Flash(程序代码) 3. 内置Flash控制器,剩余Flash可存数据。 4. 内置时钟管理单元,可内部倍频 5. 3路同步采样、差分输入、32倍程控增益放大器的16位ADC 6. 温度传感器 7. 1.2V基准源和输出缓冲器 8. 128段LCD驱动器 9. 增强UART串口 10. 看门狗 11. BasicTimer定时器 12. 16位TimeA定时器,3路捕获和2路PWM 13. 内置BOR复位电路 14. 16个双向可中断IO口 15. 内置电能计量模块 16. 后缀带A的,比如FE425A带硬件乘法器

msp430x14x.h中各函数中文翻译

msp430x14x.h中各函数中文翻译

#define BIT0 0x0001#define BIT1 0x0002#define BIT2 0x0004#define BIT3 0x0008#define BIT4 0x0010#define BIT5 0x0020#define BIT6 0x0040#define BIT7 0x0080#define BIT8 0x0100#define BIT9 0x0200#define BITA 0x0400#define BITB 0x0800#define BITC 0x1000#define BITD 0x2000#define BITE 0x4000#define BITF 0x8000/************************************************************* STATUS REGISTER BITS************************************************************/#define C 0x0001#define Z 0x0002#define N 0x0004#define V 0x0100#define GIE 0x0008#define CPUOFF 0x0010#define OSCOFF 0x0020#define SCG0 0x0040#define SCG1 0x0080/* Low Power Modes coded with Bits 4-7 in SR */#ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */#define LPM0 CPUOFF#define LPM1 SCG0+CPUOFF#define LPM2 SCG1+CPUOFF#define LPM3 SCG1+SCG0+CPUOFF#define LPM4 SCG1+SCG0+OSCOFF+CPUOFF /* End #defines for assembler */#else /* Begin #defines for C */#define LPM0_bits CPUOFF#define LPM1_bits SCG0+CPUOFF#define LPM2_bits SCG1+CPUOFF#define LPM3_bits SCG1+SCG0+CPUOFF#define LPM4_bits SCG1+SCG0+OSCOFF+CPUOFF#include <In430.h>#define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */ #define LPM0_EXIT _BIC_SR(LPM0_bits) /* Exit Low Power Mode 0 */#define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */ #define LPM1_EXIT _BIC_SR(LPM1_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */ #define LPM2_EXIT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */#define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */ #define LPM3_EXIT _BIC_SR(LPM3_bits) /* Exit Low Power Mode 3 */#define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ #define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */#endif /* End #defines for C *//************************************************************* PERIPHERAL FILE MAP************************************************************//************************************************************* 特殊功能寄存器地址和控制位************************************************************//*中断使能1*/#define IE1_ 0x0000sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/#define OFIE 0x02 /*外部晶振故障中断使能*/#define NMIIE 0x10 /*非屏蔽中断使能*/ #define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/#define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*//*中断标志1*/#define IFG1_ 0x0002sfrb IFG1 = IFG1_;#define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收中断标志*/#define UTXIFG0 0x80 /*串口0发送中断标志*//* 中断模式使能1 */#define ME1_ 0x0004sfrb ME1 = ME1_;#define URXE0 0x40 /* 串口0接收中断模式使能 */#define USPIE0 0x40 /* 同步中断模式使能 */#define UTXE0 0x80 /* 串口0发送中断模式使能 *//* 中断使能2 */#define IE2_ 0x0001sfrb IE2 = IE2_;#define URXIE1 0x10 /* 串口1接收中断使能 */#define UTXIE1 0x20 /* 串口1发送中断使能 *//* 中断标志2 */#define IFG2_ 0x0003sfrb IFG2 = IFG2_;#define URXIFG1 0x10 /* 串口1接收中断标志 */#define UTXIFG1 0x20 /* 串口1发送中断标志 *//* 中断模式使能2 */#define ME2_ 0x0005sfrb ME2 = ME2_;#define URXE1 0x10 /* 串口1接收中断模式使能 */#define USPIE1 0x10 /* 同步中断模式使能 */#define UTXE1 0x20 /* 串口1发送中断模式使能 *//************************************************************* 看门狗定时器的寄存器定义************************************************************/#define WDTCTL_ 0x0120sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/#define WDTTMSEL 0x0010 /*选择模式 0: 看门狗模式; 1: 定时器模式*/#define WDTNMI 0x0020 /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/#defineWDTNMIES 0x0040 /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/#define WDTHOLD 0x0080 /*停止看门狗定时器工作 0:启动;1:停止*/#define WDTPW 0x5A00 /* 写密码:高八位*//* SMCLK= 1MHz定时器模式 */#defineWDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL/* TSMCLK*2POWER15=32ms 复位状态 */#defineWDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0/* TSMCLK*2POWER13=8.192ms " */#defineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1/* TSMCLK*2POWER9=0.512ms " */#defineWDT_MDLY_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0/* TSMCLK*2POWER6=0.512ms " *//* ACLK=32.768KHz 定时器模式*/#defineWDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL/* TACLK*2POWER15=1000ms " */#defineWDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0/* TACLK*2POWER13=250ms " */#defineWDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2POWER9=16ms " */#defineWDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDT IS0 /* TACLK*2POWER6=1.9ms " *//* SMCLK=1MHz看门狗模式 */#defineWDT_MRST_32 WDTPW+WDTCNTCL/* TSMCLK*2POWER15=32ms 复位状态 */#defineWDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0/* TSMCLK*2POWER13=8.192ms " */#defineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1/* TSMCLK*2POWER9=0.512ms " */#defineWDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0/* TSMCLK*2POWER6=0.512ms " *//* ACLK=32KHz看门狗模式 */#defineWDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL/* TACLK*2POWER15=1000ms " */#defineWDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0/* TACLK*2POWER13=250ms " */#defineWDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2POWER9=16ms " */#defineWDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/* TACLK*2POWER6=1.9ms " *//************************************************************硬件乘法器的寄存器定义************************************************************/#define MPY_ 0x0130 /* 无符号乘法 */ sfrw MPY = MPY_;#define MPYS_ 0x0132 /* 有符号乘法*/sfrw MPYS = MPYS_;#define MAC_ 0x0134 /* 无符号乘加 */ sfrw MAC = MAC_;#define MACS_ 0x0136 /* 有符号乘加 */sfrw MACS = MACS_;#define OP2_ 0x0138 /* 第二乘数 */sfrw OP2 = OP2_;#define RESLO_ 0x013A /* 低6位结果寄存器 */ sfrw RESLO = RESLO_;#define RESHI_ 0x013C /* 高6位结果寄存器 */ sfrw RESHI = RESHI_;#define SUMEXT_ 0x013E /*结果扩展寄存器 */ const sfrw SUMEXT = SUMEXT_;/************************************************************* DIGITAL I/O Port1/2 寄存器定义有中断功能************************************************************/#define P1IN_ 0x0020 /* P1 输入寄存器 */ const sfrb P1IN = P1IN_;#define P1OUT_ 0x0021 /* P1 输出寄存器 */ sfrb P1OUT = P1OUT_;#define P1DIR_ 0x0022 /* P1 方向选择寄存器*/sfrb P1DIR = P1DIR_;#define P1IFG_ 0x0023 /* P1 中断标志寄存器*/ sfrb P1IFG = P1IFG_;#define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/sfrb P1IES = P1IES_;#define P1IE_ 0x0025 /* P1 中断使能寄存器 */ sfrb P1IE = P1IE_;#define P1SEL_ 0x0026 /* P1 功能选择寄存器*/ sfrb P1SEL = P1SEL_;#define P2IN_ 0x0028 /* P2 输入寄存器 */ const sfrb P2IN = P2IN_;#define P2OUT_ 0x0029 /* P2 输出寄存器 */ sfrb P2OUT = P2OUT_;#define P2DIR_ 0x002A /* P2 方向选择寄存器*/sfrb P2DIR = P2DIR_;#define P2IFG_ 0x002B /* P2 中断标志寄存器*/sfrb P2IFG = P2IFG_;#define P2IES_ 0x002C /* P2 中断边沿选择寄存器 */sfrb P2IES = P2IES_;#define P2IE_ 0x002D /* P2 中断使能寄存器 */ sfrb P2IE = P2IE_;#define P2SEL_ 0x002E /* P2 功能选择寄存器*/sfrb P2SEL = P2SEL_;/************************************************************* DIGITAL I/O Port3/4寄存器定义无中断功能************************************************************/#define P3IN_ 0x0018 /* P3 输入寄存器 */ const sfrb P3IN = P3IN_;#define P3OUT_ 0x0019 /* P3 输出寄存器 */ sfrb P3OUT = P3OUT_;#define P3DIR_ 0x001A /* P3 方向选择寄存器*/sfrb P3DIR = P3DIR_;#define P3SEL_ 0x001B /* P3 功能选择寄存器*/ sfrb P3SEL = P3SEL_;#define P4IN_ 0x001C /* P4 输入寄存器 */ const sfrb P4IN = P4IN_;#define P4OUT_ 0x001D /* P4 输出寄存器 */ sfrb P4OUT = P4OUT_;#define P4DIR_ 0x001E /* P4 方向选择寄存器*/sfrb P4DIR = P4DIR_;#define P4SEL_ 0x001F /* P4 功能选择寄存器*/sfrb P4SEL = P4SEL_;/************************************************************* DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能************************************************************/#define P5IN_ 0x0030 /* P5 输入寄存器 */ const sfrb P5IN = P5IN_;#define P5OUT_ 0x0031 /* P5 输出寄存器*/ sfrb P5OUT = P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/ sfrb P5DIR = P5DIR_;#define P5SEL_ 0x0033 /* P5 功能选择寄存器*/ sfrb P5SEL = P5SEL_;#define P6IN_ 0x0034 /* P6 输入寄存器 */ const sfrb P6IN = P6IN_;#define P6OUT_ 0x0035 /* P6 输出寄存器*/ sfrb P6OUT = P6OUT_;#define P6DIR_ 0x0036 /* P6 方向选择寄存器*/ sfrb P6DIR = P6DIR_;#define P6SEL_ 0x0037 /* P6 功能选择寄存器*/ sfrb P6SEL = P6SEL_;#define BIT0 0x0001#define BIT1 0x0002#define BIT2 0x0004#define BIT3 0x0008#define BIT4 0x0010#define BIT5 0x0020#define BIT6 0x0040#define BIT7 0x0080#define BIT8 0x0100#define BIT9 0x0200#define BITA 0x0400#define BITB 0x0800#define BITC 0x1000#define BITD 0x2000#define BITE 0x4000#define BITF 0x8000/************************************************************* STATUS REGISTER BITS************************************************************/#define C 0x0001#define Z 0x0002#define N 0x0004#define V 0x0100#define GIE 0x0008#define CPUOFF 0x0010#define OSCOFF 0x0020#define SCG0 0x0040#define SCG1 0x0080/* Low Power Modes coded with Bits 4-7 in SR */#ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */#define LPM0 CPUOFF#define LPM1 SCG0+CPUOFF#define LPM2 SCG1+CPUOFF#define LPM3 SCG1+SCG0+CPUOFF#define LPM4 SCG1+SCG0+OSCOFF+CPUOFF/* End #defines for assembler */#else /* Begin #defines for C */#define LPM0_bits CPUOFF#define LPM1_bits SCG0+CPUOFF#define LPM2_bits SCG1+CPUOFF#define LPM3_bits SCG1+SCG0+CPUOFF#define LPM4_bits SCG1+SCG0+OSCOFF+CPUOFF#include <In430.h>#define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */ #define LPM0_EXIT _BIC_SR(LPM0_bits) /* Exit Low Power Mode 0 */#define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */ #define LPM1_EXIT _BIC_SR(LPM1_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */ #define LPM2_EXIT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */#define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */ #define LPM3_EXIT _BIC_SR(LPM3_bits) /* Exit Low Power Mode 3 */#define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ #define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */#endif /* End #defines for C *//************************************************************* PERIPHERAL FILE MAP************************************************************//************************************************************* 特殊功能寄存器地址和控制位************************************************************//*中断使能1*/#define IE1_ 0x0000sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/#define OFIE 0x02 /*外部晶振故障中断使能*/#define NMIIE 0x10 /*非屏蔽中断使能*/ #define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/#define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*//*中断标志1*/#define IFG1_ 0x0002sfrb IFG1 = IFG1_;#define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收中断标志*/#define UTXIFG0 0x80 /*串口0发送中断标志*//* 中断模式使能1 */#define ME1_ 0x0004sfrb ME1 = ME1_;#define URXE0 0x40 /* 串口0接收中断模式使能 */#define USPIE0 0x40 /* 同步中断模式使能 */#define UTXE0 0x80 /* 串口0发送中断模式使能 *//* 中断使能2 */#define IE2_ 0x0001sfrb IE2 = IE2_;#define URXIE1 0x10 /* 串口1接收中断使能 */#define UTXIE1 0x20 /* 串口1发送中断使能 *//* 中断标志2 */#define IFG2_ 0x0003sfrb IFG2 = IFG2_;#define URXIFG1 0x10 /* 串口1接收中断标志 */#define UTXIFG1 0x20 /* 串口1发送中断标志 *//* 中断模式使能2 */#define ME2_ 0x0005sfrb ME2 = ME2_;#define URXE1 0x10 /* 串口1接收中断模式使能 */#define USPIE1 0x10 /* 同步中断模式使能 */#define UTXE1 0x20 /* 串口1发送中断模式使能 *//************************************************************* 看门狗定时器的寄存器定义************************************************************/#define WDTCTL_ 0x0120sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/#define WDTTMSEL 0x0010 /*选择模式 0: 看门狗模式; 1: 定时器模式*/#define WDTNMI 0x0020 /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/#defineWDTNMIES 0x0040 /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/#define WDTHOLD 0x0080 /*停止看门狗定时器工作 0:启动;1:停止*/#define WDTPW 0x5A00 /* 写密码:高八位*//* SMCLK= 1MHz定时器模式 */#defineWDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL/* TSMCLK*2POWER15=32ms 复位状态 */#defineWDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0/* TSMCLK*2POWER13=8.192ms " */#defineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1/* TSMCLK*2POWER9=0.512ms " */#defineWDT_MDLY_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0/* TSMCLK*2POWER6=0.512ms " *//* ACLK=32.768KHz 定时器模式*/#defineWDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL/* TACLK*2POWER15=1000ms " */#defineWDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER13=250ms " */#defineWDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2POWER9=16ms " */#defineWDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDT IS0 /* TACLK*2POWER6=1.9ms " *//* SMCLK=1MHz看门狗模式 */#defineWDT_MRST_32 WDTPW+WDTCNTCL/* TSMCLK*2POWER15=32ms 复位状态 */#defineWDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0/* TSMCLK*2POWER13=8.192ms " */#defineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1/* TSMCLK*2POWER9=0.512ms " */#defineWDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0/* TSMCLK*2POWER6=0.512ms " *//* ACLK=32KHz看门狗模式 */#defineWDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL/* TACLK*2POWER15=1000ms " */#defineWDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0/* TACLK*2POWER13=250ms " */#defineWDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2POWER9=16ms " */#defineWDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/* TACLK*2POWER6=1.9ms " *//************************************************************硬件乘法器的寄存器定义************************************************************/#define MPY_ 0x0130 /* 无符号乘法 */ sfrw MPY = MPY_;#define MPYS_ 0x0132 /* 有符号乘法*/sfrw MPYS = MPYS_;#define MAC_ 0x0134 /* 无符号乘加 */ sfrw MAC = MAC_;#define MACS_ 0x0136 /* 有符号乘加 */sfrw MACS = MACS_;#define OP2_ 0x0138 /* 第二乘数 */sfrw OP2 = OP2_;#define RESLO_ 0x013A /* 低6位结果寄存器 */ sfrw RESLO = RESLO_;#define RESHI_ 0x013C /* 高6位结果寄存器 */ sfrw RESHI = RESHI_;#define SUMEXT_ 0x013E /*结果扩展寄存器 */ const sfrw SUMEXT = SUMEXT_;/************************************************************* DIGITAL I/O Port1/2 寄存器定义有中断功能************************************************************/#define P1IN_ 0x0020 /* P1 输入寄存器 */ const sfrb P1IN = P1IN_;#define P1OUT_ 0x0021 /* P1 输出寄存器 */ sfrb P1OUT = P1OUT_;#define P1DIR_ 0x0022 /* P1 方向选择寄存器*/sfrb P1DIR = P1DIR_;#define P1IFG_ 0x0023 /* P1 中断标志寄存器*/ sfrb P1IFG = P1IFG_;#define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/sfrb P1IES = P1IES_;#define P1IE_ 0x0025 /* P1 中断使能寄存器 */ sfrb P1IE = P1IE_;#define P1SEL_ 0x0026 /* P1 功能选择寄存器*/ sfrb P1SEL = P1SEL_;#define P2IN_ 0x0028 /* P2 输入寄存器 */ const sfrb P2IN = P2IN_;#define P2OUT_ 0x0029 /* P2 输出寄存器 */ sfrb P2OUT = P2OUT_;#define P2DIR_ 0x002A /* P2 方向选择寄存器*/sfrb P2DIR = P2DIR_;#define P2IFG_ 0x002B /* P2 中断标志寄存器*/sfrb P2IFG = P2IFG_;#define P2IES_ 0x002C /* P2 中断边沿选择寄存器 */sfrb P2IES = P2IES_;#define P2IE_ 0x002D /* P2 中断使能寄存器 */ sfrb P2IE = P2IE_;#define P2SEL_ 0x002E /* P2 功能选择寄存器*/sfrb P2SEL = P2SEL_;/************************************************************* DIGITAL I/O Port3/4寄存器定义无中断功能************************************************************/#define P3IN_ 0x0018 /* P3 输入寄存器 */ const sfrb P3IN = P3IN_;#define P3OUT_ 0x0019 /* P3 输出寄存器 */ sfrb P3OUT = P3OUT_;#define P3DIR_ 0x001A /* P3 方向选择寄存器*/sfrb P3DIR = P3DIR_;#define P3SEL_ 0x001B /* P3 功能选择寄存器*/ sfrb P3SEL = P3SEL_;#define P4IN_ 0x001C /* P4 输入寄存器 */ const sfrb P4IN = P4IN_;#define P4OUT_ 0x001D /* P4 输出寄存器 */ sfrb P4OUT = P4OUT_;#define P4DIR_ 0x001E /* P4 方向选择寄存器*/sfrb P4DIR = P4DIR_;#define P4SEL_ 0x001F /* P4 功能选择寄存器*/sfrb P4SEL = P4SEL_;/************************************************************* DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能************************************************************/#define P5IN_ 0x0030 /* P5 输入寄存器 */ const sfrb P5IN = P5IN_;#define P5OUT_ 0x0031 /* P5 输出寄存器*/sfrb P5OUT = P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/ sfrb P5DIR = P5DIR_;#define P5SEL_ 0x0033 /* P5 功能选择寄存器*/ sfrb P5SEL = P5SEL_;#define P6IN_ 0x0034 /* P6 输入寄存器 */ const sfrb P6IN = P6IN_;#define P6OUT_ 0x0035 /* P6 输出寄存器*/ sfrb P6OUT = P6OUT_;#define P6DIR_ 0x0036 /* P6 方向选择寄存器*/ sfrb P6DIR = P6DIR_;#define P6SEL_ 0x0037 /* P6 功能选择寄存器*/ sfrb P6SEL = P6SEL_;* Timer A ,Timer B 可公用捕获/比较控制寄存器X */#define CM1 0x8000 /* 捕获模式选择位1 */ #define CM0 0x4000 /* 捕获模式选择位0 */ #define CCIS1 0x2000 /* 捕获输入信号源选择位1 */#define CCIS0 0x1000 /* 捕获输入信号源选择位0 */#define SCS 0x0800 /* 信号同步位 0:异步捕获;1:同步捕获 */#define SCCI 0x0400 /* 锁存输入信号 */ #define CAP 0x0100 /* 模式选择: 0:比较模式;1:捕获模式 */#define OUTMOD2 0x0080 /* 输出模式选择位2 */#define OUTMOD1 0x0040 /* 输出模式选择位1 */#define OUTMOD0 0x0020 /* 输出模式选择位0 */#define CCIE 0x0010 /* 中断允许位 */#define CCI 0x0008 /* 读出输入信号源位ccis0\1 */#define OUT 0x0004 /* 输出信号(选择输出模式0) */#define COV 0x0002 /* 捕获溢出标志 */ #define CCIFG 0x0001 /* 中断标志 */#define OUTMOD_0 0*0x20 /* 输出模式 */#define OUTMOD_1 1*0x20 /* 置位模式 */#define OUTMOD_2 2*0x20 /* 翻转/复位模式 */#define OUTMOD_3 3*0x20 /* 置位/复位模式 */#define OUTMOD_4 4*0x20 /* 翻转模式 */#define OUTMOD_5 5*0x20 /* 复位模式 */#define OUTMOD_6 6*0x20 /* 翻转/置位模式 */#define OUTMOD_7 7*0x20 /* 复位/置位模式*/#define CCIS_0 0*0x1000 /* 选择CCIXA为捕获事件的输入信号源 */#define CCIS_1 1*0x1000 /* 选择CCIXB为捕获事件的输入信号源 */#define CCIS_2 2*0x1000 /* 选择GND为捕获事件的输入信号源 */#define CCIS_3 3*0x1000 /* 选择VCC为捕获事件的输入信号源 */#define CM_0 0*0x4000 /* 禁止捕获模式 */ #define CM_1 1*0x4000 /* 上升延捕获模式*/#define CM_2 2*0x4000 /* 下降沿捕获模式*/#define CM_3 3*0x4000 /* 上升沿和下降沿都捕获模式 *//************************************************************* Timer B 定时器B寄存器定义************************************************************/#define TBIV_ 0x011E /* 中断向量寄存器:BIT1-BIT3有效 */sfrw TBIV = TBIV_;#define TBCTL_ 0x0180 /* 定时器B控制寄存器:全部控制都集中在这 */sfrw TBCTL = TBCTL_;#define TBCCTL0_ 0x0182 /* 定时器B捕获/比较控制寄存器0*/sfrw TBCCTL0 = TBCCTL0_;#define TBCCTL1_ 0x0184 /* 定时器B捕获/比较控制寄存器1 */sfrw TBCCTL1 = TBCCTL1_;#define TBCCTL2_ 0x0186 /* 定时器B捕获/比较控制寄存器2 */sfrw TBCCTL2 = TBCCTL2_;#define TBCCTL3_ 0x0188 /* 定时器B捕获/比较控制寄存器3 */sfrw TBCCTL3 = TBCCTL3_;#define TBCCTL4_ 0x018A /* 定时器B捕获/比较控制寄存器4 */sfrw TBCCTL4 = TBCCTL4_;#define TBCCTL5_ 0x018C /* 定时器B捕获/比较控制寄存器5 */sfrw TBCCTL5 = TBCCTL5_;#define TBCCTL6_ 0x018E /* 定时器B捕获/比较控制寄存器6 */sfrw TBCCTL6 = TBCCTL6_;#define TBR_ 0x0190 /* 计数器 */sfrw TBR = TBR_;#define TBCCR0_ 0x0192 /* 定时器B捕获/比较寄存器0 */sfrw TBCCR0 = TBCCR0_;#define TBCCR1_ 0x0194 /* 定时器B捕获/比较寄存器1 */sfrw TBCCR1 = TBCCR1_;#define TBCCR2_ 0x0196 /* 定时器B捕获/比较寄存器2 */sfrw TBCCR2 = TBCCR2_;#define TBCCR3_ 0x0198 /* 定时器B捕获/比较寄存器3 */sfrw TBCCR3 = TBCCR3_;#define TBCCR4_ 0x019A /* 定时器B捕获/比较寄存器4 */sfrw TBCCR4 = TBCCR4_;#define TBCCR5_ 0x019C /* 定时器B捕获/比较寄存器5 */sfrw TBCCR5 = TBCCR5_;#define TBCCR6_ 0x019E /* 定时器B捕获/比较寄存器6 */sfrw TBCCR6 = TBCCR6_;/* 定时器B控制寄存器:全部控制都集中在这 */#define SHR1 0x4000 /* 装载比较锁存器控制位1 :受TBCCTLx中的CCLDx位控制 */#define SHR0 0x2000 /* 装载比较锁存器控制位0 :受TBCCTLx中的CCLDx位控制*/#define TBCLGRP1 0x4000 /* 装载比较锁存器控制位1 :受TBCCTLx中的CCLDx位控制*/#define TBCLGRP0 0x2000 /* 装载比较锁存器控制位0 :受TBCCTLx中的CCLDx位控制*/#define CNTL1 0x1000 /* 定时器位数长度控制位1 */#define CNTL0 0x0800 /* 定时器位数长度控制位0 */#define TBSSEL2 0x0400 /* 未用 */#define TBSSEL1 0x0200 /* 时钟输入源控制位1 */ #define TBSSEL0 0x0100 /* 时钟输入源控制位0 */ #define TBCLR 0x0004 /* 置1清除定时器 */#define TBIE 0x0002 /* 中断允许 */#define TBIFG 0x0001 /* 中断标志 */#define TBSSEL_0 0*0x0100 /* 时钟源为:TBCLK */ #define TBSSEL_1 1*0x0100 /* 时钟源为: ACLK */ #define TBSSEL_2 2*0x0100 /* 时钟源为:SMCLK */ #define TBSSEL_3 3*0x0100 /* 时钟源为:INCLK */ #define CNTL_0 0*0x0800 /* 16 位计数模式*/ #define CNTL_1 1*0x0800 /* 12 位计数模式*/ #define CNTL_2 2*0x0800 /* 10 位计数模式 */ #define CNTL_3 3*0x0800 /* 8 位计数模式 */ #define SHR_0 0*0x2000 /* 单独装载(初始值) */#define SHR_1 1*0x2000 /* 分三组装载: 1 - 3 groups (1-2, 3-4, 5-6) */#define SHR_2 2*0x2000 /* 分二组装载: 2 - 2 groups (1-3, 4-6)*/#define SHR_3 3*0x2000 /* 不分组装载: 3 - 1 group (all) */#define TBCLGRP_0 0*0x2000 /* 单独装载(初始值) */#define TBCLGRP_1 1*0x2000 /* 分三组装载: 1 - 3 groups (1-2, 3-4, 5-6) */#define TBCLGRP_2 2*0x2000 /* 分二组装载: 2 - 2 groups (1-3, 4-6)*/#define TBCLGRP_3 3*0x2000 /* 不分组装载: 3 - 1 group (all) *//* Additional Timer B Control Register bits are defined in Timer A */#define SLSHR1 0x0400 /* Compare latch load source 1 */#define SLSHR0 0x0200 /* Compare latch load source 0 */#define CLLD1 0x0400 /* 定义比较锁存器TBCLx 的装载方式控制位1 */#define CLLD0 0x0200 /* 定义比较锁存器TBCLx 的装载方式控制位0 */#define SLSHR_0 0*0x0200 /* 立即装载 */#define SLSHR_1 1*0x0200 /* TBR 计数到0时装载 */#define SLSHR_2 2*0x0200 /* 在增减模式下,计数到TBCLx或0时装载; 在连续计数模式下,计数到0时装载 */#define SLSHR_3 3*0x0200 /* 当计数到TBCL0时装载*/#define CLLD_0 0*0x0200 /* 立即装载 */#define CLLD_1 1*0x0200 /* TBR 计数到0时装载 */#define CLLD_2 2*0x0200 /* 在增减模式下,计数到TBCLx或0时装载; 在连续计数模式下,计数到0时装载 */#define CLLD_3 3*0x0200 /* 当计数到TBCL0时装载 */点击查看:怎样获取“电子币”的详细说明---漫步于开源世界之中,一起与自由同行!Posted: 2007-04-13 00:14 | [楼主]* Basic Clock Module************************************************************/#define DCOCTL_ 0x0056 /* DCO 时钟频率控制寄存器 :复位后的值位060h*/sfrb DCOCTL = DCOCTL_;#define BCSCTL1_ 0x0057 /* 系统时钟控制寄存器1 :复位后的值位084h*/sfrb BCSCTL1 = BCSCTL1_;#define BCSCTL2_ 0x0058 /* 系统时钟控制寄存器2 :复位后的值位000h*/sfrb BCSCTL2 = BCSCTL2_;/* DCO 时钟频率控制寄存器 */#define MOD0 0x01 /* DCO插入周期控制位0 */#define MOD1 0x02 /* DCO插入周期控制位1 */#define MOD2 0x04 /* DCO插入周期控制位2 */#define MOD3 0x08 /* DCO插入周期控制位3 */#define MOD4 0x10 /* DCO插入周期控制位4 */#define DCO0 0x20 /* 8种频率控制位0 */#define DCO1 0x40 /* 8种频率控制位1 */#define DCO2 0x80 /* 8种频率控制位2 *//* 系统时钟控制寄存器1 :复位后的值位084h*/#define RSEL0 0x01 /* 选择内部电阻控制位0 */#define RSEL1 0x02 /* 选择内部电阻控制位1 */#define RSEL2 0x04 /* 选择内部电阻控制位2 */#define XT5V 0x08 /* 必须为0*/#define DIVA0 0x10 /* ACLK分频系数控制位0*/#define DIVA1 0x20 /* ACLK分频系数控制位1 */#define XTS 0x40 /* LFXT1工作模式控制位 0:低频模式. / 1: 高频模式. */#define XT2OFF 0x80 /* XT2CLK 使能控制位 0:开启; 1:关闭 */#define DIVA_0 0x00 /* ACLK分频系数为: 1 */#define DIVA_1 0x10 /* ACLK分频系数为: 2 */#define DIVA_2 0x20 /* ACLK分频系数为: 4 */#define DIVA_3 0x30 /* ACLK分频系数为: 8 *//* 系统时钟控制寄存器2 :复位后的值位000h*/#define DCOR 0x01 /* 内外电阻选择控制位 */#define DIVS0 0x02 /* SMCLK分频控制位0*/#define DIVS1 0x04 /* SMCLK分频控制位1 */#define SELS 0x08 /* SMCLK 时钟源选择位t 0:DCOCLK / 1:XT2CLK/LFXTCLK */#define DIVM0 0x10 /* MCLK分频控制位0 */#define DIVM1 0x20 /* MCLK分频控制位1 */#define SELM0 0x40 /* MCLK 时钟输入源选择位0 */#define SELM1 0x80 /* MCLK 时钟输入源选择位1 */#define DIVS_0 0x00 /* SMCLK 分频系数为: 1 */#define DIVS_1 0x02 /* SMCLK 分频系数为: 2 */#define DIVS_2 0x04 /* SMCLK 分频系数为: 4 */#define DIVS_3 0x06 /* SMCLK 分频系数为: 8 */#define DIVM_0 0x00 /* MCLK 分频系数为: 1 */#define DIVM_1 0x10 /* MCLK 分频系数为: 2 */#define DIVM_2 0x20 /* MCLK 分频系数为: 4 */#define DIVM_3 0x30 /* MCLK 分频系数为: 8 */#define SELM_0 0x00 /* MCLK 时钟输入源: DCOCLK */#define SELM_1 0x40 /* MCLK 时钟输入源: DCOCLK */#define SELM_2 0x80 /* MCLK 时钟输入源: XT2CLK/LFXTCLK */#define SELM_3 0xC0 /* MCLK 时钟输入源: LFXTCLK *//************************************************************** Flash Memory FLASH操作寄存器定义*************************************************************/#define FCTL1_ 0x0128 /* FLASH控制寄存器1:控制编程、擦除 */sfrw FCTL1 = FCTL1_;#define FCTL2_ 0x012A /* FLASH 控制寄存器2 :控制时钟分频*/sfrw FCTL2 = FCTL2_;#define FCTL3_ 0x012C /* FLASH 控制寄存器3:状态标志*/sfrw FCTL3 = FCTL3_;#define FRKEY 0x9600 /* 读FLASH 密码 */#define FWKEY 0xA500 /* 写FLASH 密码 */#define FXKEY 0x3300 /* for use with XOR instruction */ /* FLASH控制寄存器1:控制编程、擦除 */#define ERASE 0x0002 /* 擦除段使能 */#define MERAS 0x0004 /* 主存擦除使能 */#define WRT 0x0040 /* 编程使能 */#define BLKWRT 0x0080 /* 段编程使能 *//* FLASH 控制寄存器2 :控制时钟分频*/#define FN_0 0x0000 /*直通 */#define FN_1 0x0001 /*2分频 */#define FN_2 0x0002 /*3分频*/#define FN_3 0x0003 /*4分频 */#define FN_4 0x0004 /*5分频 */#define FN_5 0x0005 /*6分频*/#define FN_6 0x0006 /*7分频 */#define FN_7 0x0007 /*8分频*/#define FN_8 0x0008 /*9分频 */#define FN_9 0x0009 /*10分频 */#define FN_10 0x000A /*11分频*/#define FN_11 0x000B /*12分频 */#define FN_12 0x000C /*13分频*/#define FN_13 0x000D /*14分频 */#define FN_14 0x000E /*15分频 */#define FN_15 0x000F /*16分频*/#define FN_16 0x0010 /*17分频 */#define FN_17 0x0011 /*18分频*/#define FN_18 0x0012 /*19分频 */#define FN_19 0x0013 /*20分频 */#define FN_20 0x0014 /*21分频*/#define FN_21 0x0015 /*22分频 */#define FN_22 0x0016 /*23分频*/#define FN_23 0x0017 /*24分频 */#define FN_24 0x0018 /*25分频 */#define FN_25 0x0019 /*26分频*/#define FN_26 0x001A /*27分频 */#define FN_27 0x001B /*28分频*/#define FN_28 0x001C /*29分频 */#define FN_29 0x001D /*30分频 */#define FN_30 0x001E /*31分频*/#define FN_31 0x001F /*32分频 */#define FN_32 0x0020 /*33分频*/#define FN_33 0x0021 /*34分频 */#define FN_34 0x0022 /*35分频 */#define FN_35 0x0023 /*36分频*/#define FN_36 0x0024 /*37分频 */#define FN_37 0x0025 /*38分频*/#define FN_38 0x0026 /*39分频 */#define FN_39 0x0027 /*40分频 */#define FN_40 0x0028 /*41分频*/#define FN_41 0x0029 /*42分频 */#define FN_42 0x002A /*43分频*/#define FN_43 0x002B /*44分频 */#define FN_44 0x002C /*45分频 */#define FN_45 0x002D /*46分频*/#define FN_46 0x002E /*47分频 */#define FN_47 0x002F /*48分频*/#define FN_48 0x0030 /*49分频 */#define FN_49 0x0031 /*50分频 */#define FN_50 0x0032 /*51分频*/#define FN_51 0x0033 /*52分频 */#define FN_52 0x0034 /*53分频*/#define FN_53 0x0035 /*54分频 */#define FN_54 0x0036 /*55分频 */#define FN_55 0x0037 /*56分频*/#define FN_56 0x0038 /*57分频 */#define FN_57 0x0039 /*58分频*/#define FN_58 0x003A /*59分频 */#define FN_59 0x003B /*60分频 */#define FN_60 0x003C /*61分频*/#define FN_61 0x003D /*62分频 */#define FN_62 0x003E /*63分频*/#define FN_63 0x003F /*64分频 */#define FSSEL_0 0x0000 /* Flash时钟选择: ACLK */#define FSSEL_1 0x0040 /* Flash时钟选择: MCLK */#define FSSEL_2 0x0080 /* Flash时钟选择: SMCLK */#define FSSEL_3 0x00C0 /* Flash时钟选择: SMCLK *//* FLASH 控制寄存器3:状态标志 */#define BUSY 0x0001 /* Flash忙标志*/#define KEYV 0x0002 /* Flash安全键值出错标志 */ #define ACCVIFG 0x0004 /* Flash非法访问中断标志*/#define WAIT 0x0008 /* 等待指示信号位*/#define LOCK 0x0010 /* 锁定位 */#define EMEX 0x0020 /* 紧急退出位 *//************************************************************* Comparator A 比较器A寄存器定义************************************************************/#define CACTL1_ 0x0059 /* 比较器A控制寄存器1 */sfrb CACTL1 = CACTL1_;#define CACTL2_ 0x005A /* 比较器A控制寄存器2 */sfrb CACTL2 = CACTL2_;#define CAPD_ 0x005B /*比较器A端口禁止寄存器*/sfrb CAPD = CAPD_;/* 比较器A控制寄存器1 */#define CAIFG 0x01 /*比较器A中断标志*/#define CAIE 0x02 /* 比较器A中断使能 */#define CAIES 0x04 /* 比较器A中断边沿触发选择 0:上升延 1:下降延 */#define CAON 0x08 /* 比较器电源开关*/#define CAREF0 0x10 /* 选择参考源位0 */#define CAREF1 0x20 /* 选择参考源位1 */#define CARSEL 0x40 /* 选择内部参考源加到比较器的正端或负端 */#define CAEX 0x80 /* 交换比较器的输入端 */#define CAREF_0 0x00 /* 选择参考源0 : Off 使用外部参考源*/#define CAREF_1 0x10 /* 选择参考源1 : 0.25*Vcc为参考源 */#define CAREF_2 0x20 /* 选择参考源2 : 0.5*Vcc为参考源 */#define CAREF_3 0x30 /* 选择参考源3 : Vt*//* 比较器A控制寄存器2 */#define CAOUT 0x01 /* 比较器输出 */#define CAF 0x02 /* 选择比较器是否经过RC低通滤波器 */#define P2CA0 0x04 /* 外部引脚信号连接到比较器A 的CA0 */#define P2CA1 0x08 /* 外部引脚信号连接到比较器A 的CA1 */#define CACTL24 0x10#define CACTL25 0x20#define CACTL26 0x40#define CACTL27 0x80#define CAPD0 0x01 /* Comp. A Disable Input Buffer of Port Register .0 */#define CAPD1 0x02 /* Comp. A Disable Input Buffer。

MSP430程序库十二SVS(电源电压监控器)模块

MSP430程序库十二SVS(电源电压监控器)模块

MSP430程序库<十二>SVS(电源电压监控器)模块电源电压监控对于单片机来说,也是经常要用的模块。

当需要稳定的工业级产品时,经常要对电源电压监控,以保证单片机系统工作于正常环境或范围中。

MSP430F16x提供了一个现成的电源电压监控器模块SVS,方便检测电源电压或者是外部电压,可以设置为电压过低时复位或置标志位。

本程序即完成SVS的设置使用的程序库(msp430f14x没有此模块)。

硬件介绍:MSP430单片机含有的SVS模块可以很方便的监控电源电压或外部电压。

电源电压监控器(SVS)是用于监控AVCC电源电压或外部电压。

SVS的可配置当电源电压或外部电压下降到低于用户选择的电压级别时设置一个标志,或产生POR复位。

SVS模块有以下特点:可以监控AVCC电压;可选择产生复位信号;可软件设置SVS 比较器输出信号;低电压标志可以被锁定或被用户程序访问;有14个可供选择的电压门限;可以监控外部输入电压。

SVS模块可以很方便的监控电源电压或系统的其他电压,可以产生复位信号或是置标志位。

SVS模块仅有一个8位的寄存器,使用十分方便。

寄存器SVSCTL:高四位VLDx用来设置监控电源电压的门限、关闭SVS或者选择监控外部输入电压。

具体含义如下:当高四位是0时,SVS模块是关闭的;1-14分别是对电源电压监控的14个门限电压;15时,监控外部电压,门限电压是1.2v。

PORON位设置是否启动电压低于门限时,单片机复位:1 复位0 置标志位SVSFG SVSON位,这位和其他模块的ON位不太一样,SVSON位仅仅指示当前SVS模块是否打开,而不是用来开关模块的。

SVSOP位,这位是设置SVS内部比较器输出值:0 输出低电平1 输出高电平。

SVSFG位,标志位指示是否检测到低电压仅PORON 为0时有效出现低电压后置1;改为不会自动清零,必须软件清零。

另外,SVS模块值得一提的是:SVS门限电压已经设置回差带:每个SVS的水平已经滞后AVCC,接近临界值时,以减少小型电源电压的变化的敏感性。

msp430标准c语言库函数

msp430标准c语言库函数

ctype.h 字符处理类isalnum int isalnum(int c) 字母还是数字isalpha int isalpha(int c) 是否字母iscntrl int iscntrl(int c) 是否控制码isdigit int isdigit(int c) 是否数字isgraph int isgraph(int c) 是否为可打印的非空字符islower int islower(int c) 是否小写字母isprint int isprint(int c) 是否为可打印字符ispunct int ispunct(int c) 是否为表示标点符号的字符isspace int isspace(int c) 是否为空白字符isupper int isupper(int c) 是否为大写字符isxdigit int isxdigit(int c) 是否为十六进制数tolower int tolower(int c) 转换为小写字符toupper int toupper(int c) 转换为大写字符math.h 数字类acos double acos(double arg) 反余弦函数asin double asin(double arg) 反正弦函数atan double atan(double arg) 反正切函数atan2 double atan2(double arg1,double arg2) 带象限的反正切函数ceil double ceil(double arg) 大于或等于arg的最小正整数cos double cos(double arg) 余弦函数cosh double cosh(double arg) 双余弦函数exp double exp(double arg) 指数函数arg) 双精度的浮点绝对值fabs(doublefabsdoublefloor double floor(double arg) 大于或等于arg的最大正整数fmod double fmod(double arg1,double arg2) 浮点数的余数frexp double frexp(double arg1,int *arg2) 将浮点数分为两部分ldexp(double arg1,int arg2) 乘以2的幂log double log(double arg) 自然对数函数log10 double log10(double arg) 以10为底的对数函数modf double modf(double value,double *iptr) 拆开为整数部分和小数部分pow double pow(double arg1,double arg2) 求幂函数sin double sin(double arg) 正弦函数sinh double sinh(double arg) 双曲正弦sqrt double sqrt(double arg) 平方根函数tan double tan(double arg) 正切函数tanh double tanh(double arg) 双曲正切函数setjmp.h 非局部跳转longjmp void longjmp(jmp_buf env,int val) 长跳转setjmp int setjmp(jmp_buf env) 设置返回点跳转stdio.h 输入和输出类函数intgetchar(void) 获得字符getchar*s) 读字符串*gets(charchargetsprintf int printf(const char *format,…) 写格式化数据putcharvalue) 写字符函数putchar(intint*s) 写字符串函数charputsintputs(constscanf int scanf(const char *format, …) 读格式化数据sprintf int sprintf(char *s,const char *format,) 将格式化数据写入字符串sscanf int sscanf(const char *s,const char *format,…)从字符串中读取格式化数据stdlib.h 通用子程序类abort void abort(void) 非正常结束程序abs int abs(int j) 绝对值函数charatof(const*nptr) 转换ASCII为双精度atofdoubleatoi int atoi(const char *nptr) 转换ASCII为整数atol long atol(const char *nptr) 转换ASCII为长整形*bsearch(constvoid 在数组中搜索voidbsearch*base,void*key,constsize,nmemb,size_tsize_tvoid(*compare)(constint*_base));void*_key,constcalloc void *calloc(size_t nelem,size_t elsize) 为目标数组分配存储器单元div div_t div(int numer,int denom) 除法运算函数status) 结束程序exit(intexitvoid*ptr) 释放存储器单元free(voidvoidfreej) 整形数取绝对值labs long int labs(longintldiv ldiv_t ldiv(long int numer,long int denom) 长整形除法size) 分配存储器*malloc(size_tvoidmallocqsort void qsort(const void *base, 数组排序size_t nmemb,size_t size,int (*compare)(const void*_key,const void *_base));rand(void) 随机数生成函数intrandrealloc void *realloc(void *ptr,size_t,size) 重新分配存储器单元函数srand void srand(unsigned int seed) 设置随机数(的种子)strtod double strtod(const char 将字符串转换为双精度数**endptr)*nptr,charstrtol long int strtol(constchar 将字符串转换为长整形数**endptr,intase)*nptr,charstrtoul unsigned long int strtoul 字符串转换为无符号整形数char*nptr,charconstint)**endptr,basestring.h 字符串处理类memchr void *memchr(const void *s,int c,size_t n) 在存储器中搜索字符memcmp int memcmp(const void *s1,const void *s2,size_t n)比较存储器内容memcpy void *memcpy(void *s1,const void *s2,size_t n) 拷贝存储器内容memmove void *memmove(void *s1,const void *s2,size_t n)移动存储器内容memset void *memset(void *s,int c,size_t n) 置存储器strcat char *strcat(char *s1,const char *s2) 逻辑字符串strchr char *strchr(const char*s,int c) 在字符串中找某一个字符strcmp int strcmp(const char *s1,const char *s2) 比较两个字符串strcoll int strcoll(const char *s1,const char *s2) 比较字符串strcpy char *strcpy(char *s1,const char *s2) 拷贝字符串strcspn size_t strcspn(const char *s1,const char *s2)在字符串中跨过被排除的字符strerror char *strerror(interrnum) 给出一个错误信息字符串char*s) 计算字符串长度函数size_tstrlen(conststrlenstrncat char *strncat(char *s1,const char *s2, size_t n)将指定数量的字符与字符串连接起来strncmp int strncmp(const char *s1,const char *s2, size_t n) 将指定数量的字符与字符串相比较strncpy har *strncpy(char *s1,const char *s2, size_t n)在字符串中复制指定的字符strpbrk char *strpbrk(const char *s1,const char *s2)在字符串中寻找任何指定的字符strrchr char *strrchr(const char *s,int c) 从字符串的右端开始寻找字符strspn size_t strspn(const char *s1,const char *s2) 在字符串中统计和分析字符strstr char *strstr(const char *s1,const char *s2) 在字符串中搜索子字符串strtok char *strtok(char *s1,const char *s2) 将标志前的字符剪掉strxfrm size_t strxfrm(char *s1,const char *s2,size_t n) 转换字符串并返回其长度。

msp430x14xh中各函数中文翻译.docx

msp430x14xh中各函数中文翻译.docx

#define B1T0 0x0001#define BIT1 0x0002#define BIT2 0x0004ttdefine BTT3 0x0008#dcfine BIT4 0x0010#define B1T5 0x0020#define BIT6 0x0040#define BIT7 0x0080ttdefine BTT8 0x0100#dcfine BIT9 0x0200#define BITA 0x0400#define BITB 0x0800#define BITC 0x1000ttdefine BTTD 0x2000#dcfine BITE 0x4000^define BITE 0x8000// xT> zCx * STATUS REGISTER BITS/ ■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 /^define Cttdefine Z^define N#define V ttdefine GTE #dcfinc CPUOFF#define OSCOFF #define SCGO ttdefine SCG10x00010x00020x00040x0100 0x00080x00100x00200x00400x0080/* Low Power Modes coded with Bits 4-7 in SR */ttifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */ #definc LPMO CPUOFF^define LPM1 SCGO+CPUOFF#define LPM2 SCG1+CPUOFFttdefine LPM3ttdefine LPM4/* End #defines for assembler */ SCG1+SCG0+CPU0FFSCG1+SCGO+OSCOFF+CPUOFFSeise /* Begin #defines for C */#define LPM0_bits ttdefine LPMl bits #dcfinc LPM2 bits CPUOFF SCGO+CPUOFF SCG1+CPU0FFSCG1+SCG0+CPU0FF SCG1+SCGO+OSCOFF+CPUOFFWinclude <In430. h>ttdefine LPMO _BTS_SR(LPM0_bits) /* Enter Low Power Mode 0 */ #dcfinc LPMO_EXIT _BIC_SR(LPMO_bits) /* Exit Low Power Mode 0 */ #define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */ ^define LPM1_EXIT _BIC_SR(LPMl_bitsI /* Exit Low Power Mode 1 */#define LPM2 BIS SR(LPM2_bits) /* Enter Low Power Mode 2 */ ^define LPM2_EXTT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */ #dcfinc LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */ ^define LPM3 EXIT BIC SR(LPM3 bits) /* Exit Low Power Mode 3 */ #define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ #define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */ ttendif /* End ttdefines for C */ / vxf* PERIPHERAL FILE MAP/ f*特殊功能寄存器地址和控制位 /*中断使能1*/^define 1E1_ 0x0000sfrb IE1 二 IE1_;^define WDTTE 0x01/*看门狗中断使能*/Wdefinc OFIE0x02/*外部晶振故障 中断使能*/^define NMIIE 0x10 /*非屏蔽中断使能*/ ttdefine ACCVTE0x20/*可屏蔽中断使能/flash 写屮断错误*/#define URXIEO0x40/*串口 0接收中断使 能*/#define UTXIEO0x80/*串口 0发送中断使能*//*屮断标志1*/#define IFG1 0x0002sfrb 1FG1 =1FG1_;^define WDTIFG0x01/*看门狗中断标志*/^define OFIFG0x02/*外部晶振故障屮断标志*/#define LPM3_bits ^define LPM4 bits^define NM11FG*/ttdefine URXIFGO*/#dcfinc UTXIFGO*//*中断模式使能1 */ #define ME1_ sfrb MEI #dcfinc URXEO 接收中断模式使能*/^define USPIEO 断模式使能*/^define UTXEO发送屮断模式使能*/ /*中断使能2 */^define IE2_ sfrb IE2 ^define URXTE1 屮断使能*/^define UTX1E1中断使能*/ /*中断标志2 */^define TFG2_ sfrbIFG2^define URX1FG1 中断标志*/ #defineUTXIFGl 中断标志*/ /*中断模式使能2 */^define ME2_ sfrb ME2 ttdefine URXE1 接收中断模式使能*/#dcfinc USPIE1 断模式使能*/^define UTXE1 发送中断模式使能*/0x10 /*非屏蔽中断标志0x40 /*串口0接收中断标志0x80 /*串口0发送屮断标志0x0004二ME1_;0x400x400x80/* 串口0/*同步中/* 串口00x0001二IE2_;0x100x200x0003=IFG20x100x200x0005=ME2_;0x100x100x20/*串口1接收/*串口1发送/*串口1接收/*串口1发送/* 串口 1/ *同步屮/* 串口 1//* 看门狗定时器的寄存器定义/ 吓、/^define WDTCTL_ sfrwWDTCTL#define WDTISO选择WDTCNT 的四个输岀端之一*/#dcfine WDTIS1选择WDTCNT 的四个输出端之一*/^define WDTSSEL WDTCNT 的时钟源*/ ^define WDTCNTCL除WDTCNT 端:为1时从0开始计数*/ ^define WDTTMSEL #define WDTNMI 选择NMT/RST 引脚功能0:为RST; 1:为NMI*/ #defineWDTNM1ES 0x0040选择触发延0:为上升延1:为下降延*/#define WDTHOLD0x0080看门狗定时器工作0:启动;1:停止*/^define WDTPW 写密码:高八位*/SMCLK 二1MHz 定时器模式*/ ttdefine WDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL/* TSMCLK*2P0WER15=32ms 复位状态 */ #define WDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTISO /* TSMCLK*2P0WER13二8. 192ms 〃 */#dcfineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDT1S1 /* TSMCLK*2P0WER9二0. 512ms ” */#defineWDT MDLY 0 064WDTPW+WDTTMSEL+WDTCNTCL+WDTTS1+WDTTSO/* TSMCLK*2P0WER6=0. 512ms 〃 *//* ACLK=32. 768KHz 定时器模式*/ #defineWDT_ADLY_1000WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2P0WER15=1000ms 〃 */#dcfineWDT_ADLY_250WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDT1S0/* TACLK*2P0WER13=250ms " */择模式0:看门狗模式;1:定时器模式*/0x0120 =WDTCTL_; 0x0001 0x0002 0x0004 0x0008 0x00100x0020/* /*选择 /*清 /*选 /*/*WDTNMI=1 时./*停止/*0x5A00WDT_ADLY_16/ WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2P0WER9二16ms 〃 */#defineWDT ADLY 1 9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDT ISO /* TACLK*2POWER6=1. 9ms ” */ /* SMCLK=lMHz看门狗模式*/#defineWDT_MRST_32 WDTPW+WDTCNTCL/* TSMCLK*2P0WER15二32ms 复位状态*/#defineWDT_MRST_8 WDTPW+WDTCNTCL+WDTISO/* TSMCLK*2P0WER13二8・ 192ms 〃 */#dcfineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDT1S1/* TSMCLK^2P0WER9=0. 512ms ” */#defineWDT_MRST_0_064 WDTPW+WDTCNTCL+WDTTS1+WDTTSO/* TSMCLK*2P0WER6=0. 512ms 〃 *//* ACLK=32KHz看门狗模式*/0x0130 /*无符号乘法*/ =MPY_;0x0132 /*有符号乘法*/=MPYS_;0x0134 /*无符号乘加*/ =MAC ;WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL/* TACLK*2P0WER15=1000ms 〃 */#dcfine WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDT1S0 /* TACLK*2P0WER13=250ms ” */ #define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2P0WER9二16ms〃 */#defineWDT_ARST_1_9WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/* TACLK*2POWER6=1. 9ms 〃 *//{硬件乘法器的寄存器定义\L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz ^lz \L^ ^lz ^lz \L^ ^lz ^lz /吓、Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|%/^define MPY_ s f i*w MPY ^define MPYS_ s f rw MPYS #define MAC_ sfrw MAC^define MACS_ sfrw MACS #define 0P2_ s frw 0P2 #dcfinc RESLO_ sfrw RESLO ^define RESHI_ sfrw RESHI ttdefine SUMEXT_ const sfrw SUMEXT 0x0136 /*有符号乘加*/ =MACS_;0x0138 /* 第二乘数 */ 二 0P2_;0x013A /*低6位结果寄存器*/ =RESLO_;0x013C/*高6位结果寄存器*/ 二 RESHI_;0x013E /*结果扩展寄存器*/=SUMEXT ;/ s£z / * DIGITAL 1/0 Port 1/2寄存器定义 有中断功能 // ^define P1TN_ const sfrb P1IN ^define P10UT_ sfrb PlOUT ttdefine P1DIR_ */ sfrb P1DIR ^define P11FG_ sfrb P1IFG #define P1IES_ 器*/sfrbP1IES^define P11E_ sfrb P1IE #define P1SEL_ sfrb P1SEL#dcfinc P2IN_ const sfrb P21N ^define P2OUT_ sfrb P20UT ^define P2DTR */ sfrb P2D1R ^define P2IFG_ */ sfrb P2TFG #dcfinc P2IES_ 器*/sfrbP2IES0x0020 /* Pl 输入寄存器*/ =P1IN_; 0x0021 /* Pl 输出寄存器*/=P1OUT_; 0x0022 /* Pl 方向选择寄存器 =P1DIR_;0x0023 /* Pl 中断标志寄存器*/ =P1IFG_;0x0024 /* Pl 中断边沿选择寄存 =P1IES_;0x0025 /* Pl 中断使能寄存器*/ =P1IE_;0x0026 /* Pl 功能选择寄存器*/ =P1SEL_;0x0028 /* P2输入寄存器*/=P21N_;0x0029 /* P2输岀寄存器*/ 二 P20UT_;0x002A /* P2方向选择寄存器=P2D1R_;0x002B /* P2中断标志寄存器二 P2TFG_;0x002C/*P2屮断边沿选择寄存 =P2IES ;0x002D /* P2中断使能寄存器*/ =P2IE_;0x002E A P2功能选择寄存器 =P2SEL ;/^Jx s£z/* DIGITAL 1/0 Port3/4寄存器定义无中断功能K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L*//0x0018 /* P3输入寄存器*/=P3IN_;0x0019 /* P3输出寄存器*/ =P30UT_;OxOOlA /* P3方向选择寄存器 =P3DIR_; OxOOlB /* P3功能选择寄存器*/ =P3SEL_;J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" ^rx^rx ^rx ^rx ^rx ^rx ^rx ^rx ^rx ^rx ^rx^rx ^rx ^rx^rx^rx ^rx ^rx ^rx ^rx ^rx ^rx ^Tx ^Tx ^Tx ^rx ^rx ^rx ^rx ^rx^Txs£z s£z s£z s£z s£z s£zs£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£zs£z s£z s£z s£z s£zs£z s£z s£z s£z s£z s£z s£z s£z s£z s£zs£z s£z s£z s£z s£z sJz /<1^ <1^<1^ <1^<1^ <1^ <1^ <1^ <1^ <1^ <T^ <1^ <1^ <1^ <Y^ <1^ <T^ <T^ <1^✓lx✓ix/0x0030 /* P5输入寄存器*/ =P5IN_; 0x0031 /* P5输出寄存器*/ 二 P50UT_; 0x0032 /* P5方向选择寄存器*/ =P5D1R_; 0x0033 /* P5功能选择寄存器*/^define P21E_ sfrb P2IE #define P2SEL_ */ sfrbP2SEL^define P3TN_const sfrb P3IN^define P30UT_sfrb P30UTttdefine P3DIR_ */sfrb P3DIR^define P3SEL_sfrb P3SEL#define P4IN_ const sfrb P4TN #dcfinc P40UT_ sfrb P40UT ^define P4DIR_ */ sfrb P4DTR #dcfinc P4SEL_ */ sfrbP4SELOxOOlC /* P4输入寄存器*/二 P4TN_;OxOOlD /* P4输岀寄存器*/ =P40UT_;OxOOlE /* P4方向选择寄存器二 P4DTR_;OxOOlF /* P4功能选择寄存器 =P4SEL_;* DIGITAL T/0 Port5/6T/0 口寄存器定义P0RT5和6无中断功能^define P51N_const sfrb P5IN #define P50UT_ sfrb P50UT #dcfinc P5DIR_ sfrb P5D1R ^define P5SEL_sfrb P5SEL二P5SEL_;0x0034 /* P6输入寄存器*/ =P6IN_; 0x0035 /* P6输出寄存器*/ 二 P60UT_; 0x0036 /* P6方向选择寄存器*/ =P6D1R_;0x0037 /* P6功能选择寄存器*/二 P6SEL_; #define BTTO 0x0001#define BIT1 0x0002 #definc BIT2 0x0004 ^define B1T3 0x0008 #define BIT4 0x0010 #define BTT5 0x0020 #define BIT6 0x0040 #definc BIT7 0x0080 ^define BITS 0x0100 #define BIT9 0x0200 #define BTTA 0x0400 #define BITB 0x0800 #definc BITC 0x1000 ^define B1TD 0x2000 #define BITE 0x4000 ttdefine BTTF 0x8000/ vxf* STATUS REGISTER BITS/ f#define C ttdefine Z #dcfinc N ttdefine V ^define GIE ttdefine CPUOFF ttdefine OSCOFF #dcfinc SCGO^define SCG1 /* Low Power Modes coded with Bits4-7 in SR */ttifndef _IAR_SYSTEMS_ICC /* Begin #defines for assembler */ ttdefine LPMOCPUOFF^define LPM1SCGO+CPUOFF^define P61N_const sfrb P6IN#define P60UT_ sfrb P60UT #dcfinc P6DIR_ sfrb P6D1R^define P6SEL_sfrb P6SEL0x0001 0x0002 0x0004 0x01000x0008 0x00100x0020 0x0040 0x0080ttinclude <ln430. h>#define LPMO_BIS_SR(LPMO bits) /* Enter Low Power Mode 0 */#define LPMO_EXIT _BIC_SR(LPMO_bits) /* Exit Low Power Mode 0 */ ttdefine LPM1 _BTS_SR(LPMlbits) /* Enter Low Power Mode 1 */ #dcfine LPM1_EXIT _BIC_SR(LPMl_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */ ^define LPM2_EXIT _BIC_SR(LPM2_bitsI /* Exit Low Power Mode 2 */ #define LPM3 BISSR(LPM3_bits) /* Enter Low Power Mode 3 */ ttdefine LPM3_EXTT _BTC_SR(LPM3_bits) /* Exit Low Power Mode 3 */ #dcfinc LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ ^define LPM4_EX1T _BlC_SR(LPM4_bits) /* Exit Low Power Mode 4 */ Wendif /* End #defines for C *//I* PERIPHERAL FILE MAPvz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz /{/ /吓、吓、*特殊功能寄存器地址和控制位K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L*K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* / /0x0000 =1E1_; 0x01/*看门狗中断使能 0x02/*外部晶振故障0x10 /*非屏蔽中断使能*/0x20/*可屏蔽中断使能^define LPM2 ^define LPM3 #define LPM4/* End #defines for assembler */ ttelse /* Beg in #def ines for C */ #define LPMO bits ^define LPMlbits #define LPM2_bits ttdefine LPM3_bits SCG1+CPUOFF SCG1+SCGO+CPUOFF SCG1+SCGO+OSCOFF+CPUOFFCPUOFFSCGO+CPUOFF SCG1+CPUOFF SCG1+SCGO+CPUOFF SCG1+SCGO+OSCOFF+CPUOFF/*中断使能1*/#dcfinc IE1_ sfrb 1E1 ^define WDTIE*/^define OFTE 中断使能*/ttdefine NM11E ^define ACCVIE /flash 写中断错误*/ ttdefine URXTEO0x40 /*串口0接收中断使^define UTX1E0 0x80 /*串口0发送中断使能*//*中断标志1*/^define TFG1_ 0x0002sfrb IFG1 =IFG1_ ■9ttdefine WDT1FG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#dcfinc NMIIFG 0x10 /*非屏蔽屮断标志*/^define URXIFGO 0x40 /*串口0接收中断标志*/ttdefine UTXTFGO 0x80 /*串口0发送中断标志*//*中断模式使能1 */^define ME1_ 0x0004sfrb ME1 二ME1_;ttdefine URXEO 0x40 /* 串口0 接收屮断模式使能*/ttdefine USP1EO 0x40 /*同步中断模式使能*/#define UTXEO 0x80 /* 串口0 发送中断模式使能*//*中断使能2 */ttdefine 1E2_ 0x0001sfrb IE2 =IE2_;ttdefine URXIE1 0x10 /*串口1接收中断使能*/#dcfinc UTXIE1 0x20 /*串口1发送中断使能*//*中断标志2 */#define IFG2_ 0x0003sfrb TFG2 二TFG2_ •#dcfinc URXIFG1 0x10 /*串口1接收中断标志*/^define UTXIFG1 0x20 /*串口1发送中断标志*//*中断模式使能2 */#dcfinc ME2_ 0x0005sfrb ME2 =ME2_;^define URXE1 0x10 /* 串口 1 接收中断模式使能*/ttdefine USPTE1 0x10 /*同步中断模式使能*/0x20 /* 串口 1 ^define UTXE1发送中断模式使能*///* 看门狗定时器的寄存器定义\L^ ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ \L^ /吓、Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% /^define WDTCTL_sfrw WDTCTL^define WDTTSO选择WDTCNT的四个输出端Z—*/^define WDT1S1选择WDTCNT的四个输岀端之一*/#define WDTSSELWDTCNT的吋钟源*/#dcfine WDTCNTCL除WDTCNT端:为1时从0开始计数*/ ^define WDTTMSEL 0x0120二WDTCTL_;0x00010x00020x00040x00080x0010择模式0:看门狗模式;1:定时器模式*/#define WDTNMT 0x0020/*/* /*选择/*清/*选/*选择NMI/RST引脚功能0:为RST; 1:为NMI*/ #defineWDTNMIES 0x0040选择触发延0:为上升延1:为下降延*/ ttdefine WDTHOLD 0x0080 看门狗定时器工作0:启动;1:停止*/ /*WDT\MI 二 1时.^define WDTPW 写密码:高八位*/0x5A00 /*#defineWDT MDLY 32 WDTPW+WDTTMSEL+WDTCNTCL/* TSMCLK*2P0WER15二32ms 复位状态 */#define WDT_MDLY_8WDTPW+WDTTMSEL+WDTCNTCL+WDTISO/* TSMCLK*2P0WER13=8. 192ms 〃*/#dcfineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1/* TSMCLK*2P0WER9=0. 512ms ” */#defineWDT MDLY 0 064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTISO /* SMCLK= 1MHz定时器模式*//* TSMCLK*2P0WER6=0. 512ms 〃 *//* ACLK=32. 768KHz 定时器模式*/#defineWDT_ADLY_1OOO WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL/* TACLK*2POWER15=1000ms 〃 */#dcfineWDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDT1S0/* TACLK*2P0WER13=250ms ” */#defineWDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2P0WER9二16ms 〃 */#defineWDT ADLY 1 9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTISO /* TACLK*2P0WER6=l. 9ms 〃 */ /* SMCLK二1MHz看门狗模式*/#dcfineWDT_MRST_32 WDTPW+WDTCNTCL/* TSMCLK*2P0WER15二32ms 复位状态*/ttdefineWDT_MRST_8 WDTPW+WDTCNTCL+WDTISO/* TSMCLK*2P0WER13=8・ 192ms ” */#defineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1/* TSMCLK*2P0WER9=0. 512ms 〃 */#dcfineWDT_MRST_0_064WDTPW+WDTCNTCL+WDT1S1+WDTISO /* TSMCLK*2P0WER6=0. 512ms " */ ACLK二32KHz看门狗模式*/ttdefineWDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL/* TACLK*2P0WER15=1000ms ” */#defineWDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTISO/* TACLK*2P0WER13=250ms 〃 */#dcfineWDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDT1S1/* TACLK*2P0WER9二16ms 〃 */#defineWDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTTS1+WDTTSO/* TACLK*2POWER6=1. 9ms 〃 *// ^Jx s£z/硕件乘法器的寄存器定义K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L*//0x0130 /*无符号乘法*/=MPY_;0x0132 /*有符号乘法*/ 二 MPYS_;0x0134 /*无符号乘加*/ =MAC_; 0x0136 /*有符号乘加*/ 二 MACS_;0x0138 /* 第二乘数 */ =0P2_;0x013A A 低6位结果寄存器*/ =RESLO_;0x013C /*高6位结果寄存器*/ 二 RESHT_;0x013E /*结果扩展寄存器*/=SUMEXT_;//xT> zCx* DIGITAL I/O Port 1/2寄存器定义有中断功能/ ■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 /ftdefine MPY_ sfrw MPY #define MPYS_ sfrw MPYS #dcfine MAC_ sfrw MAC #define MACS_ sfrw MACS ttdefine 0P2_ sfrw 0P2 #define RESLO_ sfrw RESLO ttdefine RESHI_ sfrw RESHT #dcfine SUMEXT_ const sfrw SUMEXT^define P1IN_ const sfrb P11N ^define P10UT_ sfrb PlOUT ^define P1DTR_ */ sfrb P1D1R ^define P1IFG_ sfrb P1IFG ^define P1TES_ 器*/sfrb P11ES ^define P1IE_ sfrb P1IE ttdefine P1SEL_ sfrb P1SEL^define P21N_ const sfrb P2IN ttdefine P20UT sfrb P20UT #dcfinc P2DIR_ */ sfrbP2DIR0x0020 /* Pl 输入寄存器*/=P1IN_;0x0021 /* Pl 输岀寄存器*/ 二 P1OUT_;0x0022 /* Pl 方向选择寄存器=P1D1R_;0x0023 /* Pl 中断标志寄存器*/ 二 P1IFG_;0x0024 /* Pl 中断边沿选择寄存 =P11ES_;0x0025 /* Pl 中断使能寄存器*/ 二 P1IE_;0x0026 /* Pl 功能选择寄存器*/ =P1SEL ;0x0028 /* P2输入寄存器*/=P2IN_;0x0029 /* P2输出寄存器*/ 二 P20UT_;0x002A /* P2方向选择寄存器=P2DIR ;0x002B /* P2中断标志寄存器二 P2IFG_;0x002C /* P2中断边沿选择寄存 =P21ES_;0x002D /* P2中断使能寄存器*/二 P2IE_;0x002E A P2功能选择寄存器 =P2SEL_;//xT> zCx* DIGITAL I/O Port3/4寄存器定义无中断功能/ ■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 // 彳J X|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X ZTX /0x0030 /* P5输入寄存器*/ 二 P5IN_; 0x0031 /* P5输岀寄存器*/^define P3IN_ const sfrb P31N ^define P3OUT_ sfrb P3OUT ^define P3DTR */ sfrbP3D1R^define P3SEL_ sfrb P3SEL ^define P4TN_ const sfrb P4IN ^define P40UT_ sfrb P40UT ttdefine P4DIR_ */sfrb P4DIR ^define P4SEL_ */ sfrbP4SEL0x0018 /* P3输入寄存器*/=P3IN_;0x0019 /* P3输岀寄存器*/ 二 P30UT_;OxOOlA /* P3方向选择寄存器 =P3D1R_;OxOOlB /* P3功能选择寄存器*/二 P3SEL_;OxOOlC /* P4输入寄存器*/=P4IN_;OxOOlD /* P4输出寄存器*/ =P40UT_;OxOOlE /* P4方向选择寄存器 =P4DIR_;OxOOlF /* P4功能选择寄存器二 P4SEL_;* DIGITAL 1/0 Port5/61/0 口寄存器定义P0RT5和6无屮断功能^define P21FG_ */ sfrbP2IFGttdefine P2TES_ 器*/sfrb P21ES ^define P2IE_ sfrb P2IE ttdefine P2SEL_ */ sfrb P2SEL^define P5IN_ const sfrb P5IN ttdefine P50UT_sfrb P5OUT =P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/ sfrb P5DIR 二P5DIR_;ttdefine P5SEL_ 0x0033 /* P5 功能选择寄存器*/ sfrb P5SEL =P5SEL ;#definc P6IN_ 0x0034 /* P6 输入寄存器*/ const sfrb P61N =P61N_;^define P6OUT_ 0x0035 /* P6输出寄存器*/sfrb P6OUT 二P60UT_;ttdefine P6DIR_ 0x0036 /* P6方向选择寄存器*/ sfrb P6DIR =P6DIR ;ttdefine P6SEL_ 0x0037 /* P6功能选择寄存器*/ sfrb P6SEL 二P6SEL_;* Timer A , Timer B可公用捕获/比较控制寄存器X */^define CM1 0x8000 /*捕获模式选择位1 */ ^define CMO 0x4000 /*捕获模式选择位0 */ ^define CCIS1 0x2000 /*捕获输入信号源选择位1 */^define CCTSO 0x1000 /*捕获输入信号源选择位0 */ttdefine SCS 0x0800 /*信号同步位0:异步捕获;1:同步捕获*/#define SCCI 0x0400 /*锁存输入信号*/ ttdefine CAP 0x0100 /*模式选择:0:比较模式;1:捕获模式*/^define 0UTM0D2 0x0080 /*输出模式选择位2 */^define 0UTM0D1 0x0040 /*输岀模式选择位1 */#define OUTMODO 0x0020 /*输出模式选择位0 */ ttdefine CCTE 0x0010 /*中断允许位*/#define CCI 0x0008 /*读出输入信号源位ccis0\l */^define OUT 0x0004 /*输岀信号(选择输岀模式0) */ttdefine COV 0x0002 /*捕获溢出标志*/ ttdefine CCIFG 0x0001 /*中断标志*/^define OUTMOD_O 0*0x20 /*输出模式*/^define OUTMOD_1 1*0x20 /*置位模式*/#define OUTMOD_2 2*0x20 /*翻转/复位模式*/ ttdefine 0UTM0D_3 3*0x20 /*置位/复位模式*/#dcfinc 0UTM0D_4 4*0x20 /*翻转模式*/^define 0UTM0D_5 5*0x20 /*复位模式*/^define OUTMOD 6 6*0x20 /*翻转/置位模式*//■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 /OxOllE /*中断向量寄存 =TBIV_;0x0180 A 定时器B 控制寄存器: =TBCTL_;0x0182 /*定时器B 捕获/比较控制二 TBCCTLO_;0x0184 /*定时器B 捕获/比较控制=TBCCTL1_;0x0186/*定时器B 捕获/比较控制二 TBCCTL2_;0x0188 /*定时器B 捕获/比较控制=TBCCTL3_;0x018A A 定时器B 捕获/比较控制 =TBCCTL4_;0x018C /*定时器B 捕获/比较控制^define 0UTM0D_7^define CCIS_O 事件的输入信号源*/ttdefine CCTS_1 事件的输入信号源*/^define CC1S_2 件的输入信号源*/ #define CCIS_3 件的输入信号源*/ #dcfinc CM_O ^define CM_1 */#define CM_2 */ #dcfinc CM_3 都捕获模式*/7*0x20 /*复位/置位模式*/ 0*0x1000 /*选择CCIXA 为捕获 1*0x1000 /*选择CCTXB 为捕获 2*0x1000 /*选择GND 为捕获事 3*0x1000 /*选择VCC 为捕获事 0*0x4000 /*禁止捕获模式*/ 1*0x4000 /*上升延捕获模式 2*0x4000 /*下降沿捕获模式 3*0x4000 /*上升沿和下降沿/ / xT> zCx* Timer B定时器B 寄存器定义^define TBIV_器:B1T1-B1T3 有效 */ sfrw TBIV #define TBCTL_全部控制都集审在这*/sfrw TBCTL^define TBCCTL0_ 寄存器0*/ sfrw TBCCTLO ttdefine TBCCTL1_ 寄存器1 */ sfrw TBCCTL1^define TBCCTL2_ 寄存器2 */ sfrw TBCCTL2#dcfinc TBCCTL3_ 寄存器3 */ sfrw TBCCTL3#define TBCCTL4_ 寄存器4 */ sfrw TBCCTL4^define TBCCTL5_ 寄存器5 */=TBCCTL5_;0x018E/*定时器B 捕获/比较控制二 TBCCTL6_;0x0190 /* 计数器 */=TBR_;0x0192 /*定时器B 捕获/比较寄存二 TBCCRO_;0x0194 /*定时器B 捕获/比较寄存 =TBCCR1_;0x0196 /*九时器B 捕获/比较寄存 =TBCCR2_;0x0198 /*定时器B 捕获/比较寄存二 TBCCR3_;0x019A /*定吋器B 捕获/比较寄存 =TBCCR4_;0x019C /*定时器B 捕获/比较寄存二 TBCCR5_;0x019E /*定时器B 捕获/比较寄存 sfrw TBCCR6/*定时器B 控制寄存器:全部控制都集中在这*/^define SHR1制位1 :受TBCCTLx 中的CCLDx 位控制*/^define SHRO制位0 :受TBCCTLx 中的CCLDx 位控制*/#define TBCLGRP11 :受TBCCTLx 中的CCLDx 位控制*/ #dcfine TBCLGRPO0 :受TBCCTLx 中的CCLDx 位控制*/ ^define CNTL1 1 */^define CNTLO 0 */^define TBSSEL2sfrw TBCCTL5^define TBCCTL6_ 寄存器6 */sfrw TBCCTL6 #dcfinc TBR_ sfrw TBR^define TBCCRO_ 器0 */ sfrw TBCCRO #dcfinc TBCCR1_ 器1 */ sfrw TBCCR1 #define TBCCR2_ 器2 */ sfrw TBCCR2 ^define TBCCR3_ 器3 */ sfrw TBCCR3 ttdefine TBCCR4_ 器4 */ sfrw TBCCR4 ^define TBCCR5_ 器5 */ sfrw TBCCR5 #dcfinc TBCCR6_ 器6 */=TBCCR6_;^define TBSSEL1#define TBSSELO^define TBCLR0x4000 /*装载比较锁存器控0x2000 /*装载比较锁存器控0x4000 /*装载比较锁存器控制位0x2000 /*装载比较锁存器控制位0x1000 /*定时器位数长度控制位0x0800 /*定时器位数长度控制位0x0400 /* 未用 */0x0200 /*时钟输入源控制位1 */0x0100 /*时钟输入源控制位0 */0x0004 /*置1清除定时器*/0x0002 /*中断允许*/ 0x0001 /*中断标志*/#define TBSSEL_0 ttdefine TBSSEL_1 ^define TBSSEL_2 #definc TBSSEL 3 ^define CNTL_0 #define CNTL_1 ttdefine CNTL_2 ^define CNTL_3 Wdefinc SHR 0值)*/^define SHR_13 groups (1-2, 3-4, 5-6) */ ttdefine SIIR_22 groups (1-3, 4-6)*/ ^define SHR_3 1 group (all) */ ^define TBCLGRP_0*/#define TBCLGRP 1groups (1-2, 3-4, 5-6) */#define TBCLGRP_2 groups (1~3, 4-6)*/^define TBCLGRP_3 时钟源为:TBCLK */ 吋钟源为:ACLK */ 时钟源为:SMCLK */ 时钟源为:INCLK */16位计数模式*/ 12位计数模式*/ 10位计数模式*/ 8位计数模式*/ /*单独装载(初始1*0x2000 /*分三组装载:1 - 2*0x2000 /* 分二组装载:2- 3*0x2000 /*不分组装载:3- 0*0x2000 /*单独装载(初始值) 1*0x2000 /*分三组装载:1 - 3 2*0x2000 /* 分二组装载:2-2 3*0x2000 /*不分组装载:3 - 1group (all) *//* Additional Timer BControl Register bits are defined in Timer A */#define SLSHR1 source 1 */ #dcfinc SLSI1R0 source 0 */ 0x0400 /* Compare latch load0x0200 /* Compare latch load ^define CLLD10x0400 /*定义比较锁存器TBCLx的装载方式控制位1 */^define CLLDO 0x0200 /*定义比较锁存器TBCLx的装载方式控制位0 */#definc SLSHR 0 ^define SLSHR_1 载*/ ttdefine SLSHR_2 数到TBCLx 或0时装载;0*0x0200 /*立即装载*/1*0x0200 /* TBR 计数到0时装 2*0x0200 /*在增减模式下,计在连续计数模式下,计数到0时装载*/^define TB1E ^define TBIFG0*0x0100 1*0x0100 2*0x0100 3*0x0100 /* /* /* /* 0*0x0800 1*0x0800 2*0x0800 3*0x0800 /* /* /* /* 0*0x2000^define SLSHR_33*0x0200 /* 当计数到 TBCLO时装载*/#define CLLD_O 0*0x0200 /* 立即装载 */ ttdef ine CLLD_11*0x0200 /* TBR 计数到 0 吋装 载*/#definc CLLD 22*0x0200 /*在增减模式下,计数到TBCLx 或0时装载;在连续计数模式下,计数到0时装载*/ #def ine CLLD_3 3*0x0200 /* 当计数到 TBCLO 时 装载*/点击查看:怎样获取“电子币”的详细说明-一漫步于开源世界Z 屮,一起与自 由同行!Posted: 2007-04-13 00:14 | [楼 主]式./ 1:高频模式.*/#define DC0CTL_ 值位060h*/ sfrb DCOCTL #define BCSCTL1值位084h*/sfrb BCSCTL1#define BCSCTL2 值位000h*/0x0056 /* DCO 时钟频率控制寄存器:复位后的=DC0CTI-;0x0057 /*系统时钟控制寄存器1 :复位后的=BCSCTL1_;0x0058 /*系统时钟控制寄存器2 :复位后的sfrb BCSCTL2 /* DCO 时钟频率控制寄存器*/ =BCSCTL2 ;#define M0D0 #define MODI #define M0D2 #define MOD3 #define M0D4 #define DCOO #define DC01 #define DC020x01 /* DCO 插入周期控制位0 */ 0x02 /* DCO 插入周期控制位1 */ 0x04 /* DCO 插入周期控制位2 */ 0x08 /* DCO 插入周期控制位3 */ 0x10 /* DCO 插入周期控制位4 */ 0x20 /* 8种频率控制位0 */ 0x40 /* 8种频率控制位1 */ 0x80 /* 8种频率控制位2 *//*系统时钟控制寄存器1 :复位后的值位084h*/^define RSELO #define RSEL1 #define RSEL2 #define XT5V #define DIVAO #define DIVAI #define XTS0x01 /*选择内部电阻控制位0 */ 0x02 /*选择内部电阻控制位1 */ 0x04 /*选择内部电阻控制位2 */0x08 /*必须为0*/0x10 /* ACLK 分频系数控制位0*/ 0x20 /* ACLK 分频系数控制位1 */0x40 /* LFXT1工作模式控制位0:低频模* Basic Clock Module0x80 /* XT2CLK 使能控制位0:开启;1 :关0x0128 /* FLASH 控制寄存器1:控制编程、=FCTL1_;0x012A /* FLASH 控制寄存器2 :控制时钟=FCTL2 ;0x012C /* FLASH 控制寄存器3:状态标志#define DIVA 00x00 /* ACLK 分频系数为:1 */ #define DIVA.1 0x10 /* ACLK 分频系数为:2 */ #define DIVA 2 #define DIVA.3 0x20 /* ACLK 分频系数为:4 */ 0x30 /* ACLK 分频系数为:8 */ /*系统时钟控制寄存器2 :复位后的值位OOOhV#define DCOR #define DTVSO #define DIVS1 #define SEES 0x01 /*内外电阻选择控制位*/ 0x02 /* SMCLK 分频控制位0*/ 0x04 /* SMCLK 分频控制位1 */0x08 /* SMCLK 时钟源选择位 t 0: DCOCLK / 1:XT2CLK/LFXTCLK */ #define DTVMO #define DTVM1 #defi ne SELMO ^define SELM1 0x10 /* MCLK 分频控制位0 */ 0x20 /* MCLK 分频控制位1 */ 0x40 /* MCLK 时钟输入源选择位0 */ 0x80 /* MCLK 时钟输入源选择位1 */ #dcfinc #define #define #define #define #dcfinc#define #defi ne #define #define #dcfinc */ #defineDIVS_O DIVS 1 DIVS_2 DIVS_3 DIVM 0 DIVM_1 DIVM 2DTVM_3SELNLO SELM 1 SELM_2 SELM 3 0x00 /* SMCLK 分频系数为:1 */ 0x02 /* SMCLK 分频系数为:2 */ 0x04 /* SMCLK 分频系数为:4 */ 0x06 /* SMCLK 分频系数为:8 */ 0x00 0x10 0x20 0x30 /* /* /* /* /* /* * Flash MemoryMCLK MCLK MCLK MCLK MCLK MCLK 分频系数为: 分频系数为: 分频系数为: 分频系数为: 时钟输入源: 时钟输入源: 1 2 4 8 */ */ */ */ DCOCLK */ DCOCLK */ 0x00 0x40 0x80 /* MCLK 时钟输入源:XT2CLK/LFXTCLK OxCO /* MCLK 时钟输入源:LFXTCLK */FLASH 操作寄存器定义#define XT20FF 闭*/#define FCTL1 擦除*/sfrwFCTL1#define FCTL2_ 分频*/sfrwFCTL2#define FCTL3*/sfrw FCTL3 二FCTL3 ;#define FRKEY#define FWKEY#define FXKEY/* FLASH控制寄存器1:控制编程、擦除*/#define ERASE#define MERAS#define WRTBLKWRT#define/* FLASH控制寄存器2 :控制时钟分频*/#define FN 0#define FN 1#define FN 2#define FN 3#define FN 4#dcfine FN 5#define FN 6#define FN 7#define FN 8#define FN 9#dcfine FN 10#define FN 11#define FN 12#define FN 13#define FN 14#define FN 15#define FN 16#define FN 17#define FN 18#define FN 19#define #define FN_20 FN 21#define #define #define #dcfine #define FN_22 FN_23 FN_24 FN_25 FN 26#define #define #define FN_27 FN_28 FN 29#dcfine #define FN_30FN 310x9600 /* 读FLASH 密码 */0xA500 /* 写FLASH 密码 */0x3300 /* for use with XOR instruction */0x0002 /*擦除段使能*/0x0004 /*主存擦除使能*/0x0040 /*编程使能*/0x0080 /*段编程使能*/0x0000 /*直通 */0x0001 /*2 分频 */0x0002 /*3 分频*/0x0003 /*4分频 */0x0004 /*5分频 */0x0005 /*6 分频*/0x0006 /*7分频 */0x0007 /*8 分频*/0x0008 /*9 分频 */0x0009 /*10 分频 */OxOOOA All 分频*/OxOOOB /*12 分频 */OxOOOC /*13 分频*/OxOOOD /*14 分频 */OxOOOE /*15 分频 */OxOOOE /*16 分频*/0x0010 /*17 分频 */0x0011 /*18 分频*/0x0012 /*19 分频 */0x0013 /*20 分频 */0x0014 /*21 分频*/0x0015 /*22分频 */0x0016 /*23 分频*/0x0017 /*24 分频 */0x0018 /*25 分频 */0x0019 /*26 分频*/OxOOlA /*27分频 */OxOOlB /*28 分频*/OxOOlC /*29 分频 */0x0010 /*30 分频 */OxOOlE /*31 分频*/OxOOlF /*32 分频 */。

MSP430程序库十四DMA程序库

MSP430程序库十四DMA程序库

MSP430程序库<十四>DMA程序库直接存储器存取(DMADirect Memory Access)方式是用硬件实现存储器与存储器之间或存储器与I\O设备之间直接进行高速数据传送,不需要CPU的干预。

这种方式通常用来传送数据块。

MSP430f16x系列单片机内部含有DMA模块,而且几乎内部所有外设都可以触发DMA开始存取数据。

这里实现了这个模块的程序通用的函数库,方便使用。

•硬件介绍:MSP430F15X/16X 系列单片机具有DMA 控制器,从而能够为数据高速传输提供保证。

例如,通过DMA控制器可以直接将ADC 转换存贮器的内容传到RAM 单元。

MSP430系列单片机扩展的DMA具有来之所有外设的触发器,不需要CPU的干预即可提供先进的可配置的数据传输能力,从而加速了基于MCU的信号处理进程,DMA传输的触发来源对CPU 来说是完全透明的,DMA控制器可在内存与外部及外部硬件之间进行精确的传输控制。

DMA 消除了数据传输延迟时间以及各种开销,从而可以解放16为RISC CPU,以便其将更多的时间用于处理数据,而非执行正在处理的任务。

MSP430F16x系列单片机的DMA模块有以下特点:数据传送不需要CPU介入,完全由DMA控制器自行管理。

在整个地址空间范围内传输数据,块方式传输可达65536字节;能够提高片内外设数据吞吐能力,实现高速传输,每个字或者字节的传输仅需要2个MCLK;减少系统功耗,即使在片内外设进行数据输入或输出时,CPU也可以处于超低功耗模式而不需唤醒;字节和字数据可以混合传送:DMA传输可以是字节到字节、字到字、字节到字或者字到字节。

当字到字节传输时,只有字中较低字节能够传输,当从字节到字传输时,传输到字的低字节,高字节被自动清零;四种传输寻址模式:固定地址到固定地址、固定地址到块地址、块地址到固定地址以及块地址到块地址;触发方式灵活:边沿或者电平触发。

单个、块或突发块传输模式:每次触发DMA操作,可以根据需要传输不同规模的数据DMA的四种寻址模式如下图所示:DMA控制器模块:3个独立的传输通道:通道0、通道1和通道2。

MSP430程序库七按键

MSP430程序库七按键

MSP430程序库<七>按键按键是单片机系统最常用的输入设备之一;几乎是只要需要交互输入,就必须有键盘。

这篇博客实现了一个通用的键盘程序,只要提供一个读取键值的函数(底层键值),程序将完成消抖、存入队列等一些列处理。

同时本程序提供最常用的4*4矩阵键盘的程序,和4个按键的程序。

硬件介绍::•硬件介绍本文主要实现了一个键盘的通用框架,可以很方便的改为不同的键盘函数,这里实现了两种按键4个单独按键和4*4行列扫描的键盘。

4个按键的是这样的:四个按键分别一端接地,另一端接上拉电阻后输入单片机的P1.0-P1.3口;这样,按键按下时,单片机接到低电平,松开时单片机输入信号有上拉电阻固定为高电平。

4*4的按键:行输入信号配有桑拉电阻,无按键时默认电平高电平;列扫描信号线直接接到按键列线;读键时,列扫描信号由单片机给出低电平信号(按列逐列扫描),读取行信号,从而判断具体是哪个按键;电路图大概如下:图中,IN是键盘的列扫描线,OUT是键盘的输出的行信号线。

扫描是也可以按行扫描,这时IN是行扫描线,OUT的按键输出的列信号线。

我的程序是按列扫描的(行列扫描原理一样,只是行列进行了交换)。

这里,同时实现了4*4按键的scanf函数的移植,同时,加入了之前实现的液晶的printf函数的移植,搭建了一个可以交互输入输出的完整的一个系统;液晶的printf又加入了函数,实现了退格;可以在输入错误数字的时候退格重新输入。

程序实现::•程序实现先说一下程序的结构,程序实现了一个循环队列,用来存放已按下的键值,可以保存最新的四个按键,可以防止按键丢失;程序使用的是中断的方式进行按键,每16ms(用的是看门狗的间隔中断)读一次按键,进行判断键值是否有效,有效则放入队列,等待读取。

循环队列的实现:用数组实现,为判断队满,数组的最后一个元素不用于存储键码值:/**********************宏定义***********************/#define KeySize 4 //键码值队列#define Length KeySize+1 //队列数组元素个数/***************************************************//**********************键值队列*********************///可KeySize(Length-1)个键码循环队列占用一个元素空间char Key[Length];入队函数:入队时,队满则出队一个,以保存最新的四个按键。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档