国产精品无码一区二区三区A片_无码狠狠躁久久久久久久91_国产精品久久久久久久_国产99九九久久无码熟妇_国产人妻精品久久久久野外_久久夜色精品国产欧美乱极品_91精品国产色综合久久不卡98口_精品人妻系列无码人妻免费视频

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

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

開發(fā)工具

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

技術(shù)支持

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

新品推廣

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

新聞中心

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

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

更新時(shí)間: 2019-01-05
閱讀量:800

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

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

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

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

實(shí)驗(yàn)時(shí)請注意套件跳線選擇;

;*

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

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

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

                                        ;沒有代碼保護(hù)                                              

                                     ;看門狗關(guān)閉                                              

                                     ;上電廷時(shí)器開啟                                              

                                     ;振蕩器模式為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      ;清計(jì)數(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 ;計(jì)數(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   ;去除鍵抖動(dòng)

        GOTO        LOOP

        CALL        DELAY

        BTFSC       PORTA,3 

       GOTO        LOOP 

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

       XORWF       DIGIT,0 

       BZ          LOOP 

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

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

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

SET_2 BTFSC PORTA,4 ;去除鍵抖動(dòng)

        GOTO        LOOP

        CALL        DELAY

        BTFSC       PORTA,4

        GOTO        LOOP  

      MOVF        DIGIT,1 ;計(jì)算值為0后不再減1

        BZ          LOOP

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

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

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

DELAY ;設(shè)置延時(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