




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验目的:1. 掌握EW430 集成开发环境的使用2. 掌握EW430 下常用的View 和DEBUG 命令3. 了解MSP430F1xx 单片机结构4. 掌握P1P6 基本输入/输出有关寄存器功能实验基本任务:1. 掌握查看和修改寄存器、存储器、外围模块端口寄存器方法(1) 练习将CPU 寄存器 R4、 R5 分别修改为 0x1234, 0x5678(2) 练习将P2DIR、P2OUT 分别修改为0xFF、0xFF(3) 练习将地址为0200h 开始的5 个存储器单元改为0x12、0x34、0x56、0x78、0x90(4) 练习将地址为0210h 开始的6 个存储器单元改为“MSP430”对应的ASCII 码2. 学习工程空间管理项目的方法3. 了解 MSP430F1xx 单片机结构1) 了解MSP430F149 单片机结构2)了解MSP430F135 单片机结构4. 了解端口 P1P6 的选择PxSEL、方向PxDIR、输入PxIN、输出PxOUT 各寄存器功能1) 修改 P2DIR=0xFF,设置端口P2 为输出方向,按表2-1,修改P2OUT 的值,记录看到放光二极管L8L1 的现象,并分析原因2)修改P1DIR=0x00,设置端口P1 为输入方向,按照表2-2,按下相应的按键,打开Register 窗口查看P1IN 的值,可用按位查看的方式查看P1IN 各位的值,见图2-6。注意:每按下实验板按键,需在Register 下退出P1/P2,比如选一次CPU register,然后再选P1/P2,重新查看P1/P2,否则P1IN 的值没有更新。5. 了解程序计数器PC(即R0寄存器)的变化规律 1)已知复位后,MSP430F1xx 的PC 寄存器从存储器0xFFFE0xFFFFH 单元获取一个字内容作为执行的第一条指令地址,请问该地址是多少?在实验中,程序执行的第一条指令是什么指令?用Go 命令执行程序,用break 可以暂停程序的执行,可查看当前寄存器的值, 当前 PC 指针的值指向将要执行的指令。2)在调试器是FET DEBUG 下, 如果将 FFFEFFFFh 内存的内容改为1200h,可否?为什么?3)更改项目的属性设置,选调试器是simulator,编译、连接后,进入DEBUG, 先将存储器FFFEFFFFh 的内容改为1200h, 在 DEBUG 下用reset 操作复位后,观察此时PC 值的变化, 再发 Go 命令执行程序,出现什么结果?为什么?实验结果:任务三MSP430F149存储系统空间分配存储系统起始地址末地址空间大小SFR(包含了所有外围模块内的I/O寄存器)0000h01ffh0.5KBRAM0200h09ffh2KBINFO1000h10ffh0.25KBFLASH1100hffffh59KB寄存器PC、SP、SR、R4R15、CYCLECOUNTER、CCTIMER1、CCTIMER2。MSP430F135存储系统空间分配存储系统起始地址末地址空间大小SFR(包含了所有外围模块内的I/O寄存器)0000h01ffh0.5KBRAM0200h03ffh0.5KBINFO1000h10ffh0.25KBFLASHc000hffffh15KB寄存器PC、SP、SR、R4R15、CYCLECOUNTER、CCTIMER1、CCTIMER2。MSP430F13x、MSP430F14x、MSP430F16x的引脚数目和功能与MSP430F149基本相同的,所以将实验板上的MCU更换为指定的MCU时,实验板系统仍能正常工作。同样道理,实验板系统对MSP430F157也基本兼容的。任务41.表2-1 I/O 寄存器P2OUT 和引脚P2.7P2.0 的关系L8L1 的状态P2.7P2.0的逻辑值P2OUT=0x00全亮00000000P2OUT=0xFF全灭11111111P2OUT=0xBD第二和第七个灯亮,其他灯灭10111101P2OUT=0x6E第一、五、八个灯亮,其他灯灭01101110原因:引脚P2.7P2.0与发光二极管相连,发光二极管的另一端接高电位,当引脚为1时,输出高电平,发光二极管不通,输出低电平时导通。2.表 2-2 P1IN 和管脚P1.7P1.0 的关系操作P1IN的值按下K30x7E同时按下K4、K50XE7同时按下K3、K10Xfa任务五 1.该地址是0x1100,程序执行的第一条指令是init: MOV #SFE(CSTACK), SP,初始化堆栈指针2.不能,因为程序烧如单片机后,这段内存是只读内存3.PC值变为0x1200,发Go命令执行程序时,出现错误对话框,Illegal opcode found on address 0x1200。原因在于PC值为0x1200,程序下一条指令将从0x1200读,而从Disassembly中可以看到该地址上没有指令,所以出现错误。 实验中尝试在simulator下,将FFFEFFFFh 的内容改为1200h后,再将0x1200的值改为3140 000a(即init: MOV #SFE(CSTACK), SP汇编后的指令),复位后能够正常执行第一段。实验3:寻址方式和指令系统学习实验目的:1. 学习MSP430的寻址方式和指令系统2. 了解计算机取指令、执行指令的工作过程3. 掌握DEBUA下调试程序的方法4. 掌握计算机中数的表示和编码实验基本任务:1. 学习寻址方式和指令系统打开S_number_name 工程空间,激活实验2 中建立的Lab_3 项目,编写下面L3_task1.s43,添加到Lab_3 的项目中, 同时移出项目自带的asm.s43, 编译连接后,在DEBUG 下单步执行程序,回答:下面每条指令采用了哪几种寻址方式?程序的功能是什么?如何查看程序执行的结果?按下面方式完成操作:1)先用 view 中的memory 操作将200h 开始的8 个内存单元内容顺序修改为01,02,03,04,05,06,07,08,09,0a;2) 用单步执行命令 step over(F10)执行一遍程序,注意观察每条指令执行后的结果,含相关寄存器和存储单元的变化;3)操作 EW430 左上角的Reset 快捷图标,复位程序,分别在JNZ next、exit 语句前设置一个断点,用连续执行命令Go(F5)执行程序,观察每次执行后的结果。4)如果将程序中的 ADD.B R14,R15 和INC R14 两条语句改为一条 ADD.B R14+,R15语句,采用了什么寻址方式?程序执行的功能是否改变?5)在 4)的基础上将程序中的ADD.B R14+,R15 改为ADD.W R14+,R15,将MOV.BR15, 0(R14)改为MOV.W R15, 0(R14), 重新执行程序,执行的结果有什么不同?6)思考:如果程序中的 INC R4 写成了INC.B R4, 执行的结果一样吗?为什么?2. 指令格式学习编写下面L3_task2.s43 源程序,判断指令正误,对错误的指令说明出错原因;对正确指令说明指令执行的操作。3. 调试程序练习(断点设置、调试、查看结果):程序L3_task3.s43 功能是向端口2(地址为&029h)传送0 值,延时一段时间,再传送0FFh 值。由于端口2 与发光二级管相连,看到的现象应该是8 个发光二级管全亮,延时,全灭,如此反复。但程序编写有误,不能实现上述现象,请查找其中的问题,并修改。4. 比较step into 和step over 的不同在修改好了的 L3_task3.s43 的基础上,调试程序,分别用Step into 和Step over1) 记录用 step over(F10)执行程序中的call 指令后,SP 的变化2) 记录用 step into(F11) 执行程序中的call 指令后,SP 的变化5. 理解计算机取指令执行指令的工作原理、以及取非法指令的结果。将RAM区200H内存单元的内容改为0000H,用disassembly 功能从200h开始反汇编查看表示一条什么指令,再修改PC寄存器的值为200H,单步执行指令,出现什么现象?如果在程序指令的流程中出现这样的情况,后果是什么? 分别用simulator和FET Debugger两种调试器方式试一试。6. 掌握计算机中数的表示和编码假设某内存单元的字内容为 FF05H,试问该内容看作无符号数是多少?看作带符号数是多少?看作一条指令的机器码,如何利用DEBUG下命令知道表示一条什么指令?如果内存单元的内容为4130H, 看作无符号数、看作带符号数、看作一条指令的机器码,分别表示什么?看作ASCII码,表示的是哪两个字符? 如何理解存放在内存中的内容?(提示:在DEBUG 下,利用memory 命令,将RAM 区的内容改为FF05H, 4130H,再用disassembly 命令反汇编该RAM 区内容,可查看所代表的指令)。7. 理解CPU对存储器进行字操作遵循的“对准偶地址”原则在430 单片机中,当向存储器进行一个字节的读/写操作时,对存储器单元的地址没有奇、偶的限制;当向存储器进行一个字的读/写操作时,要求从偶地址开始(即对准偶地址原则),存放的规则采用“小端模式”(Little Endian),即字数据中的低字节存放在低地址单元,高字节存放在高地址单元。如果从奇地址读写,往往会给编程者带来非意想的数据结果。阅读下面程序L3_task7.s43, 填写下表3-1 和3-2,比较上机前后得到的结果。实验结果:任务一指令寻址方式MOV #0A00h, SP立即数寻址,寄存器寻址MOV #200h, R14立即数寻址,寄存器寻址MOV #0, R15立即数寻址,寄存器寻址MOV #6,R13立即数寻址,寄存器寻址ADD.B R14, R15寄存器间接寻址,寄存器寻址INC R14寄存器寻址DEC R13寄存器寻址JNZ next符号地址寻址MOV.B R15, 0(R14)寄存器寻址,寄存器间接增量寻址JMP exit符号地址寻址程序完成的功能是将200h开始的01h,02h,03h,04h,05h节累加在一起并存储在0206h。4.改为ADD.B R14+,R15后,采用了寄存器间接增量寻址方式,程序执行的功能不变。5.R14的值变为了020Ch,不再是0206h,最终的累加结果变为了3BB8H6.不一样,因为执行第一次INC.B R14后,R14的值变为了0x0001,任务二指令出错原因MOV.B #256,R4Number out of range. Valid range is -128 (-0x80) to 255 (0xFF). ADD 5, R5Invalid syntax MOV R1,R6+Illegal effective address SUB R7, #9Invalid syntaxMOV &R9, R10Invalid syntaxJMP #mainIllegal effective address 任务三错误原因:1.CALL delay应该使用立即数寻址2.delay子程所用的被减数太小任务四1. 用step over执行call的指令后,SP未发生变化,仍为0x0A002. 用step into执行call的指令后,SP变为0x09FE,说明程序使用了堆栈任务五反汇编的指令是?,即没有与之对应的汇编指令。在simulator调试器下修改PC值后,单步执行时出现错误Illegal opcode found on address 0x0200。在FET Debugger调试器下,无反应。任务六FFO5H看作无符号数是65285,看作带符号数是-251,查看该指令的方法:在DEBUG下,利用memory命令将RAM去的内容改为FF05H,(注意由于小端模式存储原理,应依次改为05 FF),然后用disassembly命令反汇编该段RAM内存,看到指令为and.w R15,R5。如果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公路工程试验检测师资格考试(公共基础)综合能力测试题及答案(2025年黑龙江)
- 2025年电机检修工考试题及答案
- 电火花成形机床操作工理论知识考核试卷及答案
- 2025年英语证书考试题目及答案
- 飞机自动驾驶仪测试调整工转正考核试卷及答案
- 产前筛查诊断人员资质考试考前练习题及答案(2025年龙岩)
- 安全员专项考核试卷及答案
- 2025年天津公路工程试验检测师资格考试(公共基础)综合能力测试题及答案
- 天然药物化学模拟考试题(含答案)
- 矿山安全设备监测检修工技能操作考核试卷及答案
- 消化内科重点专科申报
- 脑梗死健康宣教及指导
- 山东2025年中小学国防教育知识竞赛
- 脑卒中的饮食护理课件
- 遵守安全生产法 当好第一责任人
- 2025秋统编版小学道德与法治二年级上册教学设计(附目录)
- 秋分主题班会课件
- 民政政策宣讲课件
- 餐厅餐饮服务员试用期劳动合同范本
- 创伤性气胸护理查房
- DB42T 750-2011 家用燃气燃烧器具安装维修服务质量评价规范
评论
0/150
提交评论