这是个简易频率计,程序如下:
---------------------------------
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)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)