📄 freq-32bit-ok.s43
字号:
#include "msp430x13x.h";
;******************************************************************************
; MSP430F133
; -----------------
; /|\| XIN|-32768Hz
; | | |
; --|RST XOUT|-32768Hz
; | |
; | P4.7|-->74HC138_1(A)
; | P4.6|-->74HC138_2(B)
; | P4.5|-->74HC138_3(C)
; | P4.4|-->小数点驱动
; | P4.3|-->MC14543_5(A)
; | P4.2|-->MC14543_3(B)
; | P4.1|-->MC14543_2(C)
; | P4.0|-->MC14543_4(D)
; Tang Ming BD4WE
; 14,June 2003
;******************************************************************************
ORG 0F000h ; 程序开始处
RESET mov.w #300h,SP ; 初始化堆栈指针
clr R4 ;bin-bcd buffer low
CLR R5 ;bin-bcd buffer high
CLR R6 ;bcd result low
CLR R7 ;bcd result low
CLR R8 ;adder low
CLR R9 ;adder high
CLR R10
CLR R11
CLR R12
CLR R13
CLR R14
CLR R15 ;BIN_BCD COUNTER
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
MOV.B #001H,&P1SEL ;P1.0 TACLCK IN
SetupP1 MOV.B #001H,&P1SEL ;P1.0 TACLCK IN
MOV.B #02H,&P1DIR ;P1.1 DIR_ID LED
mov.b #00h,&P2DIR ;P2 input
mov.b #01Fh,&P2IE ;P2.0--2.4 INTERRUPT ENABLE
SetupP4 MOV.B #0FFH,&P4DIR ; P4.0 output
MOV.B #01FH,&P2IES
SetupTA mov.w #TASSEL_0+TACLR,&TACTL ; SMCLK, clear TAR
mov.w #OUTMOD_4 +CCIE,&CCTL0 ; CCR0 toggle, interrupt enabled
mov.w #0ffffh,&CCR0 ;
SetupTB mov.w #TBSSEL0+TBCLR,&TBCTL ; SMCLK, clear TAB
SetupC0 mov.w #CCIE,&TBCCTL0 ; CCR0 interrupt enabled
mov.w #7FFCh,&TBCCR0 ; CCR0 counts to 32767
MOV.B #0FFH,&P4DIR ; P4.0 output
bis.w #MC0,&TBCTL ; Start Timer_B in upmode
bis.w #MC0,&TACTL ; Start Timer_a in continous mode
eint ; Enable interrupts
Frey_dis MOV R9,R4
MOV R8,R5
mov #32,R15
clr R7
clr R6
LOOP rla R5
rlc R4
dadd R6,R6
dadd R7,R7
dec R15
jnz LOOP
DIS0 clr R4
MOV R6,R4
AND #00FH,R4
ADD #070H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS1 clr R4
MOV R6,R4
RRA R4
RRA R4
RRA R4
RRA R4
AND #00FH,R4
ADD #060H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS2 clr R4
MOV R6,R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
AND #00FH,R4
ADD #0D0H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS3 clr R4
MOV R6,R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
AND #00FH,R4
ADD #040H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS4 clr R4
MOV R7,R4
AND #00FH,R4
ADD #030H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS5 clr R4
MOV R7,R4
RRA R4
RRA R4
RRA R4
RRA R4
AND #00FH,R4
ADD #0A0H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS6 clr R4
MOV R7,R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
AND #00FH,R4
ADD #010H,R4
MOV.B R4,P4OUT
CALL #DELAY
DIS7 clr R4
MOV R7,R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
RRA R4
AND #00FH,R4
ADD #00H,R4
MOV.B R4,P4OUT
CALL #DELAY
JMP Frey_dis
OVER_FLOW MOV.B #00H,R4
MOV.B R4,P4OUT
CALL #DELAY1
jmp RESET
DELAY MOV #02FFH,R11
LOOP1 DEC R11
JNZ LOOP1
RET
DELAY1 MOV #5FFFH,R11
LOOP2 DEC R11
JNZ LOOP2
RET
;------------------------------------------------------------------------------
TAX_ISR; Common ISR for CCR1-4 and overflow
;------------------------------------------------------------------------------
add.w &TAIV,PC ; Add Timer_A offset vector
jmp CCR0_ISR ; CCR0
reti ; CCR1
reti ; CCR2
reti
CCR0_ISR inc R14 ; CCR0
reti ; Return ISR
;------------------------------------------------------------------------------
TB0_ISR; Toggle P1.0
;------------------------------------------------------------------------------
bis.w #MC0,&TACTL ; Stop Timer_A
mov.W R14,R9
mov.W &TAR,R8
mov.w #TASSEL_0+TACLR,&TACTL ; SMCLK, clear TAR
CLR R14
bis.w #MC0,&TACTL ; Start Timer_a in continous mode
reti
;------------------------------------------------------------------------------
; Interrupt Vectors Used MSP430x13x/14x
;------------------------------------------------------------------------------
ORG 0FFFEh ; MSP430 RESET Vector
DW RESET ;
ORG 0FFECh ; Timer_AX Vector
DW TAX_ISR ;
ORG 0FFFAh ; Timer_B0 Vector
DW TB0_ISR ;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -