msp430 单机片汇编语言 求助

[复制链接]
查看11 | 回复1 | 2010-8-9 23:18:39 | 显示全部楼层 |阅读模式
求高人解释下面的Code, 为什么效果上是在Output上显示 0到7 RRA R4 4次有什么用?
#include"msp430x20x3.h"
;-------------------------------------------------------------------------------

ORG
0F800h
; Program Reset
;-------------------------------------------------------------------------------
RESET
mov.w #0280h,SP
; Initialize stackpointer
StopWDT
mov.w #WDTPW+WDTHOLD,&WDTCTL; Stop WDT
SetupP1
mov.b #00Fh,&P1DIR
; P1.0 output, else input

mov.b #001h,&P1OUT
; P1.4 set, else reset
Mainloop


nop;

mov.b &P1IN,r4;

rra.b
r4;

rra.b
r4;

rra.b
r4;

rra.b
r4;

mov.b r4,&P1OUT;

br
#Mainloop; Required only for debugger

;

;

ORG
0FFFEh
; MSP430 RESET Vector

DW
RESET
;

END

回复

使用道具 举报

千问 | 2010-8-9 23:18:39 | 显示全部楼层
mov.b #00Fh,&P1DIR上面这句将P1口设定为P1.0~P1.3为输出口,P1.4~P1.7为输入口。为什么?因为P1DIR的每一个bit对应了P1口的一个管脚,当某个bit为1时,对应的口为输出脚,该bit为0时,对应的口为输入脚。这句把0Fh,也就是00001111放到P1DIR里面。所以,低四位为输出,高四位为输入Mainloop中所做的唯一一件事情就是将P1口高四位读到的数值从低四位放出去mov.b &P1IN,r4 注意你之前的设置,由于P1口只有高四位为输入,所以读到的数值,假设你现在P1口上接的数值是0x7A。那么这条指令执行之后,读到寄存器R4中的数值为0x70(因为低四位是输出脚,不可能从外面读到数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行