单片机 流水灯 汇编语言,需要的下。
仿真原理图
单片机汇编程序
- ORG 0000H
- SJMP MAIN
- ORG 0013H ; 外部中断1矢量
- LJMP INT ;
- MAIN:
- SETB EA ; 开总中断允许“开关”
- SETB EX1 ; 开分中断允许“开关”
- SETB EX0 ;
- SETB PX1 ;
- SETB PX0 ;
- SETB IT1 ; 边沿触发
- SETB IT0 ; 边沿触发
- MOV R0, #0H; 将R0赋值0
- LOOP:
- NUM1:
- CJNE R0,#0,NUM2; 若R0不为0则跳转
- MOV P2, #0F9H; 数码管显示1
- SJMP LOOP1; 跳转到LOOP1
- NUM2:
- CJNE R0,#1,NUM3; 若R0不为1则跳转
- MOV P2, #0A4H; 数码管显示2
- SJMP LOOP1 ; 跳转到LOOP1
- NUM3:
- LOOP1:
- MOV A,#0FFH;
- mov p0,A ; 全灭
- ;mov p1,A ;
- MOV A,#0FEH; 顺时针依次点亮
- XXX:
- MOV P1,#0FFH;
- YYY:
- MOV R1,#2;
- MOV P0,A;
- lcall delay
- RL A;
- CJNE A,#0FEH,YYY;
- AJMP LOOP;
- delay:
- CJNE R0,#0,DELAY_0; 若R0不为0则跳转
- mov r5,#10; 若R0为0则R5赋值20
- SJMP BBB; 跳转到BBB
- DELAY_0:
- CJNE R0,#1,DELAY_1; 若R0不为1则跳转
- MOV R5,#20; 若R0为1,给R5赋值20
- SJMP BBB ; 跳转到BBB
- DELAY_1:
- MOV R5,#30; R0为2,给R5赋值10
- BBB:
- d1: mov r6,#40
- d2: mov r7,#248
- djnz r7,$
- djnz r6,d2
- djnz r5,d1
- FINISH:
- ret
- INT:
- LCALL DELAY1S;
- RL A;
- CJNE R1,#1,FFF;
- CJNE A,#0FEH,QQQ;
- MOV P0,A;
- LCALL DELAY3S;
- SJMP JJJ;
- QQQ:
- MOV P1,A;
- LCALL DELAY3S;
- SJMP JJJ;
- FFF:
- CJNE A,#0FEH,PPP;
- MOV P1,A;
- LCALL DELAY3S;
- SJMP JJJ;
- PPP:
- MOV P0,A;
- LCALL DELAY3S;
- JJJ:
- INC R0;
- CJNE R0,#3,AAA;
- MOV R0,#0;
- AAA:
- CJNE R0,#0,NU2; 若R0不为0则跳转
-
- AJMP LOOP2;
- NU2:
- CJNE R0,#1,NU3; 若R0不为1则跳转
- AJMP LOOP2;
- NU3:
- CJNE R0,#2,LOOP2;
- LOOP2:
- MOV P1,#0FFH;
- MOV P0,#0FFH;
- RETI; 中断返回
- DELAY3S:
- LCALL DELAY1S;
- LCALL DELAY1S;
- LCALL DELAY1S;
- RET;
- DELAY1S:
- MOV R2, #0AH ;
- CCC:
- CALL DELAY100MS ;
- DJNZ R2, CCC;
- RET
- DELAY100MS:
- MOV R4, #200;
- DELAY20US:
- MOV R3, #248
- DJNZ R3, $
- DJNZ R4, DELAY20US
- RET
- END
复制代码
复件 LED.zip
(59.11 KB, 下载次数: 23)
|