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