判断开关对应的端口电平,改变led对应端口即可。交替闪烁就是在循环中让两个LED端口交替高低电平。循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。include
void delay(unsigned char a){ unsigned char i,j;for(i=0;i
一、简单讲:想要灯亮,就将对应端口置0。反之就是灯灭。二、详细讲:假设用keil编写,新建工程->选择单片机型号->新建源文件->设置output(点魔术棒图标勾选create hex file)。我们用P2^0端口连接一个led(led另一端连
第一、二个样式的演进需要个循环及速率的控制(就是每一步需要加延时);然后是按键来切换显示样式;
这个流水灯程序最好用数组定义8个状态的灯,这样用for循环就可以实现了。简洁明了,易读性强,也容易理解。include
LED =0xff;P1=LED;while(1){ LED=0xe7;P1=LED;delayms(1000);LED=0xdb;P1=LED;delayms(1000);LED=0xbd;P1=LED;delayms(1000);LED=0x7e;P1=LED;delayms(1000);} }
单片机C语言编写点亮两盏led灯,首先从中间两盏点亮,依次相邻两盏灯点亮,依次循环永不停息。
51单片机汇编语言编程,流水灯如P1口8个Ⅰ/O依次输出低电平点亮发光二极管,思路可以用定时器中断+计数来定时,可以用位移输出或者用状态表(查表法)输出,如表01111111、10111111、---、11111110,就是查表取状态字节再写入P1
程序如下:include
代码如下:include
51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:;假设晶振12MHZ,P1控制8个LED低电平亮 ;
单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,定
51单片机中如何用汇编语言编写流水灯
单片机流水灯C语言程序的源代码如下:include //51系列单片机定义文件 define uchar unsigned char //定义无符号字符 define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void){ uint
//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
Count = LEDx * 36; //最小0,最大 7 * 36 = 252,char型最大不能超过255; Count = Count + 1; // 加1的目的是针对LED0不亮 if(x <= Count) // <= 是针对LED0不亮 PORTA |= (1 <<
LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
ORG 0000H ;程序从000H地址开始运行 AJMP MAIN ;跳转到 MAIN程序 ORG 030H ;MAIN程序从030H开始运行 MAIN:MOV P2,#0FEH ACALL DEL ;调用延时子程序 MOV P2,#0FCH ACALL DEL ;调用延时子程序 MOV P2,#0
这个程序的关键点是要在显示子程序执行的过程中,多对按键进行检测。检测到有按键按下时,即退出子程序,返回到主函数的按键检测,对num 加一。include
while(1) { for(j = 0; j < 8; j++) { P1 = 255; //全灭, P1外接LED, 是低电平发光.delay_ms(500); //稍等片刻.for(i = 0; i < 8; i++) { P1 <<= 1;delay_ms(900 - 100 * j
单片机的跑马灯C程序如何编写八个LED灯依次点亮而且速度渐变的代码
uchar unsigned charvoid delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}main(){uchar i,led;while(1) { led=0xfe; for(i=0;i<8;i++) { P1=led; delay(200);
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }
unsigned char a[10]={0xff,0xFE,0xFC,0xF8,0xF0,0xE0, 0xC0,0x80,0x00,0xff};unsigned char tick_flag;unsigned char delay_cnt;unsigned char num;void UserInital(){ delay_cnt=0;num=0;TMOD |= 0x01;
void delay(unsigned int z );void main(){ unsigned int a;unsigned char b=0xfe;for(a=0;a<8;a++){ P1=b;//P1口接8个LED灯 delay(200);b=_crol_ (b,1);} } void delay(unsigned int z){ unsigned
} //主程序 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);
单片机中要求从左到右依次点亮LED灯用C程序怎么写
P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
下面是c语言程序源码 include
把各个花样写在子函数,中断中对变量加1,在判断是否大于5,大于5就对变量清零。因为你要5种花样。主函数判断变量的值,1时执行从左到右依次点亮,2时执行从左到右逐个依次熄灭。依次下去 include "reg51.h" // 包
实现单片机信号灯1-8依次循环点亮的程序怎么写
假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }
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
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,
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
unsigned LED,i;LED = 0xfe;EA = 0;while(1){ for(i=0;i<7;i++){delay(100);LED = (LED<<1)|0x01;P3 = LED;} for(i=0;i<7;i++){delay(100);LED = (LED>>1)|0x80;P3 = LED;} } } 汇
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灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程
不好意思,看不懂汇编。#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:在此处写入主函数的内容 } }
#include voiddelay(void) { unsignedinti,j; for(i=0;i<200;i++) for(j=0;j<1000;j++) ; } voidmain(void) { while(1) { P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay(); P3=0xfb;//第三个灯亮 delay(); P3=0xf7;//第四个灯亮 delay(); P3=0xef;//第五个灯亮 delay(); P3=0xdf;//第六个灯亮 delay(); P3=0xbf;//第七个灯亮 delay(); P3=0x7f;//第八个灯亮 delay(); } } 扩展资料 单片机C语言16种方式流水灯 voidmain() { while(1) { P1=0xfe;//点亮第一个发光管 Delay(5000); P1=0xfd;//点亮第二个发光管 Delay(5000); P1=0xfb; Delay(5000); P1=0xf7; Delay(5000); P1=0xef; Delay(5000); P1=0xdf; Delay(5000); P1=0xbf; Delay(5000); P1=0x7f;//点亮第八个发光管 } }
#include unsigned char ledtab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} void delay(unsigned char a) { unsigned char i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } main() { unsigned char i; while(1) { for(i=0;i<8;i++){P0=ledtab[i];delay(100);} for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);} } }
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。 2、#include "reg51.h"首先写出单片机的头函数。 3、#include "intrins.h"输入位移函数。 4、unsigned int count=0,led;定义函数。 5、输入主函数,定义单片机的端口,写入延时函数。 6、中断跳转,使流水灯运行起来。
#include voiddelay(void) { unsignedinti,j; for(i=0;i<200;i++) for(j=0;j<1000;j++) ; } voidmain(void) { while(1) { P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay(); P3=0xfb;//第三个灯亮 delay(); P3=0xf7;//第四个灯亮 delay(); P3=0xef;//第五个灯亮 delay(); P3=0xdf;//第六个灯亮 delay(); P3=0xbf;//第七个灯亮 delay(); P3=0x7f;//第八个灯亮 delay(); } } 扩展资料 单片机C语言16种方式流水灯 voidmain() { while(1) { P1=0xfe;//点亮第一个发光管 Delay(5000); P1=0xfd;//点亮第二个发光管 Delay(5000); P1=0xfb; Delay(5000); P1=0xf7; Delay(5000); P1=0xef; Delay(5000); P1=0xdf; Delay(5000); P1=0xbf; Delay(5000); P1=0x7f;//点亮第八个发光管 } }
51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序: ;假设晶振12MHZ,P1控制8个LED低电平亮 ;启动入口======================== ORG 0000H ;复位启动 AJMP START ; ORG 001BH ;T1中断 AJMP T1INT ; ;定义变量======================== YSJS EQU 30H;延时计数器 LED EQU 31H;LED控制缓冲器 ;主程序========================== START: MOV LED,#0FEH ;初始化数据 MOV YSJS,#0 ; ; MOV TMOD,#10H ;定时器1工作于方式1,16位定时器 MOV TL1,#0B0H ;设置定时初值 MOV TH1,#3CH ;定时时间=50mS SETB ET1 ;使能定时器1中断 SETB TR1 ;启动定时器1 SETB EA ;开总中断 MOV P1,LED ;初始化流水灯 ; LOOP: JMP LOOP ;循环等待中断 ; ; T1INT: PUSH PSW ;定时器1中断程序 PUSH ACC ;保护现场 ; MOV TH1,#3CH ;定时时间=50mS MOV TL1,#0B0H ; INC YSJS ; PUSH ACC ;保护ACC MOV A,YSJI ; CJNE A,#2,QT1 ;50mS*2=100mS MOV P1,LED ; MOV A,LED ; RL A ;累加器A的值循环左移1位 MOV LED,A ; MOV YSJS,#0 ; ; QT1: POP ACC ;恢复现场 POP PSW ; RETI ;返回主程序 END ;汇编程序结束
看你流程图,是要求用汇编语言写程序的。可是,按流程图写程序是很麻烦的,这是教材上的题目吗?哪有这么写汇编程序的?用查表程序就很简单了。你先采纳了,再发私信给你程序,这样,也可以不让别人看到程序。因为,这里有太多的人,看到程序后,得到了答案却不采纳,所以,这种提问都不愿意回答了。下面是仿真结果的截图。
#include bit flag;char cnt;void Timer0Init(void) //50毫秒@12.000MHz{ TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0xB0; //设置定时初值 TH0 = 0x3C; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; EA = 1; cnt = 0;}void main(){ signed char i; while(1) { for(i=3;i>=0;i--) { P1=~(119) flag=0;}
如下即可: #includevoid main(){ unsigned int i, j; P1 = 85; while(1) { P1 ^= 255; for(i = 100; i > 0; i--) for(j = 800; j > 0; j--); }}