实验 1 红黄绿灯控制
0000H
RED
ORG
EQU P1.0
RED
YELLOW EQU P1.1
GREEN
EQU P1.2
MAIN: CLR
SETB YELLOW
SETB GREEN
MOV
R0,#40
ACALL DELAY
RED
SETB
YELLOW
CLR
GREEN
SETB
MOV
R0,#20
ACALL DELAY
SETB
CLR
CLR
MOV R0,#10
ACALL DELAY
SETB
SETB YELLOW
CLR
MOV
ACALL DELAY
AJMP
MAIN
RED
YELLOW
GREEN
RED
GREEN
R0,#30
DELAY: MOV A,R0
MOV R7,A
DEL0: MOV R6,#200
DEL1: MOV R5,#250
DEL2: DJNZ
DJNZ
DJNZ
RET
END
R5,DEL2
R6,DEL1
R7,DEL0
LED、LCD 显示
实验 2
LED:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: CLR P2.4
SETB P2.5
LOOP: MOV R0,#00H
MOV R4,#0AH
LP: MOV A,R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
INC R0
DJNZ R4,LP
AJMP LOOP
DELAY: MOV R7,#10
DEL0:
MOV R6,#200
MOV R5,#250
DEL1:
DJNZ
DEL2:
DJNZ
DJNZ
RET
R5,DEL2
R6,DEL1
R7,DEL0
TAB:DB 0C0h,0F3h,98h,92h,0A3h,86H,84H,0D3H,80H,82H
END
LCD:
MAIN:
ORG 0000H
AJMP MAIN
DAT EQU P2.7
CLK EQU P2.6
MOV R1,#00
MOV 79H,#10
MOV 78H,#10
MOV 77H,#10
MOV 76H,#10
MOV 75H,R1
LCALL DISPLAY
LCALL DELAY
INC R1
CJNE R1,#10,MAIN
MOV R1,#00
AJMP MAIN
DISPLAY: MOV R0,#79H
LOOP:
DIS:
DIS1:
SETB CLK
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
ACALL DIS
DEC R0
CJNE R0,#74H,LOOP
SETB DAT
SETB CLK
RET
MOV R7,#8
CLR CLK
RRC A
MOV DAT,C
SETB CLK
DJNZ R7,DIS1
CLR CLK
SETB DAT
实验 3 键盘实验
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV P0,#0C0H
CLR P2.4
SETB P2.5
MOV R1,#00H
KEY1: SETB P2.2
JB P2.2,KEY2
ACALL DELAY
KEY11:SETB P2.2
JNB P2.2,KEY11
LCALL OPENLED
CLR P1.0
SETB P1.1
SETB P1.2
KEY2: SETB P2.1
JB P2.1,KEY3
ACALL DELAY
KEY22:SETB P2.1
JNB P2.1,KEY22
CLR P1.1
SETB P1.0
SETB P1.2
KEY3: SETB P2.0
JB P2.0,KEY1
ACALL DELAY
KEY33:SETB P2.0
JNB P2.0,KEY33
CLR P1.2
SETB P1.0
SETB P1.1
AJMP KEY1
OPENLED:INC R1
MOV A,R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CJNE R1,#0AH,LOOP
MOV R1,#0
LOOP: JNC MAIN
RET
DELAY:MOV R2,#200;延时子程序,约 10ms
DEL0: MOV
DEL1: DJNZ
DJNZ
RET
R3,#125
R3,DEL1
R2,DEL0
TAB:DB 0C0h,0F3h,98h,92h,0A3h,86H,84H,0D3H,80H,82H
END
实验 4 定时器中断实验
LED:0~9
ORG 0000H
DIGIT1 EQU P2.5
DIGIT2 EQU P2.4
AJMP MAIN
ORG 000BH
AJMP INTR0
ORG 0030H
MAIN: MOV R0,#00H
MOV R2,#100
MOV P0,#0FFH
SETB DIGIT1
CLR DIGIT2
MOV TMOD,#01H
MOV TH0,#0E0H
MOV TL0,#80H
SETB EA
SETB ET0
SETB TR0
AJMP $
INTR0: MOV TH0,#0E0H
MOV TL0,#80H
DJNZ R2,LP
MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
MOV R2,#100
INC R0
CJNE R0,#0AH,LP
MOV R0,#00H
RETI
;中断 100 次为 1s
;点亮右边的 LED
;T0 定时,工作方式 1
;T0 计数初值
;等待中断
;T0 重赋初值
;是否中断 100 次
LP:
TAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H
END
LED:00~99
ORG 0000H
DIGIT1 EQU P2.5
DIGIT2 EQU P2.4
LED_1 EQU 7FH
LED_2 EQU 7EH
AJMP MAIN
ORG 000BH
AJMP INTR0
ORG 0030H
MAIN: MOV R0,#00
MOV R2,#100
;中断 100 次为 1s
;T0 定时,工作方式 1
;T0 计数初值
;等待中断
;T0 重赋初值
;是否中断 100 次
MOV P0,#0FFH
MOV TMOD,#01H
MOV TH0,#0E0H
MOV TL0,#80H
SETB EA
SETB ET0
SETB TR0
AJMP $
INTR0: MOV TH0,#0E0H
MOV TL0,#80H
DJNZ R2,LP2
MOV R2,#100
INC R0
CJNE R0,#100,LP2
MOV R0,#00
LP1:
LP2: MOV P0,#0FFH
ACALL DISPLAY
RETI
DISPLAY:ACALL INV16_10
JB F0,DISLED1
AJMP DISLED2
DISLED1:MOV A,LED_1
SETB DIGIT1
CLR DIGIT2
CLR F0
AJMP DIS
DISLED2:MOV A,LED_2
CLR DIGIT1
SETB DIGIT2
SETB F0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RET
DIS:
INV16_10:MOV A,R0
MOV B,#10
DIV AB
MOV LED_2,A
MOV LED_1,B
RET
TAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H
END
LCD:00~99
ORG 0000H
DAT EQU P2.7
CLK EQU P2.6
MOV 79H,#10
MOV 78H,#10
MOV 77H,#10
MAIN:
MOV R1,#0FFH
INC R1
CJNE R1,#100,NEXT
MOV R1,#00
LCALL INV16_10
LCALL DISPLAY
LCALL DELAY
AJMP MAIN
DISPLAY: MOV R0,#79H
NEXT:
LOOP:
DIS:
DIS1:
SETB CLK
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
ACALL DIS
DEC R0
CJNE R0,#74H,LOOP
SETB DAT
SETB CLK
RET
MOV R7,#8
CLR CLK
RRC A
MOV DAT,C
SETB CLK
DJNZ R7,DIS1
CLR CLK
SETB DAT
RET
DELAY: MOV R4,#10
DEL0:
DEL1:
DEL2:
MOV R6,#200
MOV R5,#250
DJNZ
DJNZ
DJNZ
RET
R5,DEL2
R6,DEL1
R4,DEL0
INV16_10:MOV A,R1
MOV B,#10
DIV AB
MOV 76H,A
MOV 75H,B
RET
DB 90H,0F3H,89H,0A1H,0E2H,0A4H
DB 84H,0F1H,80H,0A0H,0FFH
END
TAB:
实验 5 计数器实验
000~255:
ORG 0000H
DAT EQU P2.7
CLK EQU P2.6
AJMP MAIN
ORG 0030H
MAIN: CLR A
MOV 79H,#10
MOV 78H,#10
MOV 77H,A
MOV 76H,A
MOV 75H,A
MOV TMOD,#01100000B
MOV TL1,#00H
MOV TH1,#00H
SETB TR1
LOOP: ACALL INV16_10
ACALL DISPLAY
ACALL DELAY
AJMP LOOP
INV16_10: MOV A,TL1
MOV B,#100
DIV AB
MOV 77H,A
MOV A,B
MOV B,#10
DIV AB
MOV 76H,A
MOV 75H,B
RET
DISPLAY: MOV R0,#79H
LOOP1:
DIS:
DIS1:
SETB CLK
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
ACALL DIS
DEC R0
CJNE R0,#74H,LOOP1
SETB DAT
SETB CLK
RET
MOV R7,#8
CLR CLK
RRC A
MOV DAT,C
SETB CLK
DJNZ R7,DIS1
CLR CLK
SETB DAT
RET
DELAY: MOV R4,#3
DEL0:
MOV R6,#200
DEL1:
DEL2:
TAB:
R5,DEL2
R6,DEL1
R4,DEL0
MOV R5,#250
DJNZ
DJNZ
DJNZ
RET
DB 90H,0F3H,89H,0A1H,0E2H,0A4H
DB 84H,0F1H,80H,0A0H,0FFH
END
00000~99999:
实验 6
ORG 0000H
A/D 转换器实验
CK1 EQU P3.6
DO1 EQU P3.7
CS
EQU P3.3
V_1 EQU 77H
V_10 EQU 76H
AJMP MAIN
ORG 0030H
MAIN:ACALL AD
ACALL CAL_VOL
ACALL DISPLAY
ACALL DELAY
AJMP MAIN
AD:MOV R5,#8
CLR CS
CLR CK1
SETB CK1
CLR CK1
SETB CK1
CLR CK1
CLR DO1
NOP
NOP
SETB CK1
NOP
NOP
CLR CK1
SETB DO1
NOP
NOP
SETB CK1
NOP
NOP
ADA:
CLR CK1
MOV C,DO1
RLC A
SETB CK1
DJNZ R5,ADA
SETB CS
MOV 20H,A
RET
CAL_VOL:MOV A,20H
MOV B,#50
MUL AB
MOV A,B
MOV B,#10
DIV AB
ADD A,#11
MOV V_1,A
MOV V_10,B
RET
DAT EQU P2.7
CLK EQU P2.6
DISPLAY:MOV 79H,#10
MOV 78H,#10
MOV 75H,#21
MOV R0,#79H
SETB CLK
MOV DPTR,#TAB
LOOP:MOV A,@R0
MOVC A,@A+DPTR
ACALL DIS
DEC R0
CJNE R0,#74H,LOOP
SETB DAT
SETB CLK
RET
DIS:MOV R7,#8
DIS1:CLR CLK
RRC A
MOV DAT,C
SETB CLK
DJNZ R7,DIS1
CLR CLK
SETB DAT
RET
TAB:DB 90H,0F3H,89H,0A1H,0E2H,0A4H,84H,0F1H,80H,0A0H,0FFH
DB 10H,73H,09H,21H,62H,24H,02H,71H,00H,20H,0EAH
MAIN:
DELAY:MOV R4,#0
L1:MOV R6,#0
DJNZ R6,$
DJNZ R4,L1
RET
END
实验 7
PC 机与单片机的串行通讯实验
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP REC
ORG 0030H
MAIN:CLR P2.4
SETB P2.5
MOV TMOD,#00100000B;T1 方式 2
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#11010011B;中断方式 3,允许串口接收
SETB EA
SETB ES
SETB TR1
AJMP $
REC: JNB RI,$
CLR RI
MOV A,SBUF
TRS: JNB TI,$
CLR TI
MOV SBUF,A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RETI
TAB:DB 0C0H,0F3H,98H,92H,0A3H,86H,84H,0D3H,80H,82H
END
实验 8:
LED_3
EQU 79H
EQU 7AH
LED_2
EQU 7BH
LED_1
EQU 7CH
LED_0
EQU 7FH
FLAG1
DQ
EQU P3.4
TEMPER_L EQU 29H
TEMPER_H EQU 28H
TEMPER_P EQU 27H
ORG 0000H
AJMP MAIN
ORG 0030H
LCALL INIT_1820
LCALL GET_TEMPER
LCALL COV_T
LCALL DISPLAY
ACALL DELAY
AJMP MAIN
CLK EQU P2.6
DAT EQU P2.7
DISPLAY:MOV LED_3,#21
MOV 7DH,#10
MOV R0,#7DH
SETB CLK
MOV DPTR,#TAB
LOOP: MOV A,@R0
DIS:
DIS1:
MOVC A,@A+DPTR
ACALL DIS
DEC R0
CJNE R0,#78H,LOOP
SETB DAT
SETB CLK
RET
MOV R7,#8
CLR CLK
RRC A
MOV DAT,C
SETB CLK
DJNZ R7,DIS1
CLR CLK
SETB DAT
RET
TAB:DB 90H,0F3H,89H,0A1H,0E2H,0A4H
DB 84H,0F1H,80H,0A0H,0FFH
DB 10H,73H,09H,21H,62H,24H,04H,71H,00H,20H,9CH
DELAY: MOV R2,#5
DELAY3: MOV R3,#0
DELAY2: MOV R4,#0
DELAY1: DJNZ R4,DELAY1
DJNZ R3,DELAY2
DJNZ R2,DELAY3
RET
COV_T: MOV A,TEMPER_L
MOV TEMPER_P,#00H
MOV C,40H
RRC A
MOV 38H,C
MOV C,41H
RRC A
MOV 39H,C
MOV C,42H
RRC A
MOV 3AH,C
MOV C,43H
RRC A
MOV 3BH,C
MOV TEMPER_L,A
MOV A,29H
MOV B,#10
DIV AB
MOV LED_0,A
MOV A,#11
ADD A,B
MOV LED_1,A
MOV A,27H
MOV DPTR,#POINTTAB
MOVC A,@A+DPTR
MOV LED_2,A
RET
POINTTAB:DB 00H,01H,01H,02H,03H,03H,04H,04H
DB 05H,06H,06H,07H,08H,08H,09H,09H
INIT_1820:SETB DQ
NOP
CLR DQ
MOV R0,#06BH
MOV R1,#03H
TSR1:DJNZ R0,TSR1
MOV R0,#6BH
DJNZ R1,TSR1
SETB DQ
NOP
NOP
NOP
MOV R0,#25H
TSR2:JNB DQ,TSR3
DJNZ R0,TSR2
LJMP TSR4
TSR3:SETB FLAG1
LJMP TSR5
TSR4:CLR FLAG1
LJMP TSR7
TSR5:MOV R0,#06BH
TSR6:DJNZ R0,TSR6
TSR7:SETB DQ
RET
GET_TEMPER:SETB DQ
LCALL INIT_1820
JB FLAG1,TSS2
RET
TSS2:MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
LCALL DISPLAY
LCALL INIT_1820
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_18200
RET
WRITE_1820:
MOV R2,#8
CLR C
WR1:
CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
READ_18200:MOV R4,#2
MOV R1,#29H
RE00:MOV R2,#8
RE01:CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#07
RE10:DJNZ R3,RE10
MOV C,DQ
MOV R3,#23H
RE20:DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
END