内容发布更新时间 : 2024/12/27 21:55:43星期一 下面是文章的全部内容请认真阅读。
.
单片机实验
实验一:开发环境的应用
(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
.