单片机定时计数器实验--脉冲计数器

单片机定时计数器实验--脉冲计数器,第1张

这是个简易频率计,程序如下:

---------------------------------

ORG  0000H

JMP  START

ORG  000BH

JMP  T0_INT

---------------------------------

START:

MOV  TMOD, #51H   历孙凳    /*01010001 T1计数,T0定时*/

MOV  TH0, #HIGH(65536 - 50000) 50ms@12MHz

MOV  TL0, #LOW (65536 - 50000)

MOV  TH1, #0

MOV  TL1, #0

SETB TR0

SETB TR1

SETB ET0

SETB EA

MOV  R7,  #20

SJMP $

---------------------------------

T0_INT:          50ms执行一次

MOV  TL0, #LOW (65536 - 50000) 重新写入初始值

MOV  TH0, #HIGH(65536 - 50000) 50ms@12MHz

DJNZ R7, T0_END

MOV  R7,  #20

MOV  P1, TL1

MOV  P2, TH1

MOV  TL1, #0

MOV  TH1, #0

T0_END:

RETI

---------------------------------

END

用PROTEUS仿肢旅真如下图。

图中信号的频率是5000Hz,显示的是凯汪16进制,这是题目中要求的形式。

永宏plc计数器指令编写程序如下。

1、脊袜哗每次向上计数输入CU从关闭向打开转换时,向上计数(CTU)指令从当前值向上计数。当前值(Cxxx)大于或等于预设值(PV)时,计数器位(Cxxx)打开。

2、复原(R)输入打开或执行"复原"指令时,计数器被复原。达到最大值(32,767)时,计数器停止计数。

3、每次向下计数输入光盘从关闭向打开转换时,向下计数(CTD)指令从当前值向下计数。

4、当前值Cxxx等于0时,计数器位(Cxxx)打开。载入输入(LD)打开时,计数器复原计数器位(Cxxx)并用预设值(PV)载入当前值。达到零时,向下计数器停止计数,计数器位Cxxx打开。

5、计数器范围:Cxxx=C0至C255在好如STL中,CTD载入输入是堆栈顶值,而向下计数输入是装载在第二个堆栈位置的樱行数值。每次向上计数输入CU从关闭向打开转换时,向上/向下计时(CTUD)指令向上计数,每次向下计数输入光盘从关闭向打开转换时,向下计数。

6、计数器的当前值Cxx保持当前计数。每次执行计数器指令时,预设值PV与当前值进行比较。达到最大值(32,767),位于向上计数输入位置的下一个上升沿使当前值返转为最小值(-32,768)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12560094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存