51单片机来实现60个led灯循环点亮的程序://***汇编程序:include
void main(){uchar tab[]={}//定义数码管 EX0=1;EA=1;IT0=1;while(1){P1=tab[m];} } void into()interrupt 0 {m++;while(INT0==0);} 程序大概是这样,因为使用手机,不方便输入!
void main(){ while(1){ LED1=0;delay_ms(1000);LED1=1;delay_ms(1000);} } void delay_ms(uint z) //延时子程序 { uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}
1:你写汇编程序注意程序的入口地址,比如:“ORG 0000H,主程序开始的入口ORG 0100,中断程序开始的入口 ORG 0200等等”。你要知道汇编和C不同,汇编比起C语言要相对机械一些。汇编程序是写入硬件内部的,严格的配合硬
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为灯亮
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
LJMP T0ISR ;定时0控制流水灯循环点亮 ORG 0030H MAIN:MOV TMOD,#01H ;设置定时器0工作模式 MOV TH0,#HIGH(65536-60000) ;60毫秒定时 MOV TL0,#LOW(65536-60000)SETB ET0 SETB EA MOV A,#0FEH ;
单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个按键上,怎么写我需要详细的程序
0000H LJMP MAIN ORG 0003H LJMP EXT0 ORG 0030H MAIN:MOV SP,#5FH MOV P1,#0FFH SETB EX0 SETB IT0 SETB EA MOV A,#0FEH SJMP EXT0:MOV P1,A RL A JB ACC.4,EXTE MOV A,#0FEH EXTE:RETI END
START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#1
没分的话就不答具体的了,你随便找本书都有模块,你要是P1口接LED再接限流电阻,最后把所有电阻都连在5V电压的话,那就先给11111110给P1,用RR来循环,再写一个用计数器做延时的子程序就行了。一般书都有这几个模块
//以下是四个LED灯循环亮的程序,看看,可以吗?include
;假定:P1口0~3脚依次接4个LED ;假定:晶振为12M ;假定:P1口低电平有效,LED点亮 ORG 00H AJMP MAIN ORG 0BH AJMP JT0 MAIN:NOP MOV SP,#40H MOV A,#0FEH MOV R0,A MOV P1,A ;初始化LED灯,第1灯点
跪求用汇编语言编程,要求如下,P1口的四个LED等循环点亮,点亮时间为一秒,用定时计数器实现延时一秒的编
单片机驱动LED灯的源程序:include
LED = 1; //熄灭小灯 for (i=0; i<30000; i++); //延时一段时间 } } 大家把这个程序编译一下,下载到里,就会发现 LED2 这个小灯会闪烁了。
用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
LED1_01;//取反LED灯 [亮 .灭 ]} while(KEY0_01 == 0);//检测松手 } } } 你的图里有A/D转换器 AD转换函数ADC_DIS.C include
CLR P1.0 要让LED一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让LED一会儿、灭一会儿,交替闪烁的程序:MAIN:;程序开始 SETB P1.0;让P1.0输出高电平 LCALL DELAY;这一行是调用延时子程序 ;目的是让P1.0
帮手指点LED灯闪的汇编程序.看似简单
用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
;假定:P1口0~3脚依次接4个LED ;假定:晶振为12M ;假定:P1口低电平有效,LED点亮 ORG 00H AJMP MAIN ORG 0BH AJMP JT0 MAIN:NOP MOV SP,#40H MOV A,#0FEH MOV R0,A MOV P1,A ;初始化LED灯,第1灯点
include
在上述示例程序中,我们将LED连接到Arduino的13号引脚,并使用digitalWrite()函数控制该引脚的电平。HIGH表示将引脚设置为高电平(点亮LED),LOW表示将引脚设置为低电平(熄灭LED)。通过delay()函数设置LED灯亮灭的时间间隔。
在单片机中,假如你的LED是接在P0口,而且是共阴的,那么 MOV P0,#FFH 就是把8个LED都点亮(可以通过调整#后的数改变点亮的情况)也可以点亮单独的一个,用SETB P0.0(P0.1,P0.2,等等)
怎么汇编语言使用LED灯亮
{ LED_1=0; //第一个灯亮 LED_2=1; // Key=1;Delay(250);if(Key==0){ Delay(10); //软件防抖,延时10ms LED_1=1; //第一个灭 LED_2=0;} //第二个亮 } } Delay(300);Key=1;} }
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
当单片机LED灯一亮一灭间隔1秒时,可以使用以下代码实现:// 初始化IO口 P1 = 0xFF; // 设置延时时间 while (1) { P1 = 0x00; // 延时1秒 for (int i = 0; i < 10000; i++) { // 空循环 } P1 =
SETB P1.0 让该端口输出低电平的语句是:CLR P1.0 要让LED一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让LED一会儿、灭一会儿,交替闪烁的程序:MAIN:;程序开始 SETB P1.0;让P1.0输出高电平 LCALL DELAY
main:mov P1,#0aah acall delay mov P1,#55H acall delay sjmp main delay:mov r7,#0ffh de:mov r6,#0ffh djnz r6,djnz r7,de ret end 这就是你想要的效果,不妨试试哦!
delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一盏LED灯,每隔1秒钟灯的状态会发生一次变化,即由点亮状态变为熄灭状态,
单片机间隔点亮一led灯的汇编语言程序
MAIN: MOV P1, #11111110B ; P1 口 点亮一个发光二极管 ACALL DELAY ; 调用延时子程序 MOV P1, #11111101B ; 从左向右移动 一位 ACALL DELAY MOV P1, #11111011B ACALL DELAY MOV P1, #11110111B ACALL DELAY MOV P1, #11101111B ACALL DELAY MOV P1, #11011111B ACALL DELAY MOV P1, #10111111B ACALL DELAY MOV P1, #01111111B ACALL DELAY JMP MAIN ; 转移 至 MAIN 循环 DELAY: MOV R5,#250 ; 延时子程序 6.000 M 晶振 约 0.5 秒 D1: MOV R6,#250 D2: DJNZ R6,$ DJNZ R5,D1 RET初始写个伪指令 LED EQU PA1 然后初始PA1为输出 且带上拉 程序写 CLR LED 就是打开 SET LED就是关闭
开关控制指示灯显示 MY8255_A EQU 0A860H;8255A口地址 MY8255_B EQU 0A861H;8255B口地址 MY8255_C EQU 0A862H;8255C口地址 MY8255_MODE EQU 0A863H;8255控制口地址 CODE SEGMENT ASSUME CS:CODE START: MOV DX,MY8255_MODE MOV AL,82H OUT DX,AL ;将控制字82H写入8255控制口,A口方式0输出,B口方式0输入, C口未用到。 A1: MOV DX,MY8255_B IN AL,DX ;读8255 B口内容 MOV DX,MY8255_A OUT DX,AL ; 将前面读到的B口内容送到A口,即A口内容=B口内容 CALL BREAK ;调用子程序BREAK JMP A1 ;跳转到A1 BREAK PROC NEAR ;BREAK子程序 MOV AH,1 INT 16H JZ RETURN ;读按键字符,ZF=1,则返回;ZF=0,则AL=字符 MOV AX,4C00H INT 21H ;返回DOS RETURN:RET BREAK ENDP CODE ENDS END START ;流水灯显示 MY8255_A EQU 0b860H;8255A口地址 MY8255_B EQU 0b861H;8255B口地址 MY8255_C EQU 0b862H;8255C口地址 MY8255_MODE EQU 0b863H;8255控制口地址 DATA SEGMENT LA DB ?;留出1个字节 LB DB ?;留出1个字节 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,MY8255_MODE MOV AL,80H OUT DX,AL ;控制字80H送入8255控制口,A口、B口都是方式0输出,C口未用到。 MOV DX,MY8255_A MOV AL,7FH OUT DX,AL ;将7FH送入A口 MOV LA,AL ;将7FH送入LA存储单元 MOV DX,MY8255_B MOV AL,0FEH OUT DX,AL ;将FEH送入B口 MOV LB,AL ;将FEH送入LB存储单元 CALL DALLY A1: MOV AL,LA ROR AL,1 ;LA内容循环右移1次 MOV LA,AL MOV DX,MY8255_A OUT DX,AL ;将循环右移后的LA内容送A口,其目的是让A口连接的LED灯依次向右循环点亮 MOV AL,LB ROL AL,1 ;LB内容循环左移1次 MOV LB,AL MOV DX,MY8255_B OUT DX,AL ;将循环左移后的LB内容送B口,其目的是让B口连接的LED灯依次向左循环点亮 CALL DALLY ;延时,让一个LED灯发光稳定之后再点亮另一个 CALL BREAK ;调用BREAK子程序,看是否有键按下 JMP A1 ;跳转到A1 DALLY: MOV CX,3FFH ;延时子程序 D1: MOV AX,0FFFFH D2: DEC AX JNZ D2 LOOP D1 RET BREAK PROC NEAR ;是否有键按下 MOV AH,06H MOV DL,0FFH INT 21H JE RETURN ;若无,则转RETURN MOV AX,4C00H INT 21H ;返回DOS RETURN:RET BREAK ENDP CODE ENDS END START
ORG 0000H CLR P1.0 SJMP $ END
用两个定时器指令编写一个闪烁电路的程序
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
ORG 0000H start: AJMP MAIN ;转主程序 ORG 000BH AJMP CTC0 ;转中断服务程序 ORG 0030H MAIN: MOV TMOD,#01H ;设置T0为方式1 MOV TL0,#0B0H ;送初值,定时50ms,晶振为12MHz时 MOV TH0,#3CH MOV B, #0FEH MOV R0,#00H SETB EA ;CPU开中断 SETB ET0 ;T0中断允许 SETB TR0 ;启动定时 HERE: SJMP HERE ;等待中断 ;中断服务程序 ORG 0120H CTC0: MOV TL0,#0B0H ;重新装如初值 MOV TH0,#3CH INC R0 MOV A,R0 CJNE A,#14H,NEXT MOV R0,#00H MOV A,B RL A MOV B,A NEXT: RETI
http://blog.163.com/asm_c/blog/static/248203113201063540886/ 参考。
1)P2口的8个脚对应8个LED;设D1灯对应高位,D8灯对应低位; 2)P1口的P1.0脚对应XO按钮;P1.1脚对应X1按钮; 3)开始时,显示第一种方式:向P2口写入a=01111111,延时0.5S,a 循环右移一位,再延时0.5S,如此反复。 4)当收到XO按钮信号后,向P2口写入a=01111111,延时1.5S,a 循环右移二位,再延时1.5S,如此反复。 5)当收到X1按钮信号后,向P2口写入a=10111111,延时1S,a 带进位右移二位,再延时1.5S,如此反复。当Cy=0时,执行 3)。
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。 #include #include 仿真图效果。