用C语言编写程序,要求实现两盏LED灯交替闪烁,间隔时间为2秒

用C语言编写程序,要求实现两盏LED灯交替闪烁,间隔时间为2秒,第1张

bit LED1;

bit LED2;

LED1=1;

LED2=0;

while (1)

{ delay(2000);

LED1=!LED1;

LED2=!LED2;

}

char LED;

sbit key1down=P1^0 ; // 设开关key1连接此端口

sbit key2down=P1^1 ; // 设开关key2连接此端口

void main(){

P0=0xff; // 输出低电平LED亮

LED=0xfe;

while(1){

P0=LED; delay();

if(key1){ LED <<= 1 ; } // 将LED左移一位;

if(key2){ LED >>= 1 ; LED |=0x80; } // 将LED右移一位;

if(key1down==0) { key1=1; key2=0;}

if(key2down==0) { key1=0; key2=1;}

}

程序如下:

MOV A,#01H ;灯亮初值

SHIFT: LCAIL FLASH ;调闪亮10次子程序

RR A ;右移一位

SJMP SHIFT ;循环

FLASH: MOV R2,#0AH 闪烁10次计数

FLASH1; MOV P1,A ;点亮

LCALL DELAY ;延时

MOV P1,#00H ;熄灭

LCALL DELAY ;延时

DJNZ R2,FLASH1 ;循环

RET

用C语言编程,求程序的方法:

#include//包含单片机寄存器的头文件

/****************************************函数功能:延迟一段时间

*****************************************/

Voiddelay(Void)//Void表示没有返回值,也没有传递参数。

Unsignedint我;定义一个最大值为65535的无符号整数。

For (I = 0;我< 20000;i++) //执行20000个空循环。

;//什么也不做,等待一个机器周期。

/*******************************************************

函数函数:主函数(C语言规则必须有且只能有一个主函数)。

********************************************************/空白主要(空白)

而(1)//无限循环。

P0=0xfe;//P1=11111110B,P0.0输出低电平。

延迟();//推迟一段时间。

P0=0XFF;//P1=11111111B,P0.0输出高电平。

延迟();//推迟一段时间。

单片机驱动LED光源程序:

#include//头文件。

定义uint无符号int

#定义uchar无符号字符

SbitLED1=P1^7;//定义。

空白delay_ms(单位);//带参数的ms级延时函数。

Voidmain()

而(1)

LED1=0;

Delay_ms(1000);

LED1=1;

Delay_ms(1000);

Voiddelay_ms(uintz)//delay子例程

使用Uintx,y;

For (x = z;X > 0;X -)

For (y = 110;Y > 0;Y -);

扩展资料:

单片机应用分类:

一般类型:

这是关于微控制器的。例如80C51通用型单片机,它并不是为特定的目的而设计的;专用单片机是为某一类产品甚至某一种产品而设计生产的。例如,为了满足电子体温计的要求,芯片中集成了具有ADC接口的温度测量控制电路等功能。

主线:

这是由微控制器是否提供并行总线来区分的。总线微控制器一般安装有并行地址总线、数据总线、控制总线,这些引脚扩展并行外围设备可以通过串口与单片机连接。

另外,很多单片机都需要将外围设备和外围设备的接口集成在一块,所以在很多情况下不能并行扩展总线,大大降低了封装成本和芯片体积,这种单片机被称为非总线单片机。

控制类型:

这是关于微控制器的一般应用。一般来说,工业控制寻址范围大,计算能力强。家用电器的单片机大多是专用的。

它通常是小包装、低价格、高集成的外围设备和外围接口。显然,上述分类并不独特和严格。例如,80C51类单片机既是通用的,又是总线的,还可以用于工业控制。

具体是怎么个不行法。

像你这种按键程序

因为单片机速度非常快,在你按一下按键时,单片机已经循环了很多次程序。

因此这样就会导致,当你按下时,其实k一直==0  一直在执行动作。

所以这种按键需要判断按键是第一次按下(由d起状态下按下)。而不是一直按着导致的动作。

方法:建一个变量保存上一次按键的值

char LastKey;

LastKey = 1;

while(1)

{

    if(k == 0 && LastKey == 1)    //按下,且上一次检测按键时是d起状态

    {                             //这样才能保证每次按下时只执行一次,

                                    //而不是一直在执行

        Delay1ms(20);

        if(k == 0)                //确定是第一次按下,执行动作

        {

            if((n % 2) == 0)

            {

                LedFlash();

            }

            else

            {

                P0 = 0xFF;

            }

            n++;

        }

    }

    

    LastKey = k;                    //保存按键状态

}

以上就是关于用C语言编写程序,要求实现两盏LED灯交替闪烁,间隔时间为2秒全部的内容,包括:用C语言编写程序,要求实现两盏LED灯交替闪烁,间隔时间为2秒、单片机LED灯闪烁程序、编制一个循环闪烁灯的程序,每次其中某个灯闪烁10次后,转到下一个闪烁10次,循环不止(用汇编语言编制)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9327207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存