51单片机用汇编实现LED1亮1秒,灭3秒循环执行?

作者&投稿:淳永 (若有异议请与网页底部的电邮联系)
用汇编语言编写51单片机程序让LED灯亮0.5秒,灭2秒无限循环~

ORG 0000H
MOV SP,#60H
E: CLR P1.0 ; P1.0 LED亮
ACALL DEL_1S ; 0.5 秒
SETB P1.0 ; P1.0 LED灭
ACALL DEL_2S ;2秒
SJMP E ; 循环
DEL_1S: MOV R2,#10 ; 0.5秒

JMP DEL_2S+2
DEL_2S: MOV R2,#40 ; 2秒
SETB TR1
LOOP: JNB TF1,$
MOV TL1,#0B0H
MOV TH1,#3CH
CLR TF1
DJNZ R2,LOOP
CLR TR1
RET
END

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
CLR P1.0
MOV R2,#10
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E
CPL P1.0
MOV R2,#10
T0E:
RETI
END

ORG 0000H START: MOV P0,#0FEH LCALL DELAY1 MOV P0,#01H LCALL DELAY1 LCALL DELAY SJMP START DELAY1: push 03h push 04h push 05h mov r3,#100 d1: mov r4,#20 d2: mov r5,#248 d3: djnz r5,d3 nop djnz r4,d2 djnz r3,d1 pop 05h pop 04h pop 03h ret delay: push 03h push 04h push 05h mov r3,#50 d1: mov r4,#20 d2: mov r5,#248 d3: djnz r5,d3 nop djnz r4,d2 djnz r3,d1 pop 05h pop 04h pop 03h ret end


求单片机汇编编程
下面的是正确的.清零:MOV R0, #50H CLR A LOOP: MOV @R0,A INC R0 CJNE R0 ,#5AH,LOOP ;=== 写入01H:MOV R0, #50H MOV A, #01H LOOP: MOV @R0,A INC R0 CJNE R0 ,#5AH,LOOP ;都是仅用五条指令即可完成

用汇编语言写单片机程序开头怎么写?
程序的基本框架如下 ORG 0000H LJMP START ;需要跳过中断服务程序入口地址,ORG 0100H START:MOV SP,#50H ;设堆栈区起始地址,一般不可少 ...SETB P0.0 SETB P0.3 ...LOOP:SETB P1.5 ;设定P1.5为输入状态 JB P1.5, NEXT ;假设P1.5为高是未达到既定值 CLR P0.0 ;达到既定...

汇编语言编程单片机的问题
P1.1的地址就是91H, P1.2 对应 92H... ...这些名字都是寄存器地址,其他单片机也一样,PA,PB,PC 也是地址 要SETB PA.0 首先要看PA这个寄存器能不能够位寻址,PA.O中的"."在汇编语言中是取位运算,一般做为引脚的寄存器都是可以位寻址的.还有对于不同的单片机,指令也可能不太相同,SONIX...

单片机汇编语言编程,用串行工作方式1发送一个字节的数
ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 MOV SCON,#40H CLR A LOOP:MOV SBUF,A ;通过串口发送一个0 JNB TI,CLR TI INC A MOV R2,#200 ;延时一会儿 DJNZ R2,SJMP LOOP END ...

急求:用C8051单片机汇编语言编写程序实现判断一个数是偶数还是奇数...
如果ACC.0=1则是奇数,如果ACC.0=0就是偶数。

汇编语言怎么写入单片机
具体用法你可以先下载一个keil c51的软件。找一个教程看一下。keil c51可以编译C语言,也可以编译汇编语言,也可以把两者混合汇编。但是只有将他们转换成.hex格式(十六进制格式文件)的文件(或者二进制的文件,这种情况一般很少),单片机才能识别。程序编译好后,剩下的工作就是将生成的.hex烧录到单片机...

单片机问题,如果一个单片机的主频是1m赫兹,那么就是1s的时间可以执行1m...
不可以这么理解,正确的是这样的:如果一个单片机的主频是1MHz,那么他的指令周期就是1us,即1MHz的倒数。而单片机从内核结构,可以分两类:复杂指令集结构类型的单片机,如51,8086,精简指令集结构的单片机,如AVR,ARM7 如果是前者:复杂指令集结构类型的计算机,那么,一条汇编语句可能是1个指令周期...

51单片机怎么用汇编实现流水灯循环点亮,要求亮1秒熄灭,等待一秒后下...
嘿嘿 俺可以帮你噢 1 给你一个算法:可以利用定时计数器0 定时50毫秒 允许中断 再设置一个软件计数器(初始值为20)每当定时器定时时间到即50毫秒 计入中断服务程序后 软件计数器减1 等于0时 表示1秒钟到( 要重新给软件计数器送初值) 同时根据用户标志FAL1=1 则 显...

求个51单片机开平方的汇编程序
汇编程序:用减奇数法开平方(16位)命题:从 1 开始,把连续 n 项奇数的等差数列,求和,可以得到 n^2。证明:1 + 3 + 5 + ... + (2n-1) = (1 + (2n-1)) * (n\/2) = n^2。那么,对于任意正整数 M,都会有:M = 1 + 3 + 5 + … + ( 2n - 1 ) + ε = n^2 ...

C51写单片机程序如何插入汇编指令.
C51些单片机程序插入汇编指令的方法如下:1、以#pragma asm开始,以#pragma endasm结束,用pragma asm和#pragma endasm这两个伪指令将汇编代码包起来。比如:2、但是如果直接这样嵌入汇编代码的时候,编译时会报错,错误代码是:'asm\/endasm' requires src-control to be active 解决办法是:在工程中,...

带岭区18647599885: 51单片机用汇编实现LED1亮1秒,灭3秒循环执行?
保慧羟甲: ORG 0000H START: MOV P0,#0FEH LCALL DELAY1 MOV P0,#01H LCALL DELAY1 LCALL DELAY SJMP START DELAY1: push 03h push 04h push 05h mov r3,#100 d1: mov r4,#20 d2: mov r5,#248 d3: djnz r5,d3 nop djnz r4,d2 djnz r3,d1 pop ...

带岭区18647599885: 单片机定时中断
保慧羟甲: 跟你理清一下思路,你的问题就解决了.首先,你的程序很简单,就是让发光二极管1秒亮1秒灭.因此,你前提是要定时1秒,但51单片机无法定时1秒,因此,你的程序就要定时50毫秒,每到了50毫秒,你就让num自加1,当num加到20时,...

带岭区18647599885: 求一个51单片机延时1秒的程序,用汇编!! -
保慧羟甲: DEL1S:MOV R7,#10 D1: MOV R6,#200 D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET 说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等 2、这个程序是12M时钟,如果时钟不同,要修改数值.如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5

带岭区18647599885: 怎么样用51单片机点亮一个二极管,让它以0.1秒的频率连续闪烁之后停顿1秒,再接着闪烁,如此循环.C语言写 -
保慧羟甲: 这个应该是最简单了,要求中的0.1s和1s可以用软件延时或者是定时器做,在大循环中,led先亮0.1s,再灭0.1s,重复多少次依据题目可定,在最后没led 1s就可以了

带岭区18647599885: 谁能写一个51单片机点亮一盏led灯延迟几秒永远关掉它的程序,谢谢啊 -
保慧羟甲: ORG 0000HLJMP 0100HORG 0100H MAIN: CLR P1.0 ;LED1被点亮LCALL YS5M ;延时5秒SETB P1.0 ; LED1灭SJMP $YS5M: MOV R7,#100 ;延时5秒 YLL1: MOV R6,#200 YLL2: MOV R5,#123 YLL3: DJNZ R5,YLL3DJNZ R6,YLL2DJNZ R7,YLL1RET 参考电路图:

带岭区18647599885: 如何通过51单片机控制LED灯以1s的频率闪烁,求源代码. -
保慧羟甲: #include //包括一个52标准内核的头文件#define uchar unsigned char 主函数*...

带岭区18647599885: AT89C51单片机延时1秒程序怎么写??? -
保慧羟甲: void DELAY(int z)//延时zms {int x,y;for(x = z;x > 0;x--)for(y = 110;y > 0;y--); }DELAY(1000); 就可以延时1S 但是有很小的误差 精确的只能用定时器了

带岭区18647599885: 51单片机按键延时1秒转换led状态,求大神写下程序 -
保慧羟甲: 0 01 11 00 1 是这样的四种状态吗? 这样很简单的,, 主要还是检测按键, 按键按下 你把一个变量+1, 比如 if(Key == 0) { delay(); //延时10ms,延时函数 自己写吧 if(Key == 0) { num++; if(num >= 4) num = 0; while(!Key); } } 然后根据num ...

带岭区18647599885: 51单片机led灯亮一秒停五秒程式怎么写 -
保慧羟甲: void delay_s(unsigned char t); void main() { while(1) { led = 1;//led 亮 delay_s(1);//延时1s led = 0;//led 暗 delay_s(5);//延时5s } } 这是主循环,你要把delay_s()这个延时函数补充进去,另外,led亮和暗的电平你得根据你得具体电路看是1亮还是0亮.

带岭区18647599885: 试用80C51单片机的P1.0控制一个发光LED,让LED每一秒闪一下,用汇编语言写出程序 -
保慧羟甲: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: MOV R7,#0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 SJMP $ T0INT:MOVE TH0,#3CH MOV TL0,#0B0H INC R7 CJNE R7,#21,RT CPL P1.0 MOV R7,#0 RT:RETI END

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网