找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4623|回复: 2
收起左侧

单片机频率计 汇编语言 数码管显示 带proteus仿真及源码

[复制链接]
ID:137190 发表于 2016-9-25 17:14 | 显示全部楼层 |阅读模式
0.png 0.png

用51单片机汇编语言做的频率计的所有资料下载: 六位频率计.zip (32.79 KB, 下载次数: 40)


汇编语言源程序:
  1.         VALUEH        EQU        20H                        ;暂存TH1的值
  2.         VALUEL        EQU        21H                        ;暂存TL1的值
  3.         DATE0        EQU        22H         ;暂存计数值的BCD码
  4.         DATE1        EQU        23H
  5.         DATE2        EQU        24H
  6.         DATE3        EQU        25H
  7.         DATE4        EQU        26H
  8.                 DATE5   EQU 27H
  9.         COUNT        EQU 30H
  10. ;-----------------------------------------------------------------------------
  11.                 ORG    0000H
  12.                 SJMP   MAIN
  13.                 ORG    000BH
  14.                 LJMP   INT_T0       
  15.                 ORG           001BH
  16.                 LJMP   INT_T1

  17. MAIN:        MOV        DPTR,#TABLE

  18.                 MOV        20H,#00H                 ;存储空间初始化
  19.                 MOV        21H,#00H
  20.                 MOV        22H,#00H
  21.                 MOV        23H,#00H
  22.                 MOV        24H,#00H
  23.                 MOV        25H,#00H
  24.                 MOV        26H,#00H
  25.                 MOV        30H,#00H
  26.                 MOV  R1,#00H                 ;R1作为计数器溢出的次数


  27.                 MOV  TMOD,#15H             ;定时器1工作在定时方式
  28.                                                        ;定时器0工作在计数方式
  29.                 MOV         TH1,#3CH
  30.                 MOV         TL1,#0B8H
  31.                 MOV         TH0,#00H
  32.                 MOV         TL0,#00H
  33.                 MOV         IE,#8AH                 ;开启定时器0和1

  34.                    SETB   TR0           ;启动定时
  35.                 SETB   TR1           ;启动计数
  36. W1:
  37.         LCALL   DISP                 ;显示计数值
  38.         LJMP    W1
  39. ;------------------------------------------------------------------------
  40. INT_T0:                                                 ;中断0作为计数器溢出
  41.                                                         ;溢出R1加1
  42.             MOV   TH0,#00H
  43.                 MOV   TL0,#00H
  44.              INC   R1
  45.                 CLR   TF0
  46.                 RETI                          

  47. INT_T1: MOV   TH1,#3CH
  48.                 MOV   TL1,#0B8H
  49.                 INC   COUNT
  50.                 MOV   A,COUNT
  51.             CJNE  A,#20,RETUNE            ;是否计满1秒
  52.         MOV   COUNT,#00H
  53.                 CLR   TR0               ;关闭定时器
  54.                 CLR   TR1               ;关闭计数器
  55.                 MOV   VALUEL,TL0            ;存放计数值
  56.                 MOV   VALUEH,TH0
  57.                 
  58. LCALL        HTOD
  59.                                         ;将十六进制数转换为十进制数
  60. RETUNE:
  61.          RETI
  62. ;-------------------------------------------------------------------------------------
  63. ;这段程序将VALUEH/VALUEL中的16进制数转成10进制并且把5位数依次存入DATE0至DATE4
  64. ;-------------------------------------------------------------------------------------
  65. HTOD:
  66.       MOV        R2,VALUEH                        ;把计数器的值送到R2,R3
  67.           MOV        R3,VALUEL                        ;送到R2,R3后把R2,R3里面压缩的十六位的二进制数转换成十进制数
  68.           CLR        A                                        ;然后存放到R4,R5,R6中
  69.           MOV        R4,A
  70.           MOV        R5,A
  71.           MOV        R6,A
  72.           MOV        R7,#18H
  73. LOOP1:
  74.       CLR        C
  75.           MOV        A,R3
  76.           RLC        A
  77.           MOV        R3,A
  78.           MOV        A,R2
  79.           RLC        A
  80.           MOV        R2,A
  81.       MOV        A,R1
  82.           RLC        A
  83.           MOV        R1,A  
  84.                
  85.           MOV        A,R6
  86.       ADDC        A,R6
  87.           DA        A
  88.           MOV        R6,A
  89.                
  90.           MOV        A,R5
  91.       ADDC        A,R5
  92.           DA        A
  93.           MOV        R5,A
  94.                
  95.           MOV        A,R4
  96.       ADDC        A,R4
  97.           DA        A
  98.           MOV        R4,A
  99.       DJNZ        R7,LOOP1

  100. CZ:   MOV        R0,#DATE5                ;把R4,R5,R6中的数放到DATE0~DATE5中
  101.           MOV        A,R6
  102.           ANL        A,#0FH
  103.           MOV        @R0,A
  104.          
  105.           DEC        R0
  106.           MOV        A,R6
  107.          SWAP        A
  108.           ANL        A,#0FH
  109.           MOV        @R0,A
  110.           
  111.           DEC        R0
  112.           MOV        A,R5
  113.           ANL        A,#0FH
  114.           MOV        @R0,A
  115.          
  116.           DEC        R0
  117.           MOV        A,R5
  118.           SWAP        A
  119.           ANL        A,#0FH
  120.           MOV        @R0,A                            
  121.           
  122.           DEC        R0
  123.           MOV        A,R4
  124.           ANL        A,#0FH
  125.           MOV        @R0,A

  126.           DEC        R0
  127.           MOV        A,R4
  128.           SWAP        A
  129.           ANL        A,#0FH
  130.           MOV        @R0,A
  131.           RET

  132. ;-----------------显示子程序----------------------------------------------
  133. DISP:                                   
  134.          MOV        A,DATE5                   ;把DATE5~DATE0送到数码管显示
  135.          MOVC        A,@A+DPTR
  136.      MOV    P2,#0FFH
  137.      CLR    P2.2
  138.      MOV    P1,A
  139.      LCALL  DL1MS
  140.          SETB   P2.2

  141.          MOV    A,DATE4
  142.          MOVC        A,@A+DPTR
  143.      MOV    P2,#0FFH
  144.          CLR    P2.3
  145.      MOV    P1,A
  146.      LCALL  DL1MS
  147.      MOV    P2,#0FFH

  148.          MOV    A,DATE3
  149.          MOVC        A,@A+DPTR
  150.      MOV    P2,#0FFH
  151.          CLR    P2.4
  152.      MOV    P1,A
  153.      LCALL  DL1MS
  154.      MOV    P2,#0FFH

  155.          MOV        A,DATE2
  156.          MOVC        A,@A+DPTR
  157.      MOV    P2,#0FFH
  158.          CLR    P2.5
  159.      MOV    P1,A
  160.      LCALL  DL1MS
  161.      MOV    P2,#0FFH

  162.          MOV    A,DATE1
  163.          MOVC        A,@A+DPTR
  164.      MOV    P2,#0FFH
  165.          CLR    P2.6
  166.      MOV    P1,A
  167.      LCALL  DL1MS
  168.      MOV    P2,#0FFH

  169.          MOV    A,DATE0
  170.          MOVC        A,@A+DPTR
  171.      MOV    P2,#0FFH
  172.          CLR    P2.7
  173.      MOV    P1,A
  174.      LCALL  DL1MS
  175.      MOV    P2,#0FFH

  176.          RET
  177. ;-----------------------------------------------------------------------
  178. DL1MS: MOV    R6,#14H     ;1MSDELAY
  179. DL1:   MOV    R7,#19H
  180. DL2:   DJNZ   R7,DL2
  181.        DJNZ   R6,DL1
  182.        RET

  183. TABLE: DB  3FH,06H,5BH,4FH,66H
  184.            DB  6DH,7DH,07H,7FH,6FH
  185.            END
复制代码




回复

使用道具 举报

ID:72088 发表于 2016-9-25 19:39 | 显示全部楼层
不错,我也会汇编,
回复

使用道具 举报

ID:349169 发表于 2018-7-12 15:21 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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