|
本帖最后由 daniu 于 2014-12-27 17:19 編輯
下面是電路圖

- ;================================================================
- ;程序編寫人:蘭建文
- ;編寫地點(diǎn):51hei培訓(xùn)機(jī)構(gòu)
- ;時間5月24日晚間 星期日
- ;功能:本程序?qū)崿F(xiàn)P0口的對數(shù)碼管動態(tài)顯示秒表的分、秒、1/100秒;
- ; 計時程序由中斷服務(wù)程序?qū)崿F(xiàn),采用定時計數(shù)器T0工作方式1;
- ; P2口實現(xiàn)對數(shù)碼管的片選功能
- ;================================================================
- ;==========================初始化================================
- SHUCHU EQU P2 ;定義P0口為輸出口
- PIANXUAN EQU P1 ;定義P2口為片選口
- MIAO EQU 30H
- FEN EQU 31H
- MIAO0 EQU 32H
- SHUZI EQU 33H
- C_0 BIT 20H.0
- ;======================系統(tǒng)程序開始==============================
- ORG 00H
- LJMP START
- ORG 03H
- LJMP ON_OFF
- ORG 0BH
- LJMP T0_1
- ORG 13H
- LJMP RESET
- ORG 30H
- START:
- CALL INIT
- SETB C_0
- MOV MIAO,#00
- MOV MIAO0,#00
- MOV FEN,#00
- MOV DPTR,#TAB
- MOV R2,#5
- MAIN:
- JNB C_0,$
- CLR C_0
- LL: CALL DISPLAY
- CALL SHIJIAN
- JMP MAIN
- ;========================時間子程序=============================
- ;輸入:"30H、31H、32H"
- ;輸出:無
- ;實現(xiàn)的功能:分、秒、百分之秒的計算。
- ;===============================================================
- SHIJIAN:
- DJNZ R2,TIAOCHU
- MOV R2,#5
- INC MIAO0
- MOV R3,MIAO0
- CJNE R3,#100,TIAOCHU
- MOV MIAO0,#00
- INC MIAO
- MOV R3,MIAO
- CJNE R3,#60,TIAOCHU
- MOV MIAO,#00
- INC FEN
- MOV R3,FEN
- CJNE R3,#60,TIAOCHU
- MOV FEN,#00
- TIAOCHU:RET
- ;========================顯示子程序=============================
- ;輸入:"A"
- ;輸出:"P2口"
- ;實現(xiàn)的功能:顯示秒、分、百分之妙
- ;===============================================================
- DISPLAY:MOV SHUZI,MIAO0
- CALL JISUAN
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示十位
- MOV PIANXUAN,#10H ;片選
- CALL DELAY
- MOV PIANXUAN,#00H
-
- MOV A,B
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示個位
- MOV PIANXUAN,#20H ;片選
- CALL DELAY ;延時
- MOV PIANXUAN,#00H
-
- MOV SHUZI,MIAO
- CALL JISUAN
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示十位
- MOV PIANXUAN,#04H ;片選
- CALL DELAY
- MOV PIANXUAN,#00H
-
- MOV A,B
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示個位
- MOV PIANXUAN,#08H ;片選
- CALL DELAY ;延時
- MOV PIANXUAN,#00H
-
- MOV SHUZI,FEN
- CALL JISUAN
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示十位
- MOV PIANXUAN,#01H ;片選
- CALL DELAY
- MOV PIANXUAN,#00H
-
- MOV A,B
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示個位
- MOV PIANXUAN,#02H ;片選
- CALL DELAY ;延時
- MOV PIANXUAN,#00H
- RET
- ;========================計算子程序=============================
- ;輸入:30H
- ;輸出:"A和B"
- ;實現(xiàn)的功能:把33H中的數(shù)據(jù)十位和個位分離出來
- ;===============================================================
- JISUAN:MOV A,SHUZI ;數(shù)據(jù)放在A中
- MOV B,#10 ;除數(shù)放在B中
- DIV AB ;商放在A中,余數(shù)放在B中
- RET
- ;====================復(fù)位中斷服務(wù)程序============================
- ;輸入;無
- ;輸出: 無
- ;實現(xiàn)的功能:把30H、31H、32H中的數(shù)據(jù)清零。
- ;================================================================
- RESET:PUSH ACC
- MOV 30H,#00H
- MOV 3H,#00H
- MOV 32H,#00H
- CALL DELAY
- POP ACC
- RETI
- ;====================啟停中斷服務(wù)程序============================
- ;輸入;無
- ;輸出: 無
- ;實現(xiàn)的功能:關(guān)閉定時器
- ;================================================================
- ON_OFF:CPL TR0
- CALL DELAY
- RETI
- ;====================定時中斷0服務(wù)子程序========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:實現(xiàn)定時20MS,影響標(biāo)中斷志位C_0
- ;===============================================================
- T0_1:MOV TL0,50H ;設(shè)置定時初值
- MOV TH0,51H
- SETB C_0 ;定時標(biāo)志位清0
- RETI
- ;========================中斷設(shè)置子程序=========================
- ;輸入:無
- ;輸出:無
- ;實現(xiàn)的功能:初始化設(shè)置定時器,設(shè)置初值,開中斷0、中斷1,定時器0.
- ;===============================================================
- INIT:MOV TMOD,#01H ;定時器0工作方式1
- MOV DPTR,#65536-20000
- MOV 50H,DPL
- MOV 51H,DPH
- MOV TL0,50H ;設(shè)置定時初值
- MOV TH0,51H
- MOV IE,#87H ;開定時器中斷0
- MOV TCON,#15H
- RET
- ;======================延時程序==================================
- ;輸入;無
- ;輸出: 無
- ;實現(xiàn)的功能:延時一段時間
- ;================================================================
- DELAY:MOV R6,#80
- L7:MOV R5,#60
- L8:DJNZ R5,$
- DJNZ R6,L7
- RET
- ;======================共陽查表數(shù)據(jù)==============================
- TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- ;===========================結(jié)束=================================
- END
復(fù)制代碼
|
|