📄 口变速移位音响t.asm
字号:
;MOVG.ASM P0-P3口LED灯亮移位和音变程序
ORG 0000H
LJMP L3600
ORG 0360H ;程序,MCS-51单片机的 P1.7输出音变声
L3600: MOV P1,#0FFH ;关P1口LED灯
MOV 20H,#0F0H ;循次环数
MOV 21H,#15H ;循次环数
L3609: LCALL S361A ;调用变音子程序
DJNZ 21H,L3609 ;不为0转
L360F: INC 21H ;音调升高
NOP
LCALL S361A ;调用变音子程序
DJNZ 21H,L360F ; 不为0转
MOV P1,#0FFH
MOV P3,#0FFH
LJMP SLOK ;转P0-P3口LED灯亮移位程序
S361A: SETB P1.7 ;变音子程序P1.7灯亮
LCALL S3640 ;调用延时子程序
CLR P1.7 ;变音子程序P1.7灯灭
LCALL S3640 ;调用延时子程序
DJNZ 20H,S361A ;不为0转
CLR P1.7 ;关P1.7
LCALL S3646 ;延时
RET
ORG 03A0H ;延时子程序
S3630: PUSH 02H
L3632: DJNZ R2,$
POP 02H
DJNZ R2,S3630
RET
ORG 03B0H ;延时子程序
S3640: MOV R2,21H
LCALL S3630
RET
S3646: MOV R2,#15H ;延时子程序
LCALL S3630
RET
ORG 0400H ;P0、P1、P2、P3口的位移位LED灯亮程序
SLOK:MOV SP,#60H ;设堆栈指针
MOV R7,#30H ;送延时常数
L0: CLR C ;进位位清零
MOV A,#0FFH ;设口为低电平时LED灯亮,高电平LED不亮,
;即硬件灌电流设计,减小CPU功耗
L1: RLC A ;移位后,A为FEH
MOV P0,A ;即P0.0口LED灯亮
ACALL DELAY ;延时
CJNE A,#0FFH,L1 ;P0.7位LED灯亮则顺序执行,不然返回
L2: RRC A ;P2口灯亮移位
MOV P2,A
ACALL DELAY
CJNE A,#0FFH,L2
L3: RRC A ;P3口灯亮移位
MOV P3,A
ACALL DELAY
CJNE A,#0FFH,L3
L4: RRC A ;P1口灯亮移位
MOV P1,A
ACALL DELAY
CJNE A,#0FFH,L4
INC R7
CJNE R7,#35H,L1 ;循环移位次数到吗?不到继续移位,到,则返回音变程序
L5: LJMP L3600
DELAY: PUSH 07H ;延时子程序
LED: PUSH 07H
LEF: PUSH 07H
DJNZ R7,$
POP 07H
DJNZ R7,LEF
POP 07H
DJNZ R7,LED
POP 07H
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -