51单片机实验及代码

.

单片机实验

实验一:开发环境的应用

(1)将数据存储器的40H-4FH的内容复制成00H-0FH,并将40H-4FH的内容整体复制到外部数据存储器的1050H-105FH. (2)P1口接八只二极管,使二极管逐个循环点亮

ORG 0000H

AJMP START ORG 0100H

START:

MOV A,#00H MOV R0,#40H LOOP:

MOV @R0,A INC A INC R0

CJNE A,#10H,LOOP

SECOND:

MOV DPTR,#1050H MOV R1,#40H COPY:

MOV A,@R1 MOVX @DPTR,A INC DPTR INC R1

CJNE R1,#50H,COPY SJMP $ END

实验二:外部中断

(1)用单脉冲信号申请中断,在中断服务程序中对输出信号进行翻转(可通过P1.0接一二极管观察)

.

.

ORG 0000H LJMP START ORG 0003H LJMP INT ORG 0100H

START:

SETB EX0 SETB PX0 SETB IT0 SETB EA SJMP $ INT:

CPL P1.0 RETI

END

(2)用单脉冲信号申请中断,要求对中断进行累加计数,并将计数结果显示在二极管上

ORG 0000H LJMP START ORG 0003H LJMP INT ORG 0100H

START:

MOV A,#00H MOV P1,A SETB EX0 SETB PX0 SETB IT0 SETB EA SJMP $ INT:

MOV P1,A INC A RETI

END

.

.

实验三:定时器实验

(1)用定时器1的方式1定时,P1.0节发光二极管,使二极管每秒闪烁五次

ORG 0000H LJMP MAIN ORG 001BH LJMP INT ORG 0100H

MAIN:

MOV TMOD,#10H MOV TH1,#3CH

MOV TL1,#0B0H ;50ms × 2 = 100ms MOV R2,#2 SETB EA SETB ET1 SETB TR1 SJMP $ INT:

DJNZ R2,NEXT CPL P1.0 MOV R2,#2 NEXT:

MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 RETI

END

(2)用定时器1的方式2计数,T1引脚接单脉冲,用P1口接二极管显示计数。

ORG 0000H LJMP MAIN ORG 001BH LJMP LOOP ORG 0100H

MAIN:

MOV TMOD,#60H

.

.

MOV TH1,#00H MOV TL1,#00H SETB EA SETB ET1 SETB TF1 SETB TR1 SJMP $ LOOP:

MOV P1,TL1 LJMP LOOP RETI

END

实验四:串行通信

波特率2400 bit/s。PC发送8个字节的数据给单片机,单片机接受完数据后发送两个字节55H和AAH给PC 机(使用查询方式)。

ORG 0000H

AJMP MAIN ORG 0030H MAIN:

MOV SCON,#50H MOV PCON,#00H MOV TMOD,#20H SETB TR1

MOV TL1,#0F3H MOV TH1,#0F3H LOOP:

MOV R0,#30H MOV R1,#08H WAIT1:

JBC RI,RECEIVE SJMP WAIT1 RECEIVE:

MOV A,SBUF MOV @R0,A INC R0

DJNZ R1,WAIT1 MOV A,#55H MOV SBUF,A WAIT21:

JBC TI,SEND

.

.

SJMP WAIT21 SEND:

MOV A,#0AAH MOV SBUF,A WAIT22:

JNB TI,WAIT22 CLR TI SJMP LOOP END

实验五:数码管显示及键盘扫描

(1)将30H-32H中存储的6位十进制数在6个数码管上显示出来(要求编写一个将内存单元中的压缩BCD码转换为两个七段显示码的子程序和延时子程序)

ORG 0000H

LJMP MAIN ORG 0030H

MAIN:

MOV 30H,#12H MOV 31H,#34H MOV 32H,#56H MOV R0,#30H MOV R1,#20H BCD:

MOV A,@R0 SWAP A

ANL A,#0FH ACALL CTAB MOV R2,A MOV A,@R0 ANL A,#0FH ACALL CTAB MOV R3,A

MOV DPTR,#8002H MOV A,R1

MOVX @DPTR,A MOV DPTR,#8004H MOV A,R2

.

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4