RET X30: DEC R1 MOV A,R1 SJMP X31 ;-------------------------- X2: MOV R6,#50H X0: ACALL XLE JNB ACC.5,XX0 DJNZ R6,X0 MOV R6,#20H MOV R0,#50H MOV A,@R0 MOV R0,A MOV A,@R0 MOV R7,A MOV A,#10H MOV @R0,A X1: ACALL XLE JNB ACC.5,XX1 DJNZ R6,X1 MOV A,R7 MOV @R0,A SJMP X2 XX1: MOV R6,A MOV A,R7 MOV @R0,A MOV A,R6 XX0: RET ;---------------------------- XLE: ACALL DIS ACALL KEY MOV R4,A MOV R1,#48H MOV A,@R1 MOV R2,A INC R1 MOV A,@R1 MOV R3,A MOV A,R4 XRL A,R3 MOV R3,04H MOV R4,02H JZ X10 MOV R2,#88H
20
MOV R4,#88H X10: DEC R4 MOV A,R4 XRL A,#82H JZ X11 MOV A,R4 XRL A,#0EH JZ X11 MOV A,R4 JZ X12 MOV R4,#20H DEC R2 SJMP X13 X12: MOV R4,#0FH X11: MOV R2,04H NOP
NOP
MOV R4,03H X13: MOV R1,#48H MOV A,R2 MOV @R1,A INC R1 MOV A,R3 MOV @R1,A MOV A,R4 JB ACC.5,X113 JB ACC.4,X113 MOV DPTR,#LS3
MOVC A,@A+DPTR
X113: RET
;---------------------------------
LS3: DB 07H,04H,08H,05H,09H,06H,0AH DB 0BH,01H,00H,02H,0FH,03H,0EH DB 0CH,0DH ;----------------------------------- DIS: PUSH DPH PUSH DPL SETB RS1 MOV R0,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#LS0 LS2: MOV A,@R0 MOVC A,@A+DPTR
21
MOV R1,#0DCH MOVX @R1,A MOV A,R2 inc R1 MOVX @R1,A LS1: DJNZ R3,LS1 CLR C RRC A MOV R2,A DEC R0 JNZ LS2 movx @r0,a
dec r0 cpl a movx @r0,a
CLR RS1 POP DPL POP DPH RET
;---------------------------------------------
LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0C6H DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;--------------------------------------------- KEY: SETB RS1 MOV R2,#0FEH MOV R3,#08H MOV R0,#00H LP1: MOV R1,#0DDH MOV A,R2 MOVX @R1,A RL A MOV R2,A inc r1
MOVX A,@R1 CPL A ANL A,#0FH JNZ LP0 INC R0 DJNZ R3,LP1 XP33: MOV A,#20H XP3: mov r2,a
clr a mov r1,#0ddh
22
movx @r1,a
mov a,r2
CLR RS1 RET ;---------------------------- LP0: CPL A JB ACC.0,XP0 MOV A,#00H SJMP LPP XP0: JB ACC.1,XP1 MOV A,#08H SJMP LPP XP1: JB ACC.2,XP2 MOV A,#10H SJMP LPP XP2: JB ACC.3,XP33 MOV A,#18H LPP: ADD A,R0 sjmp xp3 ;-------------------------------- LEDP: MOV 50H,#7EH MOV A,#10H MOV R0,#79H
LEDS:
MOV @R0,A INC R0
CJNE R0,#7EH,LEDS INC A MOV @R0,A
RET
;-------------------------------- LCK0: LCALL X2 JB ACC.4,LDFC LCALL X3 DB 79H,7EH SJMP LCK0
LDFC: CJNE A, #16H,LCK0 MOV A, 7AH SWAP A ORL A, 79H MOV 22H, A CJNE A, #60H,LE09 LE09: JNC LE24 MOV A, 7CH SWAP A
23
ORL A, 7BH MOV 21H, A CJNE A, #60H,LE15 LE15: JNC LE24 MOV A, 7EH SWAP A ORL A, 7DH MOV 20H, A CJNE A, #24H,LE21 LE21: JNC LE24 RET
;--------------------------------- LE24: CLR 8CH LJMP CHK00 DELYA: PUSH 02H DELYB: PUSH 02H DELYC: PUSH 02H DELYD: DJNZ R2,DELYD
LCALL SSEE ;调显示子程序 POP 02H DJNZ R2,DELYC POP 02H DJNZ R2,DELYB POP 02H
DJNZ R2,DELYA ;延时 RET
;-------------------------------- END
硬件实验部分
硬件实验可使学生能进一步掌握单片机系统扩展和输入输出程序的设计方法,熟悉对扩展系统的软件、硬件设计、调试方法和技巧。
实验一 P1口亮灯实验
一、实验目的
(1)学习P1口的使用方法; (2)学习延时子程序的编写。
二、实验预备知识
(1)P1口对准双向口,每一位都可独立地定义为输出线或输入线。
(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
三、实验内容
P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、程序框图
24