单片机脉冲计数器程序详解

嵌入式设计应用

128人已加入

描述

  什么是脉冲计数器

  计数器是数字系统中用得较多的基本逻辑器件。计数器采用全自动贴片封装工艺,具有很强的抗干扰能力,并具有多种输出功能和控制功能,多种计数模式,广泛运用于电力、石化、冶金、轻工、制药、航空等诸多领域。

  脉冲计数器的基本功能是统计时钟脉冲的个数,即实现计数操作,它也可用于分频、定时、产生节拍脉冲和脉冲序列等。例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。

  计数器的种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;

  

  单片机脉冲计数器程序

  1、 设计内容

  用单片机实现对一路脉冲计数和显示的功能。硬件包括单片机最小系统、LED显示、控制按钮;软件实现检测到显示

  2、 要求

  计数范围0~2000;

  脉冲输入有光电隔离整形,

  有清零按钮程序如下

  ORG 0000H

  LJMP MAIN

  ORG 0003H

  LJMP 0100H

  ORG 0013H

  LJMP 0150H

  ORG 0050H

  MAIN: CLR A

  MOV 30H , A ;初始化缓存区

  MOV 31H , A

  MOV 32H , A

  MOV 33H , A

  MOV R6 , A

  MOV R7 , A

  SETB EA

  SETB EX0

  SETB EX1

  SETB IT0

  SETB IT1

  SETB PX1

  NEXT1: ACALL HEXTOBCDD ;调用数制转换子程序

  ACALL DISPLAY ;调用显示子程序

  LJMP NEXT1

  ORG 0100H ;中断0服务程序

  MOV A , R7

  ADD A , #1

  MOV R7, A

  MOV A , R6

  ADDC A , #0

  MOV R6 , A

  CJNE R6 , #07H , NEXT

  CLR A

  MOV R6 , A

  MOV R7 , A

  NEXT: RETI

  ORG 0150H ;中断1服务程序

  CLR A

  MOV R6 , A

  MOV R7 , A

  RETI

  ORG 0200H

  HEXTOBCDD:MOV A , R6 ;由十六进制转化为十进制

  PUSH ACC

  MOV A , R7

  PUSH ACC

  MOV A , R2

  PUSH ACC

  CLR A

  MOV R3 , A

  MOV R4 , A

  MOV R5 , A

  MOV R2 , #10H

  HB3: MOV A , R7 ;将十六进制中最高位移入进位位中

  RLC A

  MOV R7 , A

  MOV A , R6

  RLC A

  MOV R6 , A

  MOV A , R5 ;每位数加上本身相当于将这个数乘以2

  ADDC A , R5

  DA A

  MOV R5 , A

  MOV A , R4

  ADDC A , R4

  DA A ;十进制调整

  MOV R4 , A

  MOV A , R3

  ADDC A , R3

  DJNZ R2 , HB3

  POP ACC

  MOV R2 , A

  POP ACC

  MOV R7 , A

  POP ACC

  MOV R6 , A

  RET

  ORG 0250H

  DISPLAY: MOV R0 , #30H

  MOV A , R5

  ANL A , #0FH

  MOV @R0 , A

  MOV A , R5

  SWAP A

  ANL A , #0FH

  INC R0

  MOV @R0 , A

  MOV A , R4

  ANL A , #0FH

  INC R0

  MOV @R0 , A

  MOV A , R4

  SWAP A

  ANL A , #0FH

  INC R0

  MOV @R0 , A

  MOV R0 , #30H

  MOV R2 , #11111110B

  AGAIN: MOV A , R2

  MOV P2 , A

  MOV A , @R0

  MOV DPTR , #TAB

  MOVC A , @A+DPTR

  MOV P0 , A

  ACALL DELAY

  INC R0

  MOV A , R2

  RL A

  MOV R2 , A J

  B ACC.4 , AGAIN

  RET

  TAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段码表

  DELAY: MOV TMOD , #01H ;0.05s延时子程序

  MOV TL0 , #0B0H

  MOV TH0 , #3CH

  SETB TR0

  WAIT: JNB TF0 , WAIT

  CLR TF0

  CLR TR0

  RET

  END

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分