標題: 8421定時器程序案例匯編語言 [打印本頁]

作者: xiaos    時間: 2015-4-10 18:31
標題: 8421定時器程序案例匯編語言
  這是一個非常經(jīng)典的8421定時案例

;兩段8421碼,用作計時,P1.3輸出,P1.0清零,P1.1啟動,P1.2為每秒閃爍一次。
;程序代碼如下:

                  ORG 0003H        ;

                  LCALL FUWEI;
                  ORG 000BH;


FUWEI:      MOV P1,#0FFH     ;
                  MOV P2,#0FFH     ;

;************讀兩位8421碼并合并**********


                CLR P2.5         ;準備讀十位
                CLR A            ;累加器清零
                MOV A,P2         ;讀取數(shù)據(jù)
                CPL A            ;A內容取反
                ANL A,#0FH       ;屏蔽高四位
                MOV B,#0AH       ;把0A送入B
                MUL AB           ;把數(shù)據(jù)變?yōu)槭?br />                 MOV 21H,A        ;保存數(shù)據(jù)
                SETB P2.5        ;

                CLR P2.4         ;準備讀個位
                CLR A            ;累加器清零
                MOV A,P2         ;讀取數(shù)據(jù)
                CPL A              ;A內容取反
                ANL A,#0FH       ;屏蔽高四位
                ADD A,21H        ;合并十位和個位
                SETB P2.4        ;
                 CJNE A,#0,BAOCHUN  ;
                 AJMP FUWEI      ;

BAOCHUN:  MOV 22H,A         ;保存BCD碼

                 
                 
;*************啟動按鍵S1******************

S1:       JNB P1.1,QIDONG     ;
              JNB P1.0,FUWEI    ;清零鍵按下轉復位
              AJMP FUWEI;

;**********啟動及輸出程序*****************

QIDONG:  JNB P1.1,QIDONG       ;
               CLR P1.3         ;啟動輸出
               LCALL YANSHI     ;轉延時
BCD:        CPL P1.2         ;
               DJNZ 22H,YANSHI  ;
               AJMP FUWEI        ;

;************延時1秒子程序***************

YANSHI:  MOV R0,#20       ;
              MOV TMOD,#10H    ;設定為定時方式1
              MOV TH1,#3CH     ;裝入定時初值高位
              MOV TL1,#0B0H    ;裝入定時初值低位,定時時間為50ms.
              SETB TR1         ;
LP1:     JNB P1.0,FUWEI   ;
             JBC TF1,LP2      ;50ms時間到就轉
              SJMP LP1         ;50ms時間沒到繼續(xù)等待
LP2:       MOV TH1,#3CH     ;重裝初值
               MOV TL1,#0B0H    ;重裝初值
                     DJNZ R0,LP1      ;把R0內容減1不等于0轉
                   AJMP BCD         ;
                   END.







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1