久久丫精品无码视频|亚洲成人黄色电影|超碰国产在线观看|亚洲Aⅴ综合免费在线|久久青青草原国产精品|极品美女三级片国产无码a|女人的黄色片子综合AV|日韩成人?毛片

技術(shù)熱線: 4007-888-234
設(shè)計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

實戰(zhàn)八:一位鍵控計數(shù)器

更新時間: 2019-01-05
閱讀量:876

;本實例的目的是讓大家進一步了解鍵盤程序,數(shù)碼管程序。;

本實例的功能是用DIGIT作計數(shù)器,按S2一下計數(shù)器加1,加到9時計數(shù)器不再向上加;

按S3一下計數(shù)器減1,減到0時,計數(shù)不再減,同時計數(shù)器的值送數(shù)碼管2靜態(tài)顯示;

燒寫時應(yīng)注意:配置位已經(jīng)在程序中寫明,加載HEX文件時會自動加載,燒寫時不用再手動設(shè)置配置位。;

實驗時請注意套件跳線選擇;

;*

LIST P=16F84A,R=DEC ;定義器件為16F84,默認(rèn)數(shù)制為十進制

;———————————————————————————-

__CONFIG B’11111111110001’;_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC

                                        ;沒有代碼保護                                              

                                     ;看門狗關(guān)閉                                              

                                     ;上電廷時器開啟                                              

                                     ;振蕩器模式為XT

;———————————————————————————-

PC EQU 02H ; 變量單元定義

STATUS EQU 03

HPORTA EQU 05H

PORTB EQU 06H

TRISA EQU 5H

TRISB EQU 6H;

———————————-STATUS

RP0 EQU 5

;———————————-

COUNTER EQU 10H ;

DIGIT EQU 11H

COUNT1 EQU 12H

COUNT2 EQU 13H

TABADD EQU 14H;


       ORG         0000H

MAIN

        CLRF        PORTA ;初始IO口

        CLRF        PORTB

             BSF 

    STATUS,RP0 ;設(shè)置數(shù)據(jù)寄存器體1 

       MOVLW       00011000B ;設(shè)置SW2,SW3口為輸入、其它口全部為輸出  

      MOVWF       TRISA  

       CLRW 

       MOVWF       TRISB

          BCF         STATUS,RP0 ;恢復(fù)數(shù)據(jù)寄存器體0 

       CLRF        DIGIT      ;清計數(shù)器

        GOTO        LOOP1      ;先顯示0

;———————————

LOOP

       BTFSS       PORTA,3    ;掃描鍵S2是否有按下

        GOTO        SET_1

        BTFSS       PORTA,4    ;掃描鍵S3是否有按下

        GOTO        SET_2 

GOTO  LOOP ;循環(huán)掃描

LOOP1 ;數(shù)碼管顯示程序

        MOVLW       TABLE      ;將轉(zhuǎn)換表的首地址存入TABADD

        MOVWF       TABADD 

            MOVFW       DIGIT            

ADDWF TABADD,W ;計數(shù)值(W)與轉(zhuǎn)換表的起始地址相加

        CALL        CONVERT    ;存入W后調(diào)用轉(zhuǎn)換表子程序

        MOVWF       PORTB      ;取出的七段顯示碼送RB口顯示

        BSF         PORTA,1    ;讓一位數(shù)碼管亮 

       GOTO        LOOP

;————————————————-

SET_1

        BTFSC       PORTA,3   ;去除鍵抖動

        GOTO        LOOP

        CALL        DELAY

        BTFSC       PORTA,3 

       GOTO        LOOP 

       MOVLW       09H       ;計數(shù)值為9后不再加1 

       XORWF       DIGIT,0 

       BZ          LOOP 

       INCF        DIGIT,1   ;不為9計數(shù)值加1

        GOTO        LOOP1     ;到數(shù)碼管顯示

;————————————————-

SET_2 BTFSC PORTA,4 ;去除鍵抖動

        GOTO        LOOP

        CALL        DELAY

        BTFSC       PORTA,4

        GOTO        LOOP  

      MOVF        DIGIT,1 ;計算值為0后不再減1

        BZ          LOOP

        DECF        DIGIT,1 ;不為0計數(shù)值減1

        GOTO        LOOP1   ;到數(shù)碼管顯示

;————————————————-

DELAY ;設(shè)置延時常數(shù)

       MOVLW    150



MOVWF    COUNT1

L2 MOVLW 255

MOVWF    COUNT2

L3 DECFSZ COUNT2,1 ;遞減循環(huán)?

 GOTO   L3

DECFSZ   COUNT1,1

GOTO   L2

RETLW    0

;—————————— —————————————————

CONVERT MOVWF PC

             ;將W寄存器內(nèi)的7段顯示碼地址放入PC

TABLE ; PC執(zhí)行新地址指令, 跳到相對的地址執(zhí)行?

        RETLW    081H     ;0  ;RETLW指令,將七段顯示碼存入W后返回

        RETLW    0E7H     ;1

        RETLW    092H     ;2

        RETLW    0A2H     ;3  

        RETLW    0E4H     ;4

        RETLW    0A8H     ;5 

        RETLW    088H     ;6 

        RETLW    0E3H     ;7 

        RETLW    080H     ;8  

        RETLW    0A0H     ;9

;——- ———————————————————————-

END