博主最近刚考完单片机理论和实验,现把代码啥的汇总了一下,希望有需要的小伙伴能用得上。(均编译通过,亲测可用)
实验一:两数相加
ORG 00H
LJMP START
ORG 100H
START:MOV SP,#50H
MOV 30H,#39H
MOV 32H,#89H
MOV 31H,#02H
MOV A,#05H
MOV 33H,A
MOV A,32H
ADD A,30H
DA A
MOV 40H,A
MOV A,33H
ADDC A,31H
DA A
MOV 41H,A
SIMP $
实验二:信号灯控制
1.P1口循环点亮
ORG 00H
LJMP START
ORG 0100H
START:MOV R2,#8
MOV A,#01H
MOV SP,#60H
LOOP:MOV P1,A
LCALL DELAY
RL A
DJNZ R2,LOOP
LJMP START
DELAY:MOV R5,#15
DEL0 :MOV R6,#200
DEL1:MOV R7,#125
DEL2:DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,DEL0
RET
END
2.P1口输入输出
ORG 0000H
LOOP:SETB P1.0
SETB P1.1
MOV C,P1.0
MOV P1.2,C
MOV C,P1.1
MOV P1.3,C
SJMP LOOP
RET
END
实验三:继电器控制
ORG 00H
LJMP START
ORG 03H
LJMP INT0
ORG 0100H
START:MOV SP,#60H
SETB IT0
SETB EA
SETB EX0
HRER:SJMP HERE
INTO:CLR EA
PUSH PSW
PUSH ACC
SETB EA
CPL P1.0
CLR EA
POP ACC
POP PSW
SETB EA
RETI
END
实验四:8255输入、输出
1.开关控制
ORG 00H
LJMP START
ORG 0100H
START:MOV SP,#60H
MOV DPTR,#8003H
MOV A,#82H
MOVX @DPTR,A
LOOP:MOV DPTR,#8001H
MOVX A,@DPTR
MOV DPTR,#8000H
MOVX @DPTR,A
SJMP LOOP
END
2.循环点亮
ORG 00H
LJMP START
ORG 0100H
START:MOV SP,#60H
MOV DPTR,#8003H
MOV A,82H
MOVX @DPTR,A
MOV A,#1H
LOOP:MOV DPTR,#8000H
MOVX @DPTR,A
LCALL DELAY
RL A
SJMP LOOP
DELAY:MOV R3,#0FH
D1:MOV R4,#200
D2:MOV R5,#100
D3:DJNZ R5,D3
DJNZ R4,D2
DJNZ R3,D1
RET
END
实验五:定时器
ORG 0000H
RESET:LJMP MAIN
ORG 000BH
LJMP IT0P
ORG 1000H
MAIN:MOV SP,#60H
MOV B,#100
MOV TMOD,#01H
MOV TL0,#03EH
MOV TH0,#5DH
SETB ET0
SETB EA
SETB TR0
HERE:SJMP HERE
IT0P:MOV TL0,#03EH
MOV TH0,#5DH
DJNZ B,RTURN
MOV B,#014H
CPL P1.0
RTURN:RETI
实验六:A/D转换
1.寻址方式
ORG 0000H
LJMP START
ORG 0100H
START:MOV SP,#60H
MOV DPTR,#9000H
LOOP:MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR
MOV P1,A
SJMP LOOP
DELAY:MOV R5,#41H
D1:DJNZ R5,D1
RETI
END
2.中断方式
ORG 00H
LJMP START
ORG 03H
LJMP PINT0
ORG 100H
START:MOV SP,#60H
SETB IT0
SETB EX0
SETB EA
MOV DPTR,#9001H
MOVX @DPTR,A
SJMP $
LOOP:MOV C,P3.0
CPL C
MOV P3.2,C
SJMP LOOP
PINT0:PUSH ACC
PUSH PSW
MOVX A,@DPTR
MOV P1,A
MOVX @DPTR,A
DJNZ R2,PRET
CLR EA
PRET:POP PSW
POP ACC
RETI
END
实验七-电子时钟
ORG 00H
LJMP START
ORG 0BH
LJMP TIME
ORG 0100H
START:
MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R3,#20
CLR A
MOV 40H,A
MOV 41H,A
MOV 42H,A
SETB ET0
SETB EA
SETB TR0
MOV 40H,#23H
MOV 41H,#59H
MOV 42H,#45H
LP:
MOV R7,#01H
MOV R0,#42H
LOOP:
MOV A,@R0
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV A,R7
MOV DPTR,#8002H
MOVX @DPTR,A
RL A
MOV R7,A
LCALL DELLAY
MOV A,@R0
SWAP A
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
实验八--单片机的应用
(1) ORG 00H
LJMP START
ORG 0100H
START: MOV A, #90H
ADD A, #87H
DA A
MOV 40H, A
MOV A,#78H
ADDC A, #56H
DA A
MOV 41H,A
SETB 01H
SJMP $
END
(2)
ORG 00H
LJMP START
ORG 0100H
START: MOV R1,#30H
MOV R2,#10H
CLR C
LOOP: MOV @R1, A
INC A
INC R1
DJNZ R2, LOOP
SJMP $
END
实验五:定时器
ORG 0000H
RESET:LJMP MAIN
ORG 000BH
LJMP IT0P
ORG 1000H
MAIN:MOV SP,#60H
MOV B,#014H
MOV TMOD,#01H
MOV TL0,#03EH
MOV TH0,#5DH
SETB ET0
SETB EA
SETB TR0
HERE:SJMP HERE
IT0P:MOV TL0,#03EH
MOV TH0,#5DH
DJNZ B,RTURN
MOV B,#014H
CPL P1.0
RTURN:RETI
好咯 完事咯,有需要的自取吧~