|
這是之前做的外部中斷控制數(shù)碼管動態(tài)顯示數(shù)字的程序,
使用匯編代碼,基于51單片機,
附件包含單片機匯編源碼,
和Proteus仿真圖,以及hex文件,
完全自己原創(chuàng),望多
單片機匯編語言源程序:
- ORG 0000H ;開始
- LJMP START ;跳轉(zhuǎn)到主程序
- ORG 0003H ;外部中斷0
- LJMP PINT0 ;跳轉(zhuǎn)到0號中斷服務(wù)子程序
- ORG 0013H ;外部中斷1
- LJMP PINT1 ;跳轉(zhuǎn)到2號中斷服務(wù)子程序
- ORG 0100H ;程序地址
- START: MOV SP, #60H ;設(shè)置堆棧
- MOV P0,#0FFH ;P0初始化為FF
- MOV P2,#00H ;P2口初始化為0
- SETB IT0 ;設(shè)置0號中斷觸發(fā)方式為下降沿觸發(fā)
- SETB IT1 ;設(shè)置2號中斷觸發(fā)方式為下降沿觸發(fā)
- SETB EA ;合上中斷總開關(guān)(允許中斷)
- SETB EX0 ;合上分開關(guān)
- SETB EX1 ;合上分開關(guān)
- MOV R1,#00H ;R1清零
- MOV R2,#00H ;R2清零
- MOV R3,#00H ;R3清零
- MOV R4,#00H ;R4清零
- MOV A,#11H ;A設(shè)初值
- LJMP MAIN ;初始化完成,進(jìn)入主程序
-
- ORG 0200H ;主程序地址
- MAIN: MOV P2,A ;選擇位選線
- MOV 31H,R1 ;千位存入31H單元
- MOV 32H,R2 ;百位存入32H單元
- MOV 34H,R3 ;十位存入34H單元
- MOV 38H,R4 ;個位存入38H單元
- PUSH ACC ;保護(hù)現(xiàn)場
- ANL A,#0FH ;保留A的第四位
- ADD A,#30H ;使A與數(shù)位存放地址對應(yīng)
- MOV R0,A ;數(shù)位存放地址存入R0
- MOV A,@ R0 ;取所需數(shù)位的數(shù)字
- LCALL DISPLAY ;查表
- MOV P0,A ;顯示所需數(shù)字
- LCALL DELAY ;延時
- POP ACC ;恢復(fù)現(xiàn)場
- RL A ;A左循環(huán)移位
- SJMP MAIN ;死循環(huán)
-
- ORG 0400H ;0號中斷服務(wù)子程序地址
- PINT0: CJNE R4,#9,L1 ;個位不為9跳轉(zhuǎn)
- CJNE R3,#9,L2 ;十位不為9跳轉(zhuǎn)
- CJNE R2,#9,L3 ;百位不為9跳轉(zhuǎn)
- CJNE R1,#9,L4 ;千位不為9跳轉(zhuǎn)
- MOV R1,#00H ;千位置零
- MOV R2,#00H ;百位置零
- MOV R3,#00H ;十位置零
- MOV R4,#00H ;個位置零
- RETI ;中斷返回
- L1:INC R4 ;個位加一
- RETI ;中斷返回
- L2:INC R3 ;十位加一
- MOV R4,#00H ;個位置零
- RETI ;中斷返回
- L3:INC R2 ;百位加一
- MOV R4,#00H ;個位置零
- MOV R3, #00H ;十位置零
- RETI ;中斷返回
- L4:INC R1 ;千位加一
- MOV R2,#00H ;百位置零
- MOV R3,#00H ;十位置零
- MOV R4,#00H ;個位置零
- RETI ;中斷返回
-
- ORG 0600H ;2號中斷服務(wù)子程序地址
- PINT1: CJNE R4,#0,LA ;個位不為0跳轉(zhuǎn)
- CJNE R3,#0,LB ;十位不為0跳轉(zhuǎn)
- CJNE R2,#0,LC ;百位不為0跳轉(zhuǎn)
- CJNE R1,#0,LD ;千位不為0跳轉(zhuǎn)
- MOV R1,#9 ;千位置9
- MOV R2,#9 ;百位置9
- MOV R3,#9 ;十位置9
- MOV R4,#9 ;個位置9
- RETI ;中斷返回
- LA:DEC R4 ;個位減一
- RETI ;中斷返回
- LB:DEC R3 ;十位減一
- MOV R4,#9 ;個位置9
- RETI ;中斷返回
- LC:DEC R2 ;百位減一
- MOV R4,#9 ;個位置9
- MOV R3,#9 ;十位置9
- RETI ;中斷返回
- LD:DEC R1 ;千位減一
- MOV R2,#9 ;百位置9
- MOV R3,#9 ;十位置9
- MOV R4,#9 ;個位置9
- RETI ;中斷返回
-
- ORG 0800H ;延時子程序地址
- DELAY: MOV R7, #30 ;設(shè)置外層循環(huán)次數(shù)
- DEL1: MOV R6,#40 ;設(shè)置內(nèi)層循環(huán)次數(shù)
- DEL2: DJNZ R6,DEL2 ;內(nèi)層循環(huán)
- DJNZ R7,DEL1 ;外層循環(huán)
- RET ;返回
-
- ORG 2600H ;查表子程序地址
- DISPLAY: ADD A, #01H ;查表位置調(diào)整
- MOVC A, @A+PC ;查表
- RET ;返回
-
- TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;7段碼常數(shù)表
- END ;程序結(jié)束
復(fù)制代碼
多指教全部資料51hei下載地址:
10-27-外部中斷控制數(shù)碼管動態(tài)顯示4位數(shù)字.zip
(10.14 KB, 下載次數(shù): 55)
2018-1-12 17:49 上傳
點擊文件名下載附件
|
|