单片机简单上升沿、下降沿的简单编程
1和2是输入信号,3和4是输出信号如果1号超前于2号并且2号是下降沿,那么3号输出高电平且持续20ms如果1号滞后于2号并且2号是上升沿,那么4号输出高电平且持续20ms...
1和2是输入信号,3和4是输出信号
如果1号超前于2号并且2号是下降沿,那么3号输出高电平且持续20ms
如果1号滞后于2号并且2号是上升沿,那么4号输出高电平且持续20ms
要怎么写程序,刚接触单片机上升沿、下降沿触发,谢谢 展开
如果1号超前于2号并且2号是下降沿,那么3号输出高电平且持续20ms
如果1号滞后于2号并且2号是上升沿,那么4号输出高电平且持续20ms
要怎么写程序,刚接触单片机上升沿、下降沿触发,谢谢 展开
3个回答
展开全部
你是编写编码器检测程序吧,给你一段代码参考。
光电编码器输出正交信号方式如下图所示:
顺时针旋转A超前B相信号90°:
A: _|--|__|--|_
B: __|--|__|--|
逆时针旋转B相信号超前A相信号90°:
A:__|--|__|--|_
B:_|--|__|--|__
下面是AT89C2051检测并进行二倍频程序:
;采用外部中断方式
ORG 00H
LJMP MAIN
ORG 03H
LJMP INT0
ORG 13H
LJMP INT1
ORG 50H
MAIN: MOV SP,#40H
MOV P3,#0FFH
MOV IE,#10000101B ;设定外部中断
MOV TCON,#00000101B
SETB EA
MA1: MOV P1,#0FFH
MOV P3,#0FFH
SJMP MA1
;*******************
INT0: PUSH PSW
CLR EA
I0: JNB P1.0,FAN
CLR P3.4
SJMP INT0END
FAN: CLR P3.5
INT0END:
POP PSW
SETB EA
MOV P3,#0FFH
RETI
INT1: PUSH PSW
CLR EA
JNB P1.0,ZHENG
CLR P3.5
SJMP INT1END
ZHENG: CLR P3.4
INT1END:
POP PSW
SETB EA
MOV P3,#0FFH
RETI
光电编码器输出正交信号方式如下图所示:
顺时针旋转A超前B相信号90°:
A: _|--|__|--|_
B: __|--|__|--|
逆时针旋转B相信号超前A相信号90°:
A:__|--|__|--|_
B:_|--|__|--|__
下面是AT89C2051检测并进行二倍频程序:
;采用外部中断方式
ORG 00H
LJMP MAIN
ORG 03H
LJMP INT0
ORG 13H
LJMP INT1
ORG 50H
MAIN: MOV SP,#40H
MOV P3,#0FFH
MOV IE,#10000101B ;设定外部中断
MOV TCON,#00000101B
SETB EA
MA1: MOV P1,#0FFH
MOV P3,#0FFH
SJMP MA1
;*******************
INT0: PUSH PSW
CLR EA
I0: JNB P1.0,FAN
CLR P3.4
SJMP INT0END
FAN: CLR P3.5
INT0END:
POP PSW
SETB EA
MOV P3,#0FFH
RETI
INT1: PUSH PSW
CLR EA
JNB P1.0,ZHENG
CLR P3.5
SJMP INT1END
ZHENG: CLR P3.4
INT1END:
POP PSW
SETB EA
MOV P3,#0FFH
RETI
展开全部
检测两个脉冲的前后 这种一般都用于脉冲马达上,这个需要在指定时间里连续采样4 - 6次脉冲瓶然后根据采样的电瓶状态进行判断,你可以查查脉冲马达的原理,其实也很简单 只是写程序有点麻烦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的超前或滞后是什么样的,有信号吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询