|
- ;============================================================
- ;程序編寫人:蘭建文
- ;編寫地點:51hei培訓機構
- ;時間:5月23日下午 星期六
- ;功能:本程序實現P0口的對2個數碼管顯示0到99,一個按鍵實現加1,
- ; 到99回到0;一個按鍵實現減1,減到0回到99,低電平亮
- ;P2口實現對數碼管的片選功能
- ;============================================================
- ;=======================開始初始化===========================
- SHUCHU EQU P2 ;定義P0口為輸出口
- SHUZI EQU 30H ;設置處理數據存放地址
- ;========================程序開始===========================
- ORG 00H ;程序開始
- LJMP START ;跳到MAIN
- ORG 03H
- JMP INIT_0
- ORG 13H
- JMP INIT_1
- ORG 0030H ;入口地址
- START:
- CALL INIT
- MOV SP,#60H
- MOV SHUZI,#00
- MOV DPTR,#TAB ;查表初始化
- ;==========================主程序=============================
- MAIN:CALL CHULI ;計算處理
- CALL XIANSHI ;顯示
- JMP MAIN
- ;=============開啟外部中斷0和外部中斷1子程序=================
- ;輸入:無
- ;輸出:無
- ;實現的功能:開啟中斷0和外部中斷1
- ;============================================================
- INIT:MOV IE,#85H
- MOV TCON,#05H
- SETB PX1
- RET
- ;========================處理子程序==========================
- ;輸入:30H
- ;輸出:"A和B"
- ;實現的功能:把30H的數據的十位和個位分離出來,分別放A和B中
- ;============================================================
- CHULI:MOV A,SHUZI ;數據放在A中
- MOV B,#10 ;除數放在B中
- DIV AB ;商放在A中,余數放在B中
- RET
- ;========================顯示子程序==========================
- ;輸入:"A"
- ;輸出:"P0口"
- ;實現的功能:把A的數輸出到P0口顯示,十位和個位分開顯示
- ;============================================================
- XIANSHI:MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示十位
- MOV P1,#01H
- CALL DELAY
- MOV SHUCHU,#0FFH
- MOV A,B
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示個位
- MOV P1,#02H
- CALL DELAY
- MOV SHUCHU,#0FFH
- RET
- ;===================外部中斷0服務程序========================
- ;輸入:無
- ;輸出:外部中斷0
- ;實現的功能:響應一次外部中斷0,30H內容實現加1
- ;============================================================
- INIT_0:MOV A,SHUZI
- INC A
- CJNE A,#100,NEXT0
- MOV SHUZI,#00
- JMP LL0
- NEXT0:MOV SHUZI,A
- LL0:RETI
- ;===================外部中斷1服務程序========================
- ;輸入:無
- ;輸出:外部中斷1
- ;實現的功能:響應一次外部中斷0,30H內容實現減2
- ;============================================================
- INIT_1:
- MOV A,SHUZI
- CJNE A,#1,NEXT1
- MOV SHUZI,#99
- JMP LL1
- NEXT1:CJNE A,#0,NEXT2
- MOV SHUZI,#98
- JMP LL1
- NEXT2:SUBB A,#2
- MOV SHUZI,A
- LL1:RETI
- ;========================延時程序============================
- ;輸入;無
- ;輸出: 無
- ;實現的功能:延時一段時間
- ;============================================================
- DELAY:
- MOV R6,#80
- L7:MOV R5,#80
- DJNZ R5,$
- DJNZ R6,L7
- RET
- ;=====================共陽查表數據============================
- TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- ;=======================程序結束==============================
- END
復制代碼
|
|