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次,循环不止(用汇编语言编制)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)