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

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

?? msp430溫度測控程序.asm

?? MSP430系列單片機適用小程序
?? ASM
字號:
 南京航空航天大學 魏小龍 編寫,歡迎大家討論,交流     
                    
; 此示例介紹430的低功耗設計方法,程序包含顯示,鍵盤,ADC,定時器,中斷等等.
; 在這個例子中有LED顯示 與 行列式鍵盤,這些程序的編寫在相應的地方已經介紹
; 這個程序還是要求顯示出所按鍵的鍵值
; 但要求作到低功耗,所以大部分的事情在中斷程序里實現,
; 顯示用中斷實現,而且5秒沒有按鍵按下則自動關斷顯示,用以節省能耗
; 按健的值顯示在最左邊一位,
; ADC10(溫度的ADC轉換)顯示在最右邊的三位,
;  溫度轉換后暫時存放在220H---240H,然后求和,平均,-***H,/20H---->

;  以10禁進制顯示實際溫度值

;  約定:顯示緩存在200H  以后的6個單元,顯示位寄存器為 206H;208H為顯示計數器
;  20Ah 按鍵計時器

;  增加了報警功能
;  用鍵盤輸入兩位10進制數,為溫度警戒值
;  當溫度大于設置值時輸出報警

#include    "msp430x13x.h"
             RSEG    CSTACK                  ; System stack
      ;       DS      0   
             RSEG    CODE                    ; Program code 的開始    
             
Reset        mov     #SFE(CSTACK),SP         ; 
SetupWDT     mov     #WDTPW+WDTHOLD,&WDTCTL  ; 

SetupTA      mov     #TASSEL1+TACLR,&TACTL   ; SMCLK, Clear TAR
SetupC0      mov     #CCIE,&CCTL0            ; 使能CCR0 中斷
             mov     #500,&CCR0              ; 
SetupP1      bis     #MC1,&TACTL             ; 定時器工作在連續模式
             eint                            ; 開中斷
             MOV     #0FFDFH,&206H            
             MOV     #200H,&208H
             MOV     #30000,&20AH
             BIS.B   #08H,&P4DIR
        ;      MOV.B   #21H,&201H
             MOV.B   #22H,&202H
             MOV     #220H,&210H            ;ADC緩存的起始位置
             mov.b   #0,&212h
             mov.b   #0,&214h
Mainloop     bis     #LPM1,SR              ; 低功耗模式


;---------------------------------------------------------------------------
TA0_isr      add        #500,&CCR0            ; Add Offset to CCR0
             call       #adc10
             CMP        #240h,&210H
             JNZ        TA0_0
             CALL       #ADCHULI
      ;      
TA0_0   ;     CMP        #0,&20AH               ;按鍵計時器,為0時,將關顯示
        ;     JZ         TA0_1     
             CALL       #KEY             
             CALL       #DISPLAY_LED
             DEC        &20AH 
             CALL       #ALARM
             reti     
                
TA0_1        CALL    #KEY                       ;關顯示                     
             MOV.B   #0,P5OUT
             MOV.B   #00,P5DIR
             RETI          


ALARM          PUSH   R5           ;報警子程序
               PUSH   R6
               MOV.B  &205H,R5
               MOV.B  &201H,R6
               CLRC
               SUB.B  R6,R5
               JNC     ALARMEND
               
               MOV.B  &204H,R5
               AND.B  #0FH,R5
               MOV.B  &200H,R6
               AND.B  #0FH,R6
               CLRC
               SUB.B  R6,R5
               JNC     ALARMEND
               BIS.B  #08H,&P4OUT   ;超出警戒溫度,報警
               AND.B  #0FH,&200H
               ADD.B  #10H,&200H
               POP    R6
               POP    R5
               RET
               
ALARMEND       BIC.B  #08H,&P4OUT   ;沒有超出警戒溫度,不報警
               AND.B  #0FH,&200H
               POP    R6
               POP    R5
               RET
               
KEY            PUSH.B    &P1DIR
               PUSH.B    &P1OUT
               CALL      #KEYJUDGE     ; 沒有按鍵就退出,有就得到鍵值并處理
               JNC       KEY2          ;
               MOV       #2000,R15
KEY0           DEC       R15
               JNZ       KEY0
               CALL      #KEYJUDGE
               JNC       KEY2          ;去抖動
               CALL      #KEYCODE      ;得到鍵值
               PUSH      R9
KEY1           CALL      #KEYJUDGE     ;等待按鍵松開
               JC        KEY1
               POP       R9    

               tst.b     &214h         ;214H為一二進制計數器,當為0時鍵值被送到201H,否則送到200H
               jz       key11
               mov.b     r9,&200h
               mov.b     #0,&214h
               jmp       key12
key11          mov.b     r9,&201h               
               mov.b     #1,&214h
               
key12               
               
               MOV       #50000,&20AH   
               CALL      #KEY_TAB      ;處理按鍵
KEY2           POP.B     &P1OUT
               POP.B     &P1DIR
               RET               
               
KEY_TAB        ;  
               NOP
               RET               

KEYCODE        MOV.B     #0,&P5DIR
               MOV.B     #0FH,&P1DIR      ;低4位作為掃描線行輸出,高三位作為列線讀入
               MOV       #0,R9
               MOV       #1,R8
KEYCODELOOP    MOV.B     R8,&P1OUT        ;R8為掃描信號的輸出
               BIT.B     #10H,&P1IN
               JC        KEYCODE1         ;測試P1.4
               BIT.B     #20H,&P1IN
               JC        KEYCODE2         ;測試P1.5
               BIT.B     #40H,&P1IN
               JC        KEYCODE3         ;測試P1.6
               RLA.B     R8
               ADD.B     #3,R9
               CMP.B     #12,R9           ;四 根行線掃描完了嗎
               JNZ       KEYCODELOOP
               
KEYCODE1       ADD       #0,R9
               RET
KEYCODE2       ADD       #1,R9
               RET
KEYCODE3       ADD       #2,R9
               RET                                      
               
KEYJUDGE       MOV.B     #0FFH,&P1DIR
               MOV.B     #0,&P1OUT
               MOV.B     #0FH,&P1DIR  
               MOV.B     #0FH,&P1OUT
               BIT.B     #070H,&P1IN      ; 測試三根列線是否為一,是否有按健
               RET                        ; 若有,C=1

adc10        ;MOV.B   #0,&P5DIR
             NOP
             NOP
             bic     #ENC,&ADC12CTL0     ;ENC=0       
             mov     #REFON+ADC12ON,&ADC12CTL0;VER=片內1。5V
             mov     #SHP+ADC12SSEL_2,&ADC12CTL1   ;上升沿采樣,主時鐘,
             bis     #1000h,&ADC12CTL1        ;選擇MEM1  0001  0000  0000  0000
             mov.b   #1Ah,&ADC12MCTL1         ;選擇ADC通道0A  0001 1010  參考電壓:VER--VSS
             bis     #ENC,&ADC12CTL0          ; set ENC bit
             nop
             nop
             nop
             nop
             nop
             nop
             nop
             nop
             bis     #ADC12SC,&ADC12CTL0     ; 開始轉換
testEOC1     bit     #BIT1,&ADC12IFG         ; 是否轉換完畢 (ADC12IFG.0=1?)
             jz      testEOC1                 ; 
             MOV     &210H,R15              ;210H 為緩存指針
             mov     &ADC12MEM1,0(R15)           ; 轉存到220H--240H
             INC     &210H
             INC     &210H
             MOV.B   #0FFH,&P5DIR
             RET
             
ADCHULI      MOV        #220H,&0210H
             dec.b      &212h
             cmp.b      #30,&212h
             jnz        adc104
             mov.b      #0,&212h
             CLRC
             MOV        #0,R5
             MOV        #0220H,R15
ADC102       ADD        @R15,R5
             INC        R15
             INC        R15
             CMP        #240H,R15
             JNZ        ADC102

             RRA        R5
             RRA        R5
             RRA        R5
             RRA        R5
             BIC        #0F000H,R5    ;除16得平均值
             MOV        R5,R6         ;后面用R6處理小數部分
             
             RRA        R5
             RRA        R5
             RRA        R5
             RRA        R5
    ;          RRA        R5
             BIC        #0F000H,R5    ;除32得
             
             SUB        #159,R5
             MOV.B      TABWENDU(R5),R5  ;從表中查得10進制數

             
             MOV.B   R5,&204H        ;顯示格式:兩位證整數,一位小數,從最左邊開始
             BIC.B   #0F0H,&204H
             ADD.B   #10H,&204H             
             MOV.B   R5,&205H
             RRA.B   &205H
             RRA.B   &205H
             RRA.B   &205H
             RRA.B   &205H    
             BIC.B   #0F0H,&205H
             ;203H       小數部分的計算,平均值后5位除以3。2 
             
             BIC     #0FFE0H,R6       ;剩下最低5位。
             MOV     R6,R12
             MOV     #10,R11
             CALL    #MPYU
             MOV     #0,R13
             MOV     R14,R12
             MOV     #32,R11
             CALL    #DIVIDE
             MOV.B   R14,&203H
              
adc104       ret                                            
                 
DISPLAY_LED    MOV.B       #0FFh,&P1DIR            ; 
               MOV.B       #0FFH,&P5DIR
               MOV         &208H,R15
               MOV.B       @R15,R15
               MOV.B       TABLED(R15),R15  ;從表中查得顯示碼
               MOV.B       R15,&P5OUT
               MOV.B ?    &206H,&P1OUT     ;&206-----&P1OUT  
               INC         &208H
               RRA.B       &206H           
               CMP         #206H,&208H
               JNZ         DIS6LOOP
               MOV         #0FFDFH,&206H
               MOV         #200H,&208H
DIS6LOOP       RET        
            

;---------------------------------------------------------------------------
MPYU   ;    無符號數乘法  R11 x R12 = R15 | R14
       ;    Input:  R11, R12 , R10 = working register
       ;    Output: R15, R14 
;---------------------------------------------------------------------------
            clr     R14                     ; 0 -> LSBs result
            clr     R15                     ; 0 -> MSBs result
MACU        clr     R13                     ; MSBs multiplier
            mov     #1,R10                  ; bit test register
MPY2        bit     R10,R11                 ; test actual bit
            jz      MPY1                    ; IF 0: do nothing
            add     R12,R14                 ; IF 1: add multiplier to result
            addc    R13,R15                 ;
MPY1        rla     R12                     ; multiplier x 2
            rlc     R13                     ;
            rla     R10                     ; next bit to test
            jnc     MPY2                    ; if bit in carry: finished
            ret                             ; Return from subroutine
                                            ;
                                            
                                            

;---------------------------------------------------------------------------
DIVIDE ;    Unsigned 32/16 divide R13 | R12 / R11 = R14  
       ;    Input:  R13, R12, R10 is a working register  
       ;    Output: R14  
;---------------------------------------------------------------------------
            clr     R14                     ; Clear Accumulator Low
            mov     #17,R10                 ; Initalize Loop Counter
DIV1        cmp     R11,R13                 ;
            jlo     DIV2                    ;
            sub     R11,R13                 ;
DIV2        rlc     R14                     ;
            jc      DIV4                    ; Error: result > 16 bits
            dec     R10                     ; Decrement loop counter
            jz      DIV4                    ; Is 0: terminate w/o err
            rla     R12                     ;
            rlc     R13                     ;
            jnc     DIV1                    ;
            sub     R11,R13                 ;
            setc                            ;
            jmp     DIV2                    ;
DIV4        ret                             ; Error indication in C
              ;

                
            
TABLED:       DB  3FH , 06H ,  5BH   ,4FH        ;0   1   2   3
	      DB  66H , 6DH ,  7DH ,  07H        ;4   5   6   7
	      DB  7FH , 6FH ,  77H,   7CH        ;8   9   A   B
	      DB  39H , 5EH,   79H  , 71H        ;C   D   E   F

	      DB  0BFH, 86H   ,0DBH,  0CFH       ;0.  1.  2.  3.
	      DB  0E6H ,0EDH , 0FDH , 87H        ;4.  5.  6.  7.
	      DB  0FFH ,0EFH  ,0F7H  ,0FCH       ;8.  9.  A.  B.
	      DB  0B9H ,0DEH , 0F9H  ,0F1H       ;C.  D.  E.  F.
				; .  -       P
	      DB  80H , 40H  , 00H  , 73H
	      DB  0C0H                          
	      
TABWENDU      DB    0,1,2,3,4,5,6,7,8,9
              DB    10H,11H,12H,13H,14H,15H,16H,17H,18H,19H
              DB    20H,21H,22H,23H,24H,25H,26H,27H,28H,29H
              DB    30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
              DB    40H,41H,42H,43H,44H,45H,46H,47H,48H,49H
              DB    50H,51H,52H,53H,54H,55H,56H,57H,58H,59H	      

;---------------------------------------------------------------------------
             COMMON  INTVEC                  ; Interrupt vectors
             
             ORG     TIMERA0_VECTOR
             DW      TA0_isr
             ORG     RESET_VECTOR
             DW      Reset
                                                                            
;---------------------------------------------------------------------------
             END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费午夜影院| 欧美精品一区二区蜜臀亚洲| 麻豆精品新av中文字幕| 国产欧美日韩另类一区| 欧美久久久久久蜜桃| 大白屁股一区二区视频| 日韩电影在线免费观看| 国产精品久久久久三级| 精品少妇一区二区三区日产乱码| 91美女片黄在线观看| 国产一区二区三区在线看麻豆| 亚洲一区二区欧美| 国产精品丝袜一区| 久久蜜桃香蕉精品一区二区三区| 欧美日韩久久久一区| 99久久精品国产毛片| 国产盗摄精品一区二区三区在线| 日韩和的一区二区| 一区二区三区国产豹纹内裤在线| 中文字幕乱码一区二区免费| 欧美mv日韩mv国产网站app| 欧美视频中文字幕| 色婷婷狠狠综合| voyeur盗摄精品| 粉嫩av亚洲一区二区图片| 韩国在线一区二区| 美女爽到高潮91| 天天综合网 天天综合色| 亚洲一二三四在线观看| 自拍偷拍欧美精品| 中文字幕一区二区三区色视频 | 26uuu另类欧美亚洲曰本| 欧美日韩亚洲综合在线| 欧美综合在线视频| 欧美午夜精品免费| 欧美日韩色综合| 欧美在线一区二区三区| 91黄色免费网站| 色久优优欧美色久优优| 色狠狠色狠狠综合| 91国偷自产一区二区三区观看| 91香蕉国产在线观看软件| av中文字幕一区| 色天使久久综合网天天| 91美女在线视频| 精品视频资源站| 欧美人伦禁忌dvd放荡欲情| 欧美美女一区二区三区| 欧美一卡二卡在线| 精品国精品国产| 国产亚洲一本大道中文在线| 亚洲国产精品t66y| 中文字幕人成不卡一区| 亚洲精品乱码久久久久久久久| 樱桃视频在线观看一区| 午夜精品久久久| 久久精品二区亚洲w码| 国内外成人在线| 国产69精品久久久久777| 成人av中文字幕| 欧美日韩一级片在线观看| 日韩一区二区精品葵司在线 | 中文字幕av一区二区三区免费看 | 蜜桃视频一区二区三区在线观看| 美美哒免费高清在线观看视频一区二区| 麻豆极品一区二区三区| 国产精品888| 91免费看`日韩一区二区| 欧美日韩精品欧美日韩精品一 | 日韩一级高清毛片| 国产欧美一区二区精品性色超碰 | 韩国中文字幕2020精品| 91在线观看一区二区| 欧美日韩精品免费| 国产日韩欧美不卡在线| 亚洲综合一二区| 国产在线精品一区二区| 99精品视频在线免费观看| 在线成人av网站| 国产视频在线观看一区二区三区 | 综合网在线视频| 日本不卡高清视频| 不卡的看片网站| 欧美日韩成人在线一区| 国产日韩精品一区二区三区在线| 一区二区三区在线看| 韩国一区二区视频| 欧美天堂亚洲电影院在线播放| 久久久久97国产精华液好用吗| 亚洲一区二区在线视频| 国产一区二区三区高清播放| 在线观看日韩av先锋影音电影院| 久久久欧美精品sm网站| 亚洲国产日产av| 91丨国产丨九色丨pron| 蜜桃视频一区二区三区 | 色94色欧美sute亚洲13| 精品剧情v国产在线观看在线| 亚洲欧美在线观看| 国产综合色在线视频区| 欧美三片在线视频观看| 国产精品福利电影一区二区三区四区| 五月综合激情网| 91视频一区二区三区| 久久久久97国产精华液好用吗| 亚洲国产精品久久久久婷婷884| 成人开心网精品视频| 精品国产亚洲一区二区三区在线观看| 一级中文字幕一区二区| voyeur盗摄精品| 久久久精品tv| 久久精品国产99国产| 欧美日韩日日摸| 亚洲自拍另类综合| 色婷婷综合久色| 国产精品久久精品日日| 国产电影一区二区三区| 日韩欧美一级片| 婷婷一区二区三区| 欧洲中文字幕精品| 亚洲精品视频在线| k8久久久一区二区三区| 国产欧美日韩视频一区二区| 国产在线精品一区二区不卡了 | 日韩精彩视频在线观看| 欧美专区亚洲专区| 亚洲另类在线视频| 91丨porny丨户外露出| 国产精品网站在线观看| 国产91精品入口| 中文在线一区二区| 成人性生交大片免费看在线播放| 久久蜜臀中文字幕| 精品一区精品二区高清| 欧美一级欧美一级在线播放| 天天影视涩香欲综合网| 欧美日韩视频在线一区二区| 一区二区激情视频| 欧美亚洲动漫制服丝袜| 亚洲一二三区在线观看| 欧美久久久影院| 麻豆成人久久精品二区三区小说| 91精品国产丝袜白色高跟鞋| 男女视频一区二区| 精品国产一区二区亚洲人成毛片| 精品伊人久久久久7777人| 久久一日本道色综合| 国产精品中文有码| 亚洲欧洲性图库| 91久久香蕉国产日韩欧美9色| 亚洲狠狠丁香婷婷综合久久久| 欧美午夜在线一二页| 日韩一区欧美二区| 精品日韩99亚洲| 国产99久久久国产精品| 国产精品久久久久影院老司| 色网综合在线观看| 亚洲va韩国va欧美va| 日韩女优毛片在线| 国产成人aaa| 亚洲久草在线视频| 欧美精品久久天天躁| 黄页网站大全一区二区| 国产精品久久久久毛片软件| 欧美婷婷六月丁香综合色| 久热成人在线视频| 亚洲欧洲99久久| 91精品久久久久久蜜臀| 日韩av网站免费在线| 国产精品色一区二区三区| 亚洲在线一区二区三区| 91精品国产入口| 国产盗摄精品一区二区三区在线| 亚洲婷婷综合久久一本伊一区| 欧美日韩国产成人在线免费| 免费黄网站欧美| 国产精品美女一区二区三区| 欧美日韩国产高清一区二区三区| 激情小说欧美图片| 亚洲精品国产精华液| 日韩欧美在线123| 91在线播放网址| 麻豆91在线播放免费| 亚洲精品va在线观看| 精品99999| 欧美调教femdomvk| 国产高清一区日本| 午夜国产不卡在线观看视频| 国产日韩三级在线| 5月丁香婷婷综合| 99久久伊人精品| 激情综合五月婷婷| 午夜精品久久久久久久| 国产精品盗摄一区二区三区| 日韩视频免费观看高清完整版| 99久久国产综合精品色伊| 国产在线一区二区| 亚洲成av人片在线| 亚洲色图视频免费播放| 久久久精品日韩欧美|