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

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PIC16F77A 4*4按鍵數(shù)碼管程序
PIC16F77A 4*4按鍵數(shù)碼管程序
 更新時(shí)間:2009-7-9 16:49:02  點(diǎn)擊數(shù):0
【字體: 字體顏色

;******************************************************************************

TMR0        EQU    01H          ;定義定時(shí)器/計(jì)數(shù)器0寄存器地址
PCL         EQU    02H          ;定義程序計(jì)數(shù)器低字節(jié)寄存器地址
STATUS      EQU    03H          ;定義狀態(tài)寄存器地址
PORTA       EQU    05H          ;定義RA口數(shù)據(jù)寄存器地址
TRISA       EQU    85H          ;定義RA口方向控制寄存器地址
PORTB       EQU    06H          ;定義RB的數(shù)據(jù)寄存器地址
TRISB       EQU    86H          ;定義RB的方向控制寄存器地址
PORTC       EQU    07H          ;定義RC口數(shù)據(jù)寄存器地址
TRISC       EQU    87H          ;定義RC口方向控制寄存器地址
PORTD       EQU    08H          ;定義RD口數(shù)據(jù)寄存器地址
TRISD       EQU    88H          ;定義RD口方向控制寄存器地址
PORTE       EQU    09H          ;定義RE口數(shù)據(jù)寄存器地址
TRISE       EQU    89H          ;定義RE口方向控制寄存器地址
INTCON      EQU    0BH          ;定義中斷控制寄存器地址
OPTION_REG  EQU    81H          ;定義選項(xiàng)寄存器地址
ADCON1      EQU    9FH          ;定義ADC模塊控制寄存器1的地址

C           EQU    0            ;定義進(jìn)位標(biāo)志位的位地址
Z           EQU    2            ;定義0標(biāo)志位的位地址
RP0         EQU    5            ;定義狀態(tài)寄存器中的頁選位RP0
W           EQU    0            ;定義傳送目標(biāo)寄存器為W的指示位
F           EQU    1            ;定義傳送目標(biāo)寄存器為RAM的指示位
T0IF        EQU    2            ;定義TMR0中斷標(biāo)志位的位地址
T0IE        EQU    5            ;定義TMR0中斷使能位的位地址
INTE        EQU    4            ;定義外部中斷使能位的位地址
INTF        EQU    1            ;定義外部中斷標(biāo)志位的位地址
RBIF        EQU    0            ;
DC          EQU    1            ;
RBIE        EQU    3            ;
GIE         EQU    7            ;
PSA         EQU    3            ;
RB4         EQU    4            ;
RB5         EQU    5            ;
RB6         EQU    6            ;
RB7         EQU    7            ;

RS          EQU    3            ;
RW          EQU    2            ;
LCDE        EQU    1            ;

SCL         EQU    3            ;
SDA         EQU    4            ;

FLAG        EQU   20H           ;
N1          EQU   D’2’          ;
N2          EQU   D’30’         ;
DATA1       EQU   21H           ;
DATA2       EQU   22H           ;
DATA3       EQU   23H           ;
DATA4       EQU   24H           ;
DATA5       EQU   25H           ;
DATA6       EQU   26H           ;
BUF         EQU   27H           ;
BUF1        EQU   28H           ;
BUF2        EQU   29H           ;
BUF3        EQU   2AH           ;
BUF4        EQU   2BH           ;
BUF5        EQU   2CH           ;
CNT1        EQU   2DH           ;
CNT2        EQU   2EH           ;
CNT3        EQU   2FH           ;
CNT4        EQU   30H           ;
PORTB_B     EQU   31H           ;
PORTC_B     EQU   32H           ;
PORTD_B     EQU   33H           ;
PCLATH_B    EQU   34H           ;
W_TEMP      EQU   7FH           ;W現(xiàn)場保護(hù)寄存器
STATUS_TEMP EQU   35H           ;STATUS現(xiàn)場保護(hù)寄存器
BUF_TEMP    EQU   36H           ;
BUF_TEMP1   EQU   37H           ;
BUF1_TEMP   EQU   38H           ;
BUF1_TEMP1  EQU   39H           ;
BUF2_TEMP   EQU   3AH           ;
BUF2_TEMP1  EQU   3BH           ;
PORTB_TEMP  EQU   3CH           ;
OPTION_TEMP EQU   3DH           ;
BUFLCD      EQU   3EH           ;
BUFLCD1     EQU   3FH           ;
KEY_B       EQU   40H           ;
KEYBUF      EQU   41H           ;
KEYBUF1     EQU   42H           ;
KEYCNT      EQU   43H           ;


         ORG     000H           ;
         NOP                    ;放置一條ICD必需的空操作指令
         GOTO    MAIN           ;
         ORG     004H           ;
         GOTO    INTSERV        ;         
         ORG     008H           ;
;**********************************
TABLE3                          ;
         ADDWF  PCL,1           ;
         RETLW  0EEH            ;
         RETLW  0DEH            ;
         RETLW  0BEH            ;
         RETLW  7EH             ;
         RETLW  0EDH            ;
         RETLW  0DDH            ;
         RETLW  0BDH            ;
         RETLW  7DH             ;
         RETLW  0EBH            ;
         RETLW  0DBH            ;
         RETLW  0BBH            ;
         RETLW  7BH             ;
         RETLW  0E7H            ;
         RETLW  0D7H            ;
         RETLW  0B7H            ;
         RETLW  77H             ;
         RETLW  55H             ;
;***********************************
convert
         ADDWF   PCL,1          ;
TABLE    RETLW   0C0H           ; 0   
         RETLW   0F9H           ; 1
         RETLW   0A4H           ; 2
         RETLW   0B0H           ; 3
         RETLW   99H            ; 4
         RETLW   92H            ; 5
         RETLW   82H            ; 6
         RETLW   0F8H           ; 7
         RETLW   80H            ; 8
         RETLW   90H            ; 9
;**********************************
MAIN     
         BSF    STATUS,RP0      ;設(shè)置寄存器體1
         MOVLW  07H             ;PSA=0 for tmr0, PS2,PS1,PS0=1 分頻比1:256
         MOVWF  OPTION_REG      ;預(yù)分頻器分配給定時(shí)器0,開啟RB口弱上拉.
         MOVLW  07H             ;
         MOVWF  ADCON1          ;設(shè)置RA口全部為普通數(shù)字IO口
         MOVLW  00H             ;
         MOVWF  TRISC           ;RC口全部為輸出
         MOVWF  TRISE           ;
         MOVLW  0F0H            ;
         MOVWF  TRISD           ;RD口全部為輸出
         MOVLW  0FFH            ;
         MOVWF  TRISB           ;RB口全部為輸入
         BCF    STATUS,RP0      ;恢復(fù)寄存器體0
         MOVLW  0FFH            ;
         MOVWF  PORTD           ;
;**********************************   
KEYLOOP  CALL   DISP2           ;
         CALL   KEYWORK         ;
         GOTO   KEYLOOP         ;
;*********************************
KEYWORK  
         MOVLW  0FFH            ;
         MOVWF  PORTD           ;
         BCF    PORTD, 0        ;
         MOVF   PORTD, W        ;
         ANDLW  0F0H            ;
         XORLW  0F0H            ;
         BTFSS  STATUS,Z        ;
         GOTO   KEYROW          ;
         BSF    PORTD, 0        ;
         BCF    PORTD, 1        ;
         MOVF   PORTD, W        ;
         ANDLW  0F0H            ;
         XORLW  0F0H            ;
         BTFSS  STATUS,Z        ;
         GOTO   KEYROW          ;
         BSF    PORTD, 1        ;
         BCF    PORTD, 2        ;
         MOVF   PORTD, W        ;
         ANDLW  0F0H            ;
         XORLW  0F0H            ;
         BTFSS  STATUS,Z        ;
         GOTO   KEYROW          ;
         BSF    PORTD, 2        ;
         BCF    PORTD, 3        ;
         MOVF   PORTD, W        ;
         ANDLW  0F0H            ;
         XORLW  0F0H            ;
         BTFSS  STATUS,Z        ;
         GOTO   KEYROW          ;
         BSF    PORTD, 3        ;
         GOTO   WAITREL         ;
KEYROW   CALL   DELAY10MS       ;
         MOVF   PORTD, W        ;
         ANDLW  0F0H            ;
         XORLW  0F0H            ;
         BTFSC  STATUS,Z        ;
         GOTO   WAITREL         ;
KEYCHE   MOVF   PORTD,W         ;
         MOVWF  KEYBUF          ;
         CLRF   KEYCNT          ;
CHEKEYLP 
         MOVF   KEYCNT, W       ;
         CALL   TABLE3          ;
         MOVWF  KEYBUF1         ;
         XORWF  KEYBUF, W       ;
         BTFSC  STATUS, Z       ;
         GOTO   KEYOK           ;
         INCF   KEYCNT, 1       ;
         MOVF   KEYBUF1,W       ;
         XORLW  55H             ;
         BTFSC  STATUS, Z       ;
         GOTO   WAITREL         ;
         GOTO   CHEKEYLP        ;
KEYOK    
         MOVF   KEYCNT,W        ;
         XORLW  00H             ;
         BTFSC  STATUS,Z        ;
         GOTO   WAITREL         ;

         MOVF   KEYCNT, W       ;
         XORLW  01H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY1            ;

         MOVF   KEYCNT, W       ;
         XORLW  02H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY2            ;

         MOVF   KEYCNT, W       ;
         XORLW  03H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY3            ;

         MOVF   KEYCNT, W       ;
         XORLW  04H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY4            ;

         MOVF   KEYCNT, W       ;
         XORLW  05H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY1            ;

         MOVF   KEYCNT, W       ;
         XORLW  06H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY2            ;

         MOVF   KEYCNT, W       ;
         XORLW  07H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY3            ;

         MOVF   KEYCNT, W       ;
         XORLW  08H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY4            ;

         MOVF   KEYCNT, W       ;
         XORLW  09H             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY1            ;

         MOVF   KEYCNT, W       ;
         XORLW  0AH             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY2            ;

         MOVF   KEYCNT, W       ;
         XORLW  0BH             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY3            ;

         MOVF   KEYCNT, W       ;
         XORLW  0CH             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY4            ;

         MOVF   KEYCNT, W       ;
         XORLW  0DH             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY1            ;

         MOVF   KEYCNT, W       ;
         XORLW  0EH             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY2            ;

         MOVF   KEYCNT, W       ;
         XORLW  0FH             ;
         BTFSC  STATUS,Z        ;
         GOTO   KEY3            ;
WAITREL  CALL   DISP2           ;
         MOVF   PORTD,W         ;
         ANDLW  B’11110000’     ;
         XORLW  B’11110000’     ;
         BTFSC  STATUS,Z        ;
         GOTO   KEYLOOP1        ;
         GOTO   WAITREL         ;
KEYLOOP1 CALL   DELAY10MS       ;
         RETURN                 ;
;*********************************
KEY1     MOVLW  0A0H            ;
         MOVWF  INTCON          ;
         MOVLW  .16             ;
         MOVWF  CNT2            ;
         MOVLW  .12             ;
         MOVWF  TMR0            ;
         GOTO   WAITREL         ;
;*********************************
KEY2     MOVLW  00H             ;
         MOVWF  INTCON          ;
         GOTO   WAITREL         ;
;*********************************
KEY3     INCF   BUF, 1          ;
         MOVF   BUF, W          ;
         ANDLW  0FH             ;
         XORLW  0AH             ;
         BTFSC  STATUS,Z        ;
         GOTO   MIN_L           ;
         GOTO   WAITREL         ;
MIN_L    MOVF   BUF, W          ;
         ANDLW  0F0H            ;
         MOVWF  BUF             ;
         GOTO   WAITREL         ;
;*********************************
KEY4     MOVLW  10H             ;
         ADDWF  BUF, F          ;
         MOVF   BUF, W          ;
         ANDLW  0F0H            ;
         XORLW  60H             ;
         BTFSC  STATUS,Z        ;
         GOTO   MIN_H           ;
         GOTO   WAITREL         ;
MIN_H    MOVF   BUF, W          ;
         ANDLW  0FH             ;
         MOVWF  BUF             ;
         GOTO   WAITREL         ;
;*********************************
INTSERV
         MOVWF   W_TEMP         ;
         SWAPF   STATUS,W       ;
         CLRF    STATUS         ;
         MOVWF   STATUS_TEMP    ;

         BCF     INTCON,T0IF    ;
         DECFSZ  CNT2,1         ;
         GOTO    KEYOUT         ;
         MOVLW   .16            ;
         MOVWF   CNT2           ;
         INCF    BUF,1          ;
         MOVF    BUF,W          ;
         ANDLW   0FH            ;
         XORLW   0AH            ;
         BTFSS   STATUS,Z       ;
         GOTO    KEYOUT         ;
         MOVF    BUF,W          ;
         ANDLW   0F0H           ;
         MOVWF   BUF            ;
         MOVLW   10H            ;
         ADDWF   BUF,1          ;
         MOVF    BUF,W          ;
         ANDLW   0F0H           ;
         XORLW   60H            ;
         BTFSS   STATUS,Z       ;
         GOTO    KEYOUT         ;
         CLRF    BUF            ;

KEYOUT   MOVLW   .12            ;
         MOVWF   TMR0           ;
         SWAPF   STATUS_TEMP,W  ;
         MOVWF   STATUS         ;
         SWAPF   W_TEMP,F       ;
         SWAPF   W_TEMP,W       ;
         RETFIE                 ;
;*********************************
;        顯示子程序             ;
;*********************************
DISP2    MOVF   BUF,  W         ;
         ANDLW  0FH             ;
         CALL   convert         ;
         MOVWF  PORTC           ;
         BCF    PORTE,1         ;
         CALL   DELAY           ;
         BSF    PORTE,1         ;

         MOVF   BUF, W          ;
         MOVWF  BUF_TEMP        ;
         SWAPF  BUF_TEMP,W      ;
         ANDLW  0FH             ;
         CALL   convert         ;
         MOVWF  PORTC           ;
         BCF    PORTE,2         ;
         CALL   DELAY           ;
         BSF    PORTE,2         ;
         RETURN                 ;
;*********************************
DELAY                           ;{2+[2+(1+2)*(DATA2-1)+2+1+2]*(DATA1-1)+2+2}=0.382MS
         MOVLW  N1              ;(1)
         MOVWF  DATA1           ;(1)
DEL1     MOVLW  N2              ;(1)
         MOVWF  DATA2           ;(1)
DEL2     DECFSZ DATA2,1         ;(1\2)DATA2-1=0?
         GOTO   DEL2            ;(2)
         DECFSZ DATA1,1         ;(1\2)DATA1-1=0?
         GOTO   DEL1            ;(2)
         RETURN                 ;(2)
;;********************************
DELAY10MS
         MOVLW  .8              ;將外層循環(huán)參數(shù)值送到DATA3
         MOVWF  DATA3           ;
LP0
         MOVLW  .3              ;將內(nèi)層循環(huán)參數(shù)值送到DATA4
         MOVWF  DATA4           ;
LP1      CALL   DISP2           ;(382*4+44)uS=1.572MS
         DECFSZ DATA4,1         ;變量DATA4內(nèi)容遞減,若為0則跳躍
         GOTO   LP1             ;跳轉(zhuǎn)到LP1
         DECFSZ DATA3,1         ;變量DATA3內(nèi)容遞減,若為0則跳躍
         GOTO   LP0             ;跳轉(zhuǎn)到LP0
         RETURN                 ;返回主程序
         END

  • 上一篇: 單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)程序
  • 下一篇: PIC單片機(jī) 電子鐘
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(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ī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(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ì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

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