undefined-0's Blog

历添新岁月 春满旧山河

0%

AT89S52_test1

写在最前面

本分类内使用的单片机皆为AT89S52,外接晶振频率为11.059MHz。

实验一 验证实验

test 1_1

将外部数据存储器0000H-0010H中的内容传送到片内数据存储器60H-70H单元。

1
2
3
4
5
6
7
8
9
10
11
ORG 0000H
MOV DPTR,#0000H
MOV R0,#60H
LOOP:
MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
CJNE R0 ,#71H,LOOP
SJMP $
END

test 1_2

程序跳转表

(1)运行程序,打开数据窗口,观察地址 30H、31H、32H、33H的数据变化。用键盘输入改变地址 30H、31H、32H、33H 的值,观察其实验效果。修改源程序中给30H~33H的赋值,观察实验效果。

(2)打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
ORG 0
LJMP START // 改动此处,改变的是赋值
FUNC0:MOV 30H,#0
RET
FUNC1:MOV 31H,#1
RET
FUNC2:MOV 32H,#2
RET
FUNC3:MOV 33H,#3
RET

FUNCENTER:
ADD A,ACC // AJMP是一个2字节指令,故A需要乘以2,使得程序在JMP指令中跳转到正确的位置
MOV DPTR,#FUNCTAB
JMP @A+DPTR

FUNCTAB:
AJMP FUNC0
AJMP FUNC1
AJMP FUNC2
AJMP FUNC3

START:
MOV A,#0
CALL FUNCENTER
MOV A,#1
CALL FUNCENTER
MOV A,#2
CALL FUNCENTER
MOV A,#3
CALL FUNCENTER
LJMP $
END

test 1_3

test1_3_1

教材第55页5题。

1
2
3
4
5
6
ORG 0000H
MOV A,#56H
ADD A,#74H ; CAH+CAH = 194H,高位舍弃
ADD A,ACC
SJMP $
END

test1_3_2

教材第55页7题。

1
2
3
4
5
6
7
8
9
10
11
ORG 0000H
MOV 59H,#50H
MOV A,59H
MOV R0,A
MOV A,#0
MOV @R0,A
MOV A,#25H
MOV 51H,A
MOV 52H,#70H
SJMP $
END

test1_3_3

教材第55页8题。

1
2
3
4
5
6
7
8
9
10
11
ORG 0000H
MOV SP,#60H
MOV 30H,#24H
MOV 31H,#10H
PUSH 30H
PUSH 31H
POP DPL
POP DPH
MOV A,#00H
MOVX @DPTR,A
SJMP $