大众信息网

如何判断52单片机一般的两个io口脉冲的输入先后顺序

答案:2  mip版
解决时间 2021-02-26 09:13
  • 提问者网友:一种小幸福
  • 2021-02-25 09:44
如何判断52单片机一般的两个io口脉冲的输入先后顺序
最佳答案
  • 二级知识专家网友:瑾色如弦
  • 2021-02-25 11:05
通过外部中断INT0及INT1或者现在STC有些单片机具有输入捕捉模式,这样就可以判断出那个先输入。
全部回答
  • 1楼网友:守給你的承諾
  • 2021-02-25 11:18
io口输出不同占空比的脉冲 #include #define uchar unsigned char #define uint unsigned int sbit key=p2^0; uchar flag,thp,tlp,thc,tlc; uint duty; void delaym(unsigned int n) { unsigned int i,j; for(j=n;j>0;j--) for(i=112;i>0;i--); } void hometime() { switch(flag) { case 0x00 : th0=thp;tl0=tlp;p1=0xff;break; case 0x01 : th0=thc;tl0=tlc;p1=0;break; }; } void timer0() interrupt 1 { flag=!flag; hometime(); } void mcuinti() { tmod=0x01; hometime(); tr0=1; ea=1; et0=1; } void timenum(unsigned int hometime) { unsigned int tram; tram=0xffff-hometime/duty; thc=tram>>8; tlc=tram; tram=0xffff-hometime+(hometime/duty); thp=tram>>8; tlp=tram; } void scan_key() { if(key==0) { delaym(20); if(!key) { tr0=0; duty--; if(duty<1|duty>20) { duty=20; }; timenum(5000); while(!key); tr0=1; }; }; } void main() { duty=20; timenum(5000); mcuinti(); while(1) { scan_key(); }; }
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯