标题:
关于单片机同时运行两个简单程序
[打印本页]
作者:
zxule
时间:
2021-9-24 22:53
标题:
关于单片机同时运行两个简单程序
下面这两个程序一个是逐个点亮的流水灯,一个是呼吸灯,如何同时执行?谢谢!就是P1流水灯和另外一个呼吸灯一起工作,类似中断,但不太会搞。谢谢!
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
int yanshi=600;
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
sbit P15 = P1^5;
sbit P16 = P1^6;
sbit P17 = P1^7;
/*1MS delay*/
void delay_1ms(uchar x)
{
uchar j;
while(x--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
while(1){
P10 = 1;P11 = 1;P12 = 1;P13 = 1;P14 = 1;P15 = 1;P16 = 1;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 1;P12 = 1;P13 = 1;P14 = 1;P15 = 1;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 1;P12 = 1;P13 = 1;P14 = 1;P15 = 0;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 1;P12 = 1;P13 = 1;P14 = 0;P15 = 0;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 1;P12 = 1;P13 = 0;P14 = 0;P15 = 0;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 1;P12 = 0;P13 = 0;P14 = 0;P15 = 0;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 0;P12 = 0;P13 = 0;P14 = 0;P15 = 0;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 0;P11 = 0;P12 = 0;P13 = 0;P14 = 0;P15 = 0;P16 = 0;P17 = 0;
delay_1ms(yanshi);delay_1ms(yanshi);
P10 = 1;P11 = 1;P12 = 1;P13 = 1;P14 = 1;P15 = 1;P16 = 1;P17 = 1;
delay_1ms(yanshi);delay_1ms(yanshi);
}
}
复制代码
#include <reg51.h>
#define uint unsigned int
sbit led1=P2^0; //定义控制灯的端口
int HXD,Clock=1000;
void delay(uint x) //设置延迟函数
{
int i;
for(i=0;i<x;i++);
}
void main(void)
{
while(1)
{
for(HXD=Clock;HXD>0;HXD--) //led逐渐变暗
{
led1=1;
delay(HXD);
led1=0;
delay(Clock-HXD);
}
for(HXD=0;HXD<Clock;HXD++) //led逐渐变亮
{
led1=1;
delay(HXD);
led1=0;
delay(Clock-HXD);
}
}
}
复制代码
谢谢大家!
作者:
mcza30
时间:
2021-9-25 11:02
可以用RTOS
作者:
压着我头发啦
时间:
2021-9-25 11:28
把第一个程序里主函数部分的逻辑放到第二个程序的中断里,当然延时取消了,用中断计数。计数到一定程度,计数清零,状态改变一次P1 = 0xff;P1 = 0xfe;……
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1