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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fc430_es417_cce.asm

?? lcdcdode cor customized
?? ASM
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
            mov.w   IROP2H, R14             ; Load the remainder from div oper
            mov.w   &LCD, R15               ; Set up the pointer to LCD table
            add.w   R8, R15                 ; Add the offset into the LCD table
            mov.b   LCD_Table(R14), 0(R15)  ; Update the actual LCD memory
            mov.w   #0, IROP2H              ; Divide by 10 to get the dividend
            mov.w   R10, IROP2L             ; Load the quotient
            mov.w   #0x0A, IROP1            ; Load the divisor
            call    #UDIV_32_16             ; Value = value / 10
            mov.w   IRACCL, R10             ; Load the dividend from the div op
            add.w   #0x01, R8               ; Increment loop counter
            jmp     dV1                     ; Repeat the loop
dV2:        mov.w   &LCD, R15               ; LCD[i] = LCD_Table[value]
            add.w   R8, R15                 ; Move the retrieved value to reg
            mov.b   LCD_Table(R10), 0(R15)  ; Set the actual LCD memory byte
            cmp.w   #0x00, R9               ; Sign = 0 ?
            jeq     dV3                     ; Yes, so do the jump
            mov.w   &LCD, R15               ; LCD[i-1] = LCD_Table[17];
            add.w   R8, R15                 ; Move the retrieved value to reg
            mov.b   &LCD_Table+17,0xFFFF(R15); Update the actual LCD memory
dV3:        ret                             ; Return from subroutine

;------------------------------------------------------------------------------

dispTemp:   mov.w   &tempDegF, R11          ; Fetch the current temp reading
            mov.w   #0x06, R10              ; Start position = 6
            mov.b   #0x00, &LCDM1           ; Clear the LCD memory
            mov.b   #0x00, &LCDM2           ; Clear the LCD memory
            mov.b   #0x00, &LCDM3           ; Clear the LCD memory
            mov.w   R10, R14                ; Set up parameter #1 for func call
            mov.w   R11, R12                ; Set up parameter #2 for func call
            call    #dispValue              ; Call function to display on LCD
            ret                             ; Return from subroutine

;------------------------------------------------------------------------------

dispTach:   mov.w   R12, R10                ; Display tachometer on LCD screen
            mov.w   #0x03, R11              ; Init temp register for param #1
            mov.b   #0x00, &LCDM4           ; Clear the LCD memory
            mov.b   #0x00, &LCDM5           ; Clear the LCD memory
            mov.b   #0x00, &LCDM6           ; Clear the LCD memory
            mov.b   #0x00, &LCDM7           ; Clear the LCD memory
            mov.w   R11, R14                ; Set up parameter #1 for func call
            mov.w   R10, R12                ; Set up parameter #2 for func call
            call    #dispValue              ; Call function to display on LCD
            ret                             ; Return from subroutine

;------------------------------------------------------------------------------

dispLevel:  mov.b   #0x00, &LCDM8           ; Display system level & bar on LCD
            and.b   #0xF0, &LCDM9           ; Clear lower byte of LCD memory
            mov.b   R12, R14                ; Init temp register with param #1
            sub.b   #0x00, R14              ; Check if level needs to be at 0
            jeq     dLevel0                 ; Yes so jump to set the level to 0
            sub.b   #0x01, R14              ; Check if level needs to be at 1
            jeq     dLevel1                 ; Yes so jump to set the level to 1
            sub.b   #0x01, R14              ; Check if level needs to be at 2
            jeq     dLevel2                 ; Yes so jump to set the level to 2
            sub.b   #0x01, R14              ; Check if level needs to be at 3
            jeq     dLevel3                 ; Yes so jump to set the level to 3
            sub.b   #0x01, R14              ; Check if level needs to be at 4
            jeq     dLevel4                 ; Yes so jump to set the level to 4
            sub.b   #0x01, R14              ; Check if level needs to be at 5
            jeq     dLevel5                 ; Yes so jump to set the level to 5
            jmp     dLevDone                ; Go to done
dLevel0:    mov.b   &LCDM8, &LCDM8          ; Set LCD memory to display level 0
            jmp     dLevDone                ; Go to done
dLevel1:    bis.b   #0x10, &LCDM8           ; Set LCD memory to display level 1
            bis.b   #0x03, &LCDM9           ; S17:S16
            jmp     dLevDone                ; Go to done
dLevel2:    bis.b   #0x20, &LCDM8           ; Set LCD memory to display level 2
            bis.b   #0x07, &LCDM9           ; S17:S16
            jmp     dLevDone                ; Go to done
dLevel3:    bis.b   #0x40, &LCDM8           ; Set LCD memory to display level 3
            bis.b   #0x0F, &LCDM9           ; S17:S16
            jmp     dLevDone                ; Go to done
dLevel4:    bis.b   #0x88, &LCDM8           ; Set LCD memory to display level 4
            bis.b   #0x0F, &LCDM9           ; S17:S16
            jmp     dLevDone                ; Go to done
dLevel5:    bis.b   #0x0F, &LCDM8           ; Set LCD memory to display level 5
            bis.b   #0x0F, &LCDM9           ; S17:S16
dLevDone:   ret                             ; Return from subroutine

;------------------------------------------------------------------------------
                                            ; Display all icons on LCD screen
dispAcc:    mov.b   #0xFF, &LCDM8           ; Enable all LCD segments in byte
            mov.b   #0xFF, &LCDM9           ; Enable all LCD segments in byte
            mov.b   #0xFF, &LCDM10          ; Enable all LCD segments in byte
            mov.b   #0xF7, &LCDM11          ; Enable all LCD segments in byte
            ret                             ; Return from subroutine

;------------------------------------------------------------------------------

dispUpArrow:                                ; Display the UP arrow on LCD
            and.b   #0x0F, &LCDM9           ; Clear all arrow segments first
            bis.b   #BIT4, &LCDM9           ; Enable the UP arrow segment
            ret                             ; Return from subroutine

;------------------------------------------------------------------------------

dispDownArrow:                              ; Display the DOWN arrow on LCD
            and.b   #0x0F, &LCDM9           ; Clear all arrow segments first
            bis.b   #BIT6, &LCDM9           ; Enable the DOWN arrow segment
            ret                             ; Return from subroutine

;------------------------------------------------------------------------------

rotateArrows:
            mov.w   &arrowState, R15        ; Rotate arrows once circular
            sub.w   #0x00, R15              ; Is current state at 0 ?
            jeq     rArrow0                 ; Yes, jump to state 0
            sub.w   #0x01, R15              ; Is current state at 1 ?
            jeq     rArrow1                 ; Yes, jump to state 1
            sub.w   #0x01, R15              ; Is current state at 2 ?
            jeq     rArrow2                 ; Yes, jump to state 2
            sub.w   #0x01, R15              ; Is current state at 3 ?
            jeq     rArrow3                 ; Yes, jump to state 3
            jmp     rArrow4                 ; Current state is at 4 (end)
rArrow0:    and.b   #0x0F, &LCDM9           ; Clear all arrow segments
            bis.b   #BIT4, &LCDM9           ; Set the first arrow segment
            jmp     rArrow5                 ; Jump to inc arrow state counter
rArrow1:    and.b   #0x0F, &LCDM9           ; Clear all arrow segments
            bis.b   #BIT5, &LCDM9           ; Set the second arrow segment
            jmp     rArrow5                 ; Jump to inc arrow state counter
rArrow2:    and.b   #0x0F, &LCDM9           ; Clear all arrow segments
            bis.b   #BIT6, &LCDM9           ; Set the third arrow segment
            jmp     rArrow5                 ; Jump to inc arrow state counter
rArrow3:    and.b   #0x0F, &LCDM9           ; Clear all arrow segments
            bis.b   #BIT7, &LCDM9           ; Set the fourth arrow segment
            jmp     rArrow5                 ; Jump to inc arrowState counter
rArrow4:    mov.w   #0x00, &arrowState      ; Reset arrowState counter
rArrow5:    add.w   #0x01, &arrowState      ; Increment arrowState counter
            cmp.w   #0x04, &arrowState      ; Is (arrowState >= 4) ?
            jl      rArrow6                 ; Go to done if at end of state seq
            mov.w   #0x00, &arrowState      ; Reset arrowState counter
rArrow6:    ret                             ; Return from subroutine

;************************** GENERAL SYSTEM FUNCTIONS **************************

setStatLED: mov.b   R12, R14                ; Set LED based on system status
            sub.B   #0x00, R14              ; Check if status is zero
            jeq     setLED0                 ; Turn the LED ON
            sub.B   #0x01, R14              ; Decrement counter
            jne     setLED1                 ; Goto done
            mov.b   #ACTIVITY, &status      ; Blink (toggle) the LED
            xor.b   #ACTIVITY, &P1OUT       ; Physically toggle the LED pin
            ret                             ; Return from subroutine
setLED0:    mov.b   #0x00, &status          ; Turn LED ON
            bic.b   #ACTIVITY, &P1OUT       ; Physically clear the LED pin
setLED1:    ret                             ; Return from subroutine

;------------------------------------------------------------------------------
                                            ; Translate pulse count totals into
                                            ; corresponding actual RPMs
updateTach: mov.w   &tachCount, R12         ; Get the tachometer value
            rra.w   R12                     ; Divide by 2
            mov.w   #60, &IROP1             ; Multiply by 60 to get RPM
            mov.w   R12, &IROP2L            ; Load the main factor
            call    #UMPY_16x16             ; Call the 16-bit multiply function
            mov.w   &IROP2L, &tachRPM       ; Store the result into RAM
            mov.w   #0x00, &tachCount       ; Reset the pulse counter
            ret                             ; Return from subroutine

;************************* INTERRUPT SERVICE ROUTINES *************************

ISR_PORT2:  bit.b   #TACH, &P2IFG           ; Tachometer pulse detected ?
            jnc     ISR_P2D                 ; No, goto done
            add.w   #0x01, &tachCount       ; Yes, increment pulse counter
            bic.b   #TACH, &P2IFG           ; Clear PORT2 interrupt flag
ISR_P2D:    reti                            ; Return from interupt

;------------------------------------------------------------------------------

ISR_TIMER0_A1:
            bic.w   #LPM0, 0x0(SP)          ; Clear LPM0
            bic.w   #TAIFG, &TA0CCTL1       ; Clear TA0CCR1 interrupt flag
            reti                            ; Return from interrupt

;------------------------------------------------------------------------------

ISR_BT:     call    #toggleAnt              ; Blink the antenna icon on LCD
            reti                            ; Return from interrupt

;------------------------------------------------------------------------------

ISR_WDT:    bic.w   #LPM0, 0x0(SP)          ; Clear LPM0
            reti                            ; Return from interrupt


;-------------------------------------------------------------------------------
; Interrupt Vectors Used for MSP430F41x
;-------------------------------------------------------------------------------

            .sect   ".int00"                ; Basic Timer Interrupt Vector loc
            .short  ISR_BT                  ; Basic Timer Interrupt Vector value

            .sect   ".int01"                ; Port 2 Interrupt Vector location
            .short  ISR_PORT2               ; Port 2 Interrupt Vector value

            .sect   ".int05"                ; Timer_A3 CCR1-CCR2 Int Vector loc
            .short  ISR_TIMER0_A1           ; Timer_A3 CCR1-CCR2 Int Vector val
	
            .sect   ".int10"                ; Watchdog Timer Int Vector location
            .short  ISR_WDT                 ; Watchdog Timer Int Vector value

            .sect   ".reset"                ; Main RESET Int Vector location
            .short  RESET                   ; Main RESET Int Vector value

;-------------------------------------------------------------------------------

            .end                            ; End of assembly source code

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91美女片黄在线观看91美女| 国产精品久久久久久久裸模| 欧美色涩在线第一页| 99r国产精品| 99久久99久久免费精品蜜臀| 成人久久视频在线观看| 国产成人鲁色资源国产91色综| 久久 天天综合| 狠狠色2019综合网| 韩国av一区二区| 国产乱码一区二区三区| 国产精品白丝jk白祙喷水网站| 国产乱人伦偷精品视频不卡| 粉嫩蜜臀av国产精品网站| 成人午夜私人影院| 色综合久久久久综合体桃花网| 91色porny| 欧美日韩小视频| 欧美一区二区视频在线观看2020| 欧美电影免费观看高清完整版在线观看 | 免费观看在线色综合| 日本aⅴ精品一区二区三区| 久草热8精品视频在线观看| 国产一区二区福利| eeuss鲁一区二区三区| 色偷偷久久人人79超碰人人澡| 欧美性感一类影片在线播放| 欧美精品在线一区二区三区| 91精品在线一区二区| 久久久久久麻豆| 国产精品素人视频| 亚洲一二三四久久| 麻豆精品一区二区三区| 国产成人免费在线视频| 在线观看日产精品| 精品国产91洋老外米糕| 亚洲欧美在线视频观看| 日韩和欧美的一区| 粉嫩aⅴ一区二区三区四区五区| 91社区在线播放| 日韩亚洲电影在线| 中文字幕中文在线不卡住| 亚洲成av人片一区二区| 激情五月播播久久久精品| www.99精品| 日韩一级片在线观看| 中文字幕在线不卡一区| 日韩黄色小视频| www.日韩av| 日韩欧美精品在线| 一区在线中文字幕| 麻豆91精品91久久久的内涵| 成人激情校园春色| 欧美一区二区三区在线电影| 国产拍欧美日韩视频二区| 亚洲一区二区中文在线| 国内精品久久久久影院一蜜桃| 91色.com| 国产偷v国产偷v亚洲高清| 亚洲在线视频一区| 成人理论电影网| 日韩午夜激情视频| 亚洲最大成人综合| 国产激情视频一区二区三区欧美 | 欧美视频一二三区| 欧美激情一区二区在线| 日韩av电影天堂| 在线影视一区二区三区| 久久久午夜电影| 美国三级日本三级久久99 | 自拍偷拍亚洲激情| 国产另类ts人妖一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产亚洲制服色| 男女视频一区二区| 欧美无砖砖区免费| 亚洲视频香蕉人妖| 成人国产免费视频| 国产日韩成人精品| 久久精品999| 欧美一级淫片007| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品视频观看| 精品在线一区二区| 欧美一区二区日韩| 亚洲午夜私人影院| 色婷婷激情久久| 亚洲日本va午夜在线影院| 国产传媒日韩欧美成人| 精品日韩一区二区三区| 免费成人在线观看视频| 欧美精品久久天天躁| 亚洲国产精品自拍| 欧美亚洲高清一区二区三区不卡| 亚洲欧洲国产专区| 99精品国产热久久91蜜凸| 国产欧美日韩在线| 丁香天五香天堂综合| 国产亚洲欧美色| 国产美女在线观看一区| 精品日韩一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 日韩欧美一二三四区| 久久超碰97中文字幕| 精品欧美乱码久久久久久1区2区| 日本成人在线看| 日韩精品一区二区三区视频在线观看| 男人的天堂亚洲一区| 欧美va在线播放| 国产乱码一区二区三区| 国产欧美一区二区精品久导航| 国产乱理伦片在线观看夜一区| 国产欧美日韩麻豆91| av在线这里只有精品| 日韩理论片在线| 欧美最新大片在线看| 日韩在线一区二区三区| 91精品国产高清一区二区三区 | 国产在线视频精品一区| 久久综合九色欧美综合狠狠| 国产精品一区二区在线播放| 国产欧美视频一区二区三区| 99久久精品免费看国产免费软件| 亚洲男同性视频| 欧美精品久久一区| 国产在线精品视频| 国产精品久久久久aaaa樱花 | 欧美乱妇15p| 黑人精品欧美一区二区蜜桃| 中文字幕不卡的av| 色婷婷一区二区三区四区| 无码av中文一区二区三区桃花岛| 3d成人动漫网站| 国产91丝袜在线18| 亚洲美女电影在线| 日韩欧美成人激情| 成人黄色777网| 日韩精品每日更新| 国产婷婷一区二区| 精品视频免费在线| 国产在线精品一区二区夜色| 国产精品久久精品日日| 欧美日韩中文一区| 国产一区二区看久久| 一区二区三区在线免费观看 | 亚洲男人的天堂av| 欧美一区二区三区免费| 国产99精品国产| 亚洲高清在线精品| 久久久精品天堂| 欧美在线观看视频一区二区三区| 久久精品久久久精品美女| 最近中文字幕一区二区三区| 欧美丰满嫩嫩电影| 不卡一区在线观看| 免费精品视频最新在线| 综合久久一区二区三区| 欧美大片日本大片免费观看| 一本到三区不卡视频| 韩国成人精品a∨在线观看| 一区二区三区在线观看视频| 精品播放一区二区| 日本精品一区二区三区四区的功能| 久久精品99久久久| 亚洲在线中文字幕| 国产精品你懂的| 欧美大片国产精品| 欧美久久免费观看| 9色porny自拍视频一区二区| 蜜臂av日日欢夜夜爽一区| 一区二区三区四区乱视频| 久久久国产综合精品女国产盗摄| 在线观看国产一区二区| 成人app软件下载大全免费| 美腿丝袜亚洲一区| 亚洲成av人片在线| 亚洲精品乱码久久久久久日本蜜臀| 欧美精品一区二区不卡| 欧美精品久久99久久在免费线 | 国产精品第一页第二页第三页| 日韩欧美视频一区| 欧美精品九九99久久| 一本一道波多野结衣一区二区| 国产精品一区二区久久精品爱涩| 日韩av中文字幕一区二区三区| 亚洲综合色在线| 亚洲欧美另类久久久精品2019| 国产欧美一区二区三区沐欲| 欧美成人精品1314www| 91精品国产高清一区二区三区蜜臀 | 99精品视频一区二区| 国产ts人妖一区二区| 精品一二三四在线| 精品一区二区三区在线观看国产| 五月天中文字幕一区二区| 亚洲一区二区在线视频| 亚洲理论在线观看| 亚洲麻豆国产自偷在线| 国产精品不卡一区二区三区| 欧美高清一级片在线观看|