msp430单片机学习例程2:
i/o口的输出输入设定,2进制led驱动,建议使用外接3.3v直流电源到cn3,注意正负极,大面积接地的一脚为负极。这时cn5、cn6的短路片请拔除。
程序清单:
#include "msp430x41x.h"
;*********************************************************************
; msp-fet430p410 demo - 轻触开关1连接p4.4,同时接1上拉10k电阻。
;p3.0-3.7发光二极管+300 欧姆电阻。
;按一次k1,cpu计数写入r15,r15再输出到p3.0-3.7,以2进制的方式驱动
; 发光二极管,你就可以看到逢二进一的现象了?
; msp430f413
; -----------------
; /|\| xin|-
; | | |
; --|rst xout|-
; | |
; | p3.0--3.7 |-->发光二极管+300 欧姆电阻到地。
; | p4.5 |-->轻触开关1连接p4.4,同时接1上拉10k
;电阻
;*********************************************************************
;---------------------------------------------------------------------
org 0e000h ; program start
;---------------------------------------------------------------------
reset mov.w #300h,sp ; initialize stackpointer
stopwdt mov.w #wdtpw+wdthold,&wdtctl ; stop wdt
mov.b #0000h,&p3out ;p3口清零
bis.b #0ffh,&p3dir ; p3.0--3.7 设定为输出
bis.b #00fh,&p4dir ; p4.4 设定为输入
clr15 mov.w #0000h,r15 ; r15 寄存器清零;
main mov.b r15,&p3out ; r15输出到p3
bit.b #010h,&p4in ; p4.5是否按下?
jnz main ; 没有,跳到main
wait mov.w #0ffffh,r12 ; 按下,等待,去除抖动
l1 dec.w r12 ; 去除抖动延时
jnz l1 ;
add #1h,r15 ;r15加一
cmp #0270fh,r15 ; r15是否已经加到9999
jhs clr15 ; 是的,跳到clr15
jmp main ; 没有,跳到main
;---------------------------------------------------------------------
; interrupt vectors used msp430f41x
;---------------------------------------------------------------------
org 0fffeh ; msp430 reset vector
dw reset ;
end