日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PIC16F877A的四位數(shù)碼管電子鐘
PIC16F877A的四位數(shù)碼管電子鐘
 更新時(shí)間:2009-7-22 16:39:03  點(diǎn)擊數(shù):0
【字體: 字體顏色
/script>

;四位數(shù)碼管時(shí)鐘顯示(24小時(shí)),按下RB1后按RB2小時(shí)閃爍,調(diào)整小時(shí),再次按下RB1
;按RB2分鐘閃爍調(diào)整分鐘,再按RB1小時(shí)、分鐘不閃爍,退出小時(shí)分鐘調(diào)整。
;**************************************
list  p=16f877A
#include <p16f877A.inc>
;************變量定義******************
DIGIT       EQU      20H         ;5MS計(jì)數(shù)器
MIN_L       EQU      21H         ;分鐘
MIN_H       EQU      22H         ;
HOU_L       EQU      23H         ;小時(shí)
HOU_H       EQU      24H         ;
SEC         EQU      25H         ;秒位
FLAG        EQU      26H         ;第4位為小時(shí)調(diào)整標(biāo)志位,第5位為分鐘調(diào)整標(biāo)志位
W_T         EQU      27H         ;W現(xiàn)場(chǎng)保護(hù)寄存器
ST_T        EQU      28H         ;STATUS現(xiàn)場(chǎng)保護(hù)寄存器
TABADD      EQU      29H         ;轉(zhuǎn)換數(shù)碼管地址
C1          EQU      30H         ;
C2          EQU      31H         ;

COUNT1      EQU      33H         ;
COUNT2      EQU      34H         ;
COUNT3      EQU      35H         ;
COUNT4      EQU      36H         ;
COUNT5      EQU      37H         ;
;*****************************************
            ORG      000H
            GOTO     MAIN
;**************中斷服務(wù)子程序*************
            ORG      004H              ;
TIME
            MOVWF    W_T                ;W、STATUS現(xiàn)場(chǎng)保護(hù)
            SWAPF    STATUS,W           ;
            MOVWF    ST_T               ;
            MOVLW    D'100'             ;TMR0重賦初值
            MOVWF    TMR0               ;
            BCF      INTCON,T0IF        ;TMR0中斷溢出標(biāo)志清0
            MOVLW    0FFH               ;先熄滅數(shù)碼管以免閃爍
            MOVWF    PORTC              ;
            BSF      PORTA,2
            BSF      PORTA,3              ;
            BSF      PORTA,4
            BSF      PORTA,5
            INCF     COUNT1,F           ;
           
            MOVLW    01H                ;
            XORWF    COUNT1,W
            BTFSC    STATUS,Z           ;
            GOTO     DISPMIN_L          ;COUNT1為1,轉(zhuǎn)分鐘低位MIN_L顯示
           
            MOVLW    02H                ;
            XORWF    COUNT1,W           ;
            BTFSC    STATUS,Z           ;
            GOTO     DISPMIN_H          ;COUNT1為2,轉(zhuǎn)分鐘高位MIN_H顯示

            MOVLW    03H                ;
            XORWF    COUNT1,W           ;
            BTFSC    STATUS,Z           ;
            GOTO     DISPHOU_L          ;COUNT1為3,轉(zhuǎn)小時(shí)低位HOU_L顯示
;*********************小時(shí)高位HOU_H顯示*******************************
            MOVLW    04H                ;
            XORWF    COUNT1,W           ;
            BTFSC    STATUS,Z           ;
            GOTO     DISPHOU_H          ;COUNT1為4,轉(zhuǎn)小時(shí)低位HOU_H顯示
DISPHOU_H   CLRF     COUNT1
            BTFSS    FLAG,4 
            GOTO     DISP4
SETDISP4
            INCF     COUNT5,F             ;
            MOVLW    D'25'              ;
            SUBWF    COUNT5,W             ;COUNT5-W,
            BTFSS    STATUS,C           ;
            GOTO     DISP4              ;COUNT5<25,C=0,轉(zhuǎn)DISP4
            MOVLW    D'50'              ;
            XORWF    COUNT5,W             ;
            BTFSC    STATUS,Z           ;
            GOTO     M4                 ;=50,COUNT5清0,轉(zhuǎn)
            MOVLW    0FFH
            MOVWF    PORTA            ;25<COUNT5<50,小時(shí)高位不亮
            MOVWF    PORTC
            GOTO     LOOP2              ;
DISP4                       
            BCF      PORTA,3           ;點(diǎn)亮小時(shí)高位
            BSF      PORTA,2
            BSF      PORTA,4
            BSF      PORTA,5
     
            MOVF     HOU_H,W            ;
            GOTO     DISP
M4
            CLRF     COUNT5
            GOTO     SETDISP4


;*****************分鐘低位MIN_L顯示***************************
DISPMIN_L
            BTFSS    FLAG,5             ;
            GOTO     DISP1              ;分鐘不調(diào)整,轉(zhuǎn)DISP1
SETDISP1
            INCF     COUNT2,F             ;
            MOVLW    D'25'              ;
            SUBWF    COUNT2,W           ;
            BTFSS   STATUS,C            ;
            GOTO     DISP1              ;COUNT2<25,C=0
            MOVLW    D'50'              ;
            XORWF    COUNT2,W             ;
            BTFSC    STATUS,Z           ;
            GOTO     M1                 ;=50,COUNT2清0,轉(zhuǎn)點(diǎn)亮分鐘低位
            MOVLW    0FFH               ;25<COUNT5<50,分鐘低位不亮
            MOVWF    PORTC
            MOVWF    PORTA
            GOTO     LOOP2              ;
DISP1

            BCF      PORTA,4            ;點(diǎn)亮分鐘低位
            BSF      PORTA,2
            BSF      PORTA,3
            BSF      PORTA,5
            MOVF     MIN_L,W            ;
            GOTO     DISP               ;

M1
            CLRF     COUNT2
            GOTO     SETDISP1

;*********************分鐘高位MIN_H顯示********************************
DISPMIN_H
            BTFSS    FLAG,5             ;
            GOTO     DISP2              ;
SETDISP2
            INCF     COUNT3,F             ;
            MOVLW    D'25'              ;
            SUBWF    COUNT3,W           ;
            BTFSS   STATUS,C           ;
            GOTO     DISP2              ;
            MOVLW    D'50'              ;
            XORWF    COUNT3,W             ;
            BTFSC    STATUS,Z           ;
            GOTO     M2
            MOVLW    0FFH               ;25<COUNT5<50,分鐘高位不亮
            MOVWF    PORTA              ;
            MOVWF    PORTC
            GOTO     LOOP2              ;
DISP2

            BCF      PORTA,5            ;點(diǎn)亮分鐘高位
            BSF      PORTA,2
            BSF      PORTA,3              ;
            BSF      PORTA,4
            
            MOVF     MIN_H,W            ;
            GOTO     DISP               ;

M2
            CLRF     COUNT3
            GOTO     SETDISP2

;*********************小時(shí)低位HOU_L顯示******************************
DISPHOU_L
            BTFSS    FLAG,4             ;
            GOTO     DISP3              ;
SETDISP3
            INCF     COUNT4,F             ;
            MOVLW    D'25'              ;
            SUBWF    COUNT4,W           ;
            BTFSS   STATUS,C           ;
            GOTO     DISP3              ;
            MOVLW    D'50'              ;
            XORWF    COUNT4,W             ;
            BTFSC    STATUS,Z           ;
            GOTO     M3
            MOVLW    B'01111111'        ;
            MOVWF    PORTC              ;
            BCF      PORTA,2            ;點(diǎn)亮小時(shí)低位
            BSF      PORTA,3
            BSF      PORTA,4
            BSF      PORTA,5
            GOTO     LOOP2              ;
DISP3

            BCF      PORTA,2            ;點(diǎn)亮小時(shí)低位
            BSF      PORTA,3              ;
            BSF      PORTA,4
            BSF      PORTA,5
            
            MOVF     HOU_L,W            ;
            CALL     CONVERT            ;
            MOVWF    PORTC              ;
            BCF      PORTC,7            ;DP
            GOTO     LOOP2

M3
            CLRF     COUNT4
            GOTO     SETDISP3
;********************顯示************************************
DISP
                 
            CALL     CONVERT            ;
            MOVWF    PORTC              ;送RC口顯示
LOOP2
            INCF     DIGIT,F
            MOVLW    D'200'             ;
            XORWF    DIGIT,W            ;
            BTFSS    STATUS,Z           ;
            GOTO     TIMEND             ;
            CLRF     DIGIT              ;
            INCF     SEC,F                ;
           
            MOVLW    D'60'              ;
            XORWF    SEC,W              ;
            BTFSS    STATUS,Z           ;
            GOTO     TIMEND             ;
            CLRF     SEC                ;
            INCF     MIN_L,F
             
            MOVLW    D'10'              ;
            XORWF    MIN_L,W            ;
            BTFSS    STATUS,Z           ;
            GOTO     TIMEND             ;
            CLRF     MIN_L
            INCF     MIN_H,F              ;

            MOVLW    D'6'               ;
            XORWF    MIN_H,W            ;
            BTFSS    STATUS,Z           ;
            GOTO     TIMEND             ;
            CLRF     MIN_H              ;

            MOVLW    D'2'               ;
            XORWF    HOU_H,W            ;
            BTFSC    STATUS,Z           ;
            GOTO     HOU1               ;
            INCF     HOU_L,F              ;

            MOVLW    D'10'
            XORWF    HOU_L,W            ;
            BTFSS    STATUS,Z           ;
            GOTO     TIMEND             ;
            CLRF     HOU_L              ;
            INCF     HOU_H,F              ;
            GOTO     TIMEND             ;
HOU1
            INCF     HOU_L,F
            MOVLW    D'4'               ;
            XORWF    HOU_L,W            ;
            BTFSS    STATUS,Z
            GOTO     TIMEND             ;
            CLRF     HOU_L
            CLRF     HOU_H              ;
            GOTO     TIMEND             ;
TIMEND
            SWAPF    ST_T,W
            MOVWF    STATUS
            SWAPF    W_T,F
            SWAPF    W_T,W
            RETFIE
;****************************************************
CONVERT  
           ADDWF  PCL,F                    ;將W寄存器內(nèi)的7段顯示碼地址放入PCL                                       ;PCL執(zhí)行新地址指令,跳到相對(duì)的地址執(zhí)行?              
   RETLW     0C0H       ;0 ,RETLW指令,將七段顯示碼存入W后返回
   RETLW     0F9H       ;1                               
   RETLW     0A4H       ;2
   RETLW     0B0H       ;3
   RETLW     099H       ;4
   RETLW     092H       ;5
   RETLW     082H       ;6
   RETLW     0F8H       ;7
   RETLW     080H       ;8
   RETLW     090H       ;9
;*******************主程序***********************************
MAIN
            CLRF     PORTC              ;初始化I/O口
            CLRF     PORTA              ;
           
            BSF      STATUS,RP0         ;選體1
            MOVLW    06H
            MOVWF    ADCON1             ;定義RA所有相關(guān)引腳全部為普通數(shù)字I/O腳
            MOVLW    00H                ;RA、RC定義為輸出
            MOVWF    TRISC              ;
            MOVWF    TRISA              ;
            MOVLW    0FFH               ;RB定義為輸入
            MOVWF    TRISB              ;
            MOVLW    B'00000100'        ;
            MOVWF    OPTION_REG         ;啟用上拉電阻,定時(shí)器分配給TMRO,分頻比為1:32
            BCF      STATUS,RP0         ;選體0

            MOVLW    D'100'             ;定時(shí)器送初值100,定時(shí)(256-100)*32US=4.992MS
            MOVWF    TMR0               ;每隔4。992MS一次中斷

            MOVLW    0FFH               ;先熄滅數(shù)碼管以免閃爍
            MOVWF    PORTC              ;
            BSF      PORTA,2
            BSF      PORTA,3              ;
            BSF      PORTA,4
            BSF      PORTA,5

            CLRF     DIGIT
            CLRF     MIN_L
            CLRF     MIN_H
            CLRF     HOU_L
            CLRF     HOU_H
            
            CLRF     COUNT1
            CLRF     COUNT2
            CLRF     COUNT3
            CLRF     COUNT4
            CLRF     COUNT5
            CLRF     SEC
            CLRF     FLAG

            BCF      INTCON,T0IF       ;定時(shí)器溢出中斷標(biāo)志清0
            BSF      INTCON,T0IE       ;開放總中斷和TMR0中斷使能
            BSF      INTCON,GIE        ;

;******************分鐘/小時(shí)調(diào)整*****************************
LOOP6       BTFSS    PORTB,2           ;必須保證RB2松開
            GOTO     LOOP6
            CALL     DELAY
            BTFSS    PORTB,2
            GOTO     LOOP6
LOOP7       BTFSS    PORTB,1            ;RB1是否松開?
            GOTO     LOOP7
            CALL     DELAY
            BTFSS    PORTB,1
            GOTO     LOOP7

LOOP
           
            BCF      FLAG,4            ;小時(shí)調(diào)整標(biāo)志位清0
            BCF      FLAG,5            ;分鐘調(diào)整標(biāo)志位清0

LOOP1
            BTFSC    PORTB,1           ;RB1按下否?
            GOTO     LOOP1             ;
            CALL     DELAY             ;
            BTFSC    PORTB,1           ;再判RB1按下否?
            GOTO     LOOP1
           
;********************小時(shí)調(diào)整***********************************
            

            BSF      FLAG,4             ;小時(shí)調(diào)整標(biāo)志位置1
LOOP3       BTFSS    PORTB,1            ;RB1是否松開?不松開不允許執(zhí)行RB2按下
            GOTO     LOOP3
            CALL     DELAY
            BTFSS    PORTB,1
            GOTO     LOOP3
SET_1       BTFSC    PORTB,2            ;RB2按下否?
            GOTO     CLOCK1             ;未按下
            CALL     DELAY
            BTFSC    PORTB,2
            GOTO     CLOCK1

            MOVLW    02H
            XORWF    HOU_H,W
            BTFSC    STATUS,Z      
            GOTO     HOU2               ;小時(shí)高位等于2轉(zhuǎn)HOU2
            INCF     HOU_L,F            ;不等于2,小時(shí)低位加1

            MOVLW    D'10'
            XORWF    HOU_L,W
            BTFSS    STATUS,Z
            GOTO     CLOCK1              ;小時(shí)低位不等于10,等待RB2再次按下
            CLRF     HOU_L              ;等于10小時(shí)低位清0,
            INCF     HOU_H,F            ;小時(shí)高位加1
                                        ;等待再次按RB2

CLOCK1
            BTFSC    PORTB,1            ;CLOCK按下否?
            GOTO     SET_1              ;CLOCK未按下,判斷SET是否按下?
            CALL     DELAY
            BTFSC    PORTB,1
            GOTO     SET_1
            GOTO     LOOP5              ;CLOCK按下進(jìn)行分鐘調(diào)整

HOU2
            INCF     HOU_L,F            ;小時(shí)低位加1
            MOVLW    D'4'               ;
            XORWF    HOU_L,W            ;
            BTFSS    STATUS,Z
            GOTO     CLOCK1              ;小時(shí)低位不等于4
            CLRF     HOU_L              ;小時(shí)低位等于4,小時(shí)高低位清0,等待RB2按下
            CLRF     HOU_H              ;
            GOTO     CLOCK1

;*******************分鐘調(diào)整********************************
LOOP5       BTFSS    PORTB,2           ;必須保證RB2松開
            GOTO     LOOP5
            CALL     DELAY
            BTFSS    PORTB,2
            GOTO     LOOP5

            BCF      FLAG,4             ;小時(shí)調(diào)整標(biāo)志位清0
            BSF      FLAG,5             ;分鐘調(diào)整標(biāo)志位置1
LOOP4       BTFSS    PORTB,1            ;RB1是否松開?不松開不允許執(zhí)行RB2按下
            GOTO     LOOP4
            CALL     DELAY
            BTFSS    PORTB,1
            GOTO     LOOP4

SET_2       BTFSC    PORTB,2             ;RB2按下?
            GOTO     CLOCK2              ;未按下
            CALL     DELAY
            BTFSC    PORTB,2
            GOTO     CLOCK2
            INCF     MIN_L,F            ;RB2按下,分鐘低位加1

            MOVLW    D'10'
            XORWF    MIN_L,W
            BTFSS    STATUS,Z
            GOTO     CLOCK2              ;不等于10,
            CLRF     MIN_L              ;等于10,分鐘低位清0
            INCF     MIN_H,F            ;高位加1

            MOVLW    06H
            XORWF    MIN_H,W
            BTFSS    STATUS,Z
            GOTO     CLOCK2
            CLRF     MIN_H              ;等于6,分鐘高位清0
                                        ;等待RB2再次按下
CLOCK2
            BTFSC    PORTB,1            ;CLOCK按下否?
            GOTO     SET_2              ;CLOCK未按下,判斷SET是否按下?
            CALL     DELAY
            BTFSC    PORTB,1
            GOTO     SET_2
            GOTO     LOOP6
;*****************0.1S延時(shí)子程序*******************
DELAY
            MOVLW    D'150'
            MOVWF    C1
L2
            MOVLW    D'255'         
            MOVWF    C2
L3
            DECFSZ   C2,F
            GOTO     L3
            DECFSZ   C1,F
            GOTO     L2
            RETLW    0
;****************************************************
          END

  • 上一篇: PIC單片機(jī)AD轉(zhuǎn)換匯編程序
  • 下一篇: PIC I/O喚醒程序
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1