ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:73.23KB ,
资源ID:4623870      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4623870.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验5汇编语言程序结构.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验5汇编语言程序结构.docx

1、实验5汇编语言程序结构实验5 汇编语言程序结构 一、 实验目的1. 掌握编写和调试汇编语言程序的方法;2. 掌握模块化汇编语言程序设计方法3. 了解简单电路的控制方法二、 实验任务1. 简单电子表的设计1) 硬件连接2) 延时子程delay: PUSH R14 PUSH R15MOV #4h, R15 ww2: MOV #0x0FFF, R14 ;外层循环ww1: DEC R14 ;内层循环JNZ ww1DEC R15JNZ ww2POP R15POP R14 RET3) 完整程序程序框图如下:程序代码如下:#include msp430.h ; #define controlled incl

2、ude file NAME main ; module name PUBLIC main ; make the main label vissible ; outside this module ORG 0FFFEh DC16 init ; set reset vector to init label RSEG CSTACK ; pre-declaration of segment RSEG CODE ; place program in CODE segmentinit: MOV #SFE(CSTACK), SP ; set up stackmain: NOP ; main program

3、MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer MOV.B #0,&P2SEL MOV.B #0FFH,&P2DIR ;P2置为基本/输出端口(控制秒值) BIC.B #BIT1,&P4SEL BIS.B #BIT1,&P4DIR ;P4置为基本/输出端口(控制蜂鸣器) BIC.B #BIT0+BIT1,&P5SEL BIS.B #BIT0+BIT1,&P5DIR ;P5置为基本/输出端口(控制分钟值) again: BIS.B #BIT1,&P4OUT MOV.B #0FFH,&P2OUT BIS.B #BIT0+BIT1,&P5OUT

4、;p2 p4 p5输出端口初始化 w0: MOV.B #0FFH,R6 MOV #4,R7 ;初始化控制分钟输出的R6以及为其计数的R7w1: MOV #60,R4 MOV.B #0FFH,R5 ;初始化控制秒输出的R5以及为其计数的R4w2: MOV.B R5,&P2OUT CALL #delay DEC R5 DEC R4 JNZ w2 ;秒循环 DEC R6 MOV.B R6,&P5OUT DEC R7 JNZ w1 ;分钟循环 MOV.B #0FFH,&P2OUT BIC.B #BIT1,P4OUT ;满4分钟,蜂鸣器响 CALL #delay BIS.B #BIT1,P4OUT JM

5、P again ;重复上述过程 delay: PUSH R14 ;延时子程 PUSH R15 MOV #4h, R15 ww2: MOV #0x0FFF, R14ww1: DEC R14 JNZ ww1 DEC R15 JNZ ww2 POP R15 POP R14 RET END4) 选做:增加按键控制功能程序框图如下:程序代码如下:#include msp430.h ; #define controlled include file NAME main ; module name PUBLIC main ; make the main label vissible ; outside th

6、is module ORG 0FFFEh DC16 init ; set reset vector to init label RSEG CSTACK ; pre-declaration of segment RSEG CODE ; place program in CODE segmentinit: MOV #SFE(CSTACK), SP ; set up stackmain: NOP ; main program MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer MOV.B #0,&P2SEL MOV.B #0FFH,&P2DIR ;P

7、2置为基本/输出端口(控制秒值) BIC.B #BIT1,&P4SEL BIS.B #BIT1,&P4DIR ;P4置为基本/输出端口(控制蜂鸣器) BIC.B #BIT0+BIT1+BIT2,&P1SEL BIC.B #BIT0+BIT1+BIT2,&P1DIR ;P1的三个引脚置为基本/输入端口(控制按键) BIC.B #BIT0+BIT1,&P5SEL BIS.B #BIT0+BIT1,&P5DIR ;P5置为基本/输出端口(控制分钟值) again: BIS.B #BIT1,&P4OUT MOV.B #0FFH,&P2OUT BIS.B #BIT0+BIT1,&P5OUT ;p2 p4

8、 p5输出端口初始化 w0: MOV.B #0FFH,R6 MOV #4,R7 ;初始化控制分钟输出的R6以及为其计数的R7w1: MOV #60,R4 MOV.B #0FFH,R5 ;初始化控制秒输出的R5以及为其计数的R4w2: MOV.B R5,&P2OUT CALL #delay DEC R5 CALL #test ;调用检测按键子程,检测按键是否按下 DEC R4 JNZ w2 ;秒循环 DEC R6 MOV.B R6,&P5OUT DEC R7 JNZ w1 ;分钟循环 MOV.B #0FFH,&P2OUT BIC.B #BIT1,P4OUT ;满4分钟,蜂鸣器响 CALL #de

9、lay BIS.B #BIT1,P4OUT JMP again ;重复上述过程 delay: PUSH R14 ;延时子程 PUSH R15 MOV #4h, R15 ww2: MOV #0x0FFF, R14ww1: DEC R14 JNZ ww1 DEC R15 JNZ ww2 POP R15 POP R14 RET test: PUSH SR ;检测按键子程k2: BIT.B #BIT0,&P1IN ;检测K2(清零)是否按下 JNZ k4 ;否,跳转检测K4(暂停)是否按下 MOV.B #0FFH,&P2OUT ;是,秒清零 BIS.B #BIT0+BIT1,&P5OUT ;分钟清零

10、MOV.B #0FFH,R6 MOV #4,R7 MOV #60,R4 MOV.B #0FFH,R5 ;重置R6 R7 R4 R5 JMP k3 ;跳转去检测K3(开始)是否按下 k3: BIT.B #BIT1,&P1IN ;开始是否按下? JNZ k3 ;否,继续检测kk3: BIT.B #BIT0,&P1IN ;检测K2(清零)是否按下 JZ k2 ;是,去K2执行清零操作 BIT.B #BIT1,&P1IN ;否,检测K3(继续)是否按下 JNZ kk3 ;否,继续检测是否清零 k4: BIT.B #BIT2,&P1IN ;检测K4(暂停)是否按下 JZ kk3 ;是,检测K3(继续)是

11、否按下 POP SR ;否,结束检测 RET END 2. 数码管的显示控制1) 数码管按顺序显示09和A、b、C、d、E、F程序框图如下:程序代码如下:#include msp430.h ; #define controlled include file NAME main ; module name PUBLIC main ; make the main label vissible ; outside this module ORG 0FFFEh DC16 init ; set reset vector to init label RSEG DATA16_CLEDdata:DB 0x3F

12、,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07 DB 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71 RSEG CSTACK ; pre-declaration of segment RSEG CODE ; place program in CODE segmentinit: MOV #SFE(CSTACK), SP ; set up stackmain: NOP ; main program MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer MOV.B #0,&P6SEL MOV.B

13、#0FFH,&P6DIR MOV.B #0H,&P6OUT ;设置P6端口为基本/输出端口并初始化 MOV #LEDdata,R7 ;R7记录常量数据段首地址 BIS.B #BIT1,&P6OUT ;P6.1输出端口置为1back: MOV.B #16,R6 ;计数变量,为数据段数据总个数again: MOV.B 0(R7),R4 ;取出R7指向的数据给R4 MOV.B #8,R5 ;记录一个数据的总位数 w0: RLA.B R4 ;将R4中数据最高位左移到进位C JNC w1 ;若最高位为0(没有进位),转到w1 BIS.B #BIT4,&P6OUT ;若最高位为1,置P6.4OUT为1 J

14、MP w2 ;转到w2P6.2OUT输出脉冲 w1: BIC.B #BIT4,&P6OUT ;最高位为0,置P6.4OUT为0 w2: BIS.B #BIT2,&P6OUT BIC.B #BIT2,&P6OUT ;P6.2OUT输出一个脉冲 DEC R5 JNZ w0 ;重复输出,直到8位数全部输出完毕 BIS.B #BIT3,&P6OUT BIC.B #BIT3,&P6OUT ;P6.3输出脉冲,数码管去显示 CALL #delay INC R7 DEC R6 JNZ again ;重复以上过程 MOV #LEDdata,R7 ;初始化R7 JMP back ;重复整个过程 delay: P

15、USH R14 ;延时子程 PUSH R15 MOV #4h, R15 ww2: MOV #0xFFFF, R14ww1: DEC R14JNZ ww1 DEC R15 JNZ ww2 POP R15 POP R14 RET END2) (选做)编程实现按下KEY8KEY1键时,数码管显示81的数字。程序框图如下:(其中显示部分与1)相同)程序代码如下:#include msp430.h ; #define controlled include file NAME main ; module name PUBLIC main ; make the main label vissible ; o

16、utside this module ORG 0FFFEh DC16 init ; set reset vector to init label RSEG DATA16_CLEDdata:DB 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F RSEG CSTACK ; pre-declaration of segment RSEG CODE ; place program in CODE segmentinit: MOV #SFE(CSTACK), SP ; set up stackmain: NOP ; main program MOV.W #WDTPW+WD

17、THOLD,&WDTCTL ; Stop watchdog timer MOV.B #0,P6SEL MOV.B #0FFH,&P6DIR MOV.B #0H,&P6OUT MOV #LEDdata,R7 BIS.B #BIT1,&P6OUT MOV.B #0,&P1SEL MOV.B #0,&P1DIR k1: BIT.B #BIT0,&P1IN ;是否按下K1 JNZ k2 ;否,去检测K2 MOV #LEDdata+0,R7 ;是,去相应数据给R7 JMP display ;去显示R7内容k2: BIT.B #BIT1,&P1IN JNZ k3 MOV #LEDdata+1,R7 JMP

18、 displayk3: BIT.B #BIT2,&P1IN JNZ k4 MOV #LEDdata+2,R7 JMP displayk4: BIT.B #BIT3,&P1IN JNZ k5 MOV #LEDdata+3,R7 JMP displayk5: BIT.B #BIT4,&P1IN JNZ k6 MOV #LEDdata+4,R7 JMP displayk6: BIT.B #BIT5,&P1IN JNZ k7 MOV #LEDdata+5,R7 JMP displayk7: BIT.B #BIT6,&P1IN JNZ k8 MOV #LEDdata+6,R7 JMP displayk8: BIT.B #BIT7,&P1IN JNZ k1 MOV #LEDdata+7,R7 JMP display display: ;显示子程,内容与上一程序雷同,不在赘述 MOV.B 0(R7),R4 MOV.B #8,R5 w0: RLA.B R4 JNC w1 BIS.B #BIT4,&P6OUT JMP w2 w1: BIC.B #BIT4,&P6OUT w2: BIS.B #BIT2,&P6OUT BIC.B #BIT2,&P6OUT DEC R5 JNZ w0 BIS.B #BIT3,&P6OUT BIC.B #BIT3,&P6OUTJMP k1 END

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1