RL A MOV P1,A ;1秒一变的花样流水灯。T0E:RETI END
while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低
MAIN: MOV P0,#0FEH;P0.0灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0FDH;P0.1灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0FBH;P0.2灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0F7H;P0.
;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个
8路流水灯汇编语言程序的写法
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮 { P1=temp;delay(100); //调用延时函数 temp>>=1;} void delay(uint t) //定义延时函数 { register uint bt;for(;t;t--)for(bt=0;bt<255;bt++);}
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,
依次循环到最低位 for (j=0;j
P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
从左到右依次,可参考下列程序:ORG 0000H LOOP:MOV R2, #255 MOV R3, #128 MOV P1, R2 ;全灭 MOV R4, #10 LP1:CALL DL DJNZ R4, LP1 ;--- MOV R5, #8 ;移位闪亮8次 LP2
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下:电路 代码 LED_COUNTDATA30H T0_COUNTDATA31H ORG0000HLJMPMAINORG000BHLJMPT0_INTORG0030HMAIN:
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时
while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六
P1=b;//P1口接8个LED灯 delay(200);b=_crol_ (b,1);} } void delay(unsigned int z){ unsigned int i;for(;z>0;z--) //延迟时间自己算吧 for(i=110;i>0;i--);} 用汇编写这个容易点 main: mo
用单片机的汇编来编程,思路是编写一个占空比可调的子程序,8个灯用8个IO口控制,通过设置8个IO口的输出波形的占空比不同从而控制8个灯的亮暗.
while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低
//主程序 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);
MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP2,A;输出到P2 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP2,A;输出到P2 CALLDELAY;
单片机用汇编语言编写用一个控制器控制8个LED灯亮
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
假如:P0口接8个LED,程序可以这样:include
JMP MAIN ORG 30H MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP2,A;输出到P2 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP2,A;
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下:电路 代码 LED_COUNTDATA30H T0_COUNTDATA31H ORG0000HLJMPMAINORG000BHLJMPT0_INTORG0030HMAIN:
ORG 0000HLJMP MAINORG 0030HMAIN; MOV R2,#3LOOP: MOV A,#0FEH MOV R3,#8LOOP1: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R3,LOOP1 MOV P0,#00H LCALL DELAY MOV P0,
while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六
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);} }
单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程
while(1){recy=0xfe;for(k=1;k<=8;k++){ P1=recy;Delay(50000);recy=recy<<1;} }
{ if(P3^1==0) //当按键按下是低电平时 { delay_ms(12);//消抖 if(P3^1==0) return 1;} return 0;} void main(){ uchar cnt=0,key;uchar led[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x
这里P0口接LED,P1接按键#include
P1=1;while(1){ if(key==0)P1=_crol_(P1,1);else P1=_clol_(P1,1);delay_ms(100);} }
MAIN:MOV SP,#5FH SETB IT0 SETB EX0 SETB EA MOV R0,#0 MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A LOOP:MOV A,P1 CPL A MOV P1,A LCALL DELAY SJMP LOOP EX0INT:PUSH ACC INC R0 MOV DPT
用汇编语言:单片机P1口接8个LED灯,按P3.1键时,灯由下往上亮,按P3.2键时候,灯从上往下亮
用汇编语言让51单片机八个灯从左到右依次点亮且都不灭,每个灯亮的时间间隔0.5秒,然后全灭,再循环之前的步骤。参考如下:电路 代码 LED_COUNTDATA30H T0_COUNTDATA31H ORG0000HLJMPMAINORG000BHLJMPT0_INTORG0030HMAIN:
KEY EQU P1.0 ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB ET0 SETB EA MOV A,#FEH MOV P0,A MOV R2,#20 JB
LEDCTL:MOV P1,#0FEH ;点亮第一个灯 LCALL DELAY MOV R0,#7 LEDLP1:CLR C MOV A,P1 RLC A MOV P1,A LCALL DELAY DJNZ R0,LEDLP1 MOV R0,#8 LEDLP2:SETB C MOV A,P1 RRC A MOV P1,A LCALL DELAY
LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 SETB ET0 SETB EA MOV A,#FEH MOV P0,A MOV R2,#20 SJMP T0ISR:CLR TR0
求解,用一个开关控制八个LED灯间隔一秒依次点亮,点亮后不熄灭,用汇
KEY EQU P1.0 ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB ET0 SETB EA MOV A,#FEH MOV P0,A MOV R2,#20 JB KEY,$ JNB KEY,$ SETB TR0 SJMP $ T0ISR: CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 DJNZ R2,T0E MOV R2,#20 CLR C RLC A MOV P0,A T0E: RETI END#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;//对数据类型进行声明定义 typedef unsigned char u8; //LED灯命名 sbit leda=P0; sbit led1=P0^0; sbit led2=P0^1; sbit led3=P0^2; sbit led4=P0^3; sbit led5=P0^4; sbit led6=P0^5; sbit led7=P0^6; sbit led8=P0^7; void delay(u16 i) { while(i--); } void main() { while(1) { leda=1;//全部灯亮 //从左到右依次熄灭 led1=0; delay(50000);//大约延时450ms led2=0; delay(50000);//大约延时450ms led3=0; delay(50000);//大约延时450ms led4=0; delay(50000);//大约延时450ms led5=0; delay(50000);//大约延时450ms led6=0; delay(50000);//大约延时450ms led7=0; delay(50000);//大约延时450ms led8=0; delay(100000);//大约延时900ms //从右到左依次点亮 led8=1; delay(50000);//大约延时450ms led7=1; delay(50000);//大约延时450ms led6=1; delay(50000);//大约延时450ms led5=1; delay(50000);//大约延时450ms led4=1; delay(50000);//大约延时450ms led3=1; delay(50000);//大约延时450ms led2=1; delay(50000);//大约延时450ms led1=1; delay(50000);//大约延时450ms leda=1;//全部灯亮 } } 扩展资料:main()应用: 1、C++中的main函数 C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统, 但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围,不能写成某个结构体或某个类的成员。 虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。 C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。 2、Java中的main函数 Java同样是以main函数作为程序执行出入口的,但Java作为“更纯洁”的面向对象语言,它的main函数与C/C++有很大的不同。 首先,返回值的概念淡化,在Java Application中main不允许返回值,因此int main是被禁止的,必须使用void main,int main仅限在JavaBean中使用。 其次,Java中所有的函数必须属于类,没有什么全局函数一说,因此main函数不能是全局成员,必须是某个类的成员。 第三,由于main函数变成了类的成员函数,因此要想直接被系统调用,还必须使用public static使其成为静态函数并具有公开权限。 第四,main函数的参数被简化,只需要提供字符串数组即可,不需要提供参数个数(这是由于Java的数组具有下标检查功能的原因) Java Application中的main函数一般格式如下(类名可以自定义,但保存为Java源码时,主文件名必须与类名相同,否则可能无法运行) public class MainDemo{ public static void main(String[]args){ //TODO:在此处写入主函数的内容 } } Java Applet的运行机制与Java Application完全不同,因此不需要main函数 3、C#中的main函数 C#中的main函数与Java大同小异,同样必须是类成员,同样使用字符串数组作唯一参数,同样是静态函数,同样的void main, 与之不同的是:main的首字母变成了大写,即"Main函数“,且是否限定为public级别已经无所谓了(默认没有public,但某些场合可能还是需要public) 另外,需要注意的是,C#中不再有”类名必须与主文件名同名“的限制,即使类名不和主文件名相同,程序照样可以运行。 C#应用程序中的main函数默认是这样的(注意main的首字母已是大写) C#和C/C++、java不同的是C#不在拘泥于必须从main()函数开始执行,C#是属于事件触发。 class Program{ static void Main(string[]args){ //TODO:在此处写入主函数的内容 } }
没有电路图,只有自由发挥了。这里P0口接LED,P1接按键#include#include#define uchar unsigned charsbit key_up=P1^0;sbit key_dn=P1^1;uchar cnt,keyval;void t0isr() void t0isr() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt>=10) { cnt=0; if(keyval==1)P0=_crol_(P0,1); if(keyval==2)P0=_cror_(P0,1); }}main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;while(1) { if(key_up==0) { while(key_up==0); P0=0xfe; keyval=1; } if(key_dn==0) { while(key_dn==0); P0=0x7f; keyval=2; } }}
;这是刚做的一个24个LED的流水灯,你可以参考一下。 ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ;50ms定时 ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#03CH MOV TL0,#0B0H SETB TR0 SETB ET0 SETB EA MOV R2,#0 MOV R3,#0 MOV P0,#00H MOV P1,#00H MOV P2,#00H MOV R4,#0FEH MOV R5,#0FFH MOV R6,#0FFH LOOP: SJMP LOOP T0ISR: CLR TR0 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 INC R2 CJNE R2,#20,T0E MOV R2,#0 INC R3 CJNE R3,#0,T000 MOV P0,#00H MOV P1,#00H MOV P2,#00H T0E: RETI T000: CJNE R3,#1,T001 MOV P0,#0FFH MOV P1,#0FFH MOV P3,#0FFH RETI T001: CJNE R3,#25,T002 T002: JC T003 MOV R3,#0FFH T003: MOV P0,R4 MOV P1,R5 MOV P2,R6 MOV A,R4 RLC A MOV R4,A MOV A,R5 RLC A MOV R5,A MOV A,R6 RLC A MOV R6,A XCH A,R4 MOV ACC.0,C MOV R4,A RETI END
不好意思,看不懂汇编。
#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;//对数据类型进行声明定义 typedef unsigned char u8; //LED灯命名 sbit leda=P0; sbit led1=P0^0; sbit led2=P0^1; sbit led3=P0^2; sbit led4=P0^3; sbit led5=P0^4; sbit led6=P0^5; sbit led7=P0^6; sbit led8=P0^7; void delay(u16 i) { while(i--); } void main() { while(1) { leda=1;//全部灯亮 //从左到右依次熄灭 led1=0; delay(50000);//大约延时450ms led2=0; delay(50000);//大约延时450ms led3=0; delay(50000);//大约延时450ms led4=0; delay(50000);//大约延时450ms led5=0; delay(50000);//大约延时450ms led6=0; delay(50000);//大约延时450ms led7=0; delay(50000);//大约延时450ms led8=0; delay(100000);//大约延时900ms //从右到左依次点亮 led8=1; delay(50000);//大约延时450ms led7=1; delay(50000);//大约延时450ms led6=1; delay(50000);//大约延时450ms led5=1; delay(50000);//大约延时450ms led4=1; delay(50000);//大约延时450ms led3=1; delay(50000);//大约延时450ms led2=1; delay(50000);//大约延时450ms led1=1; delay(50000);//大约延时450ms leda=1;//全部灯亮 } } 扩展资料:main()应用: 1、C++中的main函数 C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统, 但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围,不能写成某个结构体或某个类的成员。 虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。 C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。 2、Java中的main函数 Java同样是以main函数作为程序执行出入口的,但Java作为“更纯洁”的面向对象语言,它的main函数与C/C++有很大的不同。 首先,返回值的概念淡化,在Java Application中main不允许返回值,因此int main是被禁止的,必须使用void main,int main仅限在JavaBean中使用。 其次,Java中所有的函数必须属于类,没有什么全局函数一说,因此main函数不能是全局成员,必须是某个类的成员。 第三,由于main函数变成了类的成员函数,因此要想直接被系统调用,还必须使用public static使其成为静态函数并具有公开权限。 第四,main函数的参数被简化,只需要提供字符串数组即可,不需要提供参数个数(这是由于Java的数组具有下标检查功能的原因) Java Application中的main函数一般格式如下(类名可以自定义,但保存为Java源码时,主文件名必须与类名相同,否则可能无法运行) public class MainDemo{ public static void main(String[]args){ //TODO:在此处写入主函数的内容 } } Java Applet的运行机制与Java Application完全不同,因此不需要main函数 3、C#中的main函数 C#中的main函数与Java大同小异,同样必须是类成员,同样使用字符串数组作唯一参数,同样是静态函数,同样的void main, 与之不同的是:main的首字母变成了大写,即"Main函数“,且是否限定为public级别已经无所谓了(默认没有public,但某些场合可能还是需要public) 另外,需要注意的是,C#中不再有”类名必须与主文件名同名“的限制,即使类名不和主文件名相同,程序照样可以运行。 C#应用程序中的main函数默认是这样的(注意main的首字母已是大写) C#和C/C++、java不同的是C#不在拘泥于必须从main()函数开始执行,C#是属于事件触发。 class Program{ static void Main(string[]args){ //TODO:在此处写入主函数的内容 } }
51汇编程序如下: KEY EQU P3.2 LED EQU P1 ORG 0000H LJMP MAIN ORG 0030H MAIN: CLR 00H MOV A,#0FEH LOOP: JB P3.2,LOOP1 JNB P3.2,$ CPL 00H LOOP1: JB 00H,LOOP2 MOV LED,#0FFH SJMP LOOP LOOP2: MOV P1,A RL A LCALL DELAY SJMP LOOP DELAY: MOV R2,#200 DLY1: MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY1 RET END
#include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 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); } }
ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 SETB ET0 SETB EA MOV A,#0FEH MOV R2,#10 MOV P0,A SJMP $ T0ISR: CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 DJNZ R2,T0E MOV R2,#10 CLR C RLC A MOV P0,A JNZ T0E MOV A,#0FEH T0E: RETI END
ORG 0000HLJMP MAINORG 0030HMAIN: MOV R2,#8 MOV A,#0FEHLOOP1: MOV P1,A CLR C RLC A LCALL DELAY DJNZ R2,LOOP1 MOV R2,#8 MOV A,#80HLOOP1: MOV P1,A SETB C RRC A LCALL DELAY DJNZ R2,LOOP1 SJMP MAINDELAY: MOV R2,#200DLY: MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY RET END