文档库 最新最全的文档下载
当前位置:文档库 › 单片机小部分答案

单片机小部分答案

2-6. MCS-51单片机片内256B的数据存储器可分为几个区?分别作什么用?
4个区

工作寄存器区:从00H~~1FH安排了4组工作寄存器,每组占用8个RAM字节,记为R0~~R7

位寻址区:地址从20H~~2FH,共16字节,128位

用户RAM区:地址30H~~7FH,共80字节,这是正在给用户使用的一般RAM区,该区主要用来存放随机数据和运的结果,另外也常常把堆栈开辟在该区域中

剩下的区域80H~~FFH,存放21个特殊功能寄存器,它们离散分部在该区域中,未占用的地址单元无定义,用户不可以使用,如果对未定义单元进行读/写操作,得到的是随机数,而写入的数据将会丢失

3-11 已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行RET指令后,SP=?PC=?

解:MCS-51系统中,堆栈是向上生长的,故出栈操作时堆栈指针要减小。执行RET指令的过程如下:

PC15-8 (SP) 即PC15-8=(25H)=34H

SP SP-1 即SP=24H

PC7-0 (SP) 即PC7-0=(24H)=12H

SP SP-1 即SP=23H

结果为:SP=23H,PC=3412H

3-21下列程序段汇编后,从3000H开始的各有关存储单元的内容将是什么?
ORG 3000H
TAB1 EQU 3234H
TAB2 EQU 4000H
DB "START"
DW TAB1,TAB2,9000H
地址是3000H的单元存放‘S’的ascii码53H
地址是3001H的单元存放‘T’的ascii码54H
地址是3002H的单元存放‘A’的ascii码41H
地址是3003H的单元存放‘R’的ascii码52H
地址是3004H的单元存放‘T’的ascii码54H
地址是3005H的单元存放34H
地址是3006H的单元存放32H
地址是3007H的单元存放00H
地址是3008H的单元存放40H
地址是3009H的单元存放00H
地址是300AH的单元存放90H
equ定义的是常量,不占用存储空间,并且在equ之后看到tab1和tab2就分别用3234h和4000h替换。另外注意字类型数据存放时,高字节在高地址单元。
还要说明一点,汇编语言里面,双引号和单引号一样,都是表示字符串。

4-7 在89S51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500μs的方波。
答:选择方式2,用定时器T1
MOV TMOD,#20H
MOV TH1,#06H
MOV TL1,#06H
SETB TR1
L1: MOV R2,#04H
L2: JNB TF1,$
CLR TF1,
CPL P1.1
DJNZ R2,L2
CPL P1.0
LJMP L1


4-6 已知89C51单片机的fosc=6MHz, 请利用T0和P1.0输出矩
形波。矩形波高电平宽50μs,低电平宽300μs。

解:T0采用模式2作为50μs定时时的初值:


所以

作300μs定时时的初值:



所以

MOV TMOD,#02H ;设置定时器T0工作于模式2

L2:CLR P1.0 ;P1.0输出低电平

MOV TH0,#6AH ;置入定时300μs初值

MOV TL0,#6AH

SETB TR0 ;启动T0

LOOP1:JBC TF0,L1;查询300μs时间到?时间

到,转L1

SJMP LOOP1 ;时间未到,转LOOP1,继续查询

L1:SETB P1.0 ;P1.0输出高电平

CLR TR0 ;关闭T0

MOV TH0,#0E7H ;置入定时300μs初值

MOV TL0,# 0E7H

SETB TR0 ; 启动T0

LOOP2:JBC TF0,L2;查询50μs时间到?时间到,转L2

SJMP LOOP2 ;时间未到,转LOOP2,继续查询



相关文档