重点3.MCS-51单片机内部RAM区的功能结构如何分配?4组工作寄存器使用时如何选择?位寻址区域的字节范围是多少?
MCS-51单片机片内RAM共有128B,字节范围为00H~7FH,可分为工作寄存器区、位寻址区、数据缓冲区共3个区域。
(1)工作寄存器区
00H~1FH单元为工作寄存器区。工作寄存器也称通用寄存器,用于临时寄存8位信息。工作寄存器分成4组,每组都是8个寄存器,用R0~R7来表示。程序中每次只用一组,其余各组不工作。使用哪一组寄存器工作,由程序状态字PSW中的PSW.3(RS0)和PSW.4(RS1)两位来选择,其对应关系如表所示。
该区域当不被用做工作寄存器时,可以作为一般的RAM区使用。
(2)位寻址区
20H~2FH单元是位寻址区。这16个单元(共计16 × 8 = 128位)的每一位都赋予了一个位地址,位地址范围为00H~7FH。位地址区的每一位都可当做软件触发器,由程序直接进行位处理。通常可以把各种程序状态标志、位控制变量存入位寻址区内。
该区域当不被用做位寻址区时,可以作为一般的RAM区使用。
(3)数据缓冲区
30H~7FH是数据缓冲区,即用户RAM,共80个单元。
由于工作寄存器区、位寻址区、数据缓冲区统一编址,使用同样的指令访问,这三个区的单元既有自己独特的功能,又可统一调度使用。因此,前两个区未使用的单元也可作为用户RAM单元使用,使容量较小的片内RAM得以充分利用。
位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?
二者存储的数据位数不一样。位地址7FH存放一位二进制数,字节地址7FH存放8为二进制数。
位地址7FH具体在内存中字节地址为20H的最高位上。
填空7.试分别说明程序计数器PC和堆栈指针SP的作用。复位后PC和SP各为何值?
程序计数器PC是一个16位专用寄存器,其内容表示下一条要执行的指令的地址。复位后为0000H。
MCS-51单片机的堆栈是在片内RAM中开辟的一个专用区。堆栈指针SP是一个8位专用寄存器,用来存放栈顶的地址。进栈时,SP自动加1,将数据压入SP所指定的地址单元;出栈时,将SP所指示的地址单元中的数据弹出,然后SP自动减1。因此SP总是指向栈顶。复位后为07H。
重点计算题9.什么是时钟周期、机器周期和指令周期?当外部的振荡频率是8MHz时,8051单片机的机器周期为多少?
MCS-51单片机的时序由下面4种周期构成。
(1)振荡周期
振荡周期是指为单片机提供定时信号的振荡源的周期。
(2)状态周期(时钟周期)
两个振荡周期为一个状态周期,用S表示。两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。
在状态周期的前半周期P1有效时,通常完成算术逻辑运算;在后半周期P2有效时,一般进行内部寄存器之间的传输。
(3)机器周期
CPU执行一条指令的过程可以划分为若干阶段,每一阶段完成某一项基本操作,如取指令、存储器读/写等。通常把完成一个基本操作所需要的时间称为机器周期。
(4)指令周期
指令周期是指执行一条指令所占用的全部时间,它以机器周期为单位。MCS-51系列单片机除乘法、除法指令是4机器周期指令外,其余都是单周期指令和双周期指令。若用12MHz
晶体振荡器(晶振),则单周期指令和双周期指令的指令周期时间分别是1μs和2μs,乘法和除法指令为4μs。
通过上面的分析,我们可以看出,外部晶振的二分频是MCS-51单片机的内部时钟周期,6个时钟周期构成了单片机的机器周期。
如果单片机的外部晶振是8MHz,则其内部的机器周期是1.5μs。
.简述转移指令AJMP addr11,SJMP rel,LJMP addr16及JMP @A + DPTR的应用。
AJMP addr11:2K范围内的转移;SJMP rel:256字节复位内的转移;
LJMP addr16:64K范围内的转移;JMP @A + DPTR:在某一地址开始的256字节
3.简述MCS-51单片机的中断系统结构。
MCS-51单片机的有5个中断源,它们均有两级优先级,通过4个专用中断控制寄存器(IE、IP、TCON、SCON)进行中断管理,其结构原理如图所示。
6.MCS-51单片机内设有几个可编程的定时器/计数器?它们可以有4种工作方式,如何选择和设定?作为定时器或计数器应用时,它们的速率分别为晶振频率的多少倍?
2个16位的定时器/计数器。
通过TMOD的M1M0选择。
M1M0=00:方式0——13位定时器/计数器工作方式;
M1M0=01:方式1——16位定时器/计数器工作方式;
M1M0=10:方式2——常数自动装入的8位定时器/计数器工作方式;
M1M0=11:方式3——仅适用于T0,为两个8位定时器/计数器工作方式;在方式3时T1停止计数。
是外部晶振频率的12倍。
重点编程9.设串行异步通信的传送速率为2400波特,传送的是带奇偶校验的ASCII码字符,每个字符包含10位(1个起始位,7个数据位,1个奇偶校验位,1个停止位),试编程初始化程序。
设定串行口位方式1.
MOV SCON,#40H
MOV PCON,#80H
MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
SETB TR1
. 已知一单片机系统的外接晶体振荡器的振荡频率为6MHz,请计算该单片机系统的拍节P、状态S、机器周期所对应的时间是多少?指令周期中的单字节双周期指令的执行时间是多少?
答:已知fosc=6MHZ
则:系统的拍节P=1/fosc=1/(6*106)s=1/6μs=0.167μs
系统的状态S=2P=2*1/6μs=0.33μs
机器周期T=6S=12P=12*1/6μs=2μs
单字节双周期指令的执行时间为2T=2*2μs=4μs
7.80C51单片机的片内RAM低128单元分哪3个主要部分?各部分的主要功能是什么?
答:80C51单片机的片内RAM低128单元分为:
寄存器区(00H-1FH),共有四个寄存器组,主要为寄存器访问方式,常用数据存储。
位寻址区(20H-2FH),主要用于位数据存放,也可用于存放字节数据。
普通用户RAM区(30H-7FH),只用于存放字节数据。
编程
1.在两个8051间用模式2进行串行通信,A机并行采集外部开关的输入,然后串行传输给B机;B机接收后并行输出控制LED发光。画出连接示意图,写出完整的程序。
A机程序 ORG 0000H
AJMP START
ORG 4100H
START:MOV P1,#0FFH
MOV SCON,#80H
AGAIN1:MOV SBUF,P1
JNB TI,$
CLR TI
SJMP AGAIN1
END B机程序 ORG 0000H
AJMP START
ORG 4100H
START:MOV SCON,#90H
AGAIN1:JNB RI,$
MOV P1,SBUF
CLR RI
SJMP AGAIN1
END
2.编写一段子程序,将二位压缩的BCD码转换为二进制数,入口、出口均是A。若是非法的BCD码,则A返回值为255。
SUBP:MOV R1,A
ANL A, #0F0H
SWAP A
CJNE A, #10, NEXT1
NEXT1:JNC ERROR
MOV B, #10
MUL AB
XCH A, R1
ANL A, #0FH
CJNE A, #10,NEXT2
NEXT2:JNC ERROR
ADD A, R1
RET
ERROR:MOV A,#255
RET
3.用8051输出控制8个LED从LED1到LED8、再到LED1…,每次一个LED发光,并不断循环。一个开关控制引起中断,电平触发,中断后8个LED一起闪5下,然后恢复前面的循环。画出连接示意图,写出完整的程序。(软件延时用循环5*126*200次控制)
ORG 0000H
LJMP START
ORG 3H
LJMP INT00
START:SETB EA
SETB EX0
CLR IT0
MOV A, #1
AGAIN:MOV P1,A
ACALL DELAY
RL A
SJMP AGAIN
DELAY:MOV R1,#5
LOOP1:MOV R2,#200
LOOP2:MOV R3,#126
DJNZ R3,$
DJNZ R2,LOOP2
DJNZ R1,LOOP1
RET
INT00:PUSH ACC
PUSH 1
PUSH 2
PUSH 3
MOV R4,#5
AGAIN:MOV P1,#0FFH
ACALL DELAY
MOV P1,#0
ACALL DELAY
DJNZ R4,AGAIN
POP 3
POP 2
POP 1
POP ACC
RETI
END
4.将外 RAM 地址从 1000H 开始的 100 个单元清零,试编程实现之。
MOV DPTR,#1000H
MOV R1,#100(#64H)
CLR A
LOOP: MOVX @DPTR,A
INC DPTR
DJNZ R1,LOOP
SJMP $
5.编写一个程序,把片内 RAM 从 30H 开始存放的 16 个数据传送到片外 RAM 从 0000H 开始的单元中。
MOV R0,#30H
MOV DPTR,#0000H
MOV R1,#10H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,LOOP
SJMP $
6.在外 RAM 2000H 单元开始建立 0 ~ 99 ( BCD 码)的一百个数,试编制此程序。
MOV DPTR,#2000H
MOV R0,#100(#64H)
CLR A
LOOP:MOVX @DPTR,A
INC DPTR
ADD A,#01H
DA A
DJNZ R0,LOOP
SJMP $ (RET)
7.已知被减数存放在内 RAM 的 51H 、 50H 单元中,减数存放在 61H 、 60H 单元中(高字节在前),相减得到的差放回被减数的单元中(设被减数大于减数)。试编程之。
MOV A,50H
CLR C
SUBB A,60H
MOV 50H,A
MOV A,51H
SUBB A,61H
MOV 51H,A
SJMP $(RET)
8.设晶振为 12MHz ,选用 T1 的工作方式 1 产生 1mS 定时,在 P1.1 口输出周期为 2mS 的方波(用中断法)。
ORG 0000H
SJMP MAIN
ORG 001BH
SJMP ITT1
ORG 0030H
MAIN:MOV TMOD,#10H
MOV TH1,#0FCH
MOV TL1,#18H
SETB TR1
SETB ET1
SETB EA
HERE: SJMP HERE
ITT1: MOV TH1,#0FCH
MOV TL1,#18H
CPL P1.1
RETI
END
9.请使用位操作指令,实现下列逻辑操作:
P1.5=ACC.2∧P2.7∨ACC.1∧P2.0
MOV C,ACC.1
ANL C,P2,0
MOV 12H,C
MOV,C,A CC.2
ANL C,P2.7
ORL C,12H
MOV P1.5,C
RET
10.在外部RAM首地址为TABLE的数据表中有10个字节数据,请编程将每个字节的最高位无条件地置1.
MOV R2,#10
MOV DPRT,#TABLE
LOOP: MOV X A,@DPRT;取一数
ORL A,#80H;最高位置1
MOV X @DPTR,A;写回原地址
1NC DPTR;处理下一单元
DJNZ R2,LOOP
RET
11.已知内部RAM 30H单元开始存放20H个数据,将其传送到外部RAM的0000H单元开始的存储区,请编程实现。
MOV R0,#30H
MOV R1,#00H
MOV R2,#20H
LOOP: MOV A,@R0;取数
MOV X @R1,A;存数
1NC R0
1NC R1
DJNZ R2,LOOP
RET
12.已知8个无符号数之和存于R3R4,求其平均值,结果仍存于R3R4中,请编程实现(R3为高字节)。
利用移位指令作除8操作,程序如下:
MOV R2,#3
LOOP:CLR C
MOV A,R3
RRC A ;高字节除以2,末位移入C,高位补0
MOV R3,A ;暂存高字节
MOV A,R4
RRC A ;低字节除以2,高字节末位移入低字节高位
MOV R4,A
DJNZ R2,LOOP
RET
13.两个字符串分别存放在首地址为42H和52H的内部RAM中,字符串长度放在41H单元,请编程比较两个字符串。若相等,则把数字00H送40H单元,否则把0FFH送40H单元。
有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等
MOV R0,#42H
MOV R1,#52H
LOOP:MOV A,@R0
CLR C ;不相等,FFH→40H
SUBB A,@R1
JNZ LOOP1 ;相等时,比较下一字节
INC R0
INC R1
DJNZ 41H,LOOP
MOV 40H,#0 ;所有字符均相等,则两字串相等。
RET
LOOP1:MOV 40H,#0FFH
RET
第二篇:单片机复习重点
复 习 课
第一章 微型计算机基础知识
1. 数制及数的转换
(1) N进制数 → 十进制数: 按权展开相加
(2) N进制数 ← 十进制数
(3) 二进制数与十六进制数的互换
2. 有符号数的表示形式
(1) 定点整数表示方法
(2) 原码、反码和补码
原码: 最高位为符号位,其余位为数值位
反码: 正数的反码 = 原码
负数的反码:符号位为1,数值位对原码按位取反
补码: 正数的补码 = 原码
负数的补码 = 反码加1
对补码再次求补就得原码
8位二进制数的表示范围:
8位无符号位数:0 ~ 255
8位二进制原码和反码:-127 ~ +127
8位二进制补码:-128 ~ +127
3. 数和字符的编码
BCD码:十进制数的二进制编码
ASCII码:用7位二进制数对128个字符编码
4. 单片微机的基本概念
单片机的基本构成
第二章 MCS-51单片机的结构
1. 51单片机内部结构
(1) CPU由运算器、控制器和寄存器组构成
① 程序计数器PC
② 程序状态字PSW
③ 堆栈指针SP
(2) 51单片机内部储存器
① ROM:8051和8751片内有4KB的ROM
8031片内无ROM和89C51片内有4KB的EEPROM
② RAM:51单片机内有128字节用户RAM,分成3个区
③ 特殊功能寄存器SFR
2. 引脚功能
(1) 端口线
P0口:有接片外存储器时,分时传送低8位地址和数据,准双向I/O口
P1口:准双向I/O口
P2口:有接片外存储器时,发送高8位地址,准双向I/O口
P3口:准双向I/O口,第二功能,见P.60表2-4
(2) 控制线
ALE: 访问片外RAM/ROM时,发出脉冲锁存低8位地址
PSEN: 对片外ROM读的选通信号
EA: 接地时,使用外部ROM
RD: 对片外RAM读的选通信号
WR: 对片外RAM写的选通信号
3. 单片机复位时的状态
SP=07H,P0~P3=FFH,SBUF不定。其余特殊寄存器均为00H,片内RAM不变P67
4. 机器周期和指令周期P73
第三章 MCS-51指令系统(重点掌握)
1. 指令由操作码和操作数组成
2. 寻址方式
直接寻址: MOV A,7AH
立即寻址: MOV A,#7AH
寄存器寻址: MOV A,R0
寄存器间址: MOV A,@R0
变址寻址: MOVC A,@A+PC
相对寻址: SJMP 54H
位寻址: SETB P3.5
3. 数据传送指令
MOVX:片外RAM或I/O数据传送指令,只能用DPTR、R0或R1间址
PUSH和POP指令,只能直接寻址,如PUSH 40H
4. 算术与逻辑运算和移位指令
ADD、ADDC和SUBB指令,均为累加器A为目的操作数
INC和DEC指令,不影响PSW
5. 控制转移和位操作指令
LJMP、AJMP、SJMP和JMP指令的转移范围
LCALL和ACALL指令调用的范围
JZ和JNZ指令的转移条件
JC和JNC指令的转移条件
JB和JNB以及JBC
CJNE指令执行时,是左数—右数,不相等则转移,并建立借位标志
对2字节转移指令,偏移量=目标地址—(源地址+2)
对3字节转移指令,偏移量=目标地址—(源地址+3)
第四章 汇编语言程序设计(重点掌握)
1、伪指令
ORG:起始汇编,常用于汇编语言程序或数据块开头
END:结束汇编
EQU:赋值 用于给他的左边的字符名称赋值
DATA:赋值 同上
DB:定义字节
DW:定义字
DS:定义存储空间
BIT:位地址赋值
2、汇编语言程序的结构
简单程序:程序按顺序执行,无分支无转移,也叫顺序程序。P139(例4.4)
分支程序:程序中有条件转移指令,条件满足则转移。参见P140(例4.5)
循环程序:含有多次重复执行的程序段,典型例题:P146(例4.9)
子程序:主程序调用子程序,典型例题P156(例4.16)
3、常用程序设计
(1)数据块传送: p.114(例3.31)
(2)码制转换: p.139(例4.4),p.152(例4.13)
(3)求累加和: p.146(理4.9),p.168 作业4.21
(4)求最大值、最小值:p.147(例4.10),实验二
(5)查表程序: p.153(例4.13)
(6)多分支转移: p.141(例4.6)
(7)运算程序: p.147(例4.11),p.159(例4.19)
第5章 MCS-51单片机的中断与定时(重点掌握)
1、MCS-51的中断源和中断标志
INT0 —— IE0
INT1 —— IE1
T0—— TF0
T1—— TF1
串口 ——RI和TI
2、MCS-51对中断请求的控制
中断允许寄存器IE:
中断优先级寄存器IP:
定时器控制寄存器TCON:
定时器用 外中断用
3、MCS-51对中断的响应
(1)响应中断的条件:P211
(2)中断入口地址:
INT0: 0003H
T0: 000BH
INT1: 0013H
TI: 001BH
串口:0023H
4、MCS-51内部定时器/计数器
⑴MCS-51对内部定时器的控制
① 定时器方式寄存器TMOD
T1 T0
② 定时器控制寄存器TCON
外中断用
⑵定时器的工作方式
方式0——13位定时/计数器
方式1——16位定时/计数器
方式2——8位自动重装定时/定时器
方式3——T0分成两个8位定时/计数器(不要求)
⑶初值的计算
计数器初值TC=M-C
· 计数器
方式0:213=8192
模值 方式1:216=65536
方式2: 28=256
定时器初值TC=M-(T/m) 其中:机器周期m=12/fosc
⑷定时器/计数器的应用: 参见P。295(例7.11)产生方波
第6章存储器扩展与并行I/O接口扩展(重点掌握)
1、存储容量=存储单元数×字长
2、只读存储器,常用27系列EPROM
2716:2K×8(11根地址线,211=2K)
2732:4K×8(12根地址线)
2764:8K×8(13根地址线)
27128:16K×8(14根地址线)
27256:32K×8(15根地址线)
27512:64K×8(16根地址线,216=64K)
3、RAM存储器,常用62系列SRAM
6116:2K×8(11根地址线)
6264:8K×8(13根地址线)
62128:16K×8(14根地址线)
62256:32K×8(15根地址线)
4、MCS-51和外部存储器连接
(1)外部EPROM的连接,参见p.195图5-21
地址线:低8位从P 0口发出,用74LS373锁存
高8位从P2口发出
数据线:P0口(分时复用)
控制线:ALE、PSEN、EA
(2)外部SRAM的连接,参见P。197图5-23
地址线:低8位从P 0口发出,用74LS373锁存
高8位从P2口发出
数据线:P0口(分时复用)
控制线:ALE、RD、WR
5、并行I/O接口概述
(1)、I/O数据传送的方式
(2)、串行接口与并行接口的特点
6、 51单片机内部并行I/O口的应用
(1)端口操作方式
输出数据方式
读端口数据
读引脚方式:先对引脚送“1”,然后在读
(2)内部并行I/O口的应用:参见课堂补充例
7、 并行I/O接口芯片及应用
(1)8255A及应用
①8255A各端口地址
②8255A方式控制字
0:输出
1:输入
③用8255A扩展I/O端口(只要求方式0)
硬件连接、端口地址、编程(参见课堂补充例题)
(2)8155及应用
①8155各端口地址
0:输入
②8155命令字: 1:输出
00:A口、B口基本I/O,C口输入
01:A口、B口基本I/O,C口输出
③用8155扩展I/O口端口(只要求基本I/O方式)
硬件连接、端口地址、编程(参见p。270)
第7章显示器与键盘接口(重点掌握)
MCS-51对LED/键盘的接口
⑴LED数码管显示原理
⑵数码管的动态显示
⑶51单片机对独立式按键的接口,见p282图7-38
⑷识别按键的方法――逐列扫描原理。
第8章模拟量通道接口
1、D/A转换器
⑴分辨率:满量程/2n 式中n为数字量的位数
⑵DAC0832的引脚功能
ILE
CS 输入寄存器接收数字量
WR1
WR2
数字量传送到DAC寄存器,并开始D/A转换
XFER
2、MCS-51对DAC0832的接口
直通方式
单缓冲方式:P。308(例8.1)
双缓冲方式
3、A/D转换器
ADC0809的引脚功能
ADDC~ADDA:通道地址选择
ALE:地址锁存允许
START:启动
EOC:转换结束
OE:输出允许
4、MCS-51对ADC0809的接口
硬件连接:参见P。319图8-17
转换程序:参见P。319(例8.3)
第9章 MCS-51单片机的串行接口
1.串行通信基础;
2. 串行接口方式0;
3. 串行接口的通讯波特率等概念。