输出端某1个脚电平的切换1/0程序

wheatyilong 2012-07-12 11:38:23
初学单片机,求高人指点,条件:输入、输出端各1个。输入1次低电平,电平切换一次(1转0或0转1),单片机C语言如何编辑?
具体如下:输入:高电平到底电平一个脉冲,输出端电平切换1次。
感激不尽!!
...全文
127 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wheatyilong 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
引用 4 楼 的回复:

引用 2 楼 的回复:
while(1)
{
while(in);
out = ~out;
while(!in);
}


您好,我套用了您的程序 一定是我哪里错了,或者理解有误,程序有错误。如下:
#include<reg52.h>

#define uint unsigned int
void delay(uint z);
#defin……
[/Quote]

是我自己初学,没注意到这里!感谢你!!能否发站内短信告诉我您的联系方式? 我将给予您一定的答谢! 谢谢!
wheatyilong 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
你的单片机 有 pin 具有 边沿触发的功能吗?
[/Quote]

不懂,初学单片机。可否指点?
wheatyilong 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你的脑袋长错了 仅此而已
[/Quote]

初学单片机,可否指点一二?
AnYidan 2012-07-13
  • 打赏
  • 举报
回复
你的单片机 有 pin 具有 边沿触发的功能吗?
net_friends 2012-07-13
  • 打赏
  • 举报
回复
你的脑袋长错了 仅此而已
wheatyilong 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
while(1)
{
while(in);
out = ~out;
while(!in);
}
[/Quote]

您好,我套用了您的程序 一定是我哪里错了,或者理解有误,程序有错误。如下:
#include<reg52.h>

#define uint unsigned int
void delay(uint z);
#define uchar unsigned char

sbit d1=P1^0; //切换电平 1/0

sbit key1=P3^4; //输入1个脉冲(高低高电平)

void main ()
{
P3=0xff;
while(1)
{
while(in);
out = ~out;
while(!in);
}
}
dceacho 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:
while(1)
{
while(in);
out = ~out;
while(!in);
}


您好,我套用了您的程序 一定是我哪里错了,或者理解有误,程序有错误。如下:
#include<reg52.h>

#define uint unsigned int
void delay(uint z);
#define uchar uns……
[/Quote]

你把in,out改成你用的2个脚撒,别全抄啊
net_friends 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:
你的脑袋长错了 仅此而已


初学单片机,可否指点一二?
[/Quote]每个字都让人指点的话 你可以不用学了
前面的几种方法都可以 孰好孰孬自己判断
skertone 2012-07-12
  • 打赏
  • 举报
回复
这段时间,我也在搞这个,比你这个要求高一些
因为脉冲变化很快,一个脉冲时间不够执行几条指令的
只能使用传说中的 goto

可以实现原波形降 1/2 频, 相当于一个触发器作用,以下代码测量脉冲高电平宽度,用于寻找某同步信号。


START_0: // 等待低电平,并同步
if(TF1) goto OUT_LOOP;
if(SDI)
goto START_0;

TR0=1;

SYNC_1: // 等待高电平出现
if(TF1) goto OUT_LOOP;
if(!SDI) // JNB 两指令周期 0.09us
goto SYNC_1;

SYNC_0: // 等待低电平
if(TF1) goto OUT_LOOP;
if(SDI) // JB 2cycle 0.09us
goto SYNC_0;


DBG_SINGLE(1); // 1cycle -- Debug 标识出解码代码执行时间
TR0=0; // 1cycle


skertone 2012-07-12
  • 打赏
  • 举报
回复
while(1)
{
while(in);
out = ~out;
while(!in);
}

net_friends 2012-07-12
  • 打赏
  • 举报
回复
out= in_dly & ~in ? ~out : out;

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧