第2章2节430寻址方式

合集下载

MSP430使用

MSP430使用

微机原理实验报告4&5程序与EW430 上测试通过实验班号:周五下午第二节;座位号:43目录实验目的 (2)实验任务 (2)1. 了解MSP430F1xx实验板结构,掌握MSP430F1xx实验板检测方法 (2)2. EW430开发工具的初步使用 (4)3. 掌握查看和修改寄存器、存储器、外围模块端口寄存器的方法 (4)4. 了解端口P1~P6的选择PxSEL、方向PxDIR、输入PxIN、输出PxOUT各寄存器功能 (4)5. 了解程序计数器PC(即R0寄存器)的变化规律 (5)6. 了解MSP430F149单片机结构 (6)7. (选做)学习工程空间管理项目的方法 (7)8. 学习寻址方式和指令系统 (7)9. 指令格式学习 (8)10. 调试程序练习 (9)11. 比较step into和step over的不同 (10)12. 掌握计算机中数的表示和编码 (10)13. (选做)理解计算机取指令执行指令的工作原理、以及取非法指令的结果 (10)14. (选做)理解CPU对存储器进行字操作遵循的“对准偶地址”原则 (11)实验总结与思考 (11)实验目的1.了解MSP430F1xx实验板结构,掌握MSP430F1xx实验板检测方法;2.了解MSP430单片机开发工具EW430的基本使用方法;3.掌握EW430下常用的View和DEBUG命令;4.了解MSP430F149单片机结构;5.掌握P1~P6基本输入/输出有关寄存器功能;6.学习MSP430的寻址方式和指令系统;7.了解计算机取指令、执行指令的工作过程;8.掌握DEBUG下的运行命令;9.掌握在EW430下调试程序的方法;10.掌握计算机中数的表示和编码。

实验任务1.了解MSP430F1xx实验板结构,掌握MSP430F1xx实验板检测方法电源电路:对于+3V和+5V电源,采用万用表测量,发现电压稳定,测试通过。

发光二极管:由于发光二极管是共阳极接法,所以低电平点亮。

第2章第1节MSP430概述

第2章第1节MSP430概述
地址总线数据总线控制总线srr2数据输入输出电路指令译码r4r5r15通用寄存器pcr0alumsp430cpu原理图指令指针寄存器spr1堆栈指针寄存器状态寄存器mab16bitmdb16bitmcbr2r3常数发生器16bitriscarchitecture27条核心指令7种寻址方式16个16位的寄存器r0pcprogramcounterr1spstackpointr2srcg1statusr3cg2constantgeneratorr4generalpurposer5generalpurposer14generalpurposer15generalpurpose15msp430cpu的寄存器msp430cpu的编程结构仅从编程的角度看待cpu的组成主要是指cpu中的寄存器及其使用方法而不关心其硬件实现的具体细节msp430汇编语言程序
……
CMP x , y JC less …… …… ;x-y ;若 C=1 , x<y , 转至 less处运行 ;否则x>=y 运行此指令
less: ……
……
;less处的指令
Z:零标志(Zero Flag) 若运算结果为 0 时,则Z=1,否则Z=0 例:CMP指令与Z标志结合测试两个操作数是否相等: ……
计算机的基本组成和工作原理
输 入 设 运算器ALU
存储器
输 出 设
备 控制器
CPU

1.以二进制表示数据和指令(程序)
? ? ?
要 点
2. “存储程序” 3. 五大组成部分
+
“程序控制”
冯· 诺依曼计算机
微机的基本结构
输入/输出 设备1 输入/输出 设备n
CPU
运算器 + 控制器 + 寄存器

第2章第2节MSP430寻址方式

第2章第2节MSP430寻址方式

任一操作数都有明确的寻址方式
既可作为源操作 数的寻址方式, 又可作为目的操 作数的寻址方式
只能作为源操作 数的寻址方式, 不能作为目的操 作数的寻址方式
X(Rn) X(PC) X(SR)
仅从As和 Ad 无法区分不同 的寻址方式
@Rn+
@PC+
由 As 和 S-Reg 共同决定源操作数的寻址方式 由 Ad 和 D-Reg 共同决定目的操作数的寻址方式
寄存器间接寻址方式
(R10)
(R11+0)
举例:MOV.B
@R10 , 0(R11)
code data data
R10 R11+0
指针(地址)
R10 R11+0
寄存器间接增量寻址方式
(R10)
(R11+0)
R10=R10+1 or 2
举例:MOV @R10+ , 0(R11)
code data data
通常为常数或常量
举例:MOV 2(R5) , 6(R6)
code data data
R6+6 R5+2
指针(地址)
R6+6 R5+2
符号寻址方式——
机器指令:PC 寄存器相对寻址 效果上:直接寻址方式
(EDE)
(TONI)
注意:代码重定位后(此时PC值改变了),实际的操作数 可能已经不是原来的操作数了(RAM操作数) !
op-code
B/W As/Ad S/D-Reg
跳转指令(Jump Instruction)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
op-code

微机原理-MSP430体系结构

微机原理-MSP430体系结构

MSP430 CPU寄存器
• R2:状态寄存器(SR):
– 存储状态位和控制位; – CPU自动改变系统标志位;
– 保留位用来支持常量发生器.
15 14 13 12 11 10 9 8
7
Reserved for CG1
V SCG1
6 SCG0
5 OSCOFF
4 CPUOFF
3
210
GIE N Z C
• R1:堆栈指针(SP):
– 第一,用户可以使用堆栈存储数据,以便未来使用。(指令: 用 PUSH指令来存数据,POP指令来取数据);
– 第二,用户和编译器均可以使用堆栈为子函数传递参数 (PUSH、 POP用于调用函数,被调用的函数使用SP来计算偏移);
MSP430 CPU寄存器
• R1: 堆栈指针(SP) (续):
– 第三,系统进入子函数之前,把PC的值存储到堆栈中,从子函数 返回时,再取出堆栈中的值,重新赋值给PC;
– 第四,系统堆栈在系统进入中断服务程序时,首先保护程序计数 器(PC),然后将中断矢量地址送入程序计数器,再执行中断服务 程序。中断服务程序执行完毕,遇到返回指令时,将堆栈的内容 送到程序计数器中,程序又回到原来的地方,继续执行。在函数 调用之前保存的寄存器变量、局部变量和参数都不会变。
所谓“集成开发环境”就是处理器的所有开发都在一个软 件里完成,包括工程管理、程序编译、代码下载、调试 等功能。
CCS支持所有TI公司推出的处理器,包括MSP430、ARM Cortex系列、C2000和DSP。
对于MSP430的开发,用的最多的是IAR公司的EW430。
TI公司在CCSV5之后的版本里,对MSP430的支持达到了全 新的高度。

MSP430中文数据手册

MSP430中文数据手册

MSP430混合信号微控制器数据手册产品特性●低电压范围:2.5V~5.5V●超低功耗——活动模式:330μA at 1MHz, 3V——待机模式:0.8μA——掉电模式(RAM数据保持):0.1μA●从待机模式唤醒响应时间不超过6μs●16位精简指令系统,指令周期200ns●基本时钟模块配置——多种内部电阻——单个外部电阻——32kHz晶振——高频晶体——谐振器——外部时钟源●带有三个捕获/比较寄存器的16位定时器(Timer_A)●串行在线可编程●采用保险熔丝的程序代码保护措施●该系列产品包括——MSP430C111:2K字节ROM,128字节RAM——MSP430C112:4K字节ROM,256字节RAM——MSP430P112:4K字节OTP,256字节RAM●EPROM原型——PMS430E112:4KB EPROM, 256B RAM●20引脚塑料小外形宽体(SOWB)封装,20引脚陶瓷双列直插式(CDIP)封装(仅EPROM)●如需完整的模块说明,请查阅MSP430x1xx系列用户指南(文献编号:SLAU049产品说明TI公司的MSO43O系列超低功耗微控制器由一些基本功能模块按照不同的应用目标组合而成。

在便携式测量应用中,这种优化的体系结构结合五种低功耗模式可以达到延长电池寿命的目的。

MSP430系列的CPU采用16位精简指令系统,集成有16位寄存器和常数发生器,发挥了最高的代码效率。

它采用数字控制振荡器(DCO),使得从低功耗模式到唤醒模式的转换时间小于6μs.MSP430x11x系列是一种超低功耗的混合信号微控制器,它拥有一个内置的16位计数器和14个I/0引脚。

典型应用:捕获传感器的模拟信号转换为数据,加以处理后输出或者发送到主机。

作为独立RF传感器的前端是其另一个应用领域。

DW封装(顶视图)可用选型功能模块图管脚功能简介:1.CPUMSP430的CPU采用16位RISC架构,具有高度的应用开发透明性。

msp430 再说位运算

msp430 再说位运算

再说位运算本篇为CLOUD430自学笔记的杂项篇,相对自学笔记正文篇要专业一些,本文中将会涉及相关430的基础知识,不懂的可以参看CLOUD自学笔记正文篇,另外Cloud学识有限难免有疏漏望大家毫不留情地指出。

CLOUD一直认为MSP430单片机的IO口是不可以位寻址的,相关手册和代码大量的位与运算、位或运算都很好滴证明了这一点。

用惯了C51中的“sbit”的孩子们刚开始总是有点苦恼,总是被大量的位运算蒙蔽了很多。

虽然位运算拥有很多按位寻址操作所不可比拟的优势(比如大量位的操作),但是Cloud还是对于“单个位”操作有很大的研究兴趣。

一次偶然机会,看到430引用的头文件io430.h所引用的相关芯片头文件(这里Cloud用的是io430g2553.h)内部对io口的相关定义,产生了IO口单独位操作的实现方法,本文就将对这一过程进行说明并研究不同操作方式的优劣。

G2553单片机拥有P1口和P2口,对P1口的输出操作是P1OUT寄存器,我们查看P1OUT 的相关声明,出现如下代码:__no_init volatile union{unsigned char P1OUT; /* Port 1 Output */struct{unsigned char P0 : 1; /* */unsigned char P1 : 1; /* */unsigned char P2 : 1; /* */unsigned char P3 : 1; /* */unsigned char P4 : 1; /* */unsigned char P5 : 1; /* */unsigned char P6 : 1; /* */unsigned char P7 : 1; /* */}P1OUT_bit;} @0x0021;可以看到,P1OUT的数据类型是一个无符号字符型,占1个字节。

然而这个P1OUT并不是孤单的,它是在一个大括号内部定义的,大括号前面有这样一条语句:__no_init volatile union这条代码由三个关键字组成,下面分别解释这三个关键字:①__no_init:这个关键字表示不会在单片机初始化时就配置该变量。

第2章MSP430单片机软件工程开发基础

第2章MSP430单片机软件工程开发基础
合肥工业大学DSP及MSP430实验室
MSP430单片机原理与应用
/msp430
第2章 MSP430单片机软件工程开发基础
MSP430单片机的CPU属于RISC(精简指令集)处理器,RISC处理器基本上是为高级语 言所设计的,因为精简指令系统很大程度上降低了编译器的设计难度,有利于产生高效紧 凑的代码。初学者完全可以在不深入了解汇编指令系统的情况下,直接开始C语言的学习。 本章介绍MSP430单片机软件工程的开发基础,主要讲解MSP430单片机C语言编程基础、 MSP430单片机的软件编程方法及软件集成开发环境的基本操作。通过本章的讲解,旨在 使读者对MSP430单片机的编程思想有一定的了解。
逗号运算符的作用是把几个表达式串在一起,成为逗号表达式,其格式为“表达式1,表
达式2,……,表达式n”,运算顺序为从左到右,整个逗号表达式的值是最右边表达式的值。 强制类型转换运算符的作用是将一个表达式或变量转换成所需类型,符号为“()”。例如 ,(int)a是将a转换为整型;(float)(a+b)是将a+b的结果转换为浮点数。
注意:在C430中,标识符的命名应该做到简洁明了、含义清晰,这样便于程序的阅读和维护。例
如,在比较最大值时,最好使用max来定义该标识符;在片内模块初始化函数部分,函数命名后面尽
量加上_init,如ADC12_init()表示ADC12模块初始化函数。
2.1 MSP430单片机C语言基础
2.关键字 关键字是一种具有特定含义的标识符,由于系统已经对这些标识符进行了定义,程序 就不能再次定义,需要加以保留。用户不能将关键字用作自己定义的标识符。 C语言中,关键字主要有以下3类。 ① 数据类型关键字:auto,char,const,double,enum,extern,float,int,long, register,sizeof,short,static,typedef,union,unsigned,void,volitile。 ② 程序控制关键字:break,case,continue,default,do,else,for,goto,if,return, switch,whlie。 ③ 预处理功能关键字:define,endif,elif,ifdef,ifndef,include,line,undef。

MSP430系列汇编指令集

MSP430系列汇编指令集

Rn n=0~15
寻址方式 寄存器寻址 索引寻址 符号寻址 绝对寻址 间接寻址 间接自动增量 立即数寻址
Rs
源寄存器
Rd 目标寄存器
子 R11 6(R6) TON1 &TCDAT Tab(R6) R11 TON1 操 R10 à R11 M(2+R5) à M(6+R6) M(EDE) à M(TON1) M(MEM) à M(TCDAT) M(R10) à M(Tab+R6) M(R10) à R11, R10+2 #0AAH à M(TON1) 作
dst src, dst dst dst
dst dst dst 标号 标号 标号 标号 标号 标号 标号 标号 src, dst dst src
dst + C -> dst ( 十进制) src + dst + C -> dst ( 十进制) dst - 1 -> dst dst - 2 -> dst 禁止中断 使能中断 dst + 1 -> dst 目的操作数增 1 dst + 2 -> dst 目的操作数增 2 目的操作数求反 进位位被置时转移到标号语句 零位被置时转移到标号语句 N .xor. V = 0 时转移到标号语句 N .xor. V = 0 时转移到标号语句 无条件转移到标号语句 负位被置时转移到标号语句 进位位复位时转移到标号语句 零位复位时转移到标号语句 src -> dst 空操作 项目从堆栈弹出, SP + 2 -> SP SP – 2 -> SP , src -> @SP 从中断返回 TOS -> SR SP + 2 -> SP TOS -> PC SP + 2 -> SZP 从子程序返回 TOS -> SR SP + 2 -> SP 算术左移 带进位位左移 算术右移 带进位位右移 从目的操作数减去借位 置进位位 置负位 置零位 dst + .not. src + 1 -> dst dst + .not. src + C -> dst 交换字节 dst 位 7 -> 位 8...... 位 15 测试目的操作数

430复习

430复习

1.寄存器的作用:R0:程序计数器PCR1:堆栈指针SP,指向堆栈的栈顶R2:状态寄存器SR/常数发生器CG12. 状态标志:C进位标志:当运算结果产生进位时C置位,否则C复位Z零标志:当运算结果为零时Z置位,否则Z复位N负标志:当运算结果为负时N置位,否则N复位V溢出标志:当运算结果超出有符号数范围时V置位,溢出情况如下:正数+正数=负数正数-负数=负数负数+负数=正数负数-正数=正数3.存储空间分布:1)中断向量被在相同的空间:0FFE0~0FFFFH;2)8位、16位外围模块占用相同范围的存储器地址;3)特殊功能寄存器占用相同范围的存储器地址;4)数据存储器都从0200H处开始;5)程序存储器的最高地址都是0FFFFH;4.外围模块寄存器空间分布:01FFH~0100H:16位外围模块0FFH~010H:8位外围模块0FH~00H:特殊功能寄存器5.上电复位(POR)与上电清除(PUC)上电复位(POR)与上电清除(PUC)信号可以使MSP430单片机系统复位。

当POR 信号产生时同时产生PUC信号,PUC信号产生时不一定产生POR信号。

POR和PUC 都不能用来作为电压侦测线路;上电复位的电压V与温度有关。

6.掉电保护(BOR):当系统的工作电压低于下限或者更换电池时,BOR会触发POR信号使系统复位,避免系统执行不可预测的行为。

7.电源电压检测(SVS):当电源电压或外部电压降低到用户选择值以下,SVS可设置标志或产生一个POR复位信号。

8.低功耗模式:有6种不同的工作模式1种活动模式和5种低功耗模式。

通过设置控制位MSP430单片机可以从活动模式进入到相应的低功耗模式:而各种低功耗模式又可通过中断方式回到活动模式。

9.双操作数指令代码格式:操作码域:4位(操作码)源域:6位(源寄存器+As)字节操作识别符:1位(B/W)目的域:5位(目的寄存器+Ad)10.寻址方式:是指在执行一条指令过程中,如何找到操作数地址的方法,通常,指令的操作数包含源操作数和目的操作数。

430单片机简介

430单片机简介

430单片机简介MSP430 系列是一个16 位的、具有精简指令集的、超低功耗的混合型单片机,在1996 年问世,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为众多单片机系列中一颗耀眼的新星。

回忆MSP430 系列单片机的发展过程,可以看出有这样三个阶段:开始阶段从1996 年推出MSP430 系列开始到2000 年初,这个阶段首先推出有33X 、32X 、31X 等几个系列,而后于2000 年初又推出了11X 、11X1 系列。

MSP430 的33X 、32X 、31X 等系列具有LCD 驱动模块,对提高系统的集成度较有利。

每一系列有ROM 型( C )、OTP 型(P )、和EPROM 型(E )等芯片。

EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。

这也表明了这几个系列的开发模式,即:用户可以用EPROM 型开发样机;用OTP 型进行小批量生产;而ROM 型适应大批量生产的产品。

2000 年推出了11X/11X1 系列。

这个系列采用20 脚封装,内存容量、片上功能和I/O 引脚数比较少,但是价格比较低廉。

这个时期的MSP430 已经显露出了它的特低功耗等的一系列技术特点,但也有不尽如人意之处。

它的许多重要特性,如:片内串行通信接口、硬件乘法器、足够的I/O 引脚等,只有33X 系列才具备。

33X 系列价格较高,比较适合于较为复杂的应用系统。

当用户设计需要更多考虑成本时,33X 并不一定是最适合的。

而片内高精度A/D 转换器又只有32X 系列才有。

寻找突破,引入Flash 技术随着Flash 技术的迅速发展,TI 公司也将这一技术引入MSP430 系列中。

在2000 年7 月推出F13X/F14X 系列,在2001 年7 月到2002 年又相继推出F41X 、F43X 、F44X 这些全部是Flash 型单片机。

F41X 单片机是目前应用比较广的单片机,它有48 个I/O 口,96 段LCD 驱动。

MSP430系列单片机的指令系统

MSP430系列单片机的指令系统

EXIT
基于模拟前端信号处理与控制技术的专业论坛、网站
微控设计网
中国MSP430单片机专业网站
数据运算指令: 加法指令 ADC 进位位加目的 ADD 源加目的
ADDC 带进位位源加目的 DADC、DADD 十进制 INC 、INCD、 减法指令:SUB、SUBC、DEC、DECD、 SBC 、CMP、TST 注意:减法没有十进制运算指令 例: ADD
EXIT
基于模拟前端信号处理与控制技术的专业论坛、网站
微控设计网
中国MSP430单片机专业网站
微控设计网提供MSP430单片机发开工具
基于模拟前端信号处理与控制技术的专业论坛、网站
通过进位位算术左移 通过进位位算术右移 目的求反
位操作: CLRC、CLRN、CLRZ、DINT、EINT SETC、SETZ、SETN EXIT
基于模拟前端信号处理与控制技术的专业论坛、网站
微控设计网
中国MSP430单片机专业网站
跳转与程序流程的控制指令: BR 无条件在64K空间的长转移指令 CALL 子程序调用 JC/JHS JZ/JEQ JGE、JL、JMP JLO JN、JNC、JNE/JNZ RET、RETI、NOP 注:以上的控制要根据不同的条件来进行(如根据测试或运算指令, 比较指令等。) 例: BR EXEC ;转移到EXEC包含的地址中 BR @R5 ;转移到R5指向的地址中 CALL R5 CALL EXEC CMP #15,R5 JHS LABEL BIT JC #10H接增量寻址:与上述基本一致,但对目的操作数不能用。 7、立即寻址: 又叫立即数寻址。但对目的操作数不能用。
EXIT
基于模拟前端信号处理与控制技术的专业论坛、网站

430寄存器的位定义

430寄存器的位定义

430寄存器的为定义:特殊寄存器1.中断使能1寄存器IE1是一个8位寄存器,它可以控制其相应模块中断使能UTXIE0URXIE0ACCVIE NMIIE x x OFIE WDTIEUTXIE0:0关闭USART0发送中断1打开USART0发送中断URXIE0:0关闭USART0接受中断1打开USART0接受中断ACCVIE:FLASH非法访问中断使能控制位0关闭中断1打开中断NMIIE:非屏蔽中断使能控制位0关闭中断1打开中断OFIE:晶体错处中断使能控制位0关闭中断1打开中断WDTIE:看门狗中断使能控制位0关闭看门狗中断1打开看门狗中断2.中断使能寄存器2IE2,是一个8位寄存器UTXIE1URXIE1UTXIE10关闭USART1发送中断1打开USART1发送中断URXIE10关闭USART1接受中断1打开USART1接受中断3.中断标志寄存器1IFG1,是一个8位寄存器UTXIFG0URXIFG0NMIIFG OFIFG WDTIFGUTXIFG0:传输中断标志(USART0发送)0没有产生中断1发生中断URXIFG0:传输中断标志(USART0接受)0没有产生中断1发生中断NMIIFG:非屏蔽中断标志0没有中断1产生中断OFIFG:晶体出错中断标志0没有中断1产生中断WDTIFG:看门狗中断标志0没有产生中断1产生中断4.中断标志寄存器2IFG2,它是一个8位的中断寄存器UTXIFG1URXIFG1UTXIFG1:传输中断标志(USART1发送)0没有产生中断1发生中断URXIFG1:传输中断标志(USART1接受)0没有产生中断1发生中断5.模块使能1寄存器ME1,它是一个8位寄存器UTXE0URXE0/USPIE0UTXE0:USART0的传输使能.0USART0传输不工作1USART0传输工作URXE0/USPIE0:作为USART0使用时:1接受使能0接受不使能作为SPI使用时:0SPI不工作1SPI工作6.模块使能2寄存器ME2,它是个8位寄存器UTXE1URXE1/USPIE1UTXE1:USART1的传输使能.0USART1传输不工作1USART1传输工作URXE1/USPIE1:作为USART1使用时:1接受使能0接受不使能作为SPI使用时:0SPI不工作1SPI工作时钟模块寄存器主要寄存器有DCOCTL BCSCTL1BCSCTOL21.DCOCTL寄存器是一个8位的寄存器,位定义:DCOx(7--5)MODx(4--0)DCOx:用来选择时钟频率MODx:频率调制选择2.BCSCTL1:是8位寄存器,位定义XT2OFF XTS DIVAx XT5V RSELx(2--0)XT2OFF:来控制XT2震荡器的开启和停止0关闭1启动XTS:选择低频模式还是高频模式0低频模式1高频模式DIVAx:来选择分频系数XT5V:选择复位RSELx:选择内部电阻3.BCSCTL2寄存器是8位的,其位定义如下:SELMx DIVMx SELS DIVSx DCORSELMx:选择MCLK的时钟源整体值为0或者1时钟源为DCOCLK2MCLK的时钟源为高速晶体震荡器3低速晶体震荡器DIVMx:分频因子0分频为11分频22分频43分频8DCOR:选择外部电阻还是内部电阻0内部电阻1外部电阻430的工作模式选择主要通过状态寄存器中的以下位来设置CPUOFF OSCFF SCG0 SCG1I/O端口模块:1.P1端口是一个8位的,它有方向寄存器P1DIR中断使能寄存器P1IE触发沿选择寄存器P1IES中断标志寄存器P1IFG输入寄存器P1IN输出寄存器P1OUT功能选择寄存器P1SEL2.P2端口是一个8位的,它有方向寄存器P2DIR中断使能寄存器P2IE触发沿选择寄存器P2IES中断标志寄存器P2IFG输入寄存器P2IN输出寄存器P2OUT功能选择寄存器P2SEL3.P3端口是一个8位的,它有方向寄存器P3DIR,输入寄存器P3IN,输出寄存器P3OUT,功能选择寄存器P3SEL4.P4P5P6....只有方向寄存器输入寄存器输出寄存器功能选择寄存器定时器模块包括看门狗TIMER_A,TIMER_B看门狗控制寄存器WDTCTL是16位控制字1.WDTCTL寄存器的位定义口令字节HOLD NMIES NMI TMSEL CNTCL SEL IS.1IS.0读口令字节是69H,写看门狗口令是5AHOLD:看门狗停止位0看门狗工作1看门狗停止工作NMIES:看门狗定时器中断触发沿选择位0上升沿1下降沿NMI://RST NMI管脚功能选择0复位功能1NMI功能TMSEL:看门狗工作模式选择0看门狗模式1定时器模式CNTCL:清除看门狗定时器控制位0不清除内容1清楚寄存器内容SEL:看门狗时钟源选择0选择SMCLK1选择ACLKIS1IS0:看门狗时间间隔选择0032768018192105121164定时器A TIMER_A,有三个捕获比较寄存器,支持多个时序控制,多个PWM脉冲输出,有多种中断功能(记数溢出中断,捕获比较中断)主要寄存器有TACTL TAR TAIV CCTLn CCRn1.TACTL寄存器是一个16位的寄存器,用来控制定时器SSEL1SSEL0ID1DI0MC1MC0CLR TAIE TAIFGSSEL1SSEL0定时器时钟源选择位00使用外部管脚信号做输入01ACLK10MCLK11使用外部输入时钟ID1ID0选择输入时钟分频系数00直通,不分频011/2101/4111/8MC1MC0选择定时器工作模式00停止模式01增计数器模式10连续记数模式11增/减记数模式CLR:定时器A清楚控制0不清楚1清楚TAIE:定时器中断使能0不允许中断1允许中断TAIFG:中断标志位0没有中断1有中断产生2.TAR寄存器是执行记数单元,允许读写3.TAIV寄存器是定时器中断相量寄存器TAIV=02,CCR1的CCIFG中断TAIV=04,CCR2的CCIFG中断TAIV=0A,TAIFG中断TLn是捕获/比较寄存器,是16字节的寄存器位定义:CAPTMOD1CAPTMOD0CCIS.1CCIS.0SCS SCCI CAP高字节OUTMOD2OUTMOD1OUTMOD0CCIE CCI OUT COV CCIFG低字节CAPTMOD1--0来选择捕获模式00禁止捕获模式01上升沿捕获模式10下降沿捕获模式11上升沿和下降沿捕获模式CCIS1CCIS0捕获/比较输入模式00选择CCIxA作为捕获事件的输入信号01选择CCIxB作为捕获事件的输入信号10选择GND作为捕获事件的输入信号11选择VCC作为捕获事件的输入信号SCS:同步捕获源0异步捕获1同步捕获SCCI:同步捕获/比较输入CAP:捕获模式选择0比较模式1捕获模式OUTMOD2OUTMOD1OUTMOD0输出模式选择000输出模式001置位模式010PWM翻转/复位011PWM置位/复位100翻转101复位110PWM翻转/置位111PWM复位/置位CCIE:捕获/比较中断使能位0不允许中断1允许中断CCI:捕获/比较输入信号OUT:输出0低电平1高电平COV:捕获溢出0没有溢出1捕获溢出CCIFG:捕获/比较中断标志0不产生中断1产生中断Rn寄存器.该寄存器在捕获/比较模块中,可以读和写.在捕获方式下,当满足捕获条件时,硬件自动将计数器TAR的数据写入该寄存器.在比较方式中,用户根据需要设定的时间长短,并结合定时器的工作方式和定时器的输入时钟信号写入该寄存器相应数据定时器TIMER_B定时器TIMER_B的主要寄存器有TBCTL TBR TBIV TBCCTLn TBCCRn(其中n的值为0---6)1.TBCTL寄存器是一个16位寄存器,它可以完成对TIMER_B的控制设置TBCLGRP1TBCLGRP0CNTL.1CNTL.0TBSSEL1TBSSEL.0高字节ID1ID0MC1MC0TBCLR TBIE TBIFG低字节TBCLGRP1TBCLGRP0该两位用来决定是单独还是成组装载比较锁存器00单独装载(比较锁存器由各自的TBCCTLx寄存器的CLLDx来控制)01分为3组装载10分为两组装载11选择1组装载CNTL1CNYL0选择定时器长度0016位最大FFFF0112位最大FFF1010位最大3FF118位最大FFTBSSEL1TBSSEL0选择时钟源00TBCLK使用外部管教信号作为输入01ACLK10MCLK11INCLK(外部输入时钟)ID1ID0选择分频系数00直通,不分频011/2分频101/4分频111/8分频MC1MC0选择定时器工作模式00停止模式01增记数模式10连续记数模式11增/减记数模式2.TBR寄存器是执行记数单元,是计数器的主体,该记数器是一个16位的寄存器,该寄存器可以读和写,但必须按字的方式读写.写入寄存器的时候,应该停止计数器的记数3.TBIV寄存器是中断相量寄存器,它用来判断是哪个中断源发生中断.它是一个16位的寄存器.它是中断想量寄存器.中断源中断标志TBIV=02捕获/比较1CCR1的CCIFGTBIV=04捕获/比较2CCR2的CCIFGTBIV=0A定时器溢出CCR5的CCIFGTBIV=06CCR3的CCIFGTBIV=08CCR4的CCIFGTBIV=0C CCR6的CCIFGTBIV=0E TBIFGTBCCTLn寄存器,是16位寄存器,该寄存器是用来控制捕获/比较模块的.CAPTMOD1CAPTMOD0CCIS.1CCIS.0SCS CLLDI CLLD0CAP高字节OUTMOD2OUTMOD1OUTMOD0CCIE CCI OUT COV CCIFG低字节CAPTMOD1CAPTMOD0选择捕获模式00禁止捕获01上升沿捕获10下降沿捕获11上升沿和下降沿捕获CCIS1CCIS0捕获/比较输入选择00选择CCIxA作为捕获事件的输入信号01选择CCIxB作为捕获事件的输入信号10选择GND作为捕获事件的输入信号11选择VCC作为捕获事件的输入信号SCS:同步捕获源0异步捕获1同步捕获CLLD1CLLD0比较存储器的状态方式00立即装载01当TBR记数到0时,TBCCRx的数据装载到TBCLx10在增减记述器模式下,当TBR记数到TBCL0或者0时,TBCCRx的数据装载到TBCLx,,在连续记数模式下,当TBR记数到0时,TBCCRx的数据就装载到TBCLx中11上升沿和下降沿捕获模式CAP:捕获模式选择0比较模式1捕获模式OUTMOD2OUTMOD1OUTMOD0输出模式选择000输出001置位010PWM翻转/复位011PWM置位/复位100翻转101复位110PWM翻转/置位111PWM复位/置位CCIE:捕获/比较中断使能位0不允许中断1允许中断CCI:捕获/比较输入信号OUT:输出0低电平1高电平COV:捕获溢出0没有溢出1捕获溢出CCIFG:捕获/比较中断标志0不产生中断1产生中断4.TBCCRn寄存器.该寄存器在捕获/比较模块中,可以读和写.在捕获方式下,当满足捕获条件时,硬件自动将计数器TAR的数据写入该寄存器.在比较方式中,用户根据需要设定的时间长短,并结合定时器的工作方式和定时器的输入时钟信号写入该寄存器相应数据比较器模块比较器模块A支持A/D转换.主要寄存器有:CACTL1CACTL2CAPD1.CACTL1是一个8位寄存器CAEX CAESEL CAREF1CAREF0CAON CAIES CAIE CAIFGCAEX:比较器交换输入端,也控制比较器的输出是否是反向.CARSEL:比较器的参考选择CAEX CARSEL00内部参考电源接正端01内部参考电源接负端10内部参考电源接负端11内部参考电源接正端CAREF1CAREF0选择参考电源00内部参考电源关闭,使用外部参考电源01选择0.25Vcc作为参考电压10选择0.5Vcc作为参考电压11选择二极管电压作为参考电压CAON:比较器的开关控制0关闭比较器1开启比较器CAIES:比较器中断沿触发选择0上升沿1下将沿CAIE:中断使能0不允许中断1允许中断CAIFG:中断标志位0没有中断1有中断产生2.CACTL2寄存器,该寄存器是一个8位P2CA1P2CA0CAF CAOUT(高4位没有用)P2CA1:来选择CA1管脚0管脚不接到CA11管脚接到CA1P2CA0:来选择CA0管脚0管脚不接到CA01管脚接到CA0CAF:比较器输出滤波选择0比较器不进行输出滤波处理1比较器进行输出滤波处理CAOUT:比较器输出该位是只读位,不可进行写操作3.CAPD寄存器,是8位寄存器用来控制输入缓冲功能,当某位为1进行输入缓冲,当某位为0时,则关闭输入缓冲FLASH模块主要寄存器有FCTL1FCTL2FCTL31.FCTL1寄存器是一个16位寄存器,它控制FLASH的操作安全健值(15---8位)BKWRT WRT未用未用未用MERAS ERASE未用读健值96写健值5ABKWRT:按块写模式0关闭块写模式1打开块写模式WRT:写模式0关闭写模式1打开写模式MERAS ERASE控制擦除操作00不擦除01只擦除单个段10擦除所有主程序11擦除所有主程序段和信息段2.FCTL2是一个16位的寄存器安全健值(15---8位)SSEL1SSEL0FN5FN4FN3FN2FN1FN0SSEL1SSEL0时钟源选择00ACLK01MCLK10SMCLK11SMCLKFN5---FN0定义了分频系数3.FCTL3寄存器是一个16位寄存器,它定义了标志位安全健值(15---8位)未用未用EMEX LOCK WAIT ACCIFG KEYV BUSY EMEX:紧急退出位0不退出FLASH操作1立即退出FLASH操作LOCK:加锁位0可对FLASH操作1不可对FLASH写和擦除操作WAIT:等待指示位0没有准备好下一次写操作1准备好下一次写操作ACCIFG:非法访问中断标志0没有非法访问1非法访问KEYV:安全健值出错标志0安全健值正确1安全健值不正确BUSY:忙标志0不忙1忙USART模块USART模块的结构:可以实现异步和同步通信.接受部分:有一个接受状态字,接受寄存器,接受移位寄存器及控制模块发送部分:发送寄存器,发送移位寄存器及控制部分波特率产生部分:波特率发生器,波特率寄存器,波特率调整寄存器.该模块的寄存器有:UxCTL UxTCTL UxRCTL UxMCTL UxBR0UxBR1UxRXBUF UxTXBUF等等.1.UxCTL寄存器是一个8位寄存器,通过它可以设置通信协议通信模式通信校验位PENA PEV SPB CHAR LISTEN SYNC MM SWRATPENA:校验使能位.0不允许校验1允许校验(发送时带校验位,接受时受到校验位)PEV:奇偶校验位0:奇校验1偶校验SPB:停止位0发送带一个停止位1发送带两个停止位CHAR:字符长度位07个数据位18个数据位LISTEN:监听使能位.0无反馈1有反馈SYNC:同步异步模式选择位0异步选择位1同步选择位MM:多机模式选择0空闲时多机模式1地址位多机模式SWRST:软件复位使能0模块复位允许1模块复位禁止2.UxTCTL寄存器是一个8位寄存器,它来控制发送操作.CKPH CKPL SSEL1SSEL0URXSE TXWAKE STC TXEPT CKPH:在SPI模式下控制UCLK时钟相位0使用正常的UCLK1使用延迟半个的UCLK CKPL:时钟极性选择0在UART模式下UCLKI与UCLK极性一致,在SPI模式下上升沿输出.1在在UART模式下UCLKI与UCLK极性相反,在SPI模式下下降沿输出SSEL1SSEL0:时钟源选择00选择外部时钟UCLK01选择辅助时钟ACLK10选择子系统时钟SMCLK11选择子系统时钟SMCLKURXSE:接受沿选择0没有接受到数据1接受到数据TXWAKE:发送器唤醒0下个字节是数据1下个字节是地址STC:STE管脚选择0STE管脚使能,选择SPI的4线模式1STE管脚禁止,3线模式TXEPT:发送器空标志0有数据1空状态,无数据3.UxRCTL寄存器是一个8位,它控制接受模块操作FE PE OE BRK URXEIE URXWIE RXWAKE RXERRFE:帧出错标志0没有错误1有错误PE:检验出错标志0检验正确1检验错误OE:溢出标志0没有溢出1有溢出发生BRK:打断检测位0没有打断1有打断URXEIE:接受出错中断允许0不允许中断1允许中断URXWIE:接受唤醒中断允许0接受到1个直接就置位URXIFGX1接受到地址才置位URXIFGXRXWAKE:唤醒标志位0接受到的是数据1接受到的书地址RXERR:接受出错标志:0没有接受错误1接受错误发生UxBR0UxBR1UxMCTL寄存器共同来确定波特率波特率=BRCLK/(UBR+(M7+M6+......M0)/8)4.UxRXBUF UxTXBUF寄存器是接受和发送缓冲寄存器ADC模块对该模块的寄存器进行操作可以完成A/D转换.主要寄存器有转换控制寄存器ADC12CTL0ADC12CTL1中断控制寄存器ADC12IFG ADC12IE ADC12IV存储控制寄存器ADC12MCTL0---15ADC转换控制寄存器A1.DC12CTL0寄存器是一个16位的寄存器SHT1x(3....0)SHT0x(3....0)高字节MSC REF2_5V REFON ADC12ON ADC12OVIE ADC12TOVIE ENC ADC12SC 低字节SHT1x(3....0):采样保持时间.该4为定义了保持在转换结果寄存器ADC12MEM8---15中的转换采样时间/时序采样周期是ADC12CLK周期*4的整数倍当SHT1x(3....0)=2时,采样周期为ADC12CLK周期的8倍SHT0x(3....0):采样保持时间.该4为定义了保持在转换结果寄存器ADC12MEM0---7中的转换采样时间/时序采样周期是ADC12CLK周期*4的整数倍当SHT0x(3....0)=2时,采样周期为ADC12CLK周期的8倍MSC:多次采样转换位0采样定时器需要SHI信号的上升沿触发.1首次转换有SHI 的上升沿触发采样定时器,后面的采样周期将在前一次转换完成后立即进行,不需要SHI信号上升沿触发REF2_5V:内部参考电压选择0 1.5V1 2.5VREFON:内部参考电压控制0关闭内部参考电压1打开内部参考电压ADC12ON:ADC12模块控制位0关闭ADC121打开ADC12ADC12OVIE:ADC12MEMx溢出中断使能0溢出中断不使能1溢出中断使能ADC12TOVIE:ADC12模块的转换时间溢出中断使能0转换时间溢出中断不使能1转换时间溢出中断使能ENC:转换允许0不允许转换1允许转换ADC12SC:开始转换位0不转换1开始转换ADC12CTL1寄存器是一个16位的寄存器CSTARTADD3--0SHS1--0SHP ISSH高字节ADC12DIV2--0ADC12SSEL1--0CONSEQ1--0ADC12BUSYCSTARTADD3--0:转换其始地址0--15对应ADC12MEM0---15SHS1SH10采样保持信号源选择00选择ADC12SC01选择TIMER_A的OUT110选择TIMER_B的OUT011选择TIMER_B的OUT1SHP:采样保持脉冲模式选择0SAMPCON直接源自采样输入信号1SAMPCON直接源自采样定时器ISSH:采样信号反向控制位0采样信号不反向1采样信号反向ADC12DIV2--0:ADC12时钟源分频因子ADC12SSEL1--0:ADC12时钟源的选择ADC12SSEL1ADC12SSEL000选择ADC12内部时钟源01选择ACLK10选择SMCLK11选择SMCLKCONSEQ1CONSEQ0转换模式选择位00单通道单次转换模式01序列通道单次转换模式10单通道多次转换模式11序列通道多次转换模式ADC12BUSY:ADC12忙位0无任何采样转换操作1有采样或者转换操作ADC12模块中断控制类寄存器2.ADC12IFG:的中断标志寄存器,它是一个16位的寄存器,它的每一位对应ADC12MEMx寄存器,当转换结果装入ADC12MEMx中,则该位置位,当ADC12MEMx被访问后,则该为03.ADC12IE:是ADC12的中断允许寄存器,它对应ADC12MEMx寄存器,当为1允许中断0不允许中断ADC12IV寄存器是ADC12模块中的中断向量寄存器ADC12IV=02ADC12MEMx溢出中断ADC12IV=04转换时间溢出中断ADC12IV=06ADC12MEM0中断,中断标志ADC12IFG0ADC12IV=08ADC12MEM1中断,中断标志ADC12IFG1ADC12IV=0A ADC12MEM2中断,中断标志ADC12IFG2ADC12IV=0C ADC12MEM3中断,中断标志ADC12IFG3ADC12IV=0E ADC12MEM4中断,中断标志ADC12IFG4ADC12IV=10ADC12MEM5中断,中断标志ADC12IFG5ADC12IV=12ADC12MEM6中断,中断标志ADC12IFG6ADC12IV=14ADC12MEM7中断,中断标志ADC12IFG7ADC12IV=16ADC12MEM8中断,中断标志ADC12IFG8 ADC12IV=18ADC12MEM9中断,中断标志ADC12IFG9 ADC12IV=1A ADC12MEM10中断,中断标志ADC12IFG10 ADC12IV=1C ADC12MEM11中断,中断标志ADC12IFG11 ADC12IV=1E ADC12MEM12中断,中断标志ADC12IFG12 ADC12IV=20ADC12MEM13中断,中断标志ADC12IFG13 ADC12IV=22ADC12MEM14中断,中断标志ADC12IFG14 ADC12IV=24ADC12MEM15中断,中断标志ADC12IFG15 ADC12模块中的存储控制累寄存器4.ADC12MCTLx为8位寄存器EOS SREF2---0INCH3---0EOS:序列结束位1表明是转换序列中的最后一位SREF2SREF2SREF2参考电压选择位000Vr+=AVcc Vr-=AVss001Vr+=Vref+Vr-=AVss010Vr+=Veref+Vr-=AVss011Vr+=Veref+Vr-=AVss100Vr+=AVcc Vr-=Vref-/Veref-101Vr+=Vref+Vr-=Vref-/Veref-110Vr+=Veref+Vr-=Vref-/Veref-111Vr+=Veref+Vr-=Vref-/Veref-INCH3---0:选择模拟通道INCH3---0=0---7模拟输入通道A0---A7INCH3---0=8Veref+INCH3---0=9Vref-/Veref-INCH3---0=10片内温度传感器的输出INCH3---0=11-15(AVcc-AVss)/25.ADC112MEM0---15寄存器用来存储转换得到的数据。

MSP430汇编语言介绍

MSP430汇编语言介绍

存储器地址编号 1101-1100 1103-1102 1105-1104 1107-1106 1109-1108 110B-110A
存储器内容 40 34 00 06 50 34 00 07 44 82 02 00
操作量 操作码 操作数 操作码 操作数 操作码 操作数
指令 MOV #n,R4 n=6H ADD #n,R4 n=7H MOV R4,&n n=200H
上一条是把立即数送至R4的指令,需要继续取操作数
① PC的内容1102H传至地址寄存器AR; ② PC的内容可靠送入AR后,PC的内容+2变 为1102H; ③ AR通过地址总线AB把地址信号1102H送 至存储器,经地址译码器选中存储器 1102H-1103H单元; ④ CPU通过控制总线CB向存储器发出读操作 控制指令; ⑤ 选中1102H-1103H存储单元的内容(00 06)读至数据总线DB上; ⑥ 读出的内容(00 06)经DB送至数据寄存 器DR; ⑦ 因为CPU处于取操作数阶段,取出为操作 数,执行该指令,则DR通过CPU内部总线 把数据(00 06)送入寄存器R4。
执行后 R10 0A125H R11 0FA00H 内存单元0A123H 1234H 内存单元0FA00H 1234H
汇编指令集中常用符号和缩写
八、MSP430指令系统
精简指令集(RISC)设计;
共有51条指令,包含27条硬件执行的内核 指令和24条基于现有硬件结构的高效率的 仿真指令;
数据传送类指令
1. 2. 3. 4. 5. 6. MOV CLR PUSH POP MOV SWPB MOV SXT ;将立即数234H传送到R5寄存器 ;将R5寄存器清零 ;保存状态寄存器,堆栈指针-2 ;从堆栈中恢复状态寄存器,堆栈指针+2 ;寄存器中的值为2345H ;执行后R5的内容为4523H ;寄存器中的值为2345H ;执行后R5的内容为0045H,因为低字节 符号位为0 MOV #2388H,R5 ;寄存器中的值为2388H SXT R5 ;执行后R5的内容为FF88H,因为低字节 符号位为1 (SXT:扩展符号位,低位字节符号扩展到高位字节) #234H,R5 R5 SR SR #2345H,R5 R5 #2345H,R5 R5

430IO口介绍

430IO口介绍

MSP430 单片机IO 端口介绍收藏MSP430的端口有P1、P2、P3、P4、P5、P6、S和COM(型号不同,包含的端口也不仅相同,如MSP430X11X系列只有P1,P2端口,而MSP430X4XX系列则包含全部上述端口),它们都可以直接用于输入/输出。

MSP430系统中没有专门的输入/输出指令,输入/输出操作通过传送指令来实现。

端口P1`P6的每一位都可以独立用于输入/输出,即具有位寻址功能。

常见的键盘接口可以直接用端口进行模拟,用查询或者中断方式控制。

由于MSP430的端口只有数据口,没有状态口或控制口,在实际应用中,如在查询式输入/输出传送时,可以用端口的某一位或者几位来传送状态信息,通过查询对应位的状态来确定外设是否处于“准备好”状态。

端口的功能。

(1)P1,P2端口:I/O,中断功能,其他片内外设功能如定时器、比较器;(2)P3,P4P5P6端口:I/O,其他片内外设功能如SPI、UART模式,A/D转换等;(3)S,COM端口:I/O,驱动液晶。

MSP430各端口具有丰富的控制寄存器供用户实现相应的操作。

其中P1,P2具有7个寄存器,P3~P6具有4个寄存器。

通过设置寄存器我们可以实现:(1)每个I/O位独立编程;(2)任意组合输入,输出和中断;(3)P1,P2所有8个位全部可以用作外部中断处理;(4)可以使用所以指令对寄存器操作;(5)可以按字节输入、输出,也可按位进行操作。

端口P1,P2的功能可以通过它们的7个控制寄存器来实现。

这里,Px代表P1或P2。

(1)PxDIR:输入/输出方向寄存器。

8位相互独立,可以分别定义8个引脚的输入/输出方向。

8位再PUC后都被复位。

使用输入/输出功能时,应该先定义端口的方向。

作为输入时只能读,作为输出时,可读可写。

0:输入模式;1:输出模式。

如:P1DIR|=BIT4; //P1.4输出,P2DIR=0XF0; //高4位输出,低4位输入。

第二章MSP430单片机软件开发基础

第二章MSP430单片机软件开发基础

ADD &220H,&230H ; MOV &230H,&240H ; ADDC &222H,&232H ; MOV &232H,&242H ; MOV #0,&244H ; ADDC #0,&244H ;
对应低位字相加 保存低位和 高位相加的时候要加上低位的进位 保存高位和 清除&244H单元,为保存高位进位做准备 保存高位进位
程序计数器
[4] &:
地址符号
[5] #:
立即数符号
[6] @:
寄存器间接寻址
[7] direct:
寄存器直接寻址
2.2 寻址方式
1.概述
MSP430有七种寻址方式 [1]寄存器寻址 [2]变址寻址 [3]符号寻址 [4]绝对寻址 [5]间接寄存器寻址 [6]间接增量寻址 [7]立即寻址
2.2 寻址方式
SXT R5

执行后R5的内容为0045H
MOV #2388H, R5 ;
寄存器R5中的值为2388H
SXT R5

执行后R5的内容为FF88H
2.3 指令系统介绍
2.3.2 数据运算类指令
1.加法指令
[1] ADD(内核指令):源操作数和目的操作数相加
ADD[.W]/ADD.B SRC,DST ;SRC+DST->DST
2.3.2 数据运算类指令

1.加法指令
[4] DADD(内核指令):带进位的BCD数相加指令
;SRC+DST+C->DST(十进制)
DADD[.W]/DADD.B SRC,DST;按照BCD码执行加法操作

MSP430烧写程序

MSP430烧写程序

MSP430无论是仿真还是烧写程序,一般可以通过:JTAG、SBW、BSL接口进行。

1、JTAG是利用边界扫描技术,在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430内部数据地址总线上,所以可以访问到430的所有资源,包括全地址FLASH、RAM及各种寄存器。

可以用于对430的仿真和编程,主要连接线有TMS、TCK、TDI、TDO,430还需要另两条线路RST、TEST来启动JTAG命令序列。

2、SBW是SPY-BI-WIRE,可以简称为两线制JTAG,主要有SBWTCK(连接到JTAG 接口的7脚TCK)与SBWTDIO(连接到JTAG接口的1脚TDO/TDI),该接口主要用于小于28脚的2系列单片机,因为28脚以内单片机的JTAG一般与IO口复用,为了给用于留有更多的IO资源,才推出SBW接口。

SBW同JTAG一样可以访问到430内部的所有资源。

注:目前MSP430F5XX系列中也有SBW接口,原理同2系列的SBW。

3、BSL是TI在430出厂时预先固化到MCU内部的一段代码,该代码用户不可读写,这有点类似与DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。

BSL通过UART协议与编程器连接通信。

编程器可以发送不同的通信命令来对MCU的存储器做不同的操作,可以把这种方式称为BSL接口。

BSL代码的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动时让PC指向BSL内部固化的程序。

这种特殊的启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。

BSL启动后,就可以通过预先定义好的UART协议命令对MCU进行读写访问了。

4、一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,只要把这三种方式都堵上,430的程序不就安全了吗?所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。

430单片机技术3

430单片机技术3

第三章 MSP430指令系统与程序接口 MSP430指令系统与程序接口
3.2 寻址方式
5.绝对寻址 5.绝对寻址 特点: 特点:存储器地址在指令中直接给出 例如: &AABB AABBH CCDDH;(AABB AABBH CCDDH 例如:MOV &AABBH,&CCDDH;(AABBH)→(CCDDH) 6.间接寻址 6.间接寻址 特点: 特点:寄存器内容为存储器地址 例如: @R10, 例如:MOV @R10,R11 R10) →(R11) [(R10)] →(R11)
第三章 MSP430指令系统与程序接口 MSP430指令系统与程序接口
3.3 指令系统介绍
3.3.2 数据运算类指令 2.减法指令 2.减法指令 [5] DEC DEC DST [6] DECD DECD DST [7] TST 实际是由CMP #0,DST生成的仿真指令 TST DST 实际是由CMP #0,DST生成的仿真指令
第三章 MSP430指令系统与程序接口 MSP430指令系统与程序接口
3.3 指令系统介绍
3.3.3 逻辑运算类指令 2.移位指令 2.移位指令 [1] RLA RLA DST 算数左移 [2] RLC RLC DST 带进位算数左移 [3] RRA RRA DST 算数右移 [4] RRC RRC DST 带进位算数右移
移位指令rlarladst算数左移rlcrlcdst带进位算数左移rrarradst算数右移rrcrrcdst带进位算数右移msp430msp43033指令系统介绍334位操作类指令clrcc标志位清零clrnn标志位清零clrzz标志位清零setcc标志位置位msp430msp43033指令系统介绍334位操作类指令setnn标志位置位setzz标志位置位dint禁止可屏蔽中断eint允许可屏蔽中断msp430msp43033指令系统介绍335跳转与程序流程控制类指令br转移到目标操作数任何寻址方式call子程序调用指令jcjhs有进位大于等于时转移无符号比较jeqjz相等为零时转移msp430msp43033指令系统介绍335跳转与程序流程控制类指令jge大于等于时转移有符号比较jl小于时转移有符号比较jmp无条件转移jn结果为负时转移msp430msp43033指令系统介绍335跳转与程序流程控制类指令jncjlo无进位小于时转移无符号比较10jnejnz不为零时不相等时转移11ret子程序返回12reti中断返回13nop空操作msp430msp43034程序设计341程序设计基础步骤确定算法画出流程图进行资源分配

MSP430单片机原理

MSP430单片机原理
19
第2章 MSP430
例如将 P1.0 置高、将 P1.1 置低,将 P1.2 取反,我们可以写成: P1OUT |= 0x01; //P2.0 置高 P1OUT &= ~0x02; //P2.1 置低 P1OUT ^= 0x04; //P2.2 取反 在寄存器头文件中,已经将 BIT0~BIT7 定义成 0x01~0x80,上述程序也
USCI_B1(I2C、SPI)。 • 60kB+256B的flash程序存储器,2kB的RAM数据存储器。 • 64引脚QFP封装。
2
第2章 MSP430
MSP430F24x系列单片机功能结构示意图
3
MSP430F249单片机引脚图
第2章 MSP430
4
(1)CPU简介
第2章 MSP430
MSP430单片机的CPU为16位RISC精简指令集的处理器, 只有27条正交汇编指令和7种寻址方式。RISC处理器基 本上是为高级语言所设计的,编译程序对正交指令系 统很容易做到最优化,利于产生高效紧凑的代码。 MSP430CPU中集成了16个16位通用寄存器R0~R15, 其中R0~R3分别复用为程序指针PC、堆栈指针SP、状 态寄存器SR和常数发生器CG1/CG2。这些寄存器之间 的操作只需要一个CPU周期。
12
第2章 MSP430
4)C语言区分大小写字母,C语言编译器在对程序进行编 译时,对于程序中同一个字母的大小写作为不同的变 量来处理。例如定义一个延时函数的形式参数time,但 是如果程序当中再出现一个由大写字母定义的标识符 TIME,那么它们在程序当中是两个不同的标识符,是 没有冲突的。
5)C语言程序中有且只有一个main函数,一个C语言程序, 无论main函数的物理位置在那里,总是从main函数开 始执行。

430汇编浮点库的使用方法

430汇编浮点库的使用方法

430汇编浮点库的使用方法.txt跌倒了,爬起来再哭~~~低调!才是最牛B的炫耀!!不吃饱哪有力气减肥啊?真不好意思,让您贱笑了。

我能抵抗一切,除了诱惑……老子不但有车,还是自行的……430汇编浮点库的使用方法使用时要注意的事情说一下1. 你如果是二进制数字,比如说是从AD采样过来的数据直接用于计算的,应该先把二进制转换浮点形式,你可以调用CNV04.S43里面的子程序,把二进制转换做浮点形式。

2. 浮点数的存储形式是,高16位存在低地址里面,低16位存在高地址里面比如说十进制浮点数1.5,用浮点库表示是80400000。

你要保存这个数据的时候,比如要保存在200--203h这四个字节里面。

要把8040H存在200H和201H这个地址里面,把0000H存在202h和230H里面。

因为浮点库传递的是地址,它只把存放浮点数高位16地址传递给子程序。

即把200H传递给子程序。

子程序会默认把存放浮点数的低16位地址当作200H+2=202H。

千万不要把低16位浮点放在1FEH和1FFh里面,不然就错了3. CNV04.S43是转换整型的程序。

比如说你的浮点数80400000h,表示成十进制是1.5,用CNV04.S43中的子程序转换时,只能转换出来整数1,0.5没有办法转换要想显示小数点以后的数字,可以放大,比如说×10000000,以后你得到的整数就可以包括很多小数部分了另外一个方法是,你的浮点数转换成BCD码后,小数部分被省略,再把BCD转换成浮点,这样再做减法,得到的就是小数部分了,再转换BCD后就很好了给个简单的减法例子X-Y=Z比如说X=84000000H(浮点形式)Y=83121200H(浮点形式)MOV #8400H,290HMOV #0H,292HMOV #8312H,296HMOV #1200H,297HCALL #F_SUF_SUCALL #FLT_SAV ; 寄存器全部压栈保护(略)SUB #(ML/8)+1,SP ;MOV #290H,RPRES ; 将290h存放的是浮点的MSBMOV #296H,RPARG ; 将VAL2的高字地址给RPARGCALL #FLT_SUBMOV 0(SP),RESULT ;MOV 2(SP),(RESULT+2) ;ADD #(ML/8)+1,SP ;CALL #FLT_REC ; 寄存器全部出栈(略)RET。

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

例:将地址为2000H和 2001H 的 两 内 存 单 元 内容相加,结果存在 地址2002H单元中。
……
var3 = var1 + var2; ……
data ends
Code segment Assume cs:code,ds:data
一一对应 机器语言程序
A0 00 20 02 06 01 20 A2 02 20 AL , var2
操作数
存储器 操作数
间 接 寻 址
寄存器寻址:寄存器的值就是操作数 直接寻址: 使用符号或数字直接给出操作数的地址 间接寻址: 寄存器中的值或含有寄存器的表达式的值 是操作数的地址 立即数寻址:使用符号(常量)或数字直接给出操作数
存储器操作数寻址方式
直接寻址: 指令中直接给出存储器操作数的地址 (常数或地址符号) 寄存器间接寻址 : 存储器操作数的地址=寄存器的值 寄存器相对寻址 : 存储器操作数的地址=寄存器的值+相对量 通常相对量是一个常数或常量 基址加变址寄存器 :存储器操作数的地址= (基址)寄存器的值+变址寄存器的值 相对基址加变址寄存器 :存储器操作数的地址=
#100 , R7 #0 , R8
#50 , array(R8) ;变址寻址 X(Rn) R8 R7 array_init
#0 , R6 #100 , R7 #array , R9
;???
@R9+ , R6 R7 accumulate
;采用间接增量寻址 方式可简化程序
MOV MOV MOV MOV MOV MOV MOV
R5 , R4 R5 , EDE(R4) R5 , EDE R5 , &EDE @R5 , R4 @R5+ , R4 #10h , R4
;R5 ;R5 ;R5 ;R5 ;(R5) ;(R5) ;10h
R4 (EDE+R4) (EDE) (EDE) R4 R4,R5=R5+1 or 2 R4
( expr ) : 地址为 expr 的内存单元(字节/字) 变址寻址/相对 Rn 寻址 符号寻址/相对 PC 寻址 存储器操作 绝对寻址/相对 SR(0) 寻址 数寻址方式 Rn 寄存器间接寻址 Rn 寄存器间接增量寻址 立即数寻址/PC寄存器间接增量寻址 Rn : n=4~15
不同寻址方式的主要用法
原则上,一条指令中允许组合任何有效的源操作数寻址方式 (7种)和目的操作数寻址方式(4种),但实际编程时, 不同的寻址方式有其主要的用途: 符号寻址:主要用于FLASH中的常量和RAM中的变量的寻址 绝对寻址:主要用于硬件外设寄存器和RAM中的变量的寻址 变址寻址:主要用于FLASH中的常量表和RAM中的数组的寻址 寄存器间接(增量)寻址:主要用于FLASH中的常量表和RAM中
……
按功能 指令分类
2) 操作数:指明参与操作的数据或数据所在的地方。
在汇编语言中需指明
操作数所在的地方
寻址方式
操作数能够放在何处?
计算机中哪些地方可以存放操作数? CPU如何使用不同的操作数?
地址总线 AB
CPU
寄存器0 寄存器1 …… 寄存器15 存 储 器 I/O 接 口
输 入 设 备
I/O 接 口
;0 ;4 ;8 ;C
1 5 9 D
2 6 A E
3 7 B F
R9 = 0 1 2 3 4 5 6 7 8 9 A B C D E F LED显示: 0 1 2 3 4 5 6 7 8 9 A B C D E F
举例:数组定义及其使用
…… array DS16 …… MOV MOV array_init: MOV INC DEC JNZ …… MOV MOV MOV accumulate: ADD DEC JNZ …… 100 ; 定义一个含有100个字类型数组元素的数组
相对寻址
X(Rn) 变址寻址 X(PC) 符号寻址 X(SR) 绝对寻址

寄存器间接寻址
@Rn @Rn+ @PC+ 立即数寻址
寄存器间接寻址与 X=0 的相对寻址具有相同的功能, 但寄存器间接寻址的指令中不需要 X, 因此寄存器间接寻址的指令长度更短。 因此,从功能上看,除了寄存器寻址方式外的其余 6 种寻 址方式都可以看成为相对寻址方式,其中寄存器的内容是 存储器操作数的地址的全部或一部分 ,相对寻址是寄存器 间接寻址方式的扩展。
MSP430 的 3 种指令格式
双操作数指令(Double Operand Instruction)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
op-code
S-Reg
Ad B/W
As
D-Reg
单操作数指令(Single Operand Instruction)
15 14 13 12 11 10 9 8 7 6
第2章
MSP430微控制器概述
与寻址方式
第二节
MSP430 CPU的寻址方式
一、概述
1. 程序语言简介 2. 指令的基本构成
二、寻址方式
程序语言
高级语言程序
int example1( )
{ int var1,var2,var3;
汇编语言程序
data segment var1 db ? var2 db ? var3 db ?
输 出 设 备
数据总线 DB
控制总线 CB
操作数的来源
……
指令1
代 码 段
指令2 指令3 指令4
立即数 常数表
CPU I/O端口 操作数 I/O端口
……
常数1 常数2 ……
RAM 操作数
寄存器操作数
数 据 段
数据1 数据2 数据3 ……
操作数与寻址方式
寄存器 操作数
假定:I/O与存储器统一编址
寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器寻址 相对基址加变址寄存器寻址 立即数寻址
B/W
5
4
3
2
1
0
op-code
As/Ad
S/D-Reg
跳转指令(Jump Instruction)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
op-code
C
10-Bit PC Offset
MSP430 寻址方式详解
寄存器寻址方式
ቤተ መጻሕፍቲ ባይዱ
变址寻址方式
(R5+2)
(R6+6)
code
data
R10
指针(地址)
R10 R11+0
data
R11+0
实验验证:R10自增操作何时进行?
提示: MOV @R10+, 100(R10)
读取存储器操作数 (R10); R10=R10+2; 将读取得到的数据写入(R10+100)中。 读取存储器操作数 (R10); 将读取得到的数据写入(R10+100)中; R10=R10+2
绝对寻址方式——
机器指令:SR(0)寄存器相对寻址 效果上:直接寻址方式
(EDE)
(TONI)
举例:MOV &EDE , &TONI
;EDE=0F016h ;TONI=01114h
code
y=TONI x=EDE
data
EDE
操作数的地址 EDE TONI
data
TONI
思考: 比较符号与绝对寻址方式相同点和不同点
Start: ……
MOV AL , var1 ADD …… MOV var3 , AL Code ends end start
}
区别?
为什么 要学汇编?
学习汇编语言的意义:
汇编语言程序反应机器运行的详细过程,通过学习汇编语 言程序,可以加深对计算机工作过程的理解;
在直接控制硬件和有严格时间要求的场合,使用汇编语言 比高级语言反而更容易。 汇编语言特点: 1.步骤更加细化,细化到CPU的基本操作(指令) 2.直接操作硬件(寄存器、内存、I/O端口)
2. 指令的基本构成
操作码
ADD MOV
操作数
src,dst src, dst
Start: ……
MOV &var1, R6
ADD &var2, R7 MOV R7, &var3
1) 操作码:指明CPU要执行什么样的 操作。是一条指令必不可少的部分, 在汇编语言中用助记符表示
数据传送 算术运算 逻辑运算 移位操作 控制转移 ……
任一操作数都有明确的寻址方式
既可作为源操作 数的寻址方式, 又可作为目的操 作数的寻址方式
只能作为源操作 数的寻址方式, 不能作为目的操 作数的寻址方式
X(Rn) X(PC) X(SR)
仅从As和 Ad 无法区分不同 的寻址方式
@Rn+ @PC+
由 As 和 S-Reg 共同决定源操作数的寻址方式 由 Ad 和 D-Reg 共同决定目的操作数的寻址方式
(基址)寄存器的值+变址寄存器的值+相对量
通常相对量是一个常数或常量
MSP430 操作数的来源示意图
立即数
代码 常数表 RAM 操作数
CPU 执行部件
R4 R5
RAM
数据与堆栈
寄存器 操作数
R15
PC SP SR
I/O端口 操作数
寄存器操作数
SFR操作数
存储器操作数
二、MSP430 CPU的 7 种寻址方式 以 MOV 指令为例: MOV
Rn (n=4~15) 寄存器相对寻址 X , Y 为相对量 通常为常数或常量
举例:MOV 2(R5) , 6(R6)
相关文档
最新文档