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

QQ登錄

只需一步,快速開始

搜索
查看: 14329|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

數(shù)碼管顯示0到99按鍵加一匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-27 18:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. ;============================================================
  2. ;程序編寫人:蘭建
  3. ;編寫地點(diǎn):51hei培訓(xùn)機(jī)構(gòu)
  4. ;時(shí)間:5月23日下午 星期六
  5. ;功能:本程序?qū)崿F(xiàn)P0口的對(duì)2個(gè)數(shù)碼管顯示0到99,一個(gè)按鍵實(shí)現(xiàn)一次
  6. ;按鍵只遞加1次,到99回到0,按著不動(dòng)不影響數(shù)碼管動(dòng)態(tài)顯示;任何時(shí)
  7. ;刻,任何一個(gè)按鍵,若按鍵時(shí)間超過3秒,循環(huán)顯示0到9回到0,時(shí)間
  8. ;間隔1秒。若時(shí)間小于1秒,顯示加1,低電平亮
  9. ;P2口實(shí)現(xiàn)對(duì)數(shù)碼管的片選功能
  10. ;===============================================================
  11. ;=========================開始初始化============================
  12.            SHUCHU   EQU    P0          ;定義P0口為輸出口
  13.            PIANXUAN EQU   P2           ;定義P2口為片選口
  14.            SHUZI    EQU   30H          ;設(shè)置處理數(shù)據(jù)存放地址
  15.            JIANBIT0 BIT   20H.0        ;設(shè)置按鍵標(biāo)志位
  16.            XIAN0    BIT   20H.2        ;顯示標(biāo)志位
  17.            T_BIT    BIT   21H.0        ;設(shè)置中斷定時(shí)器0標(biāo)志位
  18.            MODE     EQU   01
  19. ;========================程序開始==============================
  20.                     ORG   00H          ;程序開始
  21.                     LJMP  START        ;跳到START
  22.                     ORG   0BH          ;中斷定時(shí)器0入口地址
  23.                     JMP   T0_1         ;跳到定時(shí)器0服務(wù)程序
  24.                     ORG   0030H        ;入口地址
  25. ;=========================主程序===============================        
  26.               START:MOV   SP,#60H       ;移開指針
  27.                     MOV   PIANXUAN,#00  ;片選初始化            
  28.                     MOV   SHUZI,#00     ;數(shù)據(jù)初始化
  29.                     MOV   DPTR,#TAB     ;查表初始化
  30.                     MOV   P1,#0F8H      ;設(shè)置P1.0口為輸入
  31.                     CALL  INIT          ;開中斷
  32.                     CLR   JIANBIT0      ;按鍵標(biāo)志位清0
  33.                     SETB  T_BIT         ;中斷標(biāo)志位置1
  34.                MAIN:JNB   T_BIT,MAIN   ;等待中斷
  35.                     CLR   T_BIT        ;中斷標(biāo)志位清0      
  36.                     CALL  JISUAN       ;計(jì)算分離十位和個(gè)位
  37.                     CALL  DISPLAY      ;顯示個(gè)位和十位
  38.                     JNB   JIANBIT0,PANDUAN;按鍵標(biāo)志位=1判斷P1.3口,若為0則判斷按鍵是否抬起
  39.                     JNB   P1.3,XIANSHI0 ;;若P1.3=0則調(diào)到XIANSHI0
  40.                     CLR   JIANBIT0     ;長按標(biāo)志位清0
  41.                     CLR   XIAN0        ;顯示標(biāo)志位清0
  42.                     JMP   MAIN         ;返回MAIN
  43.             PANDUAN:JB    P1.3,NEXT    ;若按鍵抬起則返回MAIN,若沒有抬起按鍵標(biāo)志位清0
  44.                     SETB  JIANBIT0
  45.                NEXT:JMP   MAIN
  46.            XIANSHI0:   
  47.                     JB    XIAN0,MAIN
  48.                     SETB  XIAN0         ;顯示標(biāo)志位清0
  49.                     CALL  JIACHULI      ;加處理
  50.                     JMP   MAIN
  51.                
  52. ;====================定時(shí)中斷0服務(wù)子程序========================
  53. ;輸入:無
  54. ;輸出:無
  55. ;實(shí)現(xiàn)的功能:實(shí)現(xiàn)定時(shí)20MS,影響標(biāo)志位T_BIT.
  56. ;===============================================================
  57.                T0_1:MOV    TMOD,#MODE    ;定時(shí)器1工作方式1
  58.                     MOV    TL0,#0E0H     ;設(shè)置定時(shí)初值
  59.                     MOV    TH0,#0B1H
  60.                     SETB   T_BIT         ;定時(shí)標(biāo)志位清0
  61.                     RETI
  62. ;========================中斷設(shè)置子程序=========================
  63. ;輸入:無
  64. ;輸出:無
  65. ;實(shí)現(xiàn)的功能:初始化設(shè)置定時(shí)器,設(shè)置初值
  66. ;===============================================================
  67.                INIT:MOV    TMOD,#MODE    ;定時(shí)器0工作方式1
  68.                     MOV    TL0,#0E0H
  69.                     MOV    TH0,#0B1H
  70.                     MOV    IE,#82H       ;開定時(shí)器中斷0
  71.                     SETB   TR0           ;開定時(shí)器0
  72.                     RET
  73. ;========================計(jì)算子程序=============================
  74. ;輸入:30H
  75. ;輸出:"A和B"
  76. ;實(shí)現(xiàn)的功能:把30H的數(shù)據(jù)的十位和個(gè)位分離出來
  77. ;===============================================================
  78.              JISUAN:MOV   A,SHUZI      ;數(shù)據(jù)放在A中
  79.                     MOV   B,#10        ;除數(shù)放在B中
  80.                     DIV   AB           ;商放在A中,余數(shù)放在B中
  81.                     RET               
  82. ;========================顯示子程序=============================
  83. ;輸入:"A"
  84. ;輸出:"P0口"
  85. ;實(shí)現(xiàn)的功能:把A的數(shù)輸出到P0口顯示,十位和個(gè)位分開顯示
  86. ;===============================================================
  87.            DISPLAY:MOVC  A,@A+DPTR        ;查表
  88.                    MOV   SHUCHU,A         ;顯示十位
  89.                    MOV   PIANXUAN,#02H    ;片選
  90.                    CALL  DELAY            ;查表
  91.                    ;MOV SHUCHU,#0FFH      ;關(guān)閉數(shù)碼管
  92.                    MOV   A,B              
  93.                    MOVC   A,@A+DPTR       ;查表
  94.                    MOV   SHUCHU,A         ;顯示個(gè)位
  95.                    MOV   PIANXUAN,#03H    ;片選
  96.                    CALL  DELAY            ;延時(shí)
  97.                    ;MOV SHUCHU,#0FFH      ;關(guān)閉數(shù)碼管
  98.                    RET
  99. ;======================加處理子程序=============================
  100. ;輸入:無
  101. ;輸出:無
  102. ;實(shí)現(xiàn)的功能:把30H地址加1
  103. ;===============================================================
  104.          JIACHULI:MOV   A,SHUZI
  105.                   CJNE  A,#99,L0         ;若A不等于9,則跳到LL
  106.                   MOV   A,#00      
  107.                   JMP   L1
  108.                L0:INC   A                ;自加一
  109.                L1:MOV   SHUZI,A
  110.                   RET
  111. ;========================延時(shí)程序===============================
  112. ;輸入;無
  113. ;輸出: 無
  114. ;實(shí)現(xiàn)的功能:延時(shí)一段時(shí)間
  115. ;===============================================================
  116.           DELAY:
  117.                 MOV  R6,#80
  118.              L7:MOV  R5,#80
  119.              L8:DJNZ R5,L8
  120.                 DJNZ R6,L7
  121.                 RET
  122. ;=====================共陽查表數(shù)據(jù)==============================
  123.             TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  124. ;=======================程序結(jié)束================================
  125.                 END
復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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