logo资料库

最经典的51单片机经典流水灯汇编程序.doc

第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
资料共53页,剩余部分请下载后查看
单片机流水灯汇编程序设计
单片机流水灯程序总结
第七个试验:流水灯数字显示综合练习----51单片机汇编语言试验教程
第三个试验:认识单片机发音程序-----51单片机汇编语言试验教程
单片机流水灯汇编程序设计 开发板上的 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,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序 B: ;用移位方式实现流水灯 org 00h ;程序上电从 00h 开始
ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给 A 赋值成 11111110 loop: 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.8S djnz r4,d2 djnz r3,d1 ret end 51 单片机经典流水灯程序,在 51 单片机的 P2 口接上 8 个发光二极管,产生流水灯的移动效果。 ;程序从 0 地址开始 MOV START: LOOP: MOV ;让 ACC 的内容左移 ORG 0 A,#0FEH P2,A RR CALL LJMP ;让 ACC 的内容为 11111110 ;让 P2 口输出 ACC 的内容 A DELAY LOOP ;调用延时子程序 ;跳到 LOOP 处执 行 ;0.1 秒延时子程序(12MHz 晶振)=================== DELAY: D1: R7,#200 MOV MOV R6,#250 行 R6 次 R7 次 DJNZ DJNZ R6,$ R7,D1 ;R7 寄存器加载 200 次数 ;R6 寄存器加载 250 次数 ;本行执 ;D1 循环执行
;返回主程序 ;结束程序 RET END 开关控制的单片机流水灯 汇编 在单片机控制下,用一个拨动开关 K1,控制8个发光二极管 L1-L8,发光的时间间隔为 0.5 秒。 具体要求: 当拨动开关 K1 发出低电平(K1=0)时,L1-L8 从两头向中间逐个点亮,当 L1-L8 全部点亮后延时 2 秒钟全 部熄灭,如此往复循环。 当拨动开关 K1 发出高电平(K1=1)时,中间的 L4、L5 点亮,然后点亮的灯向两边扩展,直到 L1-L8 全部 点亮后延时 2 秒钟全部熄灭,如此往复循环。 悬赏分:20 - 解决时间:2009-12-21 13:42 提问者: --------- 最佳答案: ;-------------------------------------------- 下列程序,经过了编译、仿真,可以满足要求。 ;-------------------------------------------- ORG 0000H MOV R2, #0 M_LOOP: MOV A, R2 INC R2 ANL A, #07H MOV C, P1.0 MOV ACC.3, C MOV DPTR, #TAB MOVC A, @A + DPTR MOV P0, A CALL DL5KT SJMP M_LOOP ;-------------------------------------------- TAB: DB DB 0xFF, 0xE7, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00 ;-------------------------------------------- DL5KT: R5, #10 R6, #100 R7, #250 mov MOV MOV DJNZ R7, $ DJNZ R6, $ - 4 DJNZ R5, $ - 8 RET ;--------------------------------------------
END 流水灯汇编程序 8 只 LED 为共阳极连接,即单片机输出端为低电平时即可点亮 LED。 ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B LCALL DELAY MOV P1,#10111111B ;最下面的 LED 点亮 ;延时 1 秒 ;最下面第二个的 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 ;反复循环 DELAY: ;延时子程序,12M 晶振延时约 250 毫秒 ;大约值:2us*256*256*2=260ms,也可以认为为 250ms PUSH PSW ;现场保护指令(有时可以不加) MOV R4,#2 L3: MOV R2 ,#00H L1: MOV R3 ,#00H DJNZ R2 ,L1 DJNZ R4 ,L3 ; 中层循环:256 次 ;外层循环:2 次 POP PSW RET END L2: DJNZ R3 ,L2 ;最内层循环:(256 次)2 个周期指令(R3 减一,如果比 1 大,则转向 L2) 51 汇编单片机 LED 花样流水灯(1)
start:CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2 ACALL DELAY SETB P1.2 ACALL DELAY CLR P1.3 ACALL DELAY SETB P1.3 ACALL DELAY CLR P1.4 ACALL DELAY SETB P1.4 ACALL DELAY CLR P1.5 ACALL DELAY SETB P1.5 ACALL DELAY CLR P1.6 ACALL DELAY SETB P1.6 ACALL DELAY CLR P1.7 ACALL DELAY CLR P1.7 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2 ACALL DELAY SETB P1.2 ACALL DELAY CLR P1.3 ACALL DELAY
SETB P1.3 ACALL DELAY CLR P1.4 ACALL DELAY SETB P1.4 ACALL DELAY CLR P1.5 ACALL DELAY SETB P1.5 ACALL DELAY CLR P1.6 ACALL DELAY CLR P1.6 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2 ACALL DELAY SETB P1.2 ACALL DELAY CLR P1.3 ACALL DELAY SETB P1.3 ACALL DELAY CLR P1.4 ACALL DELAY SETB P1.4 ACALL DELAY CLR P1.5 ACALL DELAY CLR P1.5 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.1
ACALL DELAY CLR P1.2 ACALL DELAY SETB P1.2 ACALL DELAY CLR P1.3 ACALL DELAY SETB P1.3 ACALL DELAY CLR P1.4 ACALL DELAY CLR P1.4 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2 ACALL DELAY SETB P1.2 ACALL DELAY CLR P1.3 ACALL DELAY CLR P1.3 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.2 ACALL DELAY CLR P1.2 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0
ACALL DELAY CLR P1.1 ACALL DELAY CLR P1.1 ACALL DELAY CLR P1.0 ACALL DELAY CLR P1.0 ACALL DELAY SETB P1.0 ACALL DELAY SETB P1.1 ACALL DELAY SETB P1.2 ACALL DELAY SETB P1.3 ACALL DELAY SETB P1.4 ACALL DELAY SETB P1.5 ACALL DELAY SETB P1.6 ACALL DELAY SETB P1.7 ACALL DELAY AJMP start DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET END 开发板上的 8 只 LED 为共阳极连接,即单片机输出端为低电平时即可点亮 LED。 程序 A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B LCALL DELAY;延时 1 秒 ;最下面的 LED 点亮
分享到:
收藏