




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机 P1口控制8个LED灯 要从P1.0到P1.7然后从P1.7到P1.0这样让LED灯来回流动 ORG 00HSTART: MOV A, #0FFH CLR C MOV R1, #8LEFT: ;向左流动 RLC A MOV P1, A CALL DELAY DJNZ R1, LEFT MOV R2, #7RIGHT: ;向右流动 RRC A MOV P1, A CALL DELAY DJNZ R2, RIGHT JMP STARTDELAY: ;延时200毫秒 MOV R3, #20D1: MOV R4, #20D2: MOV R5, #248 DJNZ R5, $ DJNZ R4, D2 DJNZ R3, D1 RET END或ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV A,#0FEH ;左移时(P1.0-P1.7)P1.0=0,低电平点亮 MOV R3,#07H ;移位次数LED_L: MOV P1,A ;将移位结果赋给P1 RL A ;左移 LCALL DELAY DJNZ R3,LED_L ;R3=0? 不为0循环,否则顺序执行 MOV R3,#07H ;为下次循环次数重新赋值;以下为右移代码,注释同上 MOV A,#7FH MOV R4,#07HLED_R: MOV P1,A RR A LCALL DELAY DJNZ R4,LED_R ;MOV R4,#07H SJMP LED_R /延时子程序 12M晶振 1S DELAY: MOV R0,#100 DEL2: MOV R1,#10 DEL1: MOV R2,#124 NOPDEL0: NOP NOP DJNZ R2,DEL0 DJNZ R1,DEL1 DJNZ R0,DEL2 RET END P1口控制8个LED灯 要从P1.0到P1.7然后从P1.7到P1.0这样让LED灯来回流动5只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。;用最直接的方式实现流水灯ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略) LCALL DELAY LCALL DELAY ;延时60秒 MOV P1,#11101111B LCALL DELAY LCALL DELAY ;延时60秒 MOV P1,#11110111B LCALL DELAY LCALL DELAY ;延时60秒 MOV P1,#11111011B LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 LCALL DELAY ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250msPUSH PSW ;现场保护指令(有时可以不加)MOV R4,#240 L3: MOV R2 ,#00HL1: MOV R3 ,#00HL2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:240次 POP PSW RET END随便改了一个1357亮。2468不亮。中间间隔一个灯main:mov P1,#0aahacall delaymov P1,#55Hacall delaysjmp maindelay:mov r7,#0ffh de:mov r6,#0ffh djnz r6,$ djnz r7,de ret end开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。程序A:;用最直接的方式实现流水灯ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2 DJNZ R2 ,L1DJNZ R4 ,L3 RET END程序B:;用移位方式实现流水灯org 00h ;程序上电从00h开始ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成11111110loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend1、采用移位指令实现流水灯ORG 0000H LJMP MAINORG 0040HMAIN: MOV R0,#10HMOV A,#0FEHTOY: MOV P1,ALCALL DELAY;这里不能够使用jmp指令 ;必须得用lcall因为这是函数RL ADJNZ R0,TOY;下面的程序是反方向点亮MOV R0,#10HMOV A,#7FHTOY1: MOV P1,ALCALL DELAY;这里不能够使用jmp指令 RR ADJNZ R0,TOY1;下面的是同时闪亮MOV R0,#004HTOY2: MOV P1,#0FFHLCALL DELAYMOV P1,#00HLCALL DELAYDJNZ R0,TOY2;TT: LJMP TT;DELAY: ; 延时子程序MOV R2,#0FFHMOV R3,#0FFHDLY_LP:NOPNOPDJNZ R2,DLY_LPMOV R2,#0FFHDJNZ R3,DLY_LP RET; END 2、采用循环送数法实现ORG 0000HLJMP MAINORG 0100HTOY: DB 11111110B,11111101B,11111011B,11110111B,11101111B,11011111B,10111111B,01111111BDB 11111110B,11111101B,11111011B,11110111B,11101111B,11011111B,10111111B,01111111BDB 01111111B,10111111B,11011111B,11101111B,11110111B,11111011B,11111101B,11111110BDB 01111111B,10111111B,11011111B,11101111B,11110111B,11111011B,11111101B,11111110BDB 11111111B,00000000B,11111111B,00000000B MAIN: MOV R0,#36MOV DPTR,#TOYMOV R1,#0HAM: MOV A,R1MOVC A,A+DPTR;注意要读数据的是movcMOV P1,ALCALL DELAYLCALL DELAYINC R1DJNZ R0,AMJMP MAIN;DELAY: ; 延时子程序MOV R2,#0FFHMOV R3,#0FFHDLY_LP:NOPNOPDJNZ R2,DLY_LPMOV R2,#0FFHDJNZ R3,DLY_LP RETEND51单片机汇编语言编写电子表时钟2009-11-25 00:25 数码管显示00到FF: ORG0000HLJMPMAINORG0030HMAIN:MOVA,#00HLOOP:MOVP1,AACALLDELAYINC ASJMP LOOPDELAY:MOVR7,#40HDJNZR7,$RET END数码管显示00到99(十进制计数): ORG0000HLJMPMAINORG0030HMAIN:MOVA,#00HLOOP:MOVP1,AACALLDELAYADD A,#01HDAASJMP LOOPDELAY:MOVR7,#40HDJNZR7,$RET END数码管显示60进制计数: ORG0000HLJMPMAINORG0030HMAIN:MOVA,#00HMOVR7,#60HLOOP:MOVP1,AACALLDELAYADD A,#01HDAACJNEA,#60H,LOOPMOVA,#00HSJMPLOOPDELAY:MOVR7,#15HDJNZR7,$RET END时钟 ORG0000HLJMPMAINORG0030HMAIN:MOVSP,#70HMOVR0,#00HMOVR1,#00HMOVR2,#00HMOVP0,#00HMOVP1,#00HMOVP2,#00HACALLDELAYSTART:MOVA,R0ADDA,#01HDAACJNEA,#60H,SECDISMOVA,#00HACALLMINUTESECDIS:MOVR0,AMOVP0,R0ACALLDELAYSJMPSTARTMINUTE:PUS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论