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

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

?? picclock.asm

?? 利用PIC16系列單片機(jī)開發(fā)的時(shí)鐘
?? ASM
?? 第 1 頁 / 共 2 頁
字號(hào):
              LIST    p=16F84 ; PIC16F844 is the target processor

              #include "P16F84.INC" ; Include header file

              CBLOCK 0x10   ; Temporary storage
                 state
                 secs
                 mins
                 hours
                 ticks
                 idc
                 bcd
              ENDC

; Constants for bit allocation. The BIT_x constants are actual bit numbers and
; the MASK_x are bit masks for the same bit.
BIT_HSEL      EQU H'0000'
BIT_TSET      EQU H'0001'
BIT_HSET      EQU H'0002'
BIT_MSET      EQU H'0003'

BIT_H24       EQU H'0000'
BIT_PM        EQU H'0001'
BIT_SET       EQU H'0002'
BIT_HSB       EQU H'0003'

MASK_H24      EQU H'0001'
MASK_PM       EQU H'0002'
MASK_SET      EQU H'0004'
MASK_HSB      EQU H'0008'


; Macro to generate a MOVLW instruction that also causes a model break:
break         MACRO arg
              DW    0x3100 | (arg & H'FF')
              ENDM

              ORG   0
entrypoint    goto  initialise

              ORG   4
intvector     goto    clock

initialise    ; Register set up:
              clrw                    ; Zero.
              movwf   PORTA           ; Ensure PORTA is zero before we enable it.
              movwf   PORTB           ; Ensure PORTB is zero before we enable it.
              bsf     STATUS,RP0      ; Select Bank 1
              movlw   H'1F'           ; Mask for PORTA inputs/outputs.
              movwf   TRISA           ; Set TRISA register.
              movlw   H'01'           ; Mask for PORTA inputs/outputs.
              movwf   TRISB           ; Set TRISB register.
              bcf     STATUS,RP0      ; Reselect Bank 0.

              ; Initialise clock:
              clrf    state
              bsf     state,BIT_HSB
              movlw   D'0'
              movwf   hours
              movlw   D'0'
              movwf   mins
              movlw   D'0'
              movwf   secs

              ; Clear 50Hz tick count:
              clrf    ticks

              ; Clear interrupt disable count (idc) semaphore:
              clrf    idc

              ; Initialise display:
              call    wr_hours
              call    wr_mins
              call    wr_secs
              call    wr_state

              ; Finally initialise interrupts for clock on RB0/INT pin:
              movlw   H'90'
              movwf   INTCON

start         ; When not processing an interrupt we sit and check input pins:
              call    chk_tset        ; Time set select active?
              call    chk_hsel        ; H12/H24 display format select active?
              goto    start


;------------------------------------------------------------------------------
; Interrupt handler. We come here for every tick of the time base.

clock         ; Toggle half-second flag and set state outputs:
              incf    ticks,F         ; Increment clock ticks.
              movf    ticks,W         ; Get ticks value.
              sublw   D'25'           ; Is it 25 (W=25-W)?
              btfss   STATUS,Z        ; Test zero flag.
              goto    endclock        ; Return.

toggle_hs     ; Half second - toggle HS flag, write it and return:
              clrf    ticks           ; Reset timebase,
              movf    state,W         ; Get state.
              xorlw   MASK_HSB        ; Toggle half-second bit.
              movwf   state           ; Save it back to register.
              call    wr_state        ; Display it.
              movf    state,W         ; Get state.
              btfss   state,BIT_HSB   ; Is bit now clear?
              goto    endclock        ; Return.

inc_secs      ; Incrmement seconds...
              incf    secs,F          ; Increment seconds count.
              movf    secs,W          ; Get it into W.
              sublw   D'60'           ; Is it 60 (W=60-W)?
              btfsc   STATUS,Z        ; Test zero flag, skip clear if no set.
              goto    reset_secs      ; Clear seconds, increment minutes.
              call    wr_secs         ; Write seconds it to display.
              goto    endclock        ; Done.

reset_secs    clrf    secs
              call    wr_secs         ; Write seconds to display.

              incf    mins,F          ; Increment minute count.
              movf    mins,W          ; Get it into W.
              sublw   D'60'           ; Is it 60 (W=60-W)?
              btfsc   STATUS,Z        ; Test zero flag, skip clear if no set.
              goto    reset_mins      ; Clear minutes, increment hours.
              call    wr_mins         ; Write minutes it to display.
              goto    endclock        ; Done.

reset_mins    clrf    mins            ; Reset minute count to zero.
              call    wr_mins         ; Write minutes to display.

              call    inc_hours       ; Increment hours, display it with PM flag.
              
endclock      movlw   H'90'
              movwf   INTCON
              retfie                  ; Return

;------------------------------------------------------------------------------
; Subroutine. Check the state of the HSEL input and set h12/h24 format as
; required.

chk_hsel      btfsc   PORTA,BIT_HSEL  ; Test 12/24 select.
              goto    set_h12         ; H12 set so switch to 12 hour format.
              ; fall through          ; H12 not set so switch to 24 hour format.

set_h24       btfsc   state,BIT_H24   ; Are we on 12 hour format?
              retlw   0               ; No, so no need to do anything...

              bcf     INTCON,GIE      ; Disable interrupts.
              incf    idc,F           ; Increment count of number of disables.
              bsf     state,BIT_H24   ; Clear h12 flag.

              movf    hours,W         ; Get hours value.
              sublw   D'12'           ; Is it 12:xx?
              btfsc   STATUS,Z        ; Test zero flag.
              clrf    hours           ; Reset to zero.
              movf    hours,W         ; Get hours value.
              btfsc   state,BIT_PM    ; Is the PM indicator set?
              addlw   D'12'           ; Add 12 to get 24 hour value.
              movwf   hours           ; Save result (does nothing for AM).
              bcf     state,BIT_PM    ; Clear PM flag.
              call    wr_hours        ; Write hours.
              call    wr_state        ; Write H12 state and PM state.
              goto    chk_hsel_iec    ; Done.

set_h12       btfss   state,BIT_H24   ; Are we on 12 hour format?
              retlw   0               ; Yes, so no need to do anything...

              bcf     INTCON,GIE      ; Disable interrupts.
              incf    idc,F           ; Increment count of number of disables.
              bcf     state,BIT_H24   ; Set h12 flag.

              movf    hours,W         ; Get hour value.
              sublw   D'11'           ; W=11-W. C is clear for a borrow (W>=12).
              btfss   STATUS,C        ; Test carry flag.
              goto    set_h12_pm      ; Set PM.

set_h12_am    bcf     state,BIT_PM    ; Clear PM bit.
              movf    hours,W         ; Get hours.
              btfsc   STATUS,Z        ; Is it zero?
              addlw   D'12'           ; Yes, add 12 to get 00:xx to 12:xx.
              movwf   hours           ; Save any result.
              call    wr_hours        ; Display hours.
              call    wr_state        ; Display H12 and PM states.
              goto    chk_hsel_iec    ; Done.

set_h12_pm    bsf     state,BIT_PM    ; Set PM bit.
              movlw   D'12'           ; Constant.
              subwf   hours,F         ; hours=hours-12 (23..12 -> 11..0).
              btfsc   STATUS,Z        ; Zero set?
              movwf   hours           ; Yes, so reset to '12'.
              call    wr_hours        ; No, so leave hours alone and display it.
              call    wr_state        ; Display H12 and PM states.
              goto    chk_hsel_iec    ; Done.

chk_hsel_iec  decfsz  idc,F           ; Decrement idc. If zero we can reenable interrupts.
              retlw   1               ; Return without enabling interrupts.

chk_hsel_done movlw   H'90'           ; Constant for GIE and T0IE.
              movwf   INTCON          ; Set interrupt register.
              retlw   1               ; Return.

;------------------------------------------------------------------------------
chk_tset      btfsc   PORTA,BIT_TSET  ; Set mode?
              retlw   0

              bcf     INTCON,GIE      ; Disable interrupts.
              incf    idc,F           ; Increment count of number of disables.
              bsf     state,BIT_SET   ; Set the 'set mode' bit.
              clrf    secs            ; Setting time resets seconds count.
              call    wr_secs         ; Display it.
              bcf     state,BIT_HSB   ; Clear seconds toggle.
              call    wr_state        ; Update the state output latch.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费在线视频一区| 91视频精品在这里| 91九色02白丝porn| 26uuu精品一区二区| 中文字幕日韩精品一区| 2020国产成人综合网| 国产欧美日韩精品一区| 美女视频黄a大片欧美| 色综合久久中文综合久久牛| 精品久久五月天| 天天av天天翘天天综合网色鬼国产 | 狠狠色丁香久久婷婷综| 欧美亚男人的天堂| 亚洲天堂福利av| 成人av在线一区二区三区| 精品精品欲导航| 日韩精品成人一区二区在线| 色综合中文字幕国产| 久久久国际精品| 麻豆一区二区在线| 欧美高清视频一二三区| 亚洲少妇30p| 粉嫩av亚洲一区二区图片| 日韩色视频在线观看| 亚洲大片精品永久免费| 成人av网站在线观看免费| 日韩精品一区二区三区在线观看 | 精品国产亚洲在线| 午夜精品免费在线观看| 色综合天天综合在线视频| 日本一区二区三区在线不卡| 精品一区二区三区av| 欧美性生活影院| 色呦呦国产精品| 在线播放亚洲一区| 一区二区三区在线观看视频| 成人精品国产免费网站| 日韩国产欧美在线播放| 99re视频这里只有精品| 中文字幕的久久| 国产精品一区二区果冻传媒| 精品电影一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 91激情五月电影| 一区二区三区免费| 91热门视频在线观看| 国产精品你懂的在线欣赏| 国产精品亚洲一区二区三区在线 | 午夜国产精品一区| 9人人澡人人爽人人精品| 日韩三级视频中文字幕| 丝袜诱惑制服诱惑色一区在线观看| 91极品视觉盛宴| 一区二区三区久久久| 91碰在线视频| 亚洲精选视频在线| 欧美唯美清纯偷拍| 国产日韩v精品一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 精品国产乱码久久久久久图片| 欧美大片在线观看| 婷婷国产在线综合| 在线观看免费视频综合| 亚洲妇女屁股眼交7| 欧美军同video69gay| 人人狠狠综合久久亚洲| 日韩三级视频中文字幕| 国产曰批免费观看久久久| 久久久美女艺术照精彩视频福利播放| 久久国产三级精品| 国产视频一区在线播放| www.亚洲激情.com| 一区二区三区免费网站| 欧美日韩国产系列| 麻豆久久一区二区| 爽好久久久欧美精品| 欧美一级日韩一级| 国内精品国产成人| 国产精品久久一级| 欧美亚洲动漫精品| 全国精品久久少妇| 久久综合九色综合97婷婷| 丁香激情综合国产| 亚洲乱码国产乱码精品精98午夜 | 欧美最猛黑人xxxxx猛交| 欧美伦理电影网| 亚洲免费资源在线播放| 欧美午夜精品免费| 精品一区精品二区高清| 欧美国产日韩亚洲一区| 欧美亚洲动漫精品| 精品一区二区三区在线播放视频| 欧美国产日韩一二三区| 欧美亚洲综合另类| 久久99精品久久久久久| 国产精品麻豆欧美日韩ww| 欧美午夜影院一区| 久草精品在线观看| 亚洲欧美综合网| 欧美一级久久久久久久大片| 麻豆成人免费电影| 亚洲欧洲日产国产综合网| 欧美高清dvd| 国产精品一区2区| 国产精品久久久久久久久动漫| 色婷婷综合久久久久中文| 天堂一区二区在线免费观看| 精品999在线播放| 91在线观看地址| 日韩av一区二区三区| 国产欧美日韩卡一| 在线不卡的av| 成人一区二区视频| 日韩黄色免费网站| 亚洲欧洲精品一区二区精品久久久| 欧美日韩国产精选| 久久久久久久久久看片| 色婷婷香蕉在线一区二区| 精品一区二区精品| 亚洲午夜激情av| 亚洲国产激情av| 欧美一区二区三区思思人| 国产成人av一区二区三区在线| 一区二区三区欧美日| 精品成人私密视频| 成人av资源网站| 青青草97国产精品免费观看无弹窗版| 国产精品久久精品日日| 91精品欧美福利在线观看| 欧美亚洲高清一区二区三区不卡| 国产99久久久精品| 美女在线一区二区| 亚洲成人中文在线| 亚洲蜜臀av乱码久久精品蜜桃| 久久久亚洲精品一区二区三区| 欧美日韩国产成人在线91| 99久久伊人精品| 国产一区欧美二区| 欧美a一区二区| 性做久久久久久免费观看欧美| 国产精品美女一区二区三区| 精品国产精品网麻豆系列| 欧美美女直播网站| 91麻豆高清视频| 成人小视频在线| 国产一区二区看久久| 日本中文一区二区三区| 亚洲午夜久久久久久久久电影网| 亚洲欧洲av在线| 国产拍揄自揄精品视频麻豆| 精品国产一区二区三区四区四| 色哟哟一区二区在线观看 | 一区二区三区 在线观看视频| 国产日本欧洲亚洲| www久久精品| 欧美精品一区二区三区久久久| 91精品中文字幕一区二区三区| 色猫猫国产区一区二在线视频| 成人精品视频一区二区三区| 国产精品18久久久久| 国模娜娜一区二区三区| 久久超碰97中文字幕| 日本aⅴ免费视频一区二区三区| 色综合一个色综合亚洲| av一本久道久久综合久久鬼色| 成人精品一区二区三区四区| 国产99精品在线观看| 国产精品一色哟哟哟| 国产麻豆欧美日韩一区| 国产一区二区三区综合| 免费在线观看一区二区三区| 午夜精品福利在线| 中文字幕一区二| 亚洲免费毛片网站| 亚洲主播在线播放| 亚洲图片欧美综合| 同产精品九九九| 琪琪一区二区三区| 九色综合国产一区二区三区| 久久精品国产澳门| 国产一区不卡视频| 成人综合婷婷国产精品久久免费| 成人深夜视频在线观看| www.爱久久.com| 在线视频综合导航| 欧美日韩免费观看一区二区三区 | 国产一区二区三区蝌蚪| 国产成人免费av在线| 成人av资源下载| 日本高清不卡一区| 欧美高清精品3d| 久久综合色一综合色88| 国产香蕉久久精品综合网| 国产精品美女久久久久av爽李琼 | 色欧美日韩亚洲| 欧美日韩在线亚洲一区蜜芽| 欧美一级日韩免费不卡| 国产亚洲人成网站| 亚洲视频中文字幕| 五月婷婷久久综合|