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

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

?? i2c_eemem.s43

?? MSP430 I2C模塊與EEPROM的接口匯編程序
?? S43
?? 第 1 頁 / 共 2 頁
字號:
            sub.b   #39,RXTXData        ; Yes, convert numbers A-F to binary
Test_end    and.b   #0Fh,RXTXData       ; Blank upper nibble by logical AND
                                        ; with '0000 1111' binary
Test_ret    ret

Get3digits  call    #RX                 ; Get first byte of address     
            call    #Test_Blck          ; Test if indicates memory block 0 or 1
Get2digits  call    #RX                 ; Get Byte = 1st byte of address within
                                        ; block, or 1st data byte to write
            call    #Test_Num           ; Convert to Binary
            rla     RXTXData            ; Rotate byte up to recieve next byte 
            rla     RXTXData            ;    "         "       "       " 
            rla     RXTXData            ;    "         "       "       "
            rla     RXTXData            ;    "         "       "       "
            push.b  RXTXData            ; Save upper byte on stack  
            call    #RX                 ; Get byte = 2nd byte of address or data   
            call    #Test_Num           ; Convert to Binary
            add.b   @SP+,RXTXData       ; Add upper byte back to form word
            ret

;-------------------------------------------------------------------------------
TX_String;  Set up and transmit ASCII strings, R11 used as pointer
;           Note: End of a string in quotes is read as null character = 0
;-------------------------------------------------------------------------------
TX_S1       mov.b  @R11+,RXTXData       ; Move string start to data buffer
            call   #TX_Byte             ; Set up to send string
            tst.b  0(R11)               ; Test if next character in string = 0,
                                        ; R11 autoincremented above
            jnz    TX_S1                ; If not "0" then loop again (see note)
            ret                         ; String complete, return 
            
;-------ASCII strings to diplay on PC-------------------------------------------
String0     DB CR,LF,"If address < 100 hex use leading 0 (ex.= 0ff)"
String1     DB CR,LF,CR,LF,"r/w? "
String2     DB "000-1ff? "
String4     DB "w?"
String5     DB "= "
            
            EVEN 
;-------------------------------------------------------------------------------
TX_Byte_ASCII; Convert and TX byte from DataConv in two ASCII bytes
;-------------------------------------------------------------------------------
            push   DataConv             ; Save current value to stack
            call   #NUM_ASCIR           ; Convert value to ASCII
            push   DataConv             ; Save value again, cleaned off below
            call   #NUM_ASCIA          
            ret                         

NUM_ASCIR;  Convert Numbers 0 to f into ASCII left aligned  @ 2(SP)
            rrc    2(SP)                ; 1st pass - value pushed to stack is 
            rrc    2(SP)                ; rotated to move upper nibble in place 
            rrc    2(SP)                ; of lower nibble
            rrc    2(SP)                ;

NUM_ASCIA;    
            and    #0fh,2(SP)           ; AND with 0000 1111 = clear high nibble
            add    #030h,2(SP)          ; Add 30 hex to convert to ASCII (0-9)
            cmp    #03ah,2(SP)          ; Value = 0 to 9 decimal? 
            jlo    NUM_End              ; Yes, jump next instruction
            add    #039,2(SP)           ; No, adjust for hex values A to F 
NUM_End     mov    2(SP),RXTXData       ; load TX buffer, sent in TX_Byte below
            mov    @SP+,0(SP)           ; Clean up top of stack
                                        
;-------------------------------------------------------------------------------
TX_Byte;    Set up CCR0 to send byte via UART
;           Note: Program loops until all bits sent via TA0_ISR
;-------------------------------------------------------------------------------
            mov    #TX_Count,BitCnt     ; Routine labels (in TX_Count)->Pointer
            push   &TAR                 ; Save current Timer_A count to stack
            add    #Bitime,0(SP)        ; Add next bit offset to value on stack
            pop    &CCR0                ; Load adjusted next bit offset to CCR0
            mov    #OUTMOD2+OUTMOD0+CCIE,&CCTL0  ; Set up mode and interrupt,
                                                 ; TX space = start bit 
TX_Wait     bit    #CCIE,&CCTL0         ; TX complete? CCIE cleared in TA0_ISR
            jnz    TX_Wait              ; No, loop again 
            ret                         
                                        
;-------------------------------------------------------------------------------
RX_Ready;   Subroutine that readies UART to RX byte into RXTXData buffer.
;-------------------------------------------------------------------------------
            mov    #RX_Count,BitCnt     ; Routine labels (in RX_Count)->Pointer
            mov    #CCIS0+CM1+CCIE+CAP+OUT,&CCTL0  ; Set up mode and interrupt
            ret 
                                    
;-----------UART Subroutines end-------------------------------------------------                                        
            
                                        
;-------------------------------------------------------------------------------
TA0_ISR;    CCR0/UART interrupt service routine - each interrupt transmits or 
;           receives one bit from the PC until all 8 bits of a byte are complete
;-------------------------------------------------------------------------------
            add    #Bitime,&CCR0        ; Add offset for next bit
            br     @BitCnt+             ; Branch to next routine in 
                                        ; RX_count or TX_count table, set above
TX_Bit      rra.b  RXTXData             ; LSB is shifted to carry
            jc     TX_Mark              ; Jump if bit = 1
TX_Space    bis    #OUTMOD2,&CCTL0      ; TX space to PC 
            reti                        
TX_Comp     bic    #CCIE,&CCTL0         ; All Bits TX, disable interrupt 
TX_Mark     bic    #OUTMOD2,&CCTL0      ; TX mark to PC 
            reti                        
RX_Edge     bic    #CAP,&CCTL0          ; Switch to compare mode
            add    #Bitime_5,&CCR0      ; First databit 1.5 bits from edge
            mov    #CPUOFF+GIE,0(SP)    ; CPU off (LPM0)& enable interrupts bits
                                        ; set in status register contents stored
                                        ; on stack. Use LPM0 since need DCO on  
            reti                        
RX_Bit      bit    #SCCI,&CCTL0         ; Get bit waiting in SCCI
            rrc.b  RXTXData             ; Store received bit
            reti
            
RX_Comp     bic    #CCIE,&CCTL0         ; All bits RX, disable interrupt 
            mov    #GIE,0(SP)           ; Enable interrupts in SR value on stack
            reti                        
            
;-------------------------------------------------------------------------------
; Table of routines moved into BitCnt and used to branch within the Timer A ISR
;-------------------------------------------------------------------------------
            EVEN
RX_Count    DW     RX_Edge              ; Set up Timer_A for RX
            DW     RX_Bit               ; RX first data bit
            DW     RX_Bit               ;    second
            DW     RX_Bit               ;    third
            DW     RX_Bit               ;    fourth
            DW     RX_Bit               ;    fifth
            DW     RX_Bit               ;    sixth
            DW     RX_Bit               ;    seventh
            DW     RX_Bit               ; RX eighth (last) data bit
            DW     RX_Comp              ; RX complete, process RX data
TX_Count    DW     TX_Bit               ; TX first data bit
            DW     TX_Bit               ;    second
            DW     TX_Bit               ;    third
            DW     TX_Bit               ;    fourth
            DW     TX_Bit               ;    fifth
            DW     TX_Bit               ;    sixth
            DW     TX_Bit               ;    seventh
            DW     TX_Bit               ; TX eighth (last) data bit
            DW     TX_Mark              ; TX stop bit = mark
TX_End      DW     TX_Comp              ; TX complete 
                                        
;-------------------------------------------------------------------------------
Init_Sys;   Initialize System Peripherals  
;-------------------------------------------------------------------------------
            mov    #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer, not used
SetupTA     mov    #TASSEL1+TACLR,&TACTL  ; Clear TAR & set TAR source = SMCLK
SetupBC     mov.b  #XTOFF+DIVA1+RSEL2+RSEL0,&BCSCTL1   ; ACLK/4  RSEL=5
SetupC0     mov    #OUT,&CCTL0          ; TXD idle as mark 
SetupP1_2   bis.b  #TXD,&P1SEL          ; P1.1 to output TA0 for TXD to PC
            bis.b  #TXD,&P1DIR          ; P1.1 set to output for TXD
            bis.b  #RXD,&P2SEL          ; P2.2 to input TA0 for RXD from PC
            bic.b  #SCL+SDA,&P2OUT      ; SCL & SDA data = 0, low when = outputs
            bis    #MC1,&TACTL          ; Start Timer_A in continous mode
            call   #Delay               ; Delay for crystal stabalization                  
            call   #Set_DCO             ; Calibrate DCO to 1228800 hz 
            eint                        ; General interrupt enable
            ret                         
                                        
;------------------------------------------------------------------------------- 
Delay;      Software delay
;------------------------------------------------------------------------------- 
            push   #0FFFFh              ; Delay to top of stack
L1          dec    0(SP)                ; Decrement value on top of stack
            jnz    L1                   ; Loop if value not = 0
            incd   SP                   ; Clean top of stack
            ret                         

;------------------------------------------------------------------------------- 
Set_DCO;    Subroutine: Sets DCO to selected frequency based on 'Delta' value.
;           R14 and R15 are temporarily used, they could also be used
;           elsewhere in the program. ACLK = 32768/4, Timer_A clocked by DCO
;------------------------------------------------------------------------------- 
            clr     R15                 ; Clear register
Setup_CC2   mov     #CCIS0+CM0+CAP,&CCTL2 ; Define CCR2=ACLK,CAP mode,pos. edge
Test_DCO    bit     #CCIFG,&CCTL2       ; Test flag, capture occured?
            jz      Test_DCO            ; No, loop until captured
            bic     #CCIFG,&CCTL2       ; Yes, clear interrupt flag
AdjDCO      mov     &CCR2,R15           ; Move captured SMCLK to R15
            sub     R14,R15             ; SMCLK difference into R15
            mov     &CCR2,R14           ; Save SMCLK to R14 in case another loop
                                        ; is needed to complete calibration
            cmp     #Delta,R15          ; Delta = SMCLK/(32768/4)?
            jlo     IncDCO              ; Jump if lower to increment DCO
            jeq     DoneDCO             ; Jump if equal to done
DecDCO      dec.b   &DCOCTL             ; If neither, then decrement DCO 
            jmp     Test_DCO            ; Loop to test again
IncDCO      inc.b   &DCOCTL             ; Increment DCO speed
            jmp     Test_DCO            ; Loop to test again 
DoneDCO     clr     &CCTL2              ; Calibration complete stop CCR2 
            ret

;-------------------------------------------------------------------------------
            RSEG   INTVEC               ; MSP430x11x1 interrupt vectors
;-------------------------------------------------------------------------------
            ORG     TIMERA0_VECTOR
            DW      TA0_ISR             ; Timer_A - Capture/Compare 0
            ORG     RESET_VECTOR
            DW      RESET               ; POR, ext. Reset, Watchdog

;-------------------------------------------------------------------------------
            END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频日韩视频在线观看| 亚洲欧美在线视频| 国产精品情趣视频| 婷婷久久综合九色综合绿巨人| 国产一区二区三区香蕉| 欧美午夜片在线观看| 国产欧美综合色| 青青草视频一区| 欧美男女性生活在线直播观看| 国产欧美一区二区三区在线老狼| 日韩精品一卡二卡三卡四卡无卡| 成人福利视频网站| 精品国产凹凸成av人网站| 亚洲妇女屁股眼交7| gogo大胆日本视频一区| 久久亚洲综合av| 麻豆传媒一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 国产视频亚洲色图| 国产呦精品一区二区三区网站| 777久久久精品| 夜夜嗨av一区二区三区四季av| 成人h动漫精品一区二| 国产欧美一区二区三区在线老狼| 精品一区二区三区久久| 日韩午夜激情视频| 三级在线观看一区二区| 欧美区在线观看| 亚洲6080在线| 91精品蜜臀在线一区尤物| 亚洲图片欧美一区| 欧美日韩国产美女| 亚洲高清免费在线| 欧美一区二区三区小说| 日韩av一级电影| 精品少妇一区二区三区| 精品一区二区三区久久久| 精品乱人伦一区二区三区| 国产一区免费电影| 国产日韩欧美综合一区| 成人avav在线| 一区二区三区在线影院| 欧美性受xxxx黑人xyx| 亚洲国产精品嫩草影院| 在线不卡欧美精品一区二区三区| 蜜桃av噜噜一区| 久久精品视频免费| 99热这里都是精品| 亚洲黄色性网站| 日韩亚洲欧美成人一区| 国产精品一品二品| 国产精品国产精品国产专区不蜜 | 欧美午夜电影网| 亚洲成人自拍偷拍| 久久综合九色综合久久久精品综合| 精品中文字幕一区二区小辣椒 | 国产精品久久久久7777按摩| 91老师国产黑色丝袜在线| 亚洲激情网站免费观看| 日韩欧美高清一区| 北岛玲一区二区三区四区| 一区二区三区成人| 精品欧美一区二区在线观看| 成人深夜在线观看| 日本亚洲欧美天堂免费| 国产精品你懂的在线欣赏| 欧美三区在线观看| 国产麻豆精品在线| 夜夜嗨av一区二区三区中文字幕| 欧美日韩免费在线视频| 久久精品国产精品亚洲综合| 亚洲视频综合在线| 日韩一区二区三区四区| 成人高清视频免费观看| 日本美女一区二区三区视频| 国产精品久久久久久妇女6080| 欧美日韩中字一区| 成人综合婷婷国产精品久久蜜臀 | 亚洲精品视频在线| 久久综合九色综合97婷婷| 一本久久a久久精品亚洲| 精品制服美女久久| 亚洲国产中文字幕| 自拍偷拍国产亚洲| 国产欧美一区二区精品久导航 | 国产精品久久久久久久久免费桃花| 欧美日韩国产综合一区二区三区| 国产精品一二一区| 日本大胆欧美人术艺术动态| 一个色妞综合视频在线观看| 国产亚洲一区二区三区在线观看| 欧美高清www午色夜在线视频| 成人免费毛片app| 国产在线视频精品一区| 日本亚洲一区二区| 五月天亚洲精品| 亚洲资源在线观看| 国产精品久久久久一区| 国产亚洲欧美色| 欧美r级在线观看| 日韩免费福利电影在线观看| 欧美一区二区视频在线观看 | 在线精品视频一区二区三四| www.日韩av| 大白屁股一区二区视频| 国内偷窥港台综合视频在线播放| 久久丁香综合五月国产三级网站 | 国产成人精品在线看| 久久国产精品一区二区| 免费在线观看日韩欧美| 视频一区二区三区中文字幕| 亚洲va天堂va国产va久| 亚洲第一主播视频| 五月激情综合网| 日产精品久久久久久久性色| 美女视频一区二区| 精品一区二区三区影院在线午夜| 激情综合一区二区三区| 精品在线一区二区| 国产精品综合一区二区三区| 国产成人精品一区二区三区四区| 成人一区二区在线观看| 91亚洲精品久久久蜜桃网站 | 91亚洲国产成人精品一区二三| 成人av资源站| 在线视频一区二区三区| 欧美二区乱c少妇| 日韩欧美的一区| 国产欧美日韩不卡免费| 亚洲乱码国产乱码精品精98午夜| 一区二区三区四区国产精品| 亚洲国产精品欧美一二99| 麻豆精品蜜桃视频网站| 国产乱码精品一区二区三区av| 成人激情黄色小说| 在线观看日韩电影| 日韩精品一区二区三区视频| 国产日韩欧美亚洲| 亚洲一区二区三区在线看| 久久精品国产99国产精品| 成人免费毛片aaaaa**| 一本久久a久久精品亚洲| 日韩一区国产二区欧美三区| 欧美国产欧美综合| 亚洲午夜精品一区二区三区他趣| 免费在线观看日韩欧美| www.成人在线| 欧美一区二区三区四区视频| 欧美激情综合在线| 亚洲国产欧美一区二区三区丁香婷| 久99久精品视频免费观看| 91在线小视频| 26uuu色噜噜精品一区| 伊人开心综合网| 国产综合色精品一区二区三区| 色狠狠综合天天综合综合| 欧美大尺度电影在线| 依依成人综合视频| 激情另类小说区图片区视频区| 91久久精品网| 欧美激情艳妇裸体舞| 欧美a级一区二区| 91免费看视频| 国产偷v国产偷v亚洲高清| 婷婷丁香激情综合| 99国产精品国产精品久久| 精品国产伦一区二区三区观看方式 | 欧美电视剧在线观看完整版| 一区二区免费看| 福利视频网站一区二区三区| 在线91免费看| 亚洲线精品一区二区三区| 99久久精品免费观看| 久久综合九色综合97婷婷女人| 日韩国产精品久久| 色综合中文字幕国产| 精品福利一二区| 免费在线观看视频一区| 欧美三片在线视频观看| 亚洲另类春色国产| 国产成人亚洲综合a∨婷婷| 国产欧美日韩卡一| 欧美一级片免费看| 久久综合久久鬼色中文字| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲精品欧美在线| 国产成人亚洲综合色影视| 欧美精品一区二区三区在线| 日韩极品在线观看| 欧美日韩一级片在线观看| 亚洲一区在线播放| 欧美性一级生活| 亚洲电影激情视频网站| 欧美日韩亚洲综合在线 | 精品一区二区三区在线播放| 日韩一区二区三区免费看| 免费亚洲电影在线| 日韩午夜电影在线观看| 韩国视频一区二区| 精品国产免费久久|