bit flash;//闪烁标志位 sbit led=P0^0;sbit P01=P0^1;sbit P02=P0^2;void main(){ P01=P02=0;flash=0;led=0;while(1){ scankey();ledflash();} } void scankey()//键盘扫描 { P01=1;//行线给1 if(P02)//如果P02也是1则说明接通 { delay(10);//去抖动10MS if(P02)//

include sbit LED1=P2^0;//1ms延时程序 void delayms(unsigned int i){ unsigned int j;while(i--){ for(j=0;j<115;j++);} } void main(){ LED1=0;while(1){ delayms(1000);LED1=~LED1;};}

include unsigned char cnt=0;sbit led=P1^0;void t0isr() interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt>=10)led=~led;} main(){ TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;while(1);}

第5行 跟 第6行 都是延时函数的声明,同名 不同类型,是个错误的声明,把第5行删掉。另外,第17行 最后的 分号改变了 延时的时间;最后,延时函数的 形参 i 是 uint 型,而里面 的 x 是 uchar 型,当 i 大于255时,程序就会出现 死循环,动不了了。

1.最简方案——利用延时函数:进入主函数后,初始化LED,设置一个延时初始值,然后进入while循环,里边只做四件事,打开LED,利用键盘返回值作延时函数参数,关闭LED,利用键盘返回值作延时函数参数。2.精确解决方案——定时器:初始化定时器,打开中断等,然后进入while等待中断,在中断函数里先定义一个变

1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。3、接着创建延迟函数,如下图所示,输入以下代码。4、然后创建C语言主函数,如下图所示,输入以下代码。5、接着输入对输出取反,最后调用延迟函数,如下图所示就完

Keil uVision4实例 51单片机控制LED灯闪烁,关键看C语言的编程细节。建立项目:LED灯闪烁。新建C文件:LED灯闪烁 引用51头文件。将所有的灯都点亮。让所有的灯全部灭了。添加循环语句。添加一个变量。使用循环语句创造延迟。

Keil uVision4实例 51单片机控制LED灯闪烁

程序使用C语言编写,详细源程序见本刊网站。 程序由主程序、定时中断服务子程序等模块组成。定时器T0作被测电容器充电时间的计数用。定时器T1用于定时中断服务,定时时间为5ms,即5ms产生一次中断。数组BitTab[4] 用来存储位驱动码,DispTab[11] 用来存储字形码,数组DispBuf[4]的4个元素分别用来存储从定时器T0读出的

程序是指基本指令,通过范围内的修改达到使用目的。一个步进电机控制器和3个步进电机的控制器只是脉冲输出点位不一样而已(芯片不一样)当然,输出的IO点也会增加,3个步进电机的控制器可以控制1~3个步进电机不同的工作,基于51单片机的开发代码指令和软件由芯片生产商提供,基础代码由控制器工程师提供,

一、单向可控硅是一种可控整流电子元件,能在外部控制信号作用下由关断变为导通,但一旦导通,外部信号就无法使其关断,只能靠去除负载或降低其两端电压使其关断。单向可控硅是由三个PN结PNPN组成的四层三端半导体器件与具有一个PN结的二极管相比,单向可控硅正向导通受控制极电流控制;与具有两个PN结的三极

PORTA=led;//送出显示 }

很简单啊,假定用P1驱动灯泡,按下列步骤:1、P1=0x81,表示1、8亮,延时一段时间;2、P1=0x42,表示2、7亮,延时一段时间;3、P1=0x24,表示3、6亮,延时一段时间;4、P1=0x81,表示4、5亮,延时一段时间;重复1-4步即可。

keil编写一个程序,控制一排灯泡从两端开始亮,用C语言。。

led3=1;while(1) //大循环 { led1=0; //点亮小灯 delay(a); //延时 led1=1;//熄灭小灯 delay(a); //延时 led2=0; //点亮小灯 delay(a); //延时 led2=1;//熄灭小灯 delay(a); //延时 led3=0; //点亮小灯 delay(a); //延时 led3=1;//熄灭小灯 delay

void INT0_ROUTING() interrupt 0//外部中断0子程序 { P0=0xfe;//LED0点亮 while((P3|0xfb)==0xff);//等待外部中断0口(P3^2松开)delay(10);//延时去抖动 P0=0xff;//LED0熄灭 } void INT0_ROUTING() interrupt 2 { P0=0xfd;//LED1点亮 while((P3|0xf7)==0xff);//等待外部

单片机驱动LED灯的源程序:include //头文件。define uint unsigned int define uchar unsigned char sbit LED1=P1^7; //位定义。void delay_ms(uint);//mS级带参数延时函数。void main(){ while(1){ LED1=0;delay_ms(1000);LED1=1;delay_ms(1000);} } void delay_ms(uint

一般较通用的按键处理流程是:当INT0#检测到跳变沿中断时,置一个标志,关闭EX0中断使能;主循环中凭借此标志延时20~100ms去抖(说白了就是避过按键电平不稳定的这段时间),然后重新采集P2.6状态,仍旧是低电平才判定为有效按键变化。对于连接线较长或者易受干扰的场合,按键处理应增加至少一阶的数

1、打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。2、首先要导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断

单片机控制led灯亮和灭,led灯初始状态从左到右两个灯间隔一个灯循环亮灭,然后从右到左循环亮灭,,当按下按键,led灯全亮,然后全灭。然后再恢复循环。二、实验过程 (一)实验项目的方案分析 1.设计原理 STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/

P2IE |= BIT6 + BIT7; //P2.6 P2.7中断使能 P2IFG =0; //中断标志清除,防止配置过程中出现中断标志为1 _EINT(); //开总中断 LPM4; //进低功耗4 } /***端口中断程序***

用外部中断,按一次键,两个LED灯点亮,再按一次,两个LED灯熄灭,循环。用Keil(C语言)编译

CASE2 JNB K3,CASE3 JNB K4,CASE4 AJMP LOOP CASE1:MOV LED,#01111111 AJMP LOOP CASE2:MOV LED,#00111111 AJMP LOOP CASE3:MOV LED,#00011111 AJMP LOOP CASE4:MOV LED,#00001111 AJMP LOOP K1~K4对应按键输入口,LED对应LED输出,两者应为普通IO口

void delay(){ int i,j; for (i=0;i<10000;i++)//可以通过调成10000和1000这两个数来改变延时时间达到最佳效果。 for (j=0;j<1000;j++);//这两个数最好实验确定。} void main(){ LED1=1; LED2=0; while(1) {LED1=!LED1; LED2=!LED2; delay(

那你把两盏led灯并联,用一个口联接就行了,例如用P2口的1脚 include delay(){ int x,i;for(x=100;x>0;x--)for(i=50;i>0;i--);} void main(){ while(1){ P1^1=0;delay();p1^1=1;} }

LED1=!LED1;LED2=!LED2;}

sbit LED1=P2^0;sbit LED2=P2^1;// STC的下载工具中,有延时的计算例子,再使用循环延时 void Delay100ms(){ //@11.0592MHz unsigned char i, j;i = 180;j = 73;do{ while (--j);} while (--i);} void main(){ unsigned int n;while(1){ LED1=~LED1;LED2=~LED2;for(

一、简单讲:想要灯亮,就将对应端口置0。反之就是灯灭。二、详细讲:假设用keil编写,新建工程->选择单片机型号->新建源文件->设置output(点魔术棒图标勾选create hex file)。我们用P2^0端口连接一个led(led另一端连电源)。先给端口起别名sbit led1=P2^0;之后代码中需要灯亮就写led1=0;即可。

写出点亮2盏LED灯的c语言程序?

Step 1:打开Keil 首先,打开Keil软件,在主菜单栏中选择“Project”选项,并点击“New Project”命令。在新建工程对话框中定义工程名称,并指定存放路径,并点击保存。此时,一个新的工程文件将建立。Step 2:建立第二个工程文件 如果需要建立第二个工程文件,可以重复以上的步骤,建立一个新的工程文件。

现在搞DSP去了. 经常也是一大堆.h .c. 其实这些都不用怕的, 只要看看DEMO工程, 分析一下这些文件的作用, 你就能知道要片子跑起来(比如点亮一个LED)至少需要哪些文件. 等这些熟悉后, 你就会发现其实什么单片机都是一个样的. 然后就是学习使用片上的各种资源. 当然, 跑OS的另外说.我不是什么高

while(1); // 添加一个无限循环,防止程序重新启动 return 0;} 现在,这个程序应该只会让LED闪烁三次,然后停止。

1、首先,打开嵌入式操作系统。2、其次,使用两个核心芯片。3、最后,使用实时操作系统,如freertos等,可以通过左移函数_crol_()和右移函数_cror_()来实现LED灯的切换点亮。

嵌入式系统怎么用keil单任务切换点亮两个led

//请依照你的硬件输入相对值#defineKEY_ACTIVE_LEVEL(请输入)#defineKEY1_PIN(请输入)#defineKEY2_PIN(请输入)#defineLED_ON_LEVEL(请输入)#defineLED_LOW_LEVEL(请输入)#defineLED_PIN(请输入)unsignedcharis_key1_press(void){reutrn(KEY1_PIN==KEY_ACTIVE_LEVEL)l}unsignedcharis_key2_press(void){reutrn(KEY2_PIN==KEY_ACTIVE_LEVEL)l}voidset_led_to(unsignedcharvalue){LED_PIN=value;}voidmain(void){while(1){if(is_key1_press()&&is_key2_press()){set_led_to(LED_ON_LEVEL);}else{set_led_to(LED_OFF_LEVEL);}}}
初始化部分你要自己根据芯片资料写,数码管部分可以根据数码管的资料做数组xs[10]={0x3b……}要看数码管引脚定义了,看原理图看不出来的,可以做个200MS的定时器,然后计数5次就是1S 直接给数码管的IO口附数组的值,如P1=xs[5];要看你给的是哪个IO口了,我这边看不清你的原理图,LED亮200MS后就换动作太快,看不出效果,可以把时间加长
main() { // CLK_CKDIVR=0x00; CLK_Init(); IO_Init(); led_on=0; //timer1_init(); EXTI_DeInit();?/初始化外部中断IO口 _asm("rim"); while(1) { cbi(PA_ODR,4); } } @far @interrupt void TIM1_UPD_OVF_IRQHandler(void) { TIM1_SR1 = 0x00; // 清除更新标志 } @far @interrupt void EXTI0 (void)//外部中断子函数 { if(PA_on) { sbi(PA_ODR,4);PA_on=0;}//PA4为灯亮 else { cbi(PA_ODR,4);PA_on=1;}//PA4为灯灭 EXTI_CR1=0x00 ; } 不懂再追问,你只需要把主程序里面的灯定为一个状态,外部中断里面再定一个状态。要亮2次,加个延时,就行了。
/* 按键位置:P0.1; 功能:1,当第一次按键按下,第一个灯亮,按键放开灯灭 2,当第二次按键按下,第二个灯亮,按键放开灯灭 3,重复执行前面两个步骤 灯的位置:P2口; */ #include #define uint unsigned int #define uchar unsigned char sbit BUTTON=P0^1;//按键的位置 void DELAY(uint x) { uchar s,j; for(s=0;s<x;s++) for(j=0;j<114;j++); } void main() { uint led=0; while(1) { if(BUTTON==0) { led++; if(led==1)//第一次按键按下 { P2=0XFE;//1111 1110 第一个灯亮 DELAY(500);//延时 while(BUTTON!=0)//等待按键放开 { P2=0xff;/1111 1111灯灭 DELAY(500)//延时 } } if(led==2)//第二次按键按下 { led=0;//要给次数初始化 P2=0XFC;//1111 1101第二个灯亮 DELAY(500);//延时 while(BUTTON!=0)//等待按键放开 { P2=0xff;//1111 1111第二个灯灭 DELAY(500)//延时 } } } }
#include sbit key = P1^0;//按键 void delay(unsigned int time) { unsigned int i,j; for(i=0; i<time; i++) for(j=0; j<1000; j++) {;} } void mian() { unsigned int temp =0x00; while(1) { if(key == 0) { delay(20);//适当延时,消除按键抖动,自己看实际情况修改时间 if(key == 0) temp = ~temp; } P2 = temp; } }
#include "reg51.h" main() { unsigned int i,j; while(1) { P1=0xfe; //点亮第一个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xfd; //点亮第二个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xfb; //点亮第三个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xf7; //点亮第四个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xef; //点亮第五个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xdf; //点亮第六个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0xbf; //点亮第七个LED for(i=200;i>0;i--) for(j=500;j>0;j--); P1=0x7f; //点亮第八个LED for(i=200;i>0;i--) for(j=500;j>0;j--); } } 或: #include "reg51.h" void delay(unsigned int t) { unsigned inti,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } main() { unsigned char w,i; while(1) { w=0xfe; for (i=0;i<8;i++) { P1=w; //循环点亮LED w<<=1; //点亮灯的位置移动,最低位补0 w=w|0x01; //将最低位置1 delay(500); //延时 } } } 或: #include "reg51.h" //程序中使用_crol_函数,所以要包含头文件"intrins.h" #include "intrins.h" void delay(unsigned int t) { unsigned int i,j; for(i=t;i>0;i--) for(j=110;j>0;j--); } main() { unsigned char temp; temp=0xfe; while(1) { P1=temp; delay(500); //延时 temp=_crol_(temp,1); //点亮LED的位置循环左移一位 } }