找回密码
 立即注册

QQ登录

只需一步,快速开始

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

最简单的单片机数字钟汇编程序+电路图

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-27 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. ;===============================================================
  2. ;程序编写人:张培、兰建文   
  3. ;编写地点:51hei单片机培训机构
  4. ;时间:2009年6月19日下午  星期四
  5. ;功能:本程序实现工业控制数字钟功能。
  6. ;P3口实现对数码管的片选功能
  7. ;==========================开始初始化===========================
  8. PIANXUAN      EQU    P3
  9. SHUCHU        EQU    P2
  10. MIAO          EQU    30H
  11. FEN           EQU    31H
  12. SHI           EQU    32H
  13. SHUZI    EQU    33H
  14. C_0           BIT    20H.0
  15.       ORG    0000H
  16.       JMP    START
  17.        ORG    000BH
  18.       JMP    T0_1
  19.       ORG    0030H
  20.    START:
  21.            CALL   INIT
  22.       MOV    MIAO,#00
  23.       MOV    FEN,#59
  24.       MOV    SHI,#23
  25.       MOV    DPTR,#TAB
  26.       MOV     R2,#5
  27.     MAIN:
  28.          JNB    C_0,$
  29.       CLR    C_0
  30.    LL:   CALL   DISPLAY
  31.          CALL   SHIJIAN
  32.       JMP    MAIN      
  33. ;========================时间子程序=============================
  34. ;输入:"30H、31H、32H"
  35. ;输出:无
  36. ;实现的功能:时分秒的计算。
  37. ;===============================================================
  38.       SHIJIAN:
  39.      DJNZ    R2,TIAOCHU
  40.      MOV     R2,#50
  41.       CPL     P3.6
  42.      INC     MIAO
  43.      MOV     R3,MIAO
  44.      CJNE    R3,#60,TIAOCHU
  45.      MOV     MIAO,#00
  46.      INC     FEN
  47.      MOV     R3,FEN
  48.      CJNE    R3,#60,TIAOCHU
  49.      MOV     FEN,#00
  50.      INC     SHI
  51.      MOV     R3,SHI
  52.      CJNE    R3,#24,TIAOCHU
  53.      MOV     SHI,#00
  54.    TIAOCHU:RET
  55. ;========================显示子程序=============================
  56. ;输入:"A"
  57. ;输出:"P0口"
  58. ;实现的功能:把A的数输出到P0口显示,十位和个位分开显示
  59. ;===============================================================
  60.        DISPLAY:MOV   SHUZI,MIAO
  61.            CALL  JISUAN
  62.      MOVC  A,@A+DPTR
  63.      MOV   SHUCHU,A         ;显示十位
  64.      MOV   PIANXUAN,#10H    ;片选
  65.                CALL  DELAY
  66.      MOV   PIANXUAN,#00
  67.    
  68.      MOV   A,B              
  69.      MOVC   A,@A+DPTR
  70.        MOV   SHUCHU,A         ;显示个位
  71.      MOV   PIANXUAN,#20H    ;片选
  72.      CALL  DELAY            ;延时
  73.      MOV   PIANXUAN,#00
  74.            
  75.      MOV   SHUZI,FEN
  76.            CALL  JISUAN         
  77.            MOVC  A,@A+DPTR
  78.      MOV   SHUCHU,A         ;显示十位
  79.      MOV   PIANXUAN,#04H    ;片选
  80.                CALL  DELAY
  81.      MOV   PIANXUAN,#00
  82.    
  83.      MOV   A,B              
  84.      MOVC   A,@A+DPTR
  85.        MOV   SHUCHU,A         ;显示个位
  86.      MOV   PIANXUAN,#08H    ;片选
  87.      CALL  DELAY            ;延时
  88.      MOV   PIANXUAN,#00
  89.      
  90.      MOV   SHUZI,SHI
  91.      CALL  JISUAN
  92.      MOVC  A,@A+DPTR
  93.      MOV   SHUCHU,A         ;显示十位
  94.      MOV   PIANXUAN,#01H    ;片选
  95.                CALL  DELAY
  96.      MOV   PIANXUAN,#00
  97.      
  98.      MOV   A,B              
  99.      MOVC   A,@A+DPTR
  100.        MOV   SHUCHU,A         ;显示个位
  101.      MOV   PIANXUAN,#02H    ;片选
  102.      CALL  DELAY            ;延时
  103.      MOV   PIANXUAN,#00
  104.                RET
  105. ;========================计算子程序=============================
  106. ;输入:30H
  107. ;输出:"A和B"
  108. ;实现的功能:把30H的数据的十位和个位分离出来
  109. ;===============================================================
  110.           JISUAN:MOV   A,SHUZI      ;数据放在A中  
  111.      MOV   B,#10        ;除数放在B中
  112.      DIV   AB           ;商放在A中,余数放在B中
  113.      RET
  114. ;====================定时中断0服务子程序========================
  115. ;输入:无
  116. ;输出:无
  117. ;实现的功能:实现定时20MS,影响标中断志位BIT
  118. ;===============================================================
  119.    T0_1:MOV    TL0,50H          ;设置定时初值
  120.         MOV    TH0,51H
  121.         SETB   C_0            ;定时标志位清0
  122.      RETI
  123. ;========================中断设置子程序=========================
  124. ;输入:无
  125. ;输出:无
  126. ;实现的功能:初始化设置定时器,设置初值
  127. ;===============================================================
  128.             INIT:MOV    TMOD,#01H      ;定时器0工作方式1
  129.         MOV    DPTR,#65536-20000
  130.      MOV    50H,DPL
  131.      MOV    51H,DPH
  132.          MOV    TL0,50H    ;设置定时初值
  133.         MOV    TH0,51H
  134.      MOV    IE,#82H       ;开定时器中断0
  135.      SETB   TR0        ;开定时器0
  136.      RET
  137. ;========================延时程序===============================
  138. ;输入;无
  139. ;输出: 无
  140. ;实现的功能:延时一段时间
  141. ;===============================================================
  142.           DELAY:   
  143.           MOV  R6,#80
  144.       LL7:MOV  R7,#60
  145.         DJNZ R7,$
  146.           DJNZ R6,LL7
  147.     RET
  148. ;=====================共阳查表数据==============================
  149.       TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  150. ;=======================程序结束================================
  151.     END
复制代码



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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