单片机实验代码总结

2020-03-03 05:27:16 来源:范文大全收藏下载本文

编者:方园

单片机实验代码集合(by fangyuan)

1.多字节累加程序:

ORG 0000H LJMP MAIN ORG 0030H ;将加数和被加数送到指定地址 MAIN: MOV 20H,#45H

MOV 21H,#74H

MOV 30H,#67H

MOV 31H,#28H

;低位相加

MOV A,21H

ADD A,31H

DA A

MOV 42H,A

;高位相加

MOV A,20H

ADDC A,30H

DA A

MOV 41H,A

CLR A

ADDC A,#0

MOV 40H,A

SJMP $ END

2.数据交换实验

编写程序,实现以下操作:

【功能1】产生数组Hex1:0H、1H、2H、„ 0FH,存储到片内RAM区中,数组Hex1的首地址为30H。

【功能2】产生数组Hex2:0FH、0EH、0DH、„ 0H,存储到片外RAM区中,数组Hex2的首地址为3000H。

【功能3】将片内RAM数组Hex1与片外RAM数组Hex2交换内容。

代码:

ORG 0000H

Hex1 EQU 30H

;定义内部RAM数组首地址

Hex2 EQU 3000H ;定义外部RAM数组首地址

编者:方园

LJMP MAIN

ORG 0030H MAIN:

MOV SP,#4FH

;定义栈顶地址

MOV R7,#16

MOV R0,#Hex1

MOV DPTR,#Hex2

LCALL HEX1DE

;调用内部送数据函数

LCALL HEX2DE ;调用外部送数据函数

LCALL XCHDE ;调用交换函数

SJMP $

ORG 0100H

;内部送数据

HEX1DE: PUSH 00H

PUSH 07H

MOV A,#0 LOOP1: MOV @R0,A

INC A

INC R0

DJNZ R7,LOOP1

POP 07H

POP 00H

RET

;外部送数据

HEX2DE: PUSH 07H

PUSH DPL

PUSH DPH

MOV A,#0FH LOOP2: MOVX @DPTR,A

DEC A

INC DPTR

DJNZ R7,LOOP2

POP DPH

POP DPL

POP 07H

RET

;交换子程序 XCHDE:

LOOP3: MOVX A,@DPTR

XCH A,@R0

编者:方园

END

MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP3 RET

3.查表实验

1、《单片机原理及应用实验教程》(第2版)“第2章 实验3” (P49)。要求: 16进制数(00H~0FH) ASCⅡ码表定义在内部ROM中(用伪指令定义);R0为片内RAM区Hex数组指针;R1为片内RAM区Asc数组指针;数据块长度放在寄存器R2中。

代码如下:

ORG 0000H

Hex EQU 40H

Asc EQU 50H

LJMP MAIN

ORG 0030H MAIN:

MOV R2,#16

MOV DPTR,#TABLE

MOV R0,#Hex

MOV R1,#Asc

MOV SP,#2FH

LCALL FUZHI

LCALL ZHUANHUAN

SJMP $

TABLE:

DB \'0123456789\'

;查表子程序 ORG 1000H ZHUANHUAN:

PUSH 00H

PUSH 01H

PUSH 02H LOOP1:

MOV A,@R0

编者:方园

MOVC A,@A+DPTR

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP1

POP 02H

POP 01H

POP 00H

RET

;R0送值子程序 FUZHI:

PUSH 00H

PUSH 01H

PUSH 02H

MOV A,#0 LOOP2:

MOV @R0,A

INC R0

INC A

DJNZ R2,LOOP2

POP 02H

POP 01H

POP 00H

RET END

2、编写用@A+PC指令的查表程序,实现用查表方式将片内RAM中16进制数组Hex(00H~0FH)转换为ASCⅡ码并存入片内RAM数组Asc中。 要求:

16进制数(00H~0FH) ASCⅡ码表在内部ROM中; R0为片内RAM区Hex数组指针; R1为片内RAM区Asc数组指针; 数据块长度放在寄存器R2中。 代码如下:

ORG 0000H

Hex EQU 40H

;内部Hex送数据地址定义

Asc EQU 50H ;查表后数据储存地址定义

LJMP MAIN

ORG 0030H MAIN:

MOV R2,#16

MOV DPTR,#TABLE

MOV R0,#Hex

编者:方园

MOV R1,#Asc

MOV SP,#2FH

LCALL FUZHI ;送值函数

LCALL CHABIAO ;查表函数

SJMP $

ORG 1000H ;查表子程序 CHABIAO:

PUSH 00H

PUSH 01H

PUSH 02H LOOP1:

MOV A,@R0

ADD A,#20H

MOVC A,@A+PC

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP1

POP 02H

POP 01H

POP 00H

RET

;R0送值子程序 FUZHI:

PUSH 00H

PUSH 01H

PUSH 02H

MOV A,#0 LOOP2:

MOV @R0,A

INC R0

INC A

DJNZ R2,LOOP2

POP 02H

POP 01H

POP 00H

RET

编者:方园

TABLE:

DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H

END

4.十进制数1-100累加运算

《单片机原理及应用实验教程》(第2版)“第2章 实验5” (P30)。编写程序,实现以下功能:

【功能1】产生十进制数1~100,并存放在片外RAM中以1000H为首地址的Deci数组中。 【功能2】对Deci数组元素进行累加运算,并将累加和存入内部RAM中60H(存累加和低位)和61H(存累加和高位)单元。 代码如下: 方法一:

ORG 0000H

LJMP MAIN

ORG 0030H MAIN:

MOV R7,#100

MOV DPTR,#1000H

MOV SP,#20H

LCALL STEP1

LCALL STEP2

SJMP $

ORG 2000H

STEP1: PUSH 07H

PUSH DPH

PUSH DPL

MOV A,#0

MOV R3,#0 LOOP1: INC A

DA A

XCH A,R3

ADDC A,#0

MOVX @DPTR,A

INC DPTR

XCH A,R3

MOVX @DPTR,A

INC DPTR

DJNZ R7,LOOP1

POP DPL

编者:方园

POP DPH

POP 07H

RET

STEP2: PUSH 07H

PUSH DPH

PUSH DPL

MOV 60H,#0

MOV 61H,#0

MOV R3,#0

LOOP2: INC DPTR

MOVX A,@DPTR

ADD A,60H

DA A

MOV 60H,A

CLR A

ADDC A,61H

DA A

MOV 61H,A

INC DPTR

DJNZ R7,LOOP2

MOV A,#1

ADD A,61H

DA A

MOV 61H,A

POP DPL

POP DPH

POP 07H

RET

END

方法二:

ORG 0000H

LJMP MAIN

ORG 0030H MAIN:

MOV R7,#100

MOV DPTR,#1000H

MOV SP,#20H

编者:方园

LCALL STEP1

LCALL STEP2

SJMP $

ORG 2000H

;送值子函数

STEP1: PUSH 07H

PUSH DPH

PUSH DPL

MOV A,#0 LOOP1: INC A

DA A

MOVX @DPTR,A

INC DPTR

DJNZ R7,LOOP1

CLR A

ADDC A,#0

MOVX @DPTR,A

POP DPL

POP DPH

POP 07H

RET

;累加子函数

STEP2: PUSH 07H

PUSH DPH

PUSH DPL

MOV 60H,#0

MOV 61H,#0

LOOP2:

MOVX A,@DPTR

ADD A,60H

DA A

MOV 60H,A

CLR A

ADDC A,61H

DA A

MOV 61H,A

INC DPTR

DJNZ R7,LOOP2

MOVX A,@DPTR

ADD A,61H

DA A

编者:方园

MOV 61H,A POP DPL POP DPH POP 07H RET

END

5.DPTR指针应用

《单片机原理及应用实验教程》(第2版)“第2章 实验6” (P31)。编写程序,实现以下功能:

【功能1】产生十进制数组Deci(1~99),并存放在片内RAM中,Deci数组首地址为08H。 【功能2】将Deci数组中的偶数元素全部送入外部RAM偶数区,首地址为2000H;将Deci数组中的奇数元素全部送入外部RAM奇数区,首地址为3000H;分别统计外部RAM偶数区和奇数区元素个数。 代码如下:

ORG 0000H

LJMP MAIN

ORG 0030H MAIN:

MOV SP,#70H

MOV R7,#99

MOV R0,#08H

MOV R5,#0

MOV R6,#0

LCALL STEP1

LCALL STEP2

SJMP $

STEP1: PUSH 00H

PUSH 07H

MOV A,#1 LOOP1: DA A

MOV @R0,A

INC R0

INC A

DJNZ R7,LOOP1

POP 07H

POP 00H

RET

编者:方园

STEP2: MOV DPTR,#2000H

PUSH DPL

PUSH DPH

MOV DPTR,#3000H

MOV R3,DPH

MOV R4,DPL LP1: MOV A,@R0

MOV R2,A

JNB ACC.0,LOOP2

SJMP LOOP3

LOOP2: POP DPH

POP DPL

MOVX @DPTR,A

MOV A,R5

ADD A,#1

DA A

MOV R5,A

INC DPTR

PUSH DPL

PUSH DPH

SJMP NEXT

LOOP3: MOV DPH,R3

MOV DPL,R4

MOVX @DPTR,A

MOV A,R6

ADD A,#1

DA A

MOV R6,A

INC DPTR

MOV R3,DPH

MOV R4,DPL

SJMP NEXT

NEXT:

INC R0

DJNZ R7,LP1

POP DPH

POP DPL

RET

END

编者:方园

6.定时器应用实验

DBUF EQU 30H ORG 0000H STRT: LJMP MAIN ORG 000BH LJMP PTF00 ORG 0030H MAIN: MOV DPTR,#5FFFH MOV A,#0DCH MOVX @DPTR,A MOV R5,#20 LP: MOVX A,@DPTR JNB ACC.7,LP MOV A,#00H MOVX @DPTR,A MOV A,#34H MOVX @DPTR,A MOV SP,#60H MOV R0,#39H MOV R7,#06H ML1: MOV @R0,#00H INC R0 DJNZ R7,ML1 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 MOV IE,#82H MOV 40H,#10H ML0: LCALL DIR LJMP ML0 PTF00: PUSH PSW PUSH ACC SETB PSW.3 MOV TL0,#0B0H MOV TH0,#3CH

编者:方园

DJNZ R5,PTFY MOV R5,#20

MOV A,40H DEC A MOV 40H,A JNZ PTFY MOV 40H,#10H MOV R0,#39H MOV R7,#6 PTFX: MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#0AH,$+3 JC PTFY MOV @R0,#0 INC R0 DJNZ R7,PTFX PTFY: POP ACC POP PSW RETI DIR:

MOV R3,#06H MOV A,#92H MOV DPTR,#5FFFH MOVX @DPTR,A MOV R1,#39H TY11: MOV A,@R1 MOV DPTR,#CODE1 MOVC A,@A+DPTR MOV DPTR,#5FFFH MOVX @DPTR,A

INC R1 DJNZ R3,TY11 RET

CODE1: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,88H

编者:方园

DB 83H,0C6H,0A1H,86H,8EH,8CH DB 0C1H,89H,0C7H,0BFH,91H DB 00H,0FFH END

7.广告灯实验

ORG 0000H LJMP MAIN ORG 000BH LJMP DELAY ORG 0030H MAIN: MOV DPTR,#TAB MOV R5,#71H MOV R2,#00H MOV R6,#20 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 MOV IE,#82H SJMP $ DELAY: MOV TL0,#0B0H MOV TH0,#2CH

DJNZ R6,LP ACALL STEP MOV R6,#20 DJNZ R5,LP MOV R5,#71H

LP: RETI

STEP: LOOP: MOV A,R2 MOVC A,@A+DPTR MOV P1,A INC R2 DEC R5

编者:方园

RET

TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH

DB 0FFH,7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH

DB 0FEH,0FFH,0FEH,0FCH,0F8H,0F0H,0E0H,0C0H

DB 80H,00H,80H,0C0H,0E0H,0F0H,0F8H,0FCH

DB 0FEH,0FFH,7FH,3FH,1FH,0FH,07H,03H

DB 01H,00H,01H,03H,07H,0FH,1FH,3FH

DB 7FH,0FFH,7EH,3CH,18H,00H,18H,3CH

DB 7EH,0FFH,0FEH,0FCH,0FCH,0F9H,0F3H,0E7H

DB 0CFH,9FH,3FH,7FH,0FFH,7FH,3FH,9FH

DB 0CFH,0E7H,0F3H,0F9H,0FCH,0FEH,0FFH

DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H

DB 80H,40H,20H,10H,08H,04H,02H,01H,00H

DB 01H,02H,04H,08H,10H,20H,40H,80H,00H

DB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH END

单片机实验

单片机实验

单片机实验心得体会

单片机实验教案

单片机液晶显示实验

单片机实验小结

单片机实验感想

单片机实验一

单片机实验心得

单片机实验教案

《单片机实验代码总结.doc》
单片机实验代码总结
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文