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

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

?? mplxch0.asm

?? 四通道的AD采樣轉換數據
?? ASM
字號:
;*********************************************************************
;This program is to demonstrate how to multiplex four 7 segment LED
;and sample ch0 of the a/d in a PIC16C71. The a/d value is displayed
;as a 3 digit decimal value of the a/d input (0 - 255).
;The LEDs are updated every 20mS, the a/d is sampled every 20 mS.
;The RTCC timer is used in internal interrupt mode to generate the
;5 mS.
;
;                                       Stan D'Souza 5/8/93
;
;
;
;       Program:          MPLXCH0.ASM 
;       Revision Date:   
;                         1-15-97      Compatibility with MPASMWIN 1.40
;
;**********************************************************************
        LIST P=16C71
        ERRORLEVEL  -302
;
        include     <p16c71.inc>
;
BcdMsd  equ     26
Bcd     equ     27 
TempC   equ     0x0c            ;temp general purpose regs
TempD   equ     0x0d
TempE   equ     0x0e
PABuf   equ     0x20
PBBuf   equ     0x21
Count   equ     0x0f            ;count
MsdTime equ     0x10            ;most significant Timer
LsdTime equ     0x11            ;Least significant Timer
ADFlag  equ     0x12            ;flags related to key pad
ADOver  equ     5               ;bit 5 --> a/d over
WBuffer equ     0x2f
StatBuffer equ  0x2e
OptionReg equ   1
PCL     equ     2
;
push    macro
        movwf   WBuffer         ;save w reg in Buffer
        swapf   WBuffer, F      ;swap it
        swapf   STATUS,W        ;get status
        movwf   StatBuffer      ;save it
        endm
;
pop     macro
        swapf   StatBuffer,W    ;restore status
        movwf   STATUS          ;       /
        swapf   WBuffer,W       ;restore W reg
        endm
;
        org     0
        goto    Start           ;skip over interrupt vector
;        
        org     4
;It is always a good practice to save and restore the w reg,
;and the status reg during a interrupt.
        push
        call    ServiceInterrupts
        pop
        retfie
;
Start
        call    InitPorts
        call    InitTimers
        call    InitAd
loop
        btfsc   ADFlag,ADOver   ;a/d over?
        call    UpdateAd        ;yes then update
        goto    loop
;
UpdateAd
        btfss   ADCON0,ADIF             ;a/d done?
        return                          ;no then leave
        movf    ADRES,W                 ;get a/d value
        movwf   L_byte
        clrf    H_byte
        call    B2_BCD
        movf    R2,W                    ;get LSd
        movwf   LsdTime                 ;save in LSD
        movf    R1,W                    ;get Msd
        movwf   MsdTime                 ;save in Msd
        bcf     ADCON0,ADIF             ;clr interrupt flag
        bcf     ADCON0,ADON             ;turn off a/d
        bcf     ADFlag,ADOver           ;clr flag
        return
;
;
;
InitPorts
        bsf     STATUS,RP0              ;select pg 1
        movlw   3                       ;make RA0-3 digital I/O
        movwf   ADCON1                  ;       /
        clrf    TRISA                   ;make RA0-4 outputs
        clrf    TRISB                   ;make RB0-7 outputs
        bcf     STATUS,RP0              ;select page 0
        clrf    PORTA                  ;make all outputs low
        clrf    PORTB                  ;       /
        bsf     PORTA,3                ;enable MSB digit sink
        return
;
;
;The clock speed is 4.096Mhz. Dividing internal clk. by a 32 prescaler,
;the rtcc will be incremented every 31.25uS. If rtcc is preloaded 
;with 96, it will take (256-96)*31.25uS to overflow i.e. 5mS. So the 
;end result is that we get a rtcc interrupt every 5mS.
InitTimers
        clrf    MsdTime                 ;clr timers
        clrf    LsdTime                 ;       /
        bsf     STATUS,RP0              ;select pg 1
        movlw   B'10000100'             ;assign ps to rtcc
        movwf   OptionReg               ;ps = 32
        bcf     STATUS,RP0              ;select pg 0
        movlw   B'00100000'             ;enable rtcc interrupt
        movwf   INTCON                  ;
        movlw   .96                     ;preload rtcc
        movwf   TMR0                    ;start counter
        retfie
;
;
InitAd
        movlw   B'11000000'             ;rc osc, ch 0 for a/d
        movwf   ADCON0
        return
;
;
ServiceInterrupts
        btfsc   INTCON,T0IF             ;rtcc interrupt?
        goto    ServiceTMR0             ;yes then service
        clrf    INTCON
        bsf     INTCON,T0IE
        return
;
ServiceTMR0
        movlw   .96                     ;initialize rtcc
        movwf   TMR0
        bcf     INTCON,T0IF             ;clr int flag
        btfss   PORTA,0                ;last digit?
        call    SampleAd                ;then sample a/d
        call    UpdateDisplay           ;else update display
        return
;
;
SampleAd
        call    SavePorts
        call    DoAd                    ;do a ad conversion
AdDone
        btfsc   ADCON0,GO               ;ad done?
        goto    AdDone                  ;no then loop
        bsf     ADFlag,ADOver           ;set a/d over flag
        call    RestorePorts            ;restore ports
        return
;
;
DoAd
        clrf    PORTB                  ;turn off leds
        bsf     STATUS,RP0              ;select pg 1
        movlw   0x0f                    ;make port a hi-Z
        movwf   TRISA                   ;       /
        bcf     STATUS,RP0              ;select pg 0
        bsf     ADCON0,ADON             ;start a/d    
        movlw   .125
        call    Wait
        bsf     ADCON0,GO               ;start conversion
        return
;
;
Wait
        movwf   TempC                   ;store in temp
Next
        decfsz  TempC, F
        goto    Next
        return

;
;SavePorts, saves the porta and portb condition during a key scan
;operation.
SavePorts
        movf    PORTA,W        ;Get sink value
        movwf   PABuf           ;save in buffer
        clrf    PORTA          ;disable all sinks
        movf    PORTB,W        ;get port b
        movwf   PBBuf           ;save in buffer
        movlw   0xff            ;make all high
        movwf   PORTB          ;on port b
        bsf     STATUS,RP0      ;select page 1
        bcf     OptionReg,7     ;enable pull ups
        movlw   B'11110000'     ;port b hi nibble inputs
        movwf   TRISB           ;lo nibble outputs
        bcf     STATUS,RP0      ;page 0
        return
;
;RestorePorts, restores the condition of porta and portb after a
;key scan operation.
RestorePorts
        movf    PBBuf,W         ;get port n
        movwf   PORTB
        movf    PABuf,W         ;get port a value
        movwf   PORTA
        bsf     STATUS,RP0      ;select page 1
        bsf     OptionReg,7     ;disable pull ups
        clrf    TRISA           ;make port a outputs
        clrf    TRISB           ;as well as PORTB
        bcf     STATUS,RP0      ;page 0
        return
;
;
UpdateDisplay
        movf    PORTA,W                ;present sink value in w
        clrf    PORTA                  ;disable all digits sinks
        andlw   0x0f                    
        movwf   TempC                   ;save sink value in tempC
        bsf     TempC,4                 ;preset for lsd sink
        rrf     TempC, F                ;determine next sink value
        btfss   STATUS,C                ;c=1? 
        bcf     TempC,3                 ;no then reset LSD sink
        btfsc   TempC,0                 ;else see if Msd
        goto    UpdateMsd               ;yes then do Msd
        btfsc   TempC,1                 ;see if 3rdLsd
        goto    Update3rdLsd            ;yes then do 3rd Lsd
        btfsc   TempC,2                 ;see if 2nd Lsd
        goto    Update2ndLsd            ;yes then do 2nd lsd
UpdateLsd
        movf    LsdTime,W               ;get Lsd in w
        andlw   0x0f                    ;       /
        goto    DisplayOut              ;enable display
Update2ndLsd        
        call    Chk2LsdZero             ;msd = 0 & 2 lsd 0?
        btfss   STATUS,Z                ;yes then skip
        swapf   LsdTime,W               ;get 2nd Lsd in w
        andlw   0x0f                    ;mask rest
        goto    DisplayOut              ;enable display
Update3rdLsd
        call    ChkMsdZero              ;msd = 0?
        btfss   STATUS,Z                ;yes then skip
        movf    MsdTime,W               ;get 3rd Lsd in w
        andlw   0x0f                    ;mask low nibble
        goto    DisplayOut              ;enable display
UpdateMsd
        swapf   MsdTime,W               ;get Msd in w
        andlw   0x0f                    ;mask rest
        btfsc   STATUS,Z                ;msd != 0 then skip
        movlw   0x0a
DisplayOut
        call    LedTable                ;get digit output
        movwf   PORTB                  ;drive leds
        movf    TempC,W                 ;get sink value in w
        movwf   PORTA
        return
;
;
LedTable
        addwf   PCL, F                  ;add to PC low
        retlw   B'00111111'             ;led drive for 0
        retlw   B'00000110'             ;led drive for 1
        retlw   B'01011011'             ;led drive for 2
        retlw   B'01001111'             ;led drive for 3
        retlw   B'01100110'             ;led drive for 4
        retlw   B'01101101'             ;led drive for 5
        retlw   B'01111101'             ;led drive for 6
        retlw   B'00000111'             ;led drive for 7
        retlw   B'01111111'             ;led drive for 8
        retlw   B'01100111'             ;led drive for 9
        retlw   B'00000000'             ;blank led drive
;
;
Chk2LsdZero
        call    ChkMsdZero              ;msd = 0?
        btfss   STATUS,Z                ;yes then skip
        return                          ;else return
        swapf   LsdTime,W               ;get 2nd lsd
        andlw   0x0f                    ;mask of LSD
        btfss   STATUS,Z                ;0? then skip
        return
        retlw   .10                     ;else return with 10
;
ChkMsdZero
        movf    MsdTime,W               ;get Msd in w
        btfss   STATUS,Z                ;= 0? skip
        return                          ;else return
        retlw   .10                     ;ret with 10
;
;
;
count  equ      26
temp   equ      27
;
H_byte  equ     20
L_byte  equ     21
R0      equ     22              ; RAM Assignments
R1      equ     23
R2      equ     24
;
;
B2_BCD  bcf     STATUS,0                ; clear the carry bit
        movlw   .16
        movwf   count
        clrf    R0
        clrf    R1
        clrf    R2
loop16  rlf     L_byte, F
        rlf     H_byte, F
        rlf     R2, F
        rlf     R1, F
        rlf     R0, F
;
        decfsz  count, F
        goto    adjDEC
        RETLW   0
;
adjDEC  movlw   R2
        movwf   FSR
        call    adjBCD
;
        movlw   R1
        movwf   FSR
        call    adjBCD
;
        movlw   R0
        movwf   FSR
        call    adjBCD
;
        goto    loop16
;
adjBCD  movlw   3
        addwf   0,W
        movwf   temp
        btfsc   temp,3          ; test if result > 7
        movwf   0
        movlw   30
        addwf   0,W
        movwf   temp
        btfsc   temp,7          ; test if result > 7
        movwf   0               ; save as MSD
        RETLW   0
;
;

        end
;

        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产一区视频| 免费看日韩精品| 国产九色精品成人porny| 欧美日韩在线观看一区二区| 亚洲欧洲日产国码二区| 国产精品456露脸| 2欧美一区二区三区在线观看视频| 亚洲日穴在线视频| 波多野结衣中文字幕一区二区三区| 欧美中文字幕一区二区三区亚洲| 中文字幕一区二区三区av| 国产最新精品免费| 日本一区二区在线不卡| 91同城在线观看| 亚洲成a人片在线观看中文| 日韩欧美国产一区在线观看| 国内久久婷婷综合| 中文字幕第一页久久| 欧洲精品一区二区三区在线观看| 亚洲国产成人av好男人在线观看| 日韩三级免费观看| 国产精品一级在线| 1000精品久久久久久久久| 欧美日韩亚洲高清一区二区| 国产一区二区三区四| 综合自拍亚洲综合图不卡区| 欧美精品久久99久久在免费线| 国内精品自线一区二区三区视频| 国产精品久久午夜夜伦鲁鲁| 欧美在线免费观看亚洲| 免费人成黄页网站在线一区二区 | 亚洲第一主播视频| 日韩免费在线观看| 91视频国产资源| 蜜臀av国产精品久久久久| 国产精品色一区二区三区| 欧美日韩三级在线| 国产91在线观看| 天天av天天翘天天综合网| 久久久久久久久久美女| 欧美在线一二三四区| 国产风韵犹存在线视精品| 亚洲第一精品在线| 国产精品少妇自拍| 日韩欧美在线影院| 在线观看91精品国产入口| 国产成人av电影在线播放| 丝瓜av网站精品一区二区| 综合中文字幕亚洲| 久久一区二区三区国产精品| 欧美日韩一区二区在线视频| 成人美女视频在线观看18| 青青草国产精品亚洲专区无| 亚洲最大的成人av| 中文字幕乱码久久午夜不卡| 精品伦理精品一区| 欧美年轻男男videosbes| 97精品久久久午夜一区二区三区| 精品一区二区三区不卡| 亚洲va国产天堂va久久en| 亚洲老妇xxxxxx| 国产精品无遮挡| 久久综合久久综合亚洲| 日韩欧美在线综合网| 欧美日韩另类国产亚洲欧美一级| 91香蕉国产在线观看软件| 国产精一区二区三区| 国内精品伊人久久久久av一坑| 天堂久久一区二区三区| 亚洲在线成人精品| 一区二区在线观看免费| 国产精品免费久久久久| 国产亚洲美州欧州综合国| 精品国一区二区三区| 欧美一区永久视频免费观看| 制服丝袜日韩国产| 欧美精品在线视频| 欧美日韩成人高清| 欧美蜜桃一区二区三区 | 欧美日韩国产中文| 日本韩国一区二区三区视频| 91视频.com| 色呦呦国产精品| 色偷偷一区二区三区| 91激情在线视频| 欧美私人免费视频| 欧美日韩一区不卡| 欧美精品一二三区| 欧美一级精品大片| 精品国产乱码久久久久久闺蜜| 精品福利一区二区三区| 久久午夜免费电影| 亚洲国产激情av| 一区二区三区日本| 婷婷综合五月天| 免费美女久久99| 国产精品99久久久久久有的能看| 国产精品69毛片高清亚洲| 不卡视频在线观看| 欧美在线高清视频| 91精品国产91热久久久做人人| 日韩免费在线观看| 国产亚洲一本大道中文在线| 国产欧美精品一区二区色综合朱莉| 国产精品电影一区二区| 成av人片一区二区| 日韩欧美在线一区二区三区| 国产精品色婷婷| 亚洲色欲色欲www在线观看| 国产日韩三级在线| 日韩欧美美女一区二区三区| 亚洲精品中文字幕在线观看| 日本不卡一区二区三区高清视频| 欧美一级艳片视频免费观看| 综合久久综合久久| 亚洲一二三四区| 欧美日韩在线观看一区二区| 国产精品久久99| 麻豆精品蜜桃视频网站| 不卡一卡二卡三乱码免费网站| 色香色香欲天天天影视综合网| 日韩精品一区二区三区视频| 亚洲一二三区在线观看| 视频一区中文字幕国产| 91在线无精精品入口| 国产精品一级二级三级| 色婷婷av久久久久久久| 亚洲欧美自拍偷拍色图| 韩国精品久久久| 精品第一国产综合精品aⅴ| 极品少妇一区二区三区精品视频| 6080国产精品一区二区| 水野朝阳av一区二区三区| 欧美日韩精品综合在线| 亚洲综合激情网| 欧美一级视频精品观看| 久久99精品一区二区三区| 久久综合色8888| 91日韩在线专区| 亚洲不卡av一区二区三区| 日韩免费高清视频| 9i在线看片成人免费| 国产精品成人免费精品自在线观看 | 国产一区二区三区日韩| 亚洲欧美日韩一区| 欧美精品成人一区二区三区四区| 热久久久久久久| 久久精品一区二区三区不卡| 91麻豆蜜桃一区二区三区| 蜜臀av国产精品久久久久| 亚洲黄色av一区| 欧美日韩国产首页| 成人h精品动漫一区二区三区| 亚洲成人激情自拍| 亚洲图片一区二区| 综合电影一区二区三区| 久久久一区二区三区| 91精品国产一区二区三区香蕉| 成人网男人的天堂| 国产精品一二三在| 国产一区中文字幕| 国产精品久久久久一区| 欧美日韩国产乱码电影| 不卡一二三区首页| 成人丝袜高跟foot| 99精品黄色片免费大全| 国产a区久久久| 高清不卡在线观看av| 粉嫩av一区二区三区| 国产电影一区二区三区| 极品少妇一区二区| 国产精品1区2区| 国产91精品一区二区| 成人精品免费视频| 亚洲色图欧美偷拍| 欧美日韩黄色一区二区| 中文字幕不卡一区| 久久一二三国产| 久久er精品视频| 亚洲免费毛片网站| 久久精品人人做| 国产亚洲精久久久久久| 国产精品乱子久久久久| 亚洲成av人片一区二区三区| 国产精品一区二区在线看| 欧美日韩亚州综合| 亚洲日本va在线观看| 国内精品自线一区二区三区视频| 日本怡春院一区二区| 91亚洲大成网污www| 国产精品乱人伦| 紧缚捆绑精品一区二区| 91精品免费观看| 一区二区成人在线| 在线视频综合导航| 国产欧美日韩另类视频免费观看| 五月激情综合网| 欧美亚洲日本一区| 亚洲视频中文字幕| 亚洲二区在线观看|