專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

單片機之秒表匯編程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2010年06月17日   【字體:

  此程序上電后開始顯示并不正常,過一會才正常,按鍵似乎并沒有用,希望能明白怎么回事

頻率12mhz ,從零開始計到99秒,原理為先通過十六進制和十進制的轉換后使用變址尋址把數(shù)據(jù)

顯示出來,十位和各位共延時4毫秒,如果有按鍵按下計數(shù)從零開始

DIZHI  EQU 21H    ;用于中間的數(shù)據(jù)傳送
 COUNT  EQU 22H    ;用于計數(shù)器的自加
 ORG    0000H
 JMP    START
 ORG    0030H
  TAB:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H  ;共陽極代碼
START:  CLR    COUNT
WORK1:  CALL   DISPY         ;十六進制的轉換,輸出代碼顯示
        INC    COUNT
 JNB     P2.0 , FUYUAN ;s4按下從零開始計數(shù)
        MOV    A  ,COUNT
 CJNE   A  ,#100 ,WORK2
 CLR    COUNT
 CALL   START
WORK2:   LJMP   WORK1
DISPY:  MOV    A  ,COUNT
 MOV    B ,#10
 DIV    AB
 MOV    R1 ,#250    ;寄存器計數(shù)250次,一次4毫秒
 MOV    DIZHI  ,A
DISP: MOV    A      ,DIZHI ;數(shù)據(jù)的中間交換
 MOV    DPTR  ,#TAB
        MOVC    A   ,@ A+DPTR;變址尋址
        MOV    P0  ,A       ;P0為段選
       CLR     P2.5         ;P2位選,顯示十位
       CALL    DEL
       SETB    P2.5
       MOV     A   ,B
       MOVC    A  , @A+DPTR
       MOV     P0 ,A        ;顯示個位
       CLR      P2.4
       CALL    DEL
       SETB    P2.4
       DJNZ    R1  ,DISP
       RET
FUYUAN:CALL    DEL
       MOV      P0  ,#11111111B
       MOV      P2 ,#11111111B
       LJMP    START   ;從零開始
DEL:   MOV     R6 ,#4
 F1:   MOV     R7, #250    ;延時兩個毫秒
 F2:   DJNZ     R7 ,F2
       DJNZ     R6 ,F1
 RET
 END

關閉窗口

相關文章