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

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

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

嘿嘿 俺可以帮你噢
1 给你一个算法:
可以利用定时计数器0 定时50毫秒 允许中断 再设置一个软件计数器(初始值为20)
每当定时器定时时间到即50毫秒 计入中断服务程序后 软件计数器减1
等于0时 表示1秒钟到( 要重新给软件计数器送初值) 同时根据用户标志FAL1=1 则
显示内容左移 同时显示 并将用户标志FAL1取反
否则 显示全灭 并将用户标志FAL1取反。具体指导,可以参见右上角的百度私信。

呵呵 满意就选满意回答

单片机晶震选12M,定时比较准
LED1 equ p0.0
org 0000H
ajmp start
start:
mov P0,#0FFh ;灌电流驱动灭灯 ,如果灯没有关,用 mov p0,#00h
work:
CLR LED1 ;灭如果反了把CLR改成 setb
acall delay_1s
SETB LED1 ;灭如果反了把setb改成 clr
acall delay_3s
ajmp work
delay_1s:
mov 30H,#100
D1:
MOV 31h,#100
d2: mov 32H,#98
DJNZ 32h,$
djnz 31h,d2
DJNZ 30h,d1
ret
delay_3s:
mov 30H,#250
D3:
MOV 31h,#200
d4: mov 32H,#98
DJNZ 32h,$
djnz 31h,d4
DJNZ 30h,d3
ret
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


单片机用汇编写两个数码管显示0到99循环的程序
要实现单片机用汇编语言编写的数码管循环显示0到99的程序,首先,你需要创建一个新的项目并做好初始化准备工作。接着,创建一个数码管段选表,它将决定每个数码管的显示模式。延时函数在此过程中也至关重要,以控制数码管的刷新速度。定义一个名为i的uchar变量,初始化一个名为wk的标志位,用于控制数...

单片机用汇编语言,急!急!!急!!!
首先需要计算出 DEL 和 DEL1 的执行时间,由于 DEL 只有一条指令,所以执行时间为一个机器周期(1\/12MHz = 83.33ns)。DEL1 的执行时间也为一个机器周期,即83.33ns。接下来计算 DEL2 的执行时间。由于 DEL2 中只有一条指令 DJNZ R6,DEL1,因此需要计算 DJNZ R6 的执行时间。DJNZ 指令的执行...

51单片机汇编程序编写方波输出程序
ORG 001BH LJMP Timer1Interrupt START:MOV SP,#60H LCALL InitTimer1 LOOP:;主循环 添加其他代码 LJMP LOOP InitTimer1:MOV TMOD,#10H MOV TH1,#9EH MOV TL1,#58H SETB EA SETB ET1 SETB TR1 RET Timer1Interrupt:PUSH DPH PUSH DPL PUSH ACC MOV TH1,#9EH MOV TL1,#58H CPL P1.1...

这个单片机用汇编语言怎么编程?
用 51 单片机汇编语言,编程如下:

单片机汇编语言1加到100怎么编?
org 0 mov r0,#100 ;共100个数 mov a,#0 ;累加结果先清0 mov r1,#1 ;第1个数为1 loop:add a,r1 ;把数累加起来 inc r1 ;下一个数 djnz r0,loop;共100个数,未完转 LOOP循环 sjmp $ ;完成 end

用汇编语言写一个单片机定时器\/计数器的程序
2.以中断方式工作,每计满200个脉冲,则取反P1.0口线状态。ORG 0000H SJMP START ORG 000BH CPL P1.0 RETISTART: MOV TMOD, #06H MOV TH0, #56 MOV TL0, #56 SETB TR0 MOV IE, #82H SJMP $ END ...

用单片机汇编语言编写一秒的定时 用定时器T0 方式2 急求!!
CJNE A,#200,INT_01 ;200次为TIME1S加1,此处时间为200*250us=50ms MOV TIME50ms,#0 INC TIME1s MOV A,TIME1S CJNE A,#20,INT_01 ;此处再做20次即为1S 2020 MOV TIME1S,#0 ;;;此处你可以编你要的程序,我在这里将P3。1脚取反,每秒变一次电平 CPL P3.1 ;;;...

单片机1秒钟定时汇编语言怎么编?
第一种方法:用延时的方法实现 DELAY: MOV R3,#10;延时子程序,延时1秒 D1: MOV R4,#200 D2: MOV R5,#250 D3: DJNZ R5,D3 DJNZ R4,D2 DJNZ R3,D1 RET END 第二种方法:用定时器的方法实现 ———MOV R1,#20 ———DLY: MOV TMOD,#00000001B;延时子程序,设定...

51单片机中如何用汇编语言编写流水灯
RL A;累加器A的值循环左移1位MOV LED,A;MOV YSJS,#0;QT1:POP ACC;恢复现场POP PSW;RETI;返回主程序END;汇编程序结束 扩展资料: 实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,...

求一个用汇编语言编写单片机简易交通灯程序。求高手帮下忙谢谢了...
;程序实现功能 ;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。;工作寄存器及存储单元分配 ;1.工作寄存器 ;R2设置为定时器定时...

开县15130043769: 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 ...

开县15130043769: 求利用单片机编程 程序不太复杂(急求高手解答) -
市曲脑嗌: void main(void ) { LED1=0; //亮 LED2=0; //亮 delay(1); //延时1秒 LED1=1; //灭 LED2=1; //灭 delay(1); //延时1秒 } void delay(unsigned int dat)//延时函数 { uchar i,j; while(dat--) { j=100; while(j--) { i=200; while(i--); } } }

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

开县15130043769: 单片机用汇编语言编写一个.用十个按钮分别控制十个灯.比如:按下按钮K1 LED1灯亮.按下" -
市曲脑嗌: 检测是否有按键按下,相应的指示灯点亮,并熄灭其它的指示灯.至于10S锁住其他按钮,如果程序不做其它的事情,最简单的方法就是点亮指示灯后延时10S,再回到主函数扫描其它按键即可

开县15130043769: 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 ...

开县15130043769: 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亮.

开县15130043769: 试用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

开县15130043769: 谁能写一个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 参考电路图:

开县15130043769: 求一个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

开县15130043769: 51单片机实现p1口控制三盏灯亮一秒,灭一秒 -
市曲脑嗌: 灯若接在P1口的低3位ORG 0000H START: MOV A,#07HXX: MOV P1,A delay: MOV R7,#10 ;延时约1秒 LOOP1: MOV R6,#200 LOOP2: MOV R5,#248NOP LOOP3: DJNZ R5,$DJNZ R6,LOOP2DJNZ R7,LOOP1CPL ASJMP XXEND

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