点亮 小灯的程序我们第二课完成了,就是让 LED = 0。熄灭小灯的程序也很简单,就是 LED = 1。点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁了。我们首先复习一下

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

用AT89C2051单片机(可以换成任意的51单片机)仿真,控制一个LED灯闪烁,LED灯接在P1.7脚上。程序如下 LED1 BIT P1.7 MAIN:CPL LED1 ACALL DELAY SJMP MAIN DELAY:MOV R7,#0;延时子程序 MOV R6,#0 LOP:DJNZ

CLR P1.0 要让LED一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让LED一会儿、灭一会儿,交替闪烁的程序:MAIN:;程序开始 SETB P1.0;让P1.0输出高电平 LCALL DELAY;这一行是调用延时子程序 ;目的是让P1.0

帮手指点LED灯闪的汇编程序.看似简单

最好还是自己写,有成就感啊。依次点亮的话可以用循环移位加延时的方法,同时亮只要相应位输出相应电平即可,闪亮的话只要同时亮与全灭间加个延时可以解决。当然也可以用定时中断来定时移位或闪亮,一定要自己想法写出来的才能

给你个例程,基stc单片机的,修改始终频率和定时值就可以了!自己先理解,修改后看变化,不明白再追问。/* define constants */ define FOSC 18432000L define MODE1T //Timer clock mode, comment this line is 12T

假设P3.0接K1信号,P3.1接K2信号,P3.2接K3信号 ORG 4000H LJMP START START:MOV A,P3 ANL A,#07H //屏蔽P3口高5位,只有P3.0-P3.2 JZ L1 // A=0,说明P3.0-P3.2全为0 CJNE A,#07H,L2 //

用p1口控制:org 0000h ajmp main org 0030h main: mov a,#01h mmm: mov r3,#08h rl a mov p1,a lcall dely500ms lcall dely500ms djnz r3, mmm mov a,#01010101b mmm1:mov r3,#06h rr a mov p1,

void int0_int() interrupt 0 //外部中断0中断后程序会自动跳到这里来执行 { led0 = ~led0; //led0的状态取反 } void main(){ EX0 = 1; //开放外部中断0 EA = 1; //开放总中断 IT0 = 1; //

[高分]求8051单片机外中断控制发光二极管闪烁的程序及其设计图。

void delay1s();unsigned char k,led;void main( ){ TMOD=0X10;led=1;while(1){ if(key){ if (led=1){led=0}else{led=1;} } if(led==1){ P0_0=0;delay1s();P0_0=1;delay1s();} else{P0_0

LED1 1ms闪烁人眼分辨不出来 定时器设定为16位定时50ms 另设一变量作定时器中断计数,到10(0.5S)的倍数时LED2取反,到50(2.5S)的倍数时LED3取反 include sbit led1=P0^0;sbit led2=P0^1;

include#defineucharunsignedcharuchartimes,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==

交替闪烁就是在循环中让两个LED端口交替高低电平。循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。include define uInt unsigned int sbit D1=P2^0;sbit D2=P2^1;sbit S1=P

在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该

for(i=0;i<20000;i++) //做20000次空循环。; //什么也不做,等待一个机器周期。} / 函数功能:主函数 (C语言规定必须有也只能有1个主函数)。/void main(void){ while(1) //无限循环。{ P0=0xfe;

用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

f_led_260ms ;;bclr f_led_50ms ;;bset f_led_360ms ;;这是一个亮260MS 闪烁后 50MS闪烁 ,的程序 ,和你的要求差不多 我也是刚学松翰单片机 ,希望多多交流 后面是360MS的闪烁程序

你这个程序错误太多了,用汇编时关键的几个程序段都未分清:主程序、定时器T0中断、定时器T1中断等,因MOV IE,#8AH语句说明用的是中断方式,显然漏了 ORG 0000H、ORG 000BH和ORG 001BH伪指令。要改时间可改 CJNE

当开关闭合时,三个LED同时亮灭闪烁运行,当开关断开时,三个LED轮流点亮闪烁运行,输入口P1.3 P1.4 P2.3 开关P3.1 while(1){ if(P3^1==0){ P1^3 =0;P1^4 =0;P2.3=0;delay_ms(500);P1^3 =1;

如果你希望对P0清零,可使用MOV P0,#00H,如果希望P0的低三位置1,可使用MOV P0,#07H。setbp0,#7 SETB指令是位置位指令,不能针对寄存器,你这个语句是违法的。SETB C、SETB ACC.0、SETB P1.0的都是合法的。

我写的这个程序应该可以,按一下灯亮,再按一下灯灭 include "REG52.H"sbit LED1_01 = P1^1; //LED灯 sbit KEY0_01 = P1^2; //按键 void Delay_1ms(unsigned int Time){ unsigned int x, y;for

求汇编,八个led交替闪烁,汇编语言汇编语言 按下开关s1(开关是那种按下去不会弹回来的),led1.3.5.7和led2.4.6.8交替闪烁,按下s2,led1234和led5678交替闪烁,间隔都是0.5秒,按下s3全灭 --- 电路与程序

用AT89C2051单片机(可以换成任意的51单片机)仿真,控制一个LED灯闪烁,LED灯接在P1.7脚上。程序如下 LED1 BIT P1.7 MAIN:CPL LED1 ACALL DELAY SJMP MAIN DELAY:MOV R7,#0;延时子程序 MOV R6,#0 LOP:DJNZ

如何用汇编语言控制led灯闪烁?

和我们的实验要求好像啊!
/程序:ex1_1.c //功能:控制一个信号灯闪烁程序 #include //包含头文件REG51.H,定义了MCS-51单片机的特殊功能寄存器 sbit P1_0=P1^0; //定义位名称 void delay(unsigned char i); //延时函数声明 void main() //主函数 { while(1) { P1_0=0; //点亮信号灯 delay(10); //调用延时函数,实际变量为10 P1_0=1; //熄灭信号灯 delay(10); //调用延时函数,实际变量为10 } } //函数名:delay //函数功能:实现软件延时 //形式参数:unsigned char i; // i控制空循环的外循环次数,共循环i*255次 //返回值:无 void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数 { unsigned char j,k; //定义无符号字符型变量j和k for(k=0;k<i;k++) //双重for循环语句实现软件延时 for(j=0;j<255;j++); }
这个很简单的,做毕业设计时间一般充足,建议你复习一下单片机知识很快就能自己写出来了,也可以在网上搜些相关的程序和资料参考,不难的
这个电路很简单,我说一下就可以了。数字式温度传感器用最常用的DS18B20,它只有3个管脚,一个接电源,一个接地,另一个接8051单片机就可以了。温度值用数码管显示。这样整个电路就接好了。如果楼主觉得我回答的可以别忘了给我加分哦,为了你的问题我花费了半天的时间啊。程序如下: #include #include #define uchar unsigned char #define uint unsigned int #define Self_Define_ISP_Download_Command 0x3D sfr IAP_CONTR=0xE7; sbit DQ = P3^5; //DS18B20接入口 uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90} ; char bai,shi,ge; //定义变量 void Init_Com(void) { TMOD = 0x20; SM0=0; SM1=1; REN=1; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; EA=1; ES=1; } /*延时子函数*/ void delay(uint num) { while(num--) ; } /*************DS18b20温度传感器函数*********************/ Init_DS18B20(void) //传感器初始化 { uchar x=0; DQ = 1; //DQ复位 delay(10); //稍做延时 DQ = 0; //单片机将DQ拉低 delay(80); //精确延时 大于 480us //450 DQ= 1; //拉高总线 delay(20); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30); } //读一个字节 ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delay(8); } return(dat); } //写一个字节 WriteOneChar(unsigned char dat) { uchar i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay(10); DQ = 1; dat>>=1; } delay(8); } //读取温度 int ReadTemperature(void) { uchar a,b; uint t; float tt; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar();//低位 b=ReadOneChar();//高位 tt=(b*256+a)*0.0625*100;//2个8位合成16位 t=(int)tt; /*t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; */ return(t); } /*显示子函数*/ void display(int bai,int shi,int ge) { int temp; temp=ReadTemperature();//读温度 bai=temp/1000;//显示百位 shi=temp%1000/100;//显示十位 ge=temp%100/10;//显示个位 //xiao=temp%10; P2=0xfd; //位选 P0=0X7f; //显示小数点 delay(500); P2=0xfe; P0=table[bai];//显示千位 delay(500);//一小段延时动态显示 P2=0xfd; P0=table[shi];//显示百位 delay(500); P2=0xfb; P0=table[ge];//显示十位 delay(500); P2=0xf7;// 显示° P0=0x9c; // delay(50); } void main() { Init_Com(); while(1) { display(bai,shi,ge);//显示函数 } } void UART_Interrupt_Receive(void) interrupt 4 { unsigned char k=0; unsigned int a,b; if(RI==1) { RI=0; k=SBUF; if(k==Self_Define_ISP_Download_Command) { for(a=1000;a>0;a--) for(b=100;b>0;b--); //延时约1S IAP_CONTR = 0x60; } } else { TI=0; } }
用两个定时器指令编写一个闪烁电路的程序
ORG 0000H ; 闪烁 流水灯 AJMP MIN0 ORG 0050HMIN0: MOV R0,#00H MOV DPTR,#TABDD1: MOV A, R0 MOV R2, #10 ; 闪烁次数 MOVC A,@A+DPTRDD2: MOV P1, A ACALL DELAY1 MOV P1, #0FFH ACALL DELAY1 DJNZ R2, DD2 INC R0 CJNE R0, #08H, DD1 JMP MIN0 DELAY1: MOV R5,#2 ; 延时时间可以改 D1: MOV R6,#100 D2: MOV R7,#250 D3: DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH, 7FH END