|
- ;============================================================
- ;程序編寫(xiě)人:蘭建
- ;編寫(xiě)地點(diǎn):51hei培訓(xùn)機(jī)構(gòu)
- ;時(shí)間:5月23日下午 星期六
- ;功能:本程序?qū)崿F(xiàn)P0口的對(duì)2個(gè)數(shù)碼管顯示0到99,一個(gè)按鍵實(shí)現(xiàn)加1,
- ; 到99回到0;一個(gè)按鍵實(shí)現(xiàn)減1,減到0回到99,低電平亮
- ;P2口實(shí)現(xiàn)對(duì)數(shù)碼管的片選功能
- ;============================================================
- ;//////開(kāi)始初始化////////////////////////
- SHUCHU EQU P0 ;定義P0口為輸出口
- PIANXUAN EQU P2 ;定義P2口為片選口
- SHUZI EQU 30H ;設(shè)置處理數(shù)據(jù)存放地址
- ;========================程序開(kāi)始===========================
- ORG 00H ;程序開(kāi)始
- LJMP MAIN ;跳到MAIN
- ORG 0030H ;入口地址
- ;========================主程序=============================
- MAIN:
- MOV SHUZI,#00
- MOV DPTR,#TAB ;查表初始化
- MOV P1,#0F3H ;設(shè)置P1.0、P1.1口為輸入
- START:CALL JISUAN ;計(jì)算處理
- CALL DISPLAY ;查表顯示
- L1:JNB P1.0,L2 ;若P1.0=0,則跳到L2
- JNB P1.1,L3 ;若P1.1=0,則跳到L3
- LJMP START ;跳到MAIN
- L2:CALL JIACHULI ;加1處理
- L2_0:MOV R1,#255
-
- L2_2:CALL JISUAN ;計(jì)算處理
- CALL DISPLAY ;顯示
- CALL DELAY ;延時(shí)
-
- DJNZ R1,L2_2
- L2_1:JNB P1.0,L2 ;若P1.1為0,則跳到L2
- JNB P1.1,L3 ;若P1.1為0,則跳到L3
- LJMP START ;循環(huán)
- L3:CALL JIANCHULI ;減1處理
- LJMP L2_0 ;返回顯示
- ;========================計(jì)算子程序=========================
- ;輸入:30H
- ;輸出:"A和B"
- ;實(shí)現(xiàn)的功能:把30H的數(shù)據(jù)的十位和個(gè)位分離出來(lái)
- ;============================================================
- JISUAN:MOV A,SHUZI ;數(shù)據(jù)放在A中
- MOV B,#10 ;除數(shù)放在B中
- DIV AB ;商放在A中,余數(shù)放在B中
- RET
- ;========================顯示子程序==========================
- ;輸入:"A"
- ;輸出:"P0口"
- ;實(shí)現(xiàn)的功能:把A的數(shù)輸出到P0口顯示,十位和個(gè)位分開(kāi)顯示
- ;============================================================
- DISPLAY:MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示十位
- MOV PIANXUAN,#00H ;片選
- CALL DELAY
- MOV A,B
- MOVC A,@A+DPTR
- MOV SHUCHU,A ;顯示個(gè)位
- MOV PIANXUAN,#01H ;片選
- CALL DELAY ;延時(shí)
- RET
- ;========================處理子程序=========================
- ;輸入:無(wú)
- ;輸出:無(wú)
- ;實(shí)現(xiàn)的功能:把30H地址加1
- ;============================================================
- JIACHULI:MOV A,SHUZI
- CJNE A,#99,LL ;若A不等于9,則跳到LL
- MOV A,#00
- JMP L4
- LL:INC A ;自加一
- L4:MOV SHUZI,A
- RET
- ;========================處理子程序==========================
- ;輸入:無(wú)
- ;輸出:無(wú)
- ;實(shí)現(xiàn)的功能:把30H地址減1
- ;============================================================
- JIANCHULI:MOV A,SHUZI
- CJNE A,#00,LLL ;若A不等于0,則跳到LLL
- MOV A,#99
- JMP L5
- LLL:DEC A ;自減一
- L5:MOV SHUZI,A
- RET
- ;========================延時(shí)程序============================
- ;輸入;無(wú)
- ;輸出: 無(wú)
- ;實(shí)現(xiàn)的功能:延時(shí)一段時(shí)間
- ;============================================================
- DELAY:
- MOV R6,#09
- L7:MOV R5,#25
- L8:DJNZ R5,L8
- DJNZ R6,L7
- RET
- ;=====================共陽(yáng)查表數(shù)據(jù)============================
- TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- ;=======================程序結(jié)束==============================
- END
復(fù)制代碼
|
|