⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freq-32bit-ok.s43

📁 这是一个基于MSP430F133的频率计程序
💻 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 + -