找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7556|回復(fù): 0
收起左側(cè)

通過單片機(jī)外部中斷控制數(shù)碼管動(dòng)態(tài)顯示4位數(shù)字 含匯編源碼,原理圖,和hex文件

[復(fù)制鏈接]
ID:275296 發(fā)表于 2018-1-12 17:53 | 顯示全部樓層 |閱讀模式
這是之前做的外部中斷控制數(shù)碼管動(dòng)態(tài)顯示數(shù)字的程序,
使用匯編代碼,基于51單片機(jī),
附件包含單片機(jī)匯編源碼,
和Proteus仿真圖,以及hex文件,
完全自己原創(chuàng),望多
捕獲.PNG

單片機(jī)匯編語言源程序:
  1. ORG 0000H                        ;開始
  2.         LJMP START                        ;跳轉(zhuǎn)到主程序
  3.         ORG 0003H                        ;外部中斷0
  4.                 LJMP PINT0                        ;跳轉(zhuǎn)到0號(hào)中斷服務(wù)子程序
  5.                 ORG 0013H                        ;外部中斷1
  6.                         LJMP PINT1                        ;跳轉(zhuǎn)到2號(hào)中斷服務(wù)子程序
  7.                         ORG 0100H                        ;程序地址
  8.                                 START:        MOV SP, #60H                        ;設(shè)置堆棧
  9.                                 MOV P0,#0FFH                        ;P0初始化為FF
  10.                                 MOV P2,#00H                                ;P2口初始化為0
  11.                                 SETB IT0                        ;設(shè)置0號(hào)中斷觸發(fā)方式為下降沿觸發(fā)
  12.                                 SETB IT1                        ;設(shè)置2號(hào)中斷觸發(fā)方式為下降沿觸發(fā)
  13.                                 SETB EA                                ;合上中斷總開關(guān)(允許中斷)
  14.                                 SETB EX0                        ;合上分開關(guān)
  15.                                 SETB EX1                        ;合上分開關(guān)
  16.                                 MOV R1,#00H                        ;R1清零
  17.                                 MOV R2,#00H                        ;R2清零
  18.                                 MOV R3,#00H                        ;R3清零
  19.                                 MOV R4,#00H                        ;R4清零
  20.                                 MOV A,#11H                        ;A設(shè)初值        
  21.                                 LJMP MAIN                        ;初始化完成,進(jìn)入主程序
  22.                                 
  23.                                 ORG 0200H                        ;主程序地址
  24.                                         MAIN:        MOV P2,A                        ;選擇位選線
  25.                                         MOV 31H,R1                        ;千位存入31H單元
  26.                                         MOV 32H,R2                        ;百位存入32H單元
  27.                                         MOV 34H,R3                        ;十位存入34H單元
  28.                                         MOV 38H,R4                        ;個(gè)位存入38H單元
  29.                                         PUSH ACC                        ;保護(hù)現(xiàn)場(chǎng)
  30.                                         ANL A,#0FH                        ;保留A的第四位
  31.                                         ADD A,#30H                        ;使A與數(shù)位存放地址對(duì)應(yīng)
  32.                                         MOV R0,A                ;數(shù)位存放地址存入R0
  33.                                         MOV A,@ R0                        ;取所需數(shù)位的數(shù)字
  34.                                         LCALL DISPLAY                        ;查表
  35.                                         MOV P0,A                        ;顯示所需數(shù)字
  36.                                         LCALL DELAY                        ;延時(shí)
  37.                                         POP ACC                        ;恢復(fù)現(xiàn)場(chǎng)
  38.                                         RL A                        ;A左循環(huán)移位
  39.                                         SJMP MAIN                ;死循環(huán)
  40.                                        
  41.                                         ORG 0400H                        ;0號(hào)中斷服務(wù)子程序地址
  42.                                                 PINT0:        CJNE R4,#9,L1                        ;個(gè)位不為9跳轉(zhuǎn)
  43.                                                 CJNE R3,#9,L2                        ;十位不為9跳轉(zhuǎn)
  44.                                                 CJNE R2,#9,L3                        ;百位不為9跳轉(zhuǎn)
  45.                                                 CJNE R1,#9,L4                        ;千位不為9跳轉(zhuǎn)
  46.                                                 MOV R1,#00H                        ;千位置零
  47.                                                 MOV R2,#00H                        ;百位置零
  48.                                                 MOV R3,#00H                        ;十位置零
  49.                                                 MOV R4,#00H                        ;個(gè)位置零
  50.                                                 RETI                        ;中斷返回
  51.                                                 L1:INC R4                        ;個(gè)位加一
  52.                                                 RETI                        ;中斷返回
  53.                                                 L2:INC R3                        ;十位加一
  54.                                                 MOV R4,#00H                        ;個(gè)位置零
  55.                                                 RETI                        ;中斷返回
  56.                                                 L3:INC R2                        ;百位加一
  57.                                                 MOV R4,#00H                        ;個(gè)位置零
  58.                                                 MOV R3, #00H                        ;十位置零
  59.                                                 RETI                        ;中斷返回
  60.                                                 L4:INC R1                        ;千位加一
  61.                                                 MOV R2,#00H                        ;百位置零
  62.                                                 MOV R3,#00H                        ;十位置零
  63.                                                 MOV R4,#00H                        ;個(gè)位置零
  64.                                                 RETI                        ;中斷返回
  65.                                                 
  66.                                                 ORG 0600H                        ;2號(hào)中斷服務(wù)子程序地址
  67.                                                         PINT1:        CJNE R4,#0,LA                        ;個(gè)位不為0跳轉(zhuǎn)
  68.                                                         CJNE R3,#0,LB                        ;十位不為0跳轉(zhuǎn)
  69.                                                         CJNE R2,#0,LC                        ;百位不為0跳轉(zhuǎn)
  70.                                                         CJNE R1,#0,LD                        ;千位不為0跳轉(zhuǎn)
  71.                                                         MOV R1,#9                        ;千位置9
  72.                                                         MOV R2,#9                        ;百位置9
  73.                                                         MOV R3,#9                        ;十位置9
  74.                                                         MOV R4,#9                        ;個(gè)位置9
  75.                                                         RETI                        ;中斷返回
  76.                                                         LA:DEC R4                        ;個(gè)位減一
  77.                                                         RETI                        ;中斷返回
  78.                                                         LB:DEC R3                        ;十位減一
  79.                                                         MOV R4,#9                        ;個(gè)位置9
  80.                                                         RETI                        ;中斷返回
  81.                                                         LC:DEC R2                        ;百位減一
  82.                                                         MOV R4,#9                        ;個(gè)位置9
  83.                                                         MOV R3,#9                        ;十位置9
  84.                                                         RETI                        ;中斷返回
  85.                                                         LD:DEC R1                        ;千位減一
  86.                                                         MOV R2,#9                        ;百位置9
  87.                                                         MOV R3,#9                        ;十位置9
  88.                                                         MOV R4,#9                        ;個(gè)位置9
  89.                                                         RETI                        ;中斷返回
  90.                                 
  91.                                                         ORG 0800H                        ;延時(shí)子程序地址
  92.                                                                 DELAY:        MOV R7, #30                        ;設(shè)置外層循環(huán)次數(shù)
  93.                                                                 DEL1:        MOV R6,#40                        ;設(shè)置內(nèi)層循環(huán)次數(shù)
  94.                                                                 DEL2:        DJNZ R6,DEL2                        ;內(nèi)層循環(huán)
  95.                                                                 DJNZ R7,DEL1                        ;外層循環(huán)
  96.                                                                 RET                        ;返回
  97.                                                                
  98.                                                                 ORG 2600H                        ;查表子程序地址
  99.                                                                         DISPLAY:        ADD A, #01H                        ;查表位置調(diào)整
  100.                                                                         MOVC A, @A+PC                        ;查表
  101.                                                                         RET                        ;返回
  102.                                                                         
  103.                                                                         TAB: DB        0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H                        ;7段碼常數(shù)表
  104.                                                                         END                                ;程序結(jié)束
復(fù)制代碼

多指教全部資料51hei下載地址:
10-27-外部中斷控制數(shù)碼管動(dòng)態(tài)顯示4位數(shù)字.zip (10.14 KB, 下載次數(shù): 55)


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表