找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13511|回复: 0
打印 上一主题 下一主题
收起左侧

数码管显示0到99按键加一汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-27 18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. ;============================================================
  2. ;程序编写人:兰建
  3. ;编写地点:51hei培训机构
  4. ;时间:5月23日下午 星期六
  5. ;功能:本程序实现P0口的对2个数码管显示0到99,一个按键实现一次
  6. ;按键只递加1次,到99回到0,按着不动不影响数码管动态显示;任何时
  7. ;刻,任何一个按键,若按键时间超过3秒,循环显示0到9回到0,时间
  8. ;间隔1秒。若时间小于1秒,显示加1,低电平亮
  9. ;P2口实现对数码管的片选功能
  10. ;===============================================================
  11. ;=========================开始初始化============================
  12.            SHUCHU   EQU    P0          ;定义P0口为输出口
  13.            PIANXUAN EQU   P2           ;定义P2口为片选口
  14.            SHUZI    EQU   30H          ;设置处理数据存放地址
  15.            JIANBIT0 BIT   20H.0        ;设置按键标志位
  16.            XIAN0    BIT   20H.2        ;显示标志位
  17.            T_BIT    BIT   21H.0        ;设置中断定时器0标志位
  18.            MODE     EQU   01
  19. ;========================程序开始==============================
  20.                     ORG   00H          ;程序开始
  21.                     LJMP  START        ;跳到START
  22.                     ORG   0BH          ;中断定时器0入口地址
  23.                     JMP   T0_1         ;跳到定时器0服务程序
  24.                     ORG   0030H        ;入口地址
  25. ;=========================主程序===============================        
  26.               START:MOV   SP,#60H       ;移开指针
  27.                     MOV   PIANXUAN,#00  ;片选初始化            
  28.                     MOV   SHUZI,#00     ;数据初始化
  29.                     MOV   DPTR,#TAB     ;查表初始化
  30.                     MOV   P1,#0F8H      ;设置P1.0口为输入
  31.                     CALL  INIT          ;开中断
  32.                     CLR   JIANBIT0      ;按键标志位清0
  33.                     SETB  T_BIT         ;中断标志位置1
  34.                MAIN:JNB   T_BIT,MAIN   ;等待中断
  35.                     CLR   T_BIT        ;中断标志位清0      
  36.                     CALL  JISUAN       ;计算分离十位和个位
  37.                     CALL  DISPLAY      ;显示个位和十位
  38.                     JNB   JIANBIT0,PANDUAN;按键标志位=1判断P1.3口,若为0则判断按键是否抬起
  39.                     JNB   P1.3,XIANSHI0 ;;若P1.3=0则调到XIANSHI0
  40.                     CLR   JIANBIT0     ;长按标志位清0
  41.                     CLR   XIAN0        ;显示标志位清0
  42.                     JMP   MAIN         ;返回MAIN
  43.             PANDUAN:JB    P1.3,NEXT    ;若按键抬起则返回MAIN,若没有抬起按键标志位清0
  44.                     SETB  JIANBIT0
  45.                NEXT:JMP   MAIN
  46.            XIANSHI0:   
  47.                     JB    XIAN0,MAIN
  48.                     SETB  XIAN0         ;显示标志位清0
  49.                     CALL  JIACHULI      ;加处理
  50.                     JMP   MAIN
  51.                
  52. ;====================定时中断0服务子程序========================
  53. ;输入:无
  54. ;输出:无
  55. ;实现的功能:实现定时20MS,影响标志位T_BIT.
  56. ;===============================================================
  57.                T0_1:MOV    TMOD,#MODE    ;定时器1工作方式1
  58.                     MOV    TL0,#0E0H     ;设置定时初值
  59.                     MOV    TH0,#0B1H
  60.                     SETB   T_BIT         ;定时标志位清0
  61.                     RETI
  62. ;========================中断设置子程序=========================
  63. ;输入:无
  64. ;输出:无
  65. ;实现的功能:初始化设置定时器,设置初值
  66. ;===============================================================
  67.                INIT:MOV    TMOD,#MODE    ;定时器0工作方式1
  68.                     MOV    TL0,#0E0H
  69.                     MOV    TH0,#0B1H
  70.                     MOV    IE,#82H       ;开定时器中断0
  71.                     SETB   TR0           ;开定时器0
  72.                     RET
  73. ;========================计算子程序=============================
  74. ;输入:30H
  75. ;输出:"A和B"
  76. ;实现的功能:把30H的数据的十位和个位分离出来
  77. ;===============================================================
  78.              JISUAN:MOV   A,SHUZI      ;数据放在A中
  79.                     MOV   B,#10        ;除数放在B中
  80.                     DIV   AB           ;商放在A中,余数放在B中
  81.                     RET               
  82. ;========================显示子程序=============================
  83. ;输入:"A"
  84. ;输出:"P0口"
  85. ;实现的功能:把A的数输出到P0口显示,十位和个位分开显示
  86. ;===============================================================
  87.            DISPLAY:MOVC  A,@A+DPTR        ;查表
  88.                    MOV   SHUCHU,A         ;显示十位
  89.                    MOV   PIANXUAN,#02H    ;片选
  90.                    CALL  DELAY            ;查表
  91.                    ;MOV SHUCHU,#0FFH      ;关闭数码管
  92.                    MOV   A,B              
  93.                    MOVC   A,@A+DPTR       ;查表
  94.                    MOV   SHUCHU,A         ;显示个位
  95.                    MOV   PIANXUAN,#03H    ;片选
  96.                    CALL  DELAY            ;延时
  97.                    ;MOV SHUCHU,#0FFH      ;关闭数码管
  98.                    RET
  99. ;======================加处理子程序=============================
  100. ;输入:无
  101. ;输出:无
  102. ;实现的功能:把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. ;========================延时程序===============================
  112. ;输入;无
  113. ;输出: 无
  114. ;实现的功能:延时一段时间
  115. ;===============================================================
  116.           DELAY:
  117.                 MOV  R6,#80
  118.              L7:MOV  R5,#80
  119.              L8:DJNZ R5,L8
  120.                 DJNZ R6,L7
  121.                 RET
  122. ;=====================共阳查表数据==============================
  123.             TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  124. ;=======================程序结束================================
  125.                 END
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表