急需单片机高手帮忙用C语言写一个单片机4个灯轮流闪亮的源程序。 详细内容看补充。

作者&投稿:伯奔 (若有异议请与网页底部的电邮联系)
请高手帮忙用C语言编写51单片机的多机通信程序,3个从机的8个按键控制主机的8个LED灯,谢谢!~

有点没明白你的意思!三个从机 是什么!是三片单片机么?如果是单纯的控制LED 很简单的了!

设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s
然后再1s时的定时器中断子程序中设置输出脚的电平交替即可

/*对于个单片机的初学者,我希望用最直观的方式来达到你要的要求,程序每一句我已经写好备注,希望对你有帮助*/
#include<reg51.h> //使用51功能头文件
sbit L1=P0^0; //L1对应P0.0,表示第一盏灯
sbit L2=P0^1; //L1对应P0.1,表示第二盏灯
sbit L3=P0^2; //L1对应P0.2,表示第三盏灯
sbit L4=P0^3; //L1对应P0.3,表示第四盏灯

void delay(unsigned int i) //延迟子程序,注意这里的unsigned int i,这里相当于限定了调用时候变量的类型
{
unsigned char j; //局部变量定义
while(i--) //循环i次,主程序main调用时候,i为100,这数值你可随便该,但小于65355
for(j = 200; j > 0; j--) ; //这步的意思是空操作200次,也就是暂用CPU200次的工作时间

}
void main(void) //主函数,这里的viod是无类型,意思是没有给这函数指定数据类型
{
P0=0x00; //将P0口初始化位高电平,如果没有这句,初始化为低电平,这里可根据需要选择
L1=1; //第一盏灯亮
delay(100); //调用延时子程序
L2=1; //第二盏灯亮
delay(100); //调用延时子程序
L3=1; //第三盏灯亮
delay(100); //调用延时子程序
L4=1; //第四盏灯亮
delay(100); //调用延时子程序
while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉
}
纯手工书写,并仿真调试过,记得加分哟~

//假如用p1口的p1.0,p1.1,p1.2,p1.3来控制四个小灯的点亮
#include<reg51.h>
sbit led0=P1^0; //注意P要大写
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
void delay(unsigned int m) //m是几就是延时几毫秒
{
unsigned int n;
for(;m>0;m--)
for(n=124;n>0;n--); //大约是一毫秒延时
}
void main()
{
P1=0x00;
while(1)
{
led0=1;
delay(200);
led0=0;
delay(200);
led1=1;
delay(200);
led1=0;
delay(200);
led2=0;
delay(200);
led2=1;
delay(200);
led2=0;
delay(200);
led3=1;
delay(200);
led3=0;
delay(200);
}
}

//有不懂的还可以问 这是最简单的变法 还有三种变法

授人以鱼,不如授人以渔。
推荐看郭天祥的《十天学会单片机和C语言》,你这个可以是最简单的了。

// 延时函数
void Delay()
{
int i = 0;
for(i=0;i<100000;i++); // 空转
}
// 主函数
void main()
{
int i = 0;
for(;;)
{
for(i=0;i<4;i++)
{
P1 = ~(1<<i); // 假设这4盏灯在P1.0-P1.4,低电平亮
Delay(); // 点亮后等待一会儿避免看不清楚
}
}
}

单片机编程,语言C,请高手帮忙,财富值可以追加的哦
答:想做什么程序? 仅供参考:连接:单片机与DAC0823的连接,P0.0与D0,P0.1与D1,P0.2与D2………P0.7与D7连接 单片机的ALE接口与74LS373的第11脚连接,74LS373的2脚与DAC0823的连接1和17脚连接,P0.0与D0,P0.1与D1,P0.2与D2………P0.7与D7连接同时与74LS373的第3脚至9脚连接。

急求C51单片机C语言版编程高手。改进代码
答://我用的也是C51系列,可能有个别的接口不一样,但原理我已经说清楚了#include<reg51.h>//我在这里面已经加进了uchar的宏定义#include<delay.h>//自定义的一个延迟函数void int0()interrupt 0 using 1{INT0=0;//当INT0=1时,外部中断启动if(P1==0x00)//P1为LED控制口P1=0xff;P1=P1<<...

...中断(记得要中断)的C语言程序。。求高手自己写个啊
答://这个是表示,如果中断不产生,下面的程序不会运行,只有中断了,才会键盘扫描 { 按键扫描程序,这个我就不写了,写法有很多啦 } 数码管显示程序,这个我也不写了,不晓得你是什么电路图 } } void scan() interrupt 0 { flag=1;//表示,一旦中断产生了,将flag置1 } 希望对你有用,呵呵 ...

求单片机C语言编程高手教两个程序
答:1、include<reg51.h> main(){ char x,y,z;char data *px;x=*((char data *)0x30);y=*((char data *)0x31);z=x+y;px=(char data *)0x32;px =z;} 2、include<reg51.h> main(){ int i;char xdata *px1,*px2;px1=(char xdata *)DATA1;px2=(char xdata *)DATA2;for...

高手帮忙51c单片机——想制作倒计时报警器,求个c程序
答:刚写的程序,可以通过S0(功能键),S1(加键),S2(减键)设定初值,倒数为00-00-00时蜂鸣器响,通过八位LED显示;include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//八位位选...

求AT89C2051单片机高手电平如下C语言程序
答:void main (void){ TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; TR0=0; SCON=0X00; key_mode=1; key_up=1; key_down=1; display_buffer[3]=0X00; display(display_buffer); while (1) { if (key_mode==0) ...

单片机C语言编程
答:float count(int c){ float b;b=c*(1+c)/2;return b;} void main(){ init();while(1){ printf("Please input command->");scanf("%c",&a);//无命令时在此处等待。flag1=1;if(a=='1'){ choose=0;flag3=1;} if(a=='2'){ choose=1;} if((a!='1')&&(a!='2'))...

C语言高手进,关于单片机编程的!
答:sbit P0_0=P0^0; //定义P0.0口 sbit P0_1=P0^1; //定义P0.1口 sbit P0_2=P0^2; //定义P0.2口 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, //数码管显示查表 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned char disp...

单片机c语言
答:Tmp = P1 >> 4 ^ 0x0f; //tmp=P1当前值右移四位后和0x0f异或的结果。建议这样写 Tmp =(( P1 >> 4) ^ 0x0f);switch(Tmp){ case 1: KeyNO += 0; break;case 2: KeyNO += 4; break;case 4: KeyNO += 8; break;case 8: KeyNO += 12;} } void Beep() /...

那为高手会单片机啊 帮忙解决一下程序 会C语言的也可以啊
答:void main(){ SPEG=0x80; //设置SPEG寄存器值为0x80 MCUCR=0x02; //设置MCUCR寄存器值为0x02 DDTA=0; //设置DDTA寄存器值为0x0 DDRB=0xff; //设置DDRB寄存器值为0xff do{ ; //程序循环,等待中断。}while(1)} void roceivedata (void) //中断,数据接受 { ucharmid;DDRA=0; //将...