单片机学习要点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 ;赋地址指针