关于用一个51单片机对脉冲计数的程序 20
我想用ATM89S51来做一个程序,各位高手能不能帮我写一个啊?基本思想是想实现这样的功能:有两列脉冲,一列标准的周期脉冲L1,一列是高低不平、长度随机的脉冲L21.我想...
我想用ATM89S51来做一个程序,各位高手能不能帮我写一个啊?
基本思想是想实现这样的功能:
有两列脉冲,一列标准的周期脉冲L1,一列是高低不平、长度随机的脉冲L2
1.我想用L2接到INT0,L1接到定时器/计数器0,当L2产生一个下降沿突变 就对L1开始计数
2.当L2产生下一个下降沿突变的时候,停止计数,并将计数结果与额定值进行大小比较;然后再对L1开始计数
实际就是将L2每两个下降沿时间间隔内L1的脉冲个数单独算出来。。。。
请各位高手帮帮忙啊,最好程序可以直接拿来烧制。。。
算完了不是显示,先存一下与一个常数比较,用来控制I/O口电平输出。。。。 展开
基本思想是想实现这样的功能:
有两列脉冲,一列标准的周期脉冲L1,一列是高低不平、长度随机的脉冲L2
1.我想用L2接到INT0,L1接到定时器/计数器0,当L2产生一个下降沿突变 就对L1开始计数
2.当L2产生下一个下降沿突变的时候,停止计数,并将计数结果与额定值进行大小比较;然后再对L1开始计数
实际就是将L2每两个下降沿时间间隔内L1的脉冲个数单独算出来。。。。
请各位高手帮帮忙啊,最好程序可以直接拿来烧制。。。
算完了不是显示,先存一下与一个常数比较,用来控制I/O口电平输出。。。。 展开
3个回答
展开全部
这是刚编的程序!你相应的把计数按钮换成红外接收对管来作为计数按钮,低电频计一次数!就是说平、P3.0要从高变为地就记一次数!我没有用过红外对管所以只能说这么多了!我用的是8951,引脚一样的!PROTEUS已经仿真过了!
start:mov 50h,#00h
mov 51h,#00h
mov 52h,#00h
mov r1,#00h
acall main
jnb p3.1,aa
sjmp start
aa:jNb p3.0,bb
jnb p3.2,ll
acall main
sjmp aa
bb:acall nbcd
acall main
inc r1
cjne r1,#100,ww
sjmp mm
WW:jb p3.0,aa
acall main
sjmp ww
ll: jnb p3.1,aa
call main
sjmp ll
mm:mov a,#0feh
mov p1,a
sjmp start
nbcd:mov a,52h
add a,#1
da a
mov 52h,a
anl a,#0fh
mov 51h,a
mov a,52h
swap a
anl a,#0fh
mov 50h,a
ret
main:mov r0,#50h
mov r3,#01h
cc :mov a,r3
mov p2,a
mov a,@r0
mov dptr,#tab
movc a,@a+dptr
mov p0,a
mov a,r3
acall delay
jb acc.1,dd
rl a
mov r3,a
inc r0
ljmp cc
dd:ret
tab: db 0c0h,0f9h,0a4h,0b0h,99h
db 92h,82h,0f8h,80h,90h
ret
delay:mov r7,#0fh
d1:mov r6,#0fh
dl6:djnz r6,dl6
djnz r7,d1
ret
end
start:mov 50h,#00h
mov 51h,#00h
mov 52h,#00h
mov r1,#00h
acall main
jnb p3.1,aa
sjmp start
aa:jNb p3.0,bb
jnb p3.2,ll
acall main
sjmp aa
bb:acall nbcd
acall main
inc r1
cjne r1,#100,ww
sjmp mm
WW:jb p3.0,aa
acall main
sjmp ww
ll: jnb p3.1,aa
call main
sjmp ll
mm:mov a,#0feh
mov p1,a
sjmp start
nbcd:mov a,52h
add a,#1
da a
mov 52h,a
anl a,#0fh
mov 51h,a
mov a,52h
swap a
anl a,#0fh
mov 50h,a
ret
main:mov r0,#50h
mov r3,#01h
cc :mov a,r3
mov p2,a
mov a,@r0
mov dptr,#tab
movc a,@a+dptr
mov p0,a
mov a,r3
acall delay
jb acc.1,dd
rl a
mov r3,a
inc r0
ljmp cc
dd:ret
tab: db 0c0h,0f9h,0a4h,0b0h,99h
db 92h,82h,0f8h,80h,90h
ret
delay:mov r7,#0fh
d1:mov r6,#0fh
dl6:djnz r6,dl6
djnz r7,d1
ret
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
....每两个下降沿时间间隔内L1的脉冲个数单独算出来....
肯定是能算出来的。
算完了,显示吗? LCD、还是LED数码显示器?
肯定是能算出来的。
算完了,显示吗? LCD、还是LED数码显示器?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你也太省事了吧,如果你遇到困难可以沟通一下,但是直接把代码给你不合适。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询