单片机学习要点158

  • 格式:doc
  • 大小:718.00 KB
  • 文档页数:39

2009-4-2:系统寻址方式

1.RAM、ROM内外地址空间有多大?各用什么指令访问?

2.堆栈有什么特点?有多大?堆栈指针如何设置?

3.RAM有多少个SFR?占据多大空间?

4.指出PSW的AC位的名称有几种表示?

5.指出PC和DPTR的区别。

6. ROM中有哪些保留地址?

7. 一个晶振位12MHZ的芯片,执行1条指令应为多长时间?

8.单片机复位时,各寄存器的状态是什么?

思考题:

2009-4-3 数据传送类指令(一)

思考题

1.分析下列指令的寻址方式,说明指令的区别

MOV R3, A

MOV R3, ACC

MOV ACC, R0

MOV A, @R0

2.说明下列指令对错,错的如何改正。

MOV #20H, R0

MOV R2, R0

MOV R2, @R1

MOV 20H, @R4

MOV @R0, @R1

MOV A3H, R4

MOV R2, 84H MOV A, 10H

MOV A, #10H

MOV 10H, A MOV A, R0

MOV A, @R0

MOV R0, A

MOV @R0, A

3.分析程序的结果

MOV 30H, #00H ORG 0030H

MOV 31H, #0FFH DB 00H, 0FFH,55H,0AAH,0F0H,0FH

MOV 32H, #55H

MOV 33H, #0AAH

MOV 34H, #0F0H

MOV 35H, #0FH;

MOV P0, 30H, MOV R0, #10H

MOV P0, 31H, MOV P0, @R0

MOV P0, 32H, INC R0

MOV P0, 33H,

MOV P0, 34H,

MOV P0, 35H,

2009-4-8 数据传送类指令(二)

课堂练习

1. 把内部RAM单元00H内容送到片内20H单元中去。

2. 把内部RAM单元00H内容送到片外2000H单元中去。

3. 把外部RAM单元2000H内容送到片内30H单元中去。

4. 把外部RAM单元2000H内容送到片外3000H单元中去。

5. 把10H单元内容同20H单元内容互换。

6.分析程序

设(SP)=2FH,(10H)=00H, (11H)=01H, (12H)=02H, (13H)=03H,执行指令

PUSH 10H ;(SP)=?

PUSH 11H

PUSH 12H

PUSH 13H

POP 10H

POP 11H

POP 12H

POP 13H (SP)=?

PUSH 10H

PUSH 11H

POP 10H

POP 11H ;什么结果?

7. 分析程序

指令地址 ORG 0010H

MOV A,#30H

MOVC A,@A+PC

ORG 0030H DB 00H, 0FFH,55H,0AAH,0F0H,0FH

指令地址 ORG 0010H

MOV A,#00H

MOVC A,@A+DPTR

MOV DPTR,#0030H

DB 00H, 0FFH,55H,0AAH,0F0H,0FH

8.把外部RAM单元40H内容与R0单元内容互换。

2009-4-9 算术运算类指令

思考题:

1.说出下列指令的区别

MOV @R0, A

MOVX @R0, A

MOV A, @R0,

MOVX A, @R0,

2.把20H和片外30H单元内容互换。

练习题:

1.(A)=38H,(R1)=56H,二者相加或相减,(A)=?(PSW)=?

2.(A)=38H,(R1)=56H,CY=1,二者相加或相减,(A)=?(PSW)=?

2009-4-10 算术运算类指令(2)

思考题

1.分析程序完成的功能

MOV A, 30H MOV A, 30H

ADD A, 50H CLR C

MOV 30H, A SUBB A, 50H

MOV 30H, A

2.分析程序完成的功能

MOV A, 30H MOV A, 30H

ADD A, 50H CLR C

MOV 30H, A SUBB A, 50H

MOV A, 31H MOV 30H, A

ADD A, 51H MOV A, 31H

MOV 31H, A CLR C

SUBB A, 51H MOV 31H, A

3.分析程序完成的功能

MOV R0, #30H MOV R0, #20H

MOV R1, #50H MOV R1, #40H

MOV A, @R0 MOVX A, @R0

ADD A, @R1 ADD A, @R1

MOV @R0, A MOVX @R0, A

4.把内部20H单元中的数(三位)转换为百、十、个位,依次存放在21H、22好、23H单元中。

课堂练习

1. 把内部RAM单元30H-3FH内容送到片内60H-6FH单元中去。

2. 把内部RAM单元30H-3FH内容送到片外60H-6FH单元中去。

3.把内部RAM单元30H-3FH内容送到片外2000-200FH单元中去。

4. 把外部RAM单元2000H-200FH内容送到片内30H-3FH单元中去。

5. 把内部RAM单元30H-3FH内容改为00H-0FH.

6.把10H-1FH单元内容依次相加,结果保存在10H单元。

7. 把1FH-10H单元内容依次相减,结果保存在10H单元。

8.把内部RAM单元30H-3FH中存放的0-9数字转换成ASCII码,并存回原处。

2009-4-15:逻辑操作指令

思考题

1.分析程序完成的功能(左:30H开始的16个单元中的数同50H开始的16个单元中的数相互交换;右:60H开始的16个单元中的数置成00H-0FH)

ORG 1000H 汇编地址 机器码 ORG 1000H

MOV R0, #30H 1000H 7860H MOV R0, #60H

MOV R1, #50H 1002H 7F10H MOV R7, #10H

MOV R7, #10H 1004H 7400H MOV A, #00H LOOP: MOV A, @R0 1006H F6H LOOP: MOV @R0, A

XCH A, @R1 1007H 04H INC A

XCH A, @R0 1008H 08H INC R0

INC RO 1009H DFFBH DJNZ R7, LOOP

INC R1 100BH 80FEH HERE: SJMP HERE

DJNZ R7, LOOP 100DH END

END

2.分析程序完成的功能(30H开始的16个单元中的数次相加结果保存到A中)

ORG 2000H ORG 2000H

MOV R0, #30H MOV R0, #30H

MOV R7, #10H MOV R7, #10H

MOV A, #00H MOV A, @R0

CLR C CLR C

LOOP: ADDC A, @R0 LOOP: INC RO

DA A

INC RO ADDC A, @R0

DJNZ R7, LOOP DJNZ R7, LOOP

END END

3.分析程序完成的功能(30H开始的16个单元中的二位数把十位保存到30H开始的单元中,位保存到50H开始的单元中。)

MOV R0, #30H

MOV R7, #10H

MOV R1, #50H

MOV B, #0AH

LL: MOV A, @R0

DIV AB

MOV @R0, A

MOV @R1, B

INC R0

INC R1

DJNZ R7, LL

HERE: SJMP HERE

END 课堂练习

1. 实现8灯闪烁、奇偶灯交相辉映、鸳鸯戏水灯、霹雳灯。

MOV A, #00H MOV A, #0FH

MM: MOV P0, A MM: MOV P0, A

延时指令(程序) 延时指令(程序)

CPL A CPL A

延时指令(程序) 延时指令(程序)

SJMP MM SJMP MM

2. 跑马灯程序。

MOV A, #FEH MOV A, #7FH

MM: MOV P0, A MM: MOV P0, A

延时指令(程序)LCALL TIME 延时指令(程序)

RR A RL A

延时指令(程序)

SJMP MM SJMP MM

3.把20H单元内容的高4位与30H单元的低4位合并,保存到40H单元中去。

4. 把20H单元中的 BCD数拆开并存入21H、22H中。

5.用三种方法把20H单元清零。

6.总结20H单元如何清零、置位、保持、取反?

7. 把20H单元内容与30H单元内容同或,结果保存到40H单元中去。

2009-4-16:控制转移指令(一)

思考题

1.说出SJMP $指令的机器码。

2.把50H开始的16个单元中的数依次相减,结果保存到R5中,画出流程图。

ORG 2000H ;开始

MOV R0, #50H ;赋地址指针