|
本帖最后由 daniu 于 2014-12-27 18:25 編輯
- ;============================================================
- ;程序編寫人:蘭建
- ;編寫地點:51hei培訓機構
- ;時間:5月23日下午 星期六
- ;功能:本程序利用定時器中斷0方法,實現P0口數碼管0-9的閃爍功能
- ;=======================開始初始化================================
- SHUCHU EQU P0 ;定義P0口為輸出口
- PIANXUAN EQU P2 ;設置P2.0為片選
- SHUZI EQU 30H
- CISHU EQU 20 ;循環(huán)20次數為1秒
- MODE EQU 01H
- C_BIT BIT 20H.0 ;數碼管閃爍標志位設置
- ;========================程序開始================================
- ORG 00H ;程序開始
- LJMP START ;跳到START
- ORG 0BH ;定時器中斷0入口地址
- JMP T0_1 ;跳到定時器中斷0服務程序
- ORG 0030H ;入口地址
- START:MOV R5,#CISHU
- CALL INIT ;開定時器中斷0,設置定時初值
- MOV PIANXUAN,#00 ;片選初始化
- MOV SHUZI,#00 ;數碼管顯示初始化
- MOV DPTR,#TAB
- MOV SHUZI,#00
- MOV SP,#30H ;移開指針
- ;==========================主程序=================================
- MAIN:JNB C_BIT,L0 ;判斷數碼管閃爍標志位,為1數碼管點亮,為0滅
- MOV A,SHUZI
- CALL CHABIAO
- CALL XIANSHI
- JMP LL
- L0:MOV SHUCHU,#0FFH ;數碼管滅
- LL:JMP MAIN ;返回主程序
- ;========================中斷設置子程序============================
- ;輸入:無
- ;輸出:無
- ;實現的功能:初始化定時器0,初值設置
- ;==================================================================
- INIT:MOV TMOD,#MODE ;定時器1工作方式1
- MOV TL1,#0B0H ;設定時初值
- MOV TH1,#3CH
- MOV IE,#82H
- SETB TR0
- RET
- ;====================定時器中斷0服務子程序=========================
- ;輸入:P0
- ;輸出:P0
- ;實現的功能:定時1S后P0口取反
- ;===================================================================
- T0_1:MOV TL0,#0B0H
- MOV TH0,#3CH
- DJNZ R5,L1
- CPL C_BIT
- JB C_BIT,L2
- INC SHUZI
- MOV A,SHUZI
- CJNE A,#10,L2
- MOV SHUZI,#00
- L2:MOV R5,#CISHU
- L1:RETI
- ;========================查表子程序===========================
- ;輸入:"DPTR"
- ;輸出:"A"
- ;實現的功能:把A的數輸出到P0口顯示
- ;=============================================================
- CHABIAO:MOVC A,@A+DPTR
- RET
- ;========================顯示子程序===========================
- ;輸入:"A"
- ;輸出:"P2口"
- ;實現的功能:把A的數輸出到P0口顯示
- ;=============================================================
- XIANSHI:MOV SHUCHU,A
- RET
- ;==========================共陽查表數據=============================
- TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- ;============================程序結束===============================
- END
復制代碼
|
|