单片机C语言怎样编程才可也使两个不用的I/O口同时执行程序

打个比方P0口的蜂鸣器奏乐,P2口的流水灯不停从左往右闪,这两个程序要同时执行,怎样才能办到
最好举些例子

理论上的同时执行是不可能的,单片机运行程序的有顺序的,顺序执行每一条指令,同一个时间只能执行一条指令。
但是单片机速度比较快,执行起来给人感觉就是同时执行。
可以尝试一下用中断方式吧,主程序里面控制流水灯,中断程序里面控制蜂鸣器。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-15
给个思路吧,理论上单片机是不可以同时执行的,楼下说的很对!你可以利用单片机的定时器中断试试。因为定时器计数计数时不影响程序的执行只有计数计满时才去响应中断。先设置定时器,在中断函数服务里将蜂鸣器i o 口设置个取反,再写流水灯程序。理论上这样的程序当然是有延迟的偏差。但人眼是感觉不到微妙级的时间的,看上去就是同时执行一样!
第2个回答  2010-08-16
楼上讲得非常好。
第3个回答  2010-08-16
单片机只能执行一条指令。同时执行的就是嵌入式了。
所以用定时器中断吧。
楼上的说的已经很对了。
我也来凑哈热闹。
我就来给个例子吧。
比如我们的课程设计时用51的做个北京时间显示调整和秒表,倒计时,闹钟,整点报时的功能。
我做个定时器,然后北京时间就一直走,相当于你的流水灯原理,然后在我规定的时间到了,闹钟也就是蜂鸣器嘛,也开始响,这个时候我的北京时间也是在走的。应该就相当于你那个。

如果你觉得可以,我的程序可以给你。357541640。
第4个回答  2012-09-08
下面是一个大概的例子,由主程序mian和两个中断程序组成。

mian()
{
TL0=0XXX;
TH0=0XXX;
TR0=1;
EX0=1;
EA=1; //初始化程序
while(1) //等待键盘中断或者定时器中断结果
{
p0=0xXX:
p2=0xXX;
}
}

time0 interuper() //定时器中断程序
{
}

extr0 interuper() //键盘中断程序