这个简单。单片机最小系统,用其中一个IO,用共阳接法,串1K 欧姆限流电阻。以上是电路做法。程序方面,汇编用移位指令即可达到流水效果,但需写个延时。这个是单片机最简单的应用了。

这时可以判断开关状态 开关合上 可以让8个LED左移一位 开关断开 可以让8个LED右移一位 呵呵 按上诉算法 编写程序 就可以实现你的要求(指导可以见百度知道的消息 右上角)满意 就选满意回答

看你用的定时器方式。一般用方式1。若频率是24mhz,机器周期为0.5us。所以计数次数为1s/0.5us=200000次超过了范围。所以用循环。可以50000循环4次或其他次数。算出技术初值。

用汇编编程如下:ORG 0000H LJMP MAIN MAIN:ORG 0100H MOV A ,#80H ; 高电平亮灯。如低电平亮灯,改成#7FH ;;正向循环 ZXH :MOV P0 , A RR A LCALL S50MS ; 延时50MS

while (1) //主循环,程序无限循环执行该循环体语句 { P0 = ~(0x01 << cnt); //P0等于1左移cnt位,控制8个LED for (i=0; i<20000; i++); //软件延时 cnt++; //移位计数变量自加1 if (cnt

闪烁5次再移位,可以用循环来实现。程序如下:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FCH ;LED灯初值,两个灯点亮 LOOP:MOV R2,#5 ;5次闪烁循环次数 LOOP1:MOV P0,A ;P0口送控制值 LCALL DELAY

在p0口接上8个led灯,每次亮两个灯的流水灯,如何实现led灯各闪烁5次再实现移位功能(汇编)

DELAY MOV P0,#0FFH LCALL DELAY DJNZ R2,LOOP MOV R2,#10 RL A SJMP LOOPDELAY: MOV R3,#200DLY: MOV R4,#250 DJNZ R4,$ DJNZ R3,DLY RET END

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

实验内容:用并口实现模拟交通灯;要求:东西向的绿灯亮,接着该方向的黄灯闪烁5次,然后红灯亮;同时南北向的绿灯亮,接着该方向的黄灯闪烁5次,然后红灯亮;如此重复。转向灯可以不需要。include sbit r1=P2

用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

include#include#define uchar unsigned charuchar led=0xfe;sbit k1=P1^0;sbit k2=P1^1;void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}main(){while(1) { P0

其程序如下:MOV A,#01H ;灯亮初值 SHIFT: LCAIL FLASH ;调闪亮10次子程序 RR A ;右移一位 SJMP SHIFT ;循环 FLASH: MOV R2,#0AH 闪烁10次计数 FLASH1; MOV P1,

求助大佬用汇编语言实现 闪烁灯实验

点亮 小灯的程序我们第二课完成了,就是让 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灯闪的汇编程序.看似简单

现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。 实现8个LED流水灯汇编语言源程序 liu01.asm ;--- 主程序开始 --- START: CLR P1.0 ;P1.0输出低电平,使LED1点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0

1){if (!KEY_0 ) { // 按键KEY_0被按delayus(20); //消抖动 if (!KEY_0 ) { //确认被按下 LED_7=~LED_7 //灯亮或灭}}} 其余一样即可。

led灯用作声控灯出现闪烁或常亮现象,是因为led灯控制磨决芯片处于虚接状态,将led灯控制磨决芯片重新焊接一下,就可以解决此问题,具体的操作步骤如下:1、准备好led灯。2、拿起led灯,捏住灯罩。3、将灯罩拧下来。4、

灯具自身故障:如果发现家中照明灯具出现闪烁(时亮时灭)现象,首先应该想到的就是灯坏了。灰尘影响灯口接触:灯口灰尘堆积也会引起灯光闪烁。灰尘落在灯口,导致灯管与灯口接触不良,因此不停闪动,但不会烧坏灯管。LED灯珠

一、LED灯一闪一闪是什么原因 1、如果发现打开LED灯具之后出现一闪一闪的问题,可能是当前电压不稳定所导致的。2、也有可能与灯珠与驱动电源不相匹配,一个一瓦的灯珠,它的电流就是280ma,而电压是3.0~3.4伏。达不到这

详情请查看视频回答

CLR指令是清零指令,语法为:要么对累加器A清零,CLR A等效于MOV A,#00H;要么对位清零,如CLR C,CLR P1.0,都是合法的。如果你希望对P0清零,可使用MOV P0,#00H,如果希望P0的低三位置1,可使用MOV P0,#07H。

使用汇编语言编写一个LED灯闪烁的问题,出现了一个NUMBER OF OPERANDS DOES NOT MATCH INSTRUCTION的问题

这个流水灯是很普通的一种花样,假设LED接P1口,程序如下:ORG 0000H LJMP MAIN 0RG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) ;50毫秒定时 MOV TL0,#LOW(65536-50000)SET

} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);

;定时器定时一秒,一个数码管秒个位加1,同时八个LED灯循环流动 很简单的题目,只能写很简单的程序:ORG 0000H JMP START ORG 000BH INC R2 RETI START:SETB TR0 MOV IE, #82H MOV R3, #127

LOOP1:MOV P0,LED JNB FLAG,MOV A,LED RL A MOV LED,A CLR FLAG DJNZ R2,LOOP1 MOV LED,#0FEH MOV R2,#8 LOOP2:MOV P0,LED JNB FLAG,MOV A,LED RL A RL A MOV LED,A CLR FLAG DJNZ R2,LOOP2 MOV

KEY1 EQU P1.0 KEY2 EQU P1.1 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FEH MOV P2,A LOOP:JB KEY1,LOOP1 MOV P2,#0FFH LCALL DELAY RL A MOV P2,A LCALL DELAY SJMP LOOP LOOP1:JB KEY2,LOOP

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个

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

求汇编,八个led交替闪烁,汇编语言汇编语言

不会。。。。路过。。。。网络100分 专业人士也不会花那么多时间来 编这个题吧 应该把 手机 留下
/程序: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++); }
语法错了 你怎么写的 DIV ?
LED.ASM(1) 语法错误 LED.ASM(3) 未定义符号
用两个定时器指令编写一个闪烁电路的程序
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
这两个都是语法错误。 clr p0,#7 CLR指令是清零指令,语法为:要么对累加器A清零,CLR A等效于MOV A,#00H;要么对位清零,如CLR C,CLR P1.0,都是合法的。如果你希望对P0清零,可使用MOV P0,#00H,如果希望P0的低三位置1,可使用MOV P0,#07H。 setb p0,#7 SETB指令是位置位指令,不能针对寄存器,你这个语句是违法的。SETB C、SETB ACC.0、SETB P1.0的都是合法的。

LED灯简单,设置P0为推挽输出,根据按键不同,使P0输出不同的值,根据以下代码修改以下吧。 //============================================================================ //按键测试程序.按下S1-S3,在LCD上分别显示1-3 //----------------------------------------------------------------------------- // Includes //----------------------------------------------------------------------------- #include // SFR declarations #include #include sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; unsigned long q; unsigned char led; //-------------------------------- void YJ_Init(void); void SPI0_Init (void); void Write_CHAR(unsigned char yjchar); unsigned char key_in(void); //----------------------------------------------------- void delay(void) { int a=1000; while(a!=0) { a--; } } /*----------------------------------------------------*/ //按键连接到p2.0、p2.1、p2.2、P2.3,均为开漏输出 unsigned char key_in(void) { XBR0 =0X00; P2=0xff; if(key1==0) { key1=1; delay();//延时 if(key1==0) { while(key1==0); XBR0 =0X02; return(0x32);//返回字符"1"表示按键SW1按下 } } if(key2==0) { key2=1; delay();//延时 if(key2==0) { while(key2==0); XBR0 =0X02; return(0x33);//返回字符"3"表示按键SW1按下 } } if(key3==0) { key3=1; delay();//延时 if(key3==0) { while(key3==0); XBR0 =0X02; return(0x34);//返回字符"3"表示按键SW1按下 } } if(key4==0) { key4=1; delay();//延时 if(key4==0) { while(key4==0); XBR0 =0X02; return(0x31);//返回字符"4"表示按键SW1按下 } } XBR0 =0X02; return(0);//返回0,表示没有按键按下 } //--------------------------------------------- void main(void) { unsigned char data1; value =1; PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit) OSCICN |= 0x03; // Set internal oscillator to highest // setting (24500000) /* XBR0 = 0x00; // XBAR0: Initial Reset value XBR1 = 0x40; // XBAR1: Initial Reset value P2MDOUT = 0xf0; // Output configuration for P2 P3MDOUT = 0x1f; // Output configuration for P3 */ P0SKIP = 0xFE; P1SKIP = 0x7F; XBR0 = 0x02; // Enable SMBus pins XBR1 = 0x40; // Enable crossbar and weak pull-ups P0MDOUT = 0xFF; // All P0 pins open-drain output P0 = value; P2MDOUT = 0xFF; P3MDOUT |= 0x04; // P3.3 push-pull output P2 |=0X01; SPI0_Init (); YJ_Init(); while(1) { data1=key_in(); //读按键 if(data1!=0x32) //根据按键返回值 { for(q=0;q<1000;q++); P0 = value<<1; //控制LED从右向左点亮 for(q=0;q<1000;q++); } if(data1!=0x33) //有按键按下,显示对应的按键 { YJ_Init(); //LCD初始化 for(q=0;q<1000;q++); P0 = value>>1; //控制LED从左向右点亮 for(q=0;q<1000;q++); } } }
MIN: MOV R0,#00H MOV DPTR,#TABDD1: MOV A, R0 MOVC A,@A+DPTR MOV P1, A ACALL DELAY1 INC R0 CJNE R0, #10H, DD1 JMP MIN DELAY1: MOV R5,#2 ; 可以改时间 D1: MOV R6,#255 D2: MOV R7,#255 D3: DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET TAB: DB 0E8H,0D8H,0B8H, 78H,0E4H,0D4H,0B4H, 74H DB 0E2H,0D2H,0B2H, 72H,0E1H,0D1H,0B1H, 71H END