亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? flash_monitor.s43

?? 實現(xiàn)msp430遠程升級程序的代碼
?? S43
?? 第 1 頁 / 共 2 頁
字號:
;// THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
;// REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
;// INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
;// FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
;// COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
;// TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
;// POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
;// INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
;// YOUR USE OF THE PROGRAM.
;//
;// IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
;// CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
;// THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
;// OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
;// OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
;// EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
;// REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
;// OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
;// USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
;// AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
;// YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
;// (U.S.$500).
;//
;// Unless otherwise stated, the Program written and copyrighted
;// by Texas Instruments is distributed as "freeware".  You may,
;// only under TI's copyright in the Program, use and modify the
;// Program without any charge or restriction.  You may
;// distribute to third parties, provided that you transfer a
;// copy of this license to the third party and the third party
;// agrees to these terms by its first use of the Program. You
;// must reproduce the copyright notice and any other legend of
;// ownership on each copy or partial copy, of the Program.
;//
;// You acknowledge and agree that the Program contains
;// copyrighted material, trade secrets and other TI proprietary
;// information and is protected by copyright laws,
;// international copyright treaties, and trade secret laws, as
;// well as other intellectual property laws.  To protect TI's
;// rights in the Program, you agree not to decompile, reverse
;// engineer, disassemble or otherwise translate any object code
;// versions of the Program to a human-readable form.  You agree
;// that in no event will you alter, remove or destroy any
;// copyright notice included in the Program.  TI reserves all
;// rights not specifically granted under this license. Except
;// as specifically provided herein, nothing in this agreement
;// shall be construed as conferring by implication, estoppel,
;// or otherwise, upon you, any license or other right under any
;// TI patents, copyrights or trade secrets.
;//
;// You may not use the Program in non-TI devices.
;//
;-------------------------------------------------------------------------------
;******************************************************************************
;   MSP430 Flash Monitor
;
;   Description:
;   This monitor provides the capability of updating the MSP430 flash
;   via USART
;
;   Communications parameters are:  9600bps
;                                   8 bits/char, 1 stop bit, no parity
;                                   no flow control
;
;   The can be built to run at reset, or to run an application first.
;   When configured to run at reset, it waits for a character on the USART.
;   If it doesn't receive a character on the USART within ~2 seconds of reset,
;   it will transfer code to a user program assumed to have a reset vector at
;   0xFBFE (Top of flash segment 2)
;
;   Valid commands are: C - calculate a checksum on user flash
;                       D - dump user flash to USART
;                       E - Erase user flash (requires password)
;                       G - Run user application
;                       I - Erase information flash
;                       U - Update user flash - the monitor will expect an ASCII
;                           file in MSP430.txt format
;
;
;   For 'F1xx devices MCLK = SMCLK = DCOCLK  ~ 750 KHz
;   For 'F4xx devices MCLK = SMCLK = DCOCLK = 1.048576 MHz
;
;
;
;                MSP430F169
;             -----------------
;         /|\|              XIN|-
;          | |                 |
;          --|RST          XOUT|-
;            |                 |
;            |             P3.6|------------>
;            |                 |  9600 - 8N1
;            |             P3.7|<------------
;
;   Jim Patterson
;   Texas Instruments, Inc
;   November 2006
;   Built with IAR Embedded Workbench Version: 3.41A
;
;   USART and target device selected in TargetDefs.h
;   test target Softbaugh DIr169 board
;******************************************************************************
#include  "TargetDefs.h"
#include  "flash_monitor.h"
;------------------------------------------------------------------------------
        PUBLIC  WarmStart

        RSEG CSTACK

OutString DS8 80          ;reserve 80 chars for output string
Address   DS16  1         ;dump start address
Count     DS16  1         ;dump word count
Pace      DS8   1         ;flag for pacing dump
FlashPtr  DS16  1         ;flash address update pointer
FlashBuf  DS8   32        ;RAM buffer for flash data
ByteCount DS16  1

#ifndef DIRECT_INTERRUPTS

    ASEG
    ORG 0xFC00  ;place at the bottom of Segment 1

Int_Priority_0: mov.w  &0xFBE0, PC
Int_Priority_1: mov.w  &0xFBE2, PC
Int_Priority_2: mov.w  &0xFBE4, PC
Int_Priority_3: mov.w  &0xFBE6, PC
Int_Priority_4: mov.w  &0xFBE8, PC
Int_Priority_5: mov.w  &0xFBEA, PC
Int_Priority_6: mov.w  &0xFBEC, PC
Int_Priority_7: mov.w  &0xFBEE, PC
Int_Priority_8: mov.w  &0xFBF0, PC
Int_Priority_9: mov.w  &0xFBF2, PC
Int_Priority_A: mov.w  &0xFBF4, PC
Int_Priority_B: mov.w  &0xFBF6, PC
Int_Priority_C: mov.w  &0xFBF8, PC
Int_Priority_D: mov.w  &0xFBFA, PC
Int_Priority_E: mov.w  &0xFBFC, PC
User_Reset:     mov.w  &0xFBFE, PC

#endif

#ifdef  DIRECT_INTERRUPTS
            ASEG
            ORG     MONITOR_START            ; Progam Start
#endif
;------------------------------------------------------------------------------
WarmStart: DW      MonStart

Reset:
#ifndef     DELAY_START  ; controls the monitor or application runs first

            cmp.w   #-1, &0xFBFE            ; Is the user reset programmed?
            jz      MonStart                ; Start monitor if it isn't
            mov.w   &0xFBFE, PC             ; If it is, start application
#endif
MonStart:   bic.b   #GIE, SR
            mov.w   #SFE(CSTACK),SP         ; Initialize stackpointer
            mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT

#ifdef  DELAY_START   ; don't start timer if user application runs first
SetupTA     mov.w   #TASSEL_1+MC_2+TAIE,&TACTL
            mov.w   #0, &TAR                ;Clear TimerA
; TimerA will overflow in 2 seconds.
; If it overflows before a character is received from the USART,
; control will be transferred to the user application (Vector at 0xFBFE).
; If the vector is unprogrammed (0xFFFF) the monitor will restart.
#endif

#ifdef  F1xx
            mov.b   #DCO1, DCOCTL             ; DCOCTL = 0x40
            bis.b   #(UTX+URX), &UART_PORTSEL ; Select UART function
SetupUART   bis.b   #UTXE_+URXE_,&UART_ME     ; Enable USART TXD/RXD
            bis.b   #CHAR,&U_CTL              ; 8-bit char
            bis.b   #SSEL0,&U_TCTL            ; UCLK = TACLK
            mov.b   #3,&U_BR0                 ; 32768/9600 = 3.41
            mov.b   #000h,&U_BR1              ;
            mov.b   #04Ah,&U_MCTL             ; Modulation
            bic.b   #SWRST,&U_CTL             ; Enable USART state machine
;
; Set flash timing generator for ~350kHz
;
Timing      mov.w   #FWKEY+FSSEL0+FN0,&FCTL2  ; *Timing generator = MCLK/2

#endif
#ifdef  F4xx
            bis.b   #(UTX+URX), &UART_PORTSEL
SetupUART   bis.b   #UTXE_+URXE_,&UART_ME   ; Enable USART TXD/RXD
            bis.b   #CHAR,&U_CTL            ; 8-bit characters
            mov.b   #SSEL1,&U_TCTL          ; UCLK = SMCLK
            mov.b   #06Dh,&U_BR0            ; 1.048576 MHz/9600
            mov.b   #000h,&U_BR1            ;
            mov.b   #003h,&U_MCTL           ; modulation
            bic.b   #SWRST,&U_CTL           ; Initialize USART state machine
            bis.b   #UART_RX_IFG,&IE1       ; Enable USART RX interrupt
;
; Set flash timing generator for ~333kHz
;
Timing      mov.w   #FWKEY+FSSEL0+FN1,&FCTL2  ; *Timing generator = MCLK/3

#endif

            mov.w   #GetWord, R7          ;R7 points to GetWord function
            mov.w   #SendString, R8       ;R8 points to string output function
            mov.w   #SendChar, R9         ;R9 points to char output function

Ready:      mov.w   #Prompt, R12
            call    R8                    ;#SendString

GetCmd:     call    #GetChar
;
;   Tests go here
;
            mov.w   #CmdTable, R6             ;Load address of command table
CheckChar:  mov.b   @R6, R5                   ;Load table entry to R5
            tst.b   R5                        ;At end of table?
            jz      Ready                     ;if yes, wait for next command
            cmp.b   @R6+, R12                 ;is character a valid command
            jz      ProcessCmd                ;if yes, process it
            jmp     CheckChar                 ;if no, check against next entry

ProcessCmd: sub     #CmdTable+1,R6            ;generate offset into jump table
            rla.w   R6
            call    CmdFunctions(R6)          ;call the command function
            jmp     Ready                     ;wait for another command

SendString: mov.w   R12, R14                ;Copy pointer to R14
SendNext:   mov.b   @R14+, R12              ;load next character
            tst.b   R12                     ;Null character?
            jz      StringDone              ;Return at end of string
            call    R9                      ;#SendChar
            jmp     SendNext
StringDone: ret

SendChar:   bit.b   #UART_TX_IFG, &UART_IFG ;is TX ready?
            jz      SendChar                ;Wait until it is
            mov.b   R12, &U_TXBUF           ;Send character
            ret                             ;return

ToString:                           ;R14 points to the result
            mov.b   #4, R11         ;This is the nibble counter
NextChar:   mov.b   #4, R15         ;R15 is the bit counter
Rotate:     rlc.w   R12             ;Move the MS bit in R12
            rlc.w   R13             ;into the LS bit in R14
            dec.w   R15             ;count the bits
            jnz     Rotate          ;4 iterations moves a nibble
            and.b   #0xF, R13       ;mask all but 4 LSBs
            cmp.b   #10, R13        ;Check magnitude
            jge     Add37
            add.b   #0x30, R13      ;add 0x30 to 0-9
            jmp     SaveHex
Add37:      add.b   #0x37, R13      ;add 0x37 to A-F
SaveHex:    mov.b   R13, 0(R14)     ;Store in OutString
            inc.w   R14             ;point to the next char in string
            dec.w   R11             ;Decrement the nibble count
            jnz   NextChar
            mov.b R11, 0(R14)       ;Terminate string with null char
            ret

; Receive 8-bit ASCII characters from USART and convert it to a binary value
; Binary word is returned in R12
; R15 tells how many nibbles to get, usually 2 or 4

GetWord:    mov.b #4, R15
            clr.w R14             ; Build word in R14
            mov.b   #1, R13       ; flag set for ASCII char, cleared for word

NextNibble: call  #GetChar        ; Get a character from USART in R12
            cmp.b #'0', R12       ; Check lower limit
            jl    WordDone        ; Just return char if < '0'
            cmp.b #'G', R12       ; Check upper limit 'G'
            jge   WordDone        ; Return if > 'F'
            cmp.b #':', R12       ; '0' <= (R12) <= 'F', check if < 3Ah
            jl    IsNumeric       ; convert if '0' <= (R12) <= '9'
            cmp.b #'A', R12       ; Check for 'A'
            jl    WordDone        ; Return if ':' >= (R12) <= 'A'
            sub.b #0x37, R12      ; if 'A'<=(R12)<='F', subract 0x37
            jmp   IsHex           ; Conversion to hex is done

IsNumeric:  sub.b  #'0', R12      ;if '0'<=(R12)<='9' subtract '0'

IsHex:      mov.b #0, R13         ;at least 1 hex character received
            rla.w R14             ;R14 <<= R14
            rla.w R14
            rla.w R14
            rla.w R14
            xor.w R12, R14        ; OR in new 4 bits
            dec.w R15             ; Received 4 nibbles?
            jz    WordDone        ; If yes, we have a word
            jmp   NextNibble      ; Wait for another character

WordDone:   tst.b R13             ; 1 or more hex chars received?
            jnz   ReturnChar      ; return if none
            mov.w R14, R12        ; Return word in R12

ReturnChar: ret                   ; Return with word in R12



; Get a char from USART, return it in R12
GetChar:    bit.b #UART_RX_IFG, &UART_IFG   ; wait for RX character
            jnz   ReadChar                  ; Read RXBUF if flag is set

#ifdef  DELAY_START               ; Checks for timer A overflow
                                  ; not assembled if DELAY_START not defined

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品每日更新| 日韩中文字幕不卡| 亚洲自拍偷拍欧美| 蜜桃av一区二区在线观看| 蜜臀va亚洲va欧美va天堂| 极品尤物av久久免费看| 另类专区欧美蜜桃臀第一页| 国产一区二区三区四| 91美女在线看| 久久久久国产精品麻豆| 日韩美女视频一区二区| 亚洲一区二区三区三| 日韩高清国产一区在线| 国产在线精品免费| av一区二区不卡| 欧美成人一区二区三区| 中文字幕乱码一区二区免费| 亚洲欧美日韩精品久久久久| 免费精品视频在线| 色偷偷88欧美精品久久久| 欧美精品一区二区三区蜜桃| 亚洲精品videosex极品| 日本一不卡视频| 91视频免费看| 国产精品嫩草99a| 精品一区二区三区视频在线观看| 欧美三级韩国三级日本三斤 | 国产日本欧美一区二区| 亚洲电影在线免费观看| 99视频热这里只有精品免费| 久久综合九色欧美综合狠狠| 午夜精品在线视频一区| 欧美性视频一区二区三区| 中文字幕欧美一| 懂色av一区二区三区免费观看| 欧美日韩国产123区| 亚洲成国产人片在线观看| 色播五月激情综合网| 中文字幕av一区 二区| 国产精品77777| 国产欧美精品日韩区二区麻豆天美| 国产精品996| 一区二区三区在线免费播放| 色偷偷成人一区二区三区91| 国产精品超碰97尤物18| 欧美丝袜自拍制服另类| 亚洲成人资源在线| 日韩一区二区三区视频在线 | 99精品国产视频| 亚洲一区二区三区四区在线| 欧美日韩免费视频| 午夜免费久久看| 国产视频一区二区在线观看| 欧美三级乱人伦电影| 天天综合色天天综合| 久久九九久精品国产免费直播| 国产aⅴ精品一区二区三区色成熟| 亚洲国产成人在线| 欧美一区在线视频| 91在线精品秘密一区二区| 秋霞影院一区二区| 亚洲人成亚洲人成在线观看图片 | 视频一区二区三区入口| 午夜日韩在线观看| 亚洲一卡二卡三卡四卡无卡久久| 亚洲男人的天堂在线aⅴ视频| 欧美高清一级片在线观看| 久久精品综合网| 久久久精品国产免大香伊| 欧美理论片在线| 欧美性一级生活| 欧美年轻男男videosbes| 91高清视频免费看| 欧美最新大片在线看| 精品视频一区二区三区免费| 欧美一区二区私人影院日本| 欧美一区二区三区公司| 欧美视频在线不卡| 日本高清不卡一区| 99re视频这里只有精品| 欧美日韩精品一区二区天天拍小说| 91视频在线看| 精品少妇一区二区三区免费观看| 久久久久青草大香线综合精品| 精品粉嫩aⅴ一区二区三区四区| 日韩欧美国产综合| 国产午夜三级一区二区三| 中文字幕精品一区二区精品绿巨人 | 狠狠色伊人亚洲综合成人| 免费的成人av| 国产69精品久久久久毛片 | 国产日韩av一区二区| 欧美精彩视频一区二区三区| 久久久久久久精| 亚洲视频一区在线| 精品在线亚洲视频| 成人动漫一区二区三区| 亚洲国产精品黑人久久久| 色综合久久久网| 久久这里只有精品6| 日本一区二区不卡视频| 精品一区二区在线观看| 日本黄色一区二区| 国产亚洲精品7777| 日韩avvvv在线播放| 99久久精品免费| 精品电影一区二区| 国产精品婷婷午夜在线观看| 亚洲成人精品影院| 色综合天天综合网国产成人综合天| 精品精品欲导航| 蜜臂av日日欢夜夜爽一区| 久久久国产精品麻豆| 自拍av一区二区三区| 91网站最新网址| 一色桃子久久精品亚洲| 裸体一区二区三区| 欧美一区在线视频| 视频一区二区欧美| 宅男噜噜噜66一区二区66| 亚洲国产三级在线| 91国内精品野花午夜精品| 亚洲精品久久久久久国产精华液| 成人精品视频一区二区三区尤物| 日韩一级片在线观看| 日本免费新一区视频| 91精品国产欧美日韩| 亚洲日本在线天堂| 欧美日韩在线亚洲一区蜜芽| 亚洲午夜精品网| 日韩一区二区三区在线观看| 老司机免费视频一区二区三区| 精品国精品国产| 国产精品99久久久久久久女警| 日本一区二区三区在线观看| 欧美亚洲国产一区二区三区va| 日韩电影一区二区三区四区| 精品国产免费人成在线观看| 高清成人免费视频| 亚洲伊人伊色伊影伊综合网| 欧美大片一区二区| 91在线你懂得| 亚洲va欧美va人人爽| 中文字幕高清一区| 日韩一区二区三区视频| 91成人国产精品| 色综合中文字幕| 国产精品亚洲第一| 国产综合色视频| 国产精品综合久久| 黄网站免费久久| 国产精品一级在线| 成人自拍视频在线| 中文乱码免费一区二区| 国产精品国产自产拍高清av王其| xvideos.蜜桃一区二区| 欧美日韩视频第一区| 国产一区二区三区不卡在线观看| 久久综合久久综合九色| 久久伊人蜜桃av一区二区| 国产精品美女久久久久久久网站| 一区二区三区在线观看国产| 亚洲大型综合色站| 视频一区二区中文字幕| 蜜桃一区二区三区在线| 狠狠色狠狠色综合日日91app| 久久成人久久爱| 懂色av一区二区三区免费看| 国产成人精品1024| 色综合久久综合中文综合网| 欧美性色黄大片手机版| 欧美一级久久久久久久大片| 久久综合av免费| 亚洲男同1069视频| 午夜精品久久久久久久| 国产专区综合网| 欧美在线你懂得| 亚洲国产精品高清| 亚洲国产sm捆绑调教视频| 久久精品99国产精品| 99麻豆久久久国产精品免费 | 欧美三级电影网| 久久婷婷久久一区二区三区| 国产精品看片你懂得| 婷婷亚洲久悠悠色悠在线播放| 久久99国产乱子伦精品免费| 91视频一区二区三区| 日韩精品中午字幕| 日韩经典一区二区| 一本色道亚洲精品aⅴ| 欧美α欧美αv大片| 一区二区三区美女视频| 99精品一区二区三区| 欧美精品一区二区三区在线播放| 视频精品一区二区| 欧美日韩高清一区二区不卡| 亚洲电影一级黄| 欧美日韩中文精品| 日韩国产欧美视频| 精品美女在线播放|