TA的每日心情 | 无聊 2024-9-25 10:17 |
---|
签到天数: 1 天 [LV.1]初来乍到
二级逆天
- 积分
- 705
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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 1.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 1.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,继续查询 |
|