为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

51CTO下载-学习MSP430单片机讲座(软件)

2011-12-07 40页 pdf 231KB 26阅读

用户头像

is_079227

暂无简介

举报
51CTO下载-学习MSP430单片机讲座(软件) 第二讲 MSP430单片 学习MSP430单片机推荐参考书 《MSP430系列超低功耗16位单片机接口技术及系 统设计实例》 北航出版社 魏小龙 编著 《MSP430系列单片机C语言程序设计与开发》 北航出版社 胡大可 编著 《MSP430单片机C程序设计与实践》 北航出版社 曹磊 编著 《MSP430系列FLASH型超低功耗16位单片机》 北航出版社 胡大可 编著 第二讲 MSP430单片第二讲 MSP430单片机软件 1、 CPU内核组成: 16位的(ALU)算术运算单元 16个寄存器(PC、SP、SR、...
51CTO下载-学习MSP430单片机讲座(软件)
第二讲 MSP430单片 学习MSP430单片机推荐参考书 《MSP430系列超低功耗16位单片机接口技术及系 统设计实例》 北航出版社 魏小龙 编著 《MSP430系列单片机C语言程序设计与开发》 北航出版社 胡大可 编著 《MSP430单片机C程序设计与实践》 北航出版社 曹磊 编著 《MSP430系列FLASH型超低功耗16位单片机》 北航出版社 胡大可 编著 第二讲 MSP430单片第二讲 MSP430单片机软件 1、 CPU内核组成: 16位的(ALU)算术运算单元 16个寄存器(PC、SP、SR、R4~R15) 指令控制单元 2、存储器组织结构 3、外围模块寄存器地址 它们被分配在相应的字模块或字节模块当中。分配在00-FFH中 为字节,分配在100-1FFH中为字。 4、寻址模式: 5、指令格式: 1)书写格式 标号 指令助记符 源操作数,目的操作数;注释 2)共有51条指令,其中有24条是模拟仿真指令。27条硬件指令 6、指令集说明:1)数据传送指令 2)数据运算指令 3)逻辑位 操作指令 4)跳转与程序流程控制类指令 5)多个指令仿真的宏 令 6)堆栈指针寻址 一、 MSP430单片机指令系统 第二讲 MSP430单片一、 MSP430单片机指令系统 4个特殊功能寄存器,12个通用寄存器。特殊功 能可操作的只有SR和SP SR:CPU状态寄存器 第二讲 MSP430单片 SR:CPU状态寄存器 一、 MSP430单片机指令系统 C 进位标志 Z 零标志 N 负标志 GIE 中断标志 它可以用指令改变 CPUOff CPU控制位 OscOff 晶振控制位 控制CPU的工作模式SCG0 控制系统时钟 SCG1 控制系统时钟 第二讲 MSP430单片一、 MSP430单片机指令系统 EXIT 第二讲 MSP430单片一、 MSP430单片机指令系统 #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 */ 第二讲 MSP430单片一、 MSP430单片机指令系统 第二讲 MSP430单片一、 MSP430单片机指令系统 堆栈指针SP: 它是在系统调用子程序或进入中断服务程序时,保护 程序计数器PC。堆栈指针SP总是指向堆栈的顶部。 系统在压栈时,总是先将SP减2。然后在将要压栈的 容写入该单元中(RAM)。 系统弹栈时正好相反。 在对堆栈操作上有两中模式:隐式和显示模式。 一是系统对它操作;一是用户程序对它操作。 堆栈指针的起始地址是有高向低进行,不同的芯片其地 是不同的。 通用工作寄存器: 它是应用在大部分场合。它可以实现算术逻辑运算, 也可实现临时的暂存单元,可实现字操作和字节操作。 第二讲 MSP430单片一、 MSP430单片机指令系统 数据存储器:这是一个使用频率非常高的操作环境区域, 不同的芯片 他的可使用大小不同。一般称这 个区域叫做RAM区。 程序存储器:它是存放用户程序代码的区域,它分有三个 区域,中断向量区、用户程序代码区、引导程序 代码区。 在使用功能模块时的服务程序入口地址是已经安排好 的,只要用户根据需要使用了它,就将使用的中断入口地 址放在这里。而引导程序是芯片出厂后由厂家确定的,它 由JATG去访问,客户不能调用。而程序区可连续存放用 户程序或不连续存放用户程序,也存放用户数据。 第二讲 MSP430单片一、 MSP430单片机指令系统 指令格式:操作码 源操作数,目的操作数 ;注释 MSP430单片机的寻址方式: 例:MOV #1234H,R11 ;目的操作数寄存器寻址 MSP430的源操作数的访问可有7种方式。其中源 操作数可用全部的7种寻址方式,而目的操作数只有4种 寻址方式。 所谓寻址就是在操作的过程中是如何使用不同的方 式来确定操作数的地址,它包扩源操作数和目的操作数。 7种寻址方式分别是: 寄存器寻址、变址寻址、符号寻址、绝对寻址、间 接寄存器寻址、间接增量寻址、立即寻址。 第二讲 MSP430单片一、 MSP430单片机指令系统 MSP430单片机的寻址方式: 1、寄存器寻址:操作数存放在通用寄存器中。 例:MOV #1234H,R11 ;目的操作数寄存器寻址 MOV R9,R11 ;源、目的操作数寄存器寻址 MOV R9,&220H ;源操作数寄存器寻址 2、变址寻址:通用寄存器中存放的源操作数的相对地址 指令: MOV[.B] X(Rn),Y(Rn) ; 例:MOV 2(R8),R11 ;源操作数变址寻址 MOV R9, 4(R8) ;目的操作数变址寻址 ADD @R9, 4(R10) ;目的操作数寄存器寻址 MOV 2(R9), 4(R8) ;源、目的操作数变址寻址 第二讲 MSP430单片一、 MSP430单片机指令系统 MSP430单片机的寻址方式: 3、符号模式寻址,它的地址是通过编译后系统安排,这 种指令在使用上也可以对固定的符号(如外部模块定义 的符号也可使用)该标号的地址是紧跟在上一个语句之 后。一般用于指令跳转,也可用于数据操作。 指令: MOV EDE,TONI ; 例:MOV.B R8,LOOP0 ;目的操作数符号寻址 MOV TAB,R8 ;源操作数符号寻址 ADD TAB,&410H ;源操作数符号寻址 第二讲 MSP430单片一、 MSP430单片机指令系统 MSP430单片机的寻址方式: 4、绝对寻址: 它不同于上面的标号,它使用绝对地址 符号ASEG地址或固定的外围模块地址。 指令: MOV &EDE,&TONI ; 例1:MOV #1234H,&LOOP0 ;目的操作数符号寻 MOV &TAB,R8 ;源操作数符号寻址 ADD TAB,&410H ;目的操作数符号寻址 MOV.B &220H, R5 ;源操作数符号寻址 例2: Reset MOV #1234H,R6 AAA MOV R5 ,R8 SUB &AAA,&Reset 第二讲 MSP430单片一、 MSP430单片机指令系统 MSP430单片机的寻址方式: 5、间接寻址: 它与寄存器寻址很相似,不同的是寄存 器存放的不是操作数而存放操作数的地址。使用时用@表 示是间接寻址。这种寻址模式只对源操作数有效。 指令: MOV @R10,2(R11) ; 例:MOV.B @R8,&220H MOV @R5 ,4(R8) ADD @R5 ,&AAA MOV @R5 ,R8 第二讲 MSP430单片一、 MSP430单片机指令系统 MSP430单片机的寻址方式: 6、间接增量寻址:与上述基本一致,但对目的操作数 不能用。 指令: MOV @R10+,2(R11) ; 指令按间接寻址执行后,R10自动指向下一数据 (R10+2→R10)。加1还是加2,需根据执行的是字操作还 是字节操作。 例: SUB.B @R8+,&220H MOV @R5+ ,4(R8) MOV @R5 +,&AAA ADD @R5+ ,R8 第二讲 MSP430单片一、 MSP430单片机指令系统 MSP430单片机的寻址方式: 7、立即寻址:又叫立即数寻址。但对目的操作数不能用 指令: MOV #1234H,2(R11) ; 例:MOV.B #12H,&220H MOV #1234 ,4(R8) ADD #2345H ,&AAA MOV #2345H ,R8 第二讲 MSP430单片一、 MSP430单片机指令系统 中断向量地址 第二讲 MSP430单片一、 MSP430单片机指令系统 指令传送方向 第二讲 MSP430单片一、 MSP430单片机指令系统 汇编指令: 1. 数据传送指令: 例: MOV #1234,R5 MOV #EDE, R10 ; 注:要事先对EDE定义才能用 CLR R6 CLR.B &EDE ; 对字节操作 MOV #8912H, R10 MOV #8912H, 210H SWPB R7 PUSH R9 POP R13 MOV 数据传送 CLR 清除目的 POP 从目的弹出到目的中 PUSH 将字压入堆栈 SWPB 字节交换 第二讲 MSP430单片一、 MSP430单片机指令系统 汇编指令: 2.数据运算指令:加法指令: ADC 进位位加目的ADD 源加目的 ADDC 带进位位源加目的 DADC、DADD 十进制 INC 、INCD、 减法指令:SUB、SUBC、DEC、DECD SBC 、CMP、TST 注意:减法没有十进制运算指令。 例: ADD @R13, 0(R12) ADC 2(R12) 注意:当运算后都会引起SR中的某些标志位变化,你可 以用判断这些标志位来控制程序的去向. 第二讲 MSP430单片一、 MSP430单片机指令系统 汇编指令: 3.逻辑运算与位操作类指令 逻辑运算:AND 源与目的与 BIC 对位清零 BIS 对位置位 BIT 测试位 XOR 源与目的异或 RLA 算术左移 RRA 算术右移 RLC 通过进位位算术左移 RRC 通过进位位算术右移 INV 目的求反 位操作: CLRC、CLRN、CLRZ、DINT、EINT SETC、SETZ、SETN 第二讲 MSP430单片一、 MSP430单片机指令系统 汇编指令: 4. 跳转与程序流程的控制指令: BR 无条件在64K空间的长转移指令 CALL 子程序调用 JC/JHS JZ/JEQ JGE、JL、JMP JLO JN、JNC、JNE/JNZ RET、RETI、NOP 注:以上的控制要根据不同的条件来进行(如根据测试或 运算指令,比较指令等。) 第二讲 MSP430单片一、 MSP430单片机指令系统 汇编指令: 4. 跳转与程序流程的控制指令: 例: BR EXEC ;转移到EXEC包含的地址中 BR @R5 ;转移到R5指向的地址中 CALL R5 CALL EXEC CMP #15,R5 JHS LABEL BIT #10H,&P0IN JC PROGA 第二讲 MSP430单片二、 MSP430单片机汇编程序 源语句格式: 它包括汇编伪指令、汇编指令、宏伪指令、以及注释。 书写格式 [标号] [:] (伪)指令助记符 [操作数1], [操作数2] [;注释 解释:标号是可选项,最多32个字符,它适用所有汇编语 言和大多数汇编语言伪指令 。 助记符,它紧跟标号后面,它不能写在第一列。它包括 (机器指令助记符、汇编伪指令等) 操作数:前缀符号&、#、@、常数(二进制 B、八进制 十六进制 H、十进制)字符常数(用单引号,8位ASCI 码),表达式常数,符号。 第二讲 MSP430单片二、 MSP430单片机汇编程序 汇编伪指令: 作用:1、将代码和数据汇编到的段中 2、在存储器中为未初始化的变量保留空间 3、控制汇编后列表文件的格式 4、初始化存储器 5、汇编条件块 6、定义全局变量 7、规定汇编器可以从中获得宏的库 8、产生符号化的调试信息 常用的汇编伪指令有: 模块控制伪指令、段控制伪指令、 数值分配伪指令、数据定义伪指令 第二讲 MSP430单片二、 MSP430单片机汇编程序 汇编伪指令: 1. 模块控制伪指令 模块的含义是功能不同,在模块内部可以定义不同 变量, 他们可以只是在内部有效,在外部失效。 模块要用一对说明的符号来定义,如: NAME ADD1 注:ADD1为模块的名子 ┇ ENDMOD 注:结束模块定义 上述只是定义一个模块。如果要定义一个集合的模块 参考书介绍。一般这种定义不常用。只有定义局部变量时 才用到它。 第二讲 MSP430单片 汇编伪指令: 2. 数值分配伪指令 它主要用语对符号的数值定义。以下是常见的定义: EQU 在当前模块中赋予一个永久的值。 = 意义同上 DEFINE 在多个模块环境下,定义一个在整个文 件中都有效的值。 sfrb和sfrw 是老的版本对功能模块寄存器的定义 DEFC 是新的版本对功能模块寄存器的定义 #define READ_ONLY DEFC 是新的版本定义只读功能模 寄存器使用方法: HHH EQU 200H HHH 标志符 200H 标志符值 二、 MSP430单片机汇编程序 第二讲 MSP430单片 汇编伪指令: 3. 段控制伪指令 它主要说明代码和数据的生成的位置,你以规定一个 段、设置特定的定位指针。你也可以插入一些填充字节用 以校准程序指针,和将程序指针定义对准偶地址上。 常用的有:ASEG 一个绝对段的开始 STACK 定义堆栈段 COMMON 定义公共段 ORG 设置特定的定位指针 ALIGN 插入一些填充字节用以校准程序指针 EVEN 插入对准偶地址 例如:有的汇编程序在头一条写: ORG 03000H 意思是它下下面的代码从3000H开始生成汇编代码。 二、 MSP430单片机汇编程序 第二讲 MSP430单片 汇编伪指令: 4. 数据定义伪指令 该指令可以在代码段空间内的任意位置上定义一些 预留空间,也可以将一些需要查表的数据定义在某个区 域上。注意的是这种定义都是一些常数值。下面是它的 指令含义: DL 定义一个32位常数 DW 定义一个16位常数 DB 定义一个8位常数 DF 定义一个32位符点常数 DS 定义一个N个字节单元 二、 MSP430单片机汇编程序 例如:定义10字节单元 table DS 0xA 第二讲 MSP430单片 汇编程序设计方法技巧: 二、 MSP430单片机汇编程序 汇编语言程序设计是一个综合性很强的一门艺术,它 许需要掌握芯片性能和使用方法,更多的要掌握一些外围 电子电路以及开发的目的和意图等多方面的知识,限于篇 幅 ,在这里只介绍有关如何优化程序结构和组织指令和 编写方面的技巧。 用汇编语言编写程序的几大步骤: 1、确定算法和思路,一般思路可用流程图去体会能 否实现。 2、确定数据量,主要是工作单元的数据量,以确定 分配存放的单元。这里对芯片的选型很重要。 3、确定使用的功能模块,主要根据实现的目标而定。 4、确定使用的符号变量,标注符号的含义。 5、按汇编指令要求编写汇编指令 第二讲 MSP430单片二、 MSP430单片机汇编程序 编写程序的原则: 尽量节省RAM,缩短指令长度,提高运行效率。常 见的汇编指令结构: 1、顺序结构 2、散转结构 3、循环结构 4、选择结构 除此之外,熟悉有关外围电路的特性也是必要的。 第二讲 MSP430单片 顺序结构:所谓顺序结构就是CPU执行完了一条指令再 执行紧挨着的下一条指令。它是没有跳转指 令,一般是连续的MOV指令。 编写程序的原则: 二、 MSP430单片机汇编程序 散转指令:它是一些查询判断后执行一些相应功能后又 返回到入口,一般它根据执行的一些运算或执 行一些事件(如中断)等。一般这种结构是一 些在主程序的大的循环。 循环结构:循环结构在程序设计中占有相当重要的地位。 它的结构类似高级语言的WHILE和DO WHILE 中的循环语句相同,在循环结构常使用判断语 句来确定程序的走向,当不满足或满足时可进 入循环主体或离开循环主体。 第二讲 MSP430单片 编写程序的原则: 二、 MSP430单片机汇编程序 循环结构:下面的一段循环结构是一个延时子程序: MOV #60000,R5 LOOP DEC R5 JNZ LOOP 注:每个指令为1个周期,共用60000*3个指令周期 选择结构:这是对某个条件,或多个条件进行测试后去执 行一个指定的流程。在这个结构中一般常自定 一些标志位,它代表一定的物理含义,通过对 它的改变来决定程序执行对应的功能。也可能 通过运算表达式的结果来选择处理功能。 第二讲 MSP430单片 编程基础: 三、 MSP430单片机程序设计 1、C语言的数据类型 常使用8位、16位、32位、64位,同时分有无符号之 例如:特殊功能寄存器变量sfrb、sfrw,它直接定义在 片内。要大写。 无符号整数 char 、unsigned int、 unsigned long 有符号整数 int 、long ; 浮点数 float 。 2、C430的配置 由于430各芯片上的差异430要进行特性配置。你也 可根据需要去修改这些配置文件。 第二讲 MSP430单片 编程技巧: 1、主函数的建立 2、变量类型的定义 3、程序设计结构 1)条件语句 2)开关语句 3)循环语句 4)返回语句 4、常用的MSP430 C语言库函数 数 学 类: math.h 字符串处理类:string.h 使用举例: void *memmove(void *s1,const void *s2,size_t n) s1: 目的指针,也可做返回值(内部有返回指针) s2: 源指针 n:复制个数 5、混合编程技巧 三、 MSP430单片机程序设计 第二讲 MSP430单片 混合程序模块设计: 1、汇编文件名后缀为.s43 一般为了提高运行效率,提高代码效率或直接控制外 围芯片接口,可采用一段汇编指令来完成。这就需要采 在C语言嵌套汇编语言混合编程,在混合编程中,不同的 MSP430编译环境使用的方法不同,参数的传递也不一样 这里介绍的IAR的环境参见设计实例。 2、 C程序文件名后缀为.c 为了提高程序的可读性或在程序调试上的方便,往往 将一些功能相类姒的子程序放到一个文件中供主程序调用 例如:程序初始化,功能模块,常用的运算子程序,对这 些子程序有些不涉及外围芯片时还可生成库函数(如特殊 的功能计算),这样对编程维护修改都有好处,有些工作 也避免重复。 参见设计实例 三、 MSP430单片机程序设计 第二讲 MSP430单片 混合程序模块设计: 3、包含文件名后缀为.h 对程序使用的大量的常数、变量、数组、数据结构以 及函数的定义一般放在这里,一般对程序修改、对照检查 很方便。但注意:他们使用的局限性。参见设计实例。 三、 MSP430单片机程序设计 第二讲 MSP430单片 #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT IE2 |= BTIE; // Enable BT interrupt BTCTL = BTSSEL+BTIP2+BTIP1+BTIP0; P5DIR |= 0x02; // Set P5.1 to output direction _EINT(); // Enable interrupts for (;;) { _BIS_SR(CPUOFF); // Enter LPM0 _NOP(); // Required only for C-spy } } interrupt[BASICTIMER_VECTOR] void basic_timer(void) { P5OUT ^= 0x02; // Toggle P5.1 using exclusive-OR } 三、 MSP430单片机程序设计 第二讲 MSP430单片 三、 MSP430单片机程序设计 C文件 unsigned int varword; char varbyte; 汇编文件 PUBLIC ? EXTERN varword EXTERN varbyte ? MOV.B #00011H, varbyte MOV #01111H, varword 注意它们的长度! 第二讲 MSP430单片 三、 MSP430单片机程序设计 #include extern unsigned int Swap(unsigned int); unsigned int result; void main(void) { WDTCTL=WDTPW+WDTHOLD; result=Swap(0x1234); while(1); } 在写一段由C调用的源程序 unsigned int Swap(unsigned int x) { return x; } 注:在编译时将Project/Options中ICC430/Iist/Assembly output file选中 学习MSP430单片机推荐参考书 第二讲 MSP430单片机软件
/
本文档为【51CTO下载-学习MSP430单片机讲座(软件)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索