1、当使用8051单片机时,需要扩展外部程序存储器,此时EA应接低电平。
2、8051上电复位后,从地址0000H开始执行程序,外部中断1的中断入口地址为0013H。 3、8051最多有64KB的程序存储器和64KB的数据存储器.
4、P0口通常用作分时复用为地址总线(低8位)及数据总线或外接上拉电阻用作普通I/O口.
5、P2口的功能为用作地址总线和作为普通I/O口使用。
6、若由程序设定RS1、RS0=01,则工作寄存器R0的直接地址为08H. 7、若由程序设定RS1、RS0=00,则工作寄存器R0的直接地址为00H。
8、若累加器A中的数据为01110010B,则PSW中的P=0(偶数个1为0,奇数为1) 9、8051单片机共有5个中断源,分别是INT0外部中断0、INT1外部中断1、T0定时器/计数器中断0中断、T1定时器计数器1中断、串行口中断。 10、ADC0809是8通路8位逐次逼近式模/数转换器。
11、计算机中按功能把总线分为数据总线、地址总线和控制总线。
12、MOV A,#0F5H中,#0F5H的寻址方式称之为立即寻址.MOV类指令称之为一般传输指令.
13、8051的一个机器周期等于12个晶体震荡周期;通常8051单片机的ALE引脚以1/6倍的晶振频率输出脉冲。
14、8051单片机复位后,堆栈指针SP指向第07H号内部RAM;8051的堆栈是向上生长的。 15、十进制调整指令DA A,专用于BCD码的加减运算.
16、单片机的中断触发方式有低电平触发和下降沿触发两种。大多数情况下,单片机控制系统采用下降沿触发方式触发中断。
17、若执行加法运算后累加器(A)中的数据为01110010B,则PSW中的P=0 18、8051单片机的程序存储器和数据存储器编址方式采用的是哈佛结构,即数据存储器和程序存储器分开的编址方式. 二、单项选择题
1、8051单片机执行MOVX写指令时,相关的信号状态是
PSEN无效为高电平,WR有效为低电平
2、若PSW.4=1,PSW。3=1,现在需要保存R1的内容,可执行PUSH 19H指令 3、下列指令不是变址寻址方式的是MOVX A,@DPTR
4、在8051片外扩展一片EEPROM 28C64需要13根地址线(片选除外),8根数据线。 5、8051定时器/计数器工作方式2是自动重装8位计数器
6、单片机程序存储器的寻址范围是由程序计数器PC的位数决定的,MCS—51的PC为15位,因此其寻址范围是64KB。(2^16B=64KB)
7、若单片机的振荡频率为12MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为2^16-1000。(计算过程:机器周期=12/12MHz=1μs 次数=1ms/1μs=1000次 方式一为16位=2^16)
8、访问外部数据存储器的指令是MOVX,访问程序存储器的指令是MOVC。 9、汇编语言中,最多包含4个区段,其中操作码区段是必不可少的。 10、MCS—51单片机的位寻址区域为20H—2FH。 11、MCS—51单片机复位后,PC值被初始化为0000H。
12、MCS—51单片机在同一优先级的中断源同时申请中断时,CPU首先响应外部中断0. 三、读程序
1、执行下列程序段中第一条指令后 (1)(P1。7)= 0 (P1。3)= 0 执行第二条指令后,
(2)(P1。5)=1 (P1.4)=0 ANL P1,#42H ORL P1,#0ECH
2、下列程序段执行后,(R0)=47H,(48H)= 0FFH,(47H)=3FH MOV R0,#48H MOV 48H,#0 MOV 47H,#40H
DEC @R0 DEC R0 DEC @R0
3、已知(SP)=29H,(DPTR)=1234H,在执行下列指令后,(SP)= 2BH,内部RAM(2AH)=34H,(2BH)=12H PUSH DPL PUSH DPH 四、简答题
1、简述MCS-51单片机中,振荡周期、机器周期和指令周期的关系。
答:(1)振荡周期:振荡周期为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。 (2)时钟周期:又称状态周期或状态时间S,是振荡周期的两倍,分为P1、P2节拍,通常P1完成算术逻辑操作,在P2节拍完成内部寄存器间的数据传送操作。
(3)机器周期:一个机器周期由6个状态(时钟周期)(或12个振荡周期)组成。 (4)指令周期:执行一条指令的全部时间,是机器周期的倍数,MCS-51单片机中指令周期通常由1、2、4个机器周期组成。
2、DAC0832作为数模转换器,其连接方式有几种? 答:3种。单缓冲方式、双缓冲方式和直通方式. (1)直通方式常用于不带微机的控制系统.
(2)单缓冲方式是值DAC0832内部的两个数据缓冲器有一个处于直通方式,另一个处于受8051控制的锁存方式。
(3)对于多路D-A转换,要求同步进行D-A转换输出时,必须采用双缓冲同步方式。 3、8051单片机作定时和计数时,其计数脉冲分别由谁提供?8051单片机定时计数器共有几种工作模式?分别是什么?
答:当用作定时器时,是在内部对CPU的时钟脉冲计数。
当用作计数器时,是对相应输入引脚输入的脉冲信号计数。 工作模式:
(1)工作模式0:使用低字节的5位和高字节的8位组成13位的计数器,低5位计数
溢出后向高位进位计数,高8位计数器计满后置位溢出标志位。
(2)工作模式1:使用低字节和高字节的16位组成16位计数器。与0模式的区别仅在计数器长度,定时长度和计数容量不同。
(3)工作模式2:使用低字节的8位做计数器、高字节的8位作为预置常数的寄存器。 (4)工作模式3:只适用于定时器/计数器T0,T0分别为两个独立的8位计数器TH0和TL0。
4、MCS-51单片机系统共有几种寻址方式?分别是什么?
答:有7种寻址方式:(1)寄存器寻址(2)直接寻址(3)立即寻址(4)寄存器间接寻址
(5)相对寻址 (6)位寻址 (7)基址加变址寄存器间接寻址
5、试说明特殊功能寄存器TCON中TF1、TR1、IE1、IT1位的含义是什么?这些位什么情况下被置位或清除?
答:TF1 T1计数溢出标志位,当计数器T1计数计满溢出时,该位由硬件置1,转到中断服务程序时,再由硬件自动清0。
TR1 T1计数运行控制位,由软件置1或清0.为1时允许计数器T1计数,为0时禁止计数器T1计数。
TF0 T0计数溢出标志位,当计数器T0计数计满溢出时,由硬件置1,申请中断.进入中断服务程序后由硬件自动清0。
TR0 T0计数运行控制位,由软件置1或清0,为1时允许计数器T0计数,为0时禁止计数器T0计数.
IE0 外部中断0(INT0)请求标志位,当CPU采样到INT0引脚出现中断请求后,此位由硬件置1。在中断响应完成后转向中断服务程序时,再由硬件自动清0.
IE1 外中断1(INT0)请求标志位,功能同上.
IT0 外中断0请求信号方式控制位,当IT0=1,后沿负跳变有效;IT0=0,低电平有效。此位可由软件置1或清0.
IT1 外中断1请求信号方式控制位,IT1=1,后沿负跳变有效;IT1=0,低电平有效。 五、应用题
1、将存于外部RAM 8000H开始的50H个数据传送到内部0010H开始的区域,请编程实现。 ORG 0100H
MOV DPR,#8000H MOV R0,#10H MOV R2,#50H MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 END
知识点: 1、各P口功能:
P0口:8位双向三态I/O口,或分时复用为地址总线(低8位)及数据总线,或作为普通I/O口使用。
P1口:8位准双向I/O口,常用作普通I/O口使用,个别引脚有第二功能 P2口:8位准双向I/O口,或用作地址总线(高8位),或作为普通I/O口使用 P3口:8位准双向I/O口,或作为普通I/O口使用;或作为第二功能口使用。 P3.0串行输入端口(RXD) P3。1串行输出端口(TXD)P3.2外部中断0(INT0) P3.3外部中断1(INT1) P3.4 T0 P3。5 T1
P3。6外部数据存储器写选通(WR) P3。7外部数据存储器读选通(RD) 2、引脚EA 当EA=1时,访问内部程序存储器,EA=0时,访问外部程序存储器 引脚PSEN外部程序存储器的读选通信号,读取时有效低电平
引脚PROG/ALE 当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节.即使不访问外部存储器,ALE端扔以不变的频率周期性地出现正脉冲信号,次频率为振荡器频率的1/6,可用作对外输出的时钟,或用于定时,每当访问外部数据存储器的时候,将跳过一个ALE脉冲。 3、PSW中各个位的功能: PSW.7 (CY)进位标志位 PSW。6 (AC)辅助进位标志位 PSW。5 (F0)标志位
PSW。4 PSW。3 (RS1\\RS0)四组工作寄存器区选择控制位1和位0 00 工作0区(00H) 01 1区(08H) 10 2区(10H) 11 3区(18H) PSW.2 (OV)溢出标志位 PSW。1 保留位,未用
4、8051单片机的时序定时单位:节拍、状态、机器周期和指令周期 5、复位:RST引脚处至少保持24个振荡周期的高电平就可复位
寄存器 内容 寄存器 内容 PC ACC B PSW SP DPTR P0~P3 IP(8051) IP(8052) IE(8051) IE(8052) TMOD PCON(HMOS) 6、寻址方式
0000H 00H 00H 00H 07H 0000H 0FFH XXX00000B XX000000B 0XX00000B 0X000000B 00H 0XXXXXXXB TCON T2CON TH0 TL0 TH1 TL1 TH2 TL2 RLDH RLDL SCON SBUF PCON(CHMOS) 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 不定 0XXX0000B (1)寄存器寻址方式是对选中寄存器中的数据进行处理,适用于数据放置在寄存器之中的情况。
MOV R1,B ; 将寄存器B中的数值送入到寄存器R1中 INC R2 ; 将寄存器R2中的数值加1 MOV A,R7 ;将寄存器R7中的数值送入累加 器A 寄存器寻址范围:
寄存器区中8个工作寄存器R0~R7中的一个(由指令操作码的低三位数值确定)、特
殊寄存器A, B, DPTR, Cy(进位位,也是位处理机的累加器)也可作为寄存器寻址的对象。 (2)直接寻址方式是对直接指定地址的存储器单元中的数据进行处理,适用于数据放置在可以直接寻址的存储单元之中的情况。
MOV 40H,B ;将寄存器B中的数值送入到内部RAM的40H单元中 INC 30H ;将内部RAM的30H单元中的数值加1 MOV TL0 , R7 ;将寄存器R7中的数值送入到特殊功能寄存器TL0中 直接寻址范围: 片内RAM,包括SFR,且SFR只能直接寻址
(3)立即寻址是对指令操作码后的数据进行处理,适用于在程序中直接处理的数据的情况. MOV 38H,#05H ;将数值05H送入到内部RAM的38H单元中 ADD A,#30H ;将A寄存器中的数值加上30H MOV TH0,#0F2H ;将定时器0高8位设置为数值0F2H (4)位寻址
MOV C,40H ;把位40H的值送进位位C 位寻址的寻址范围包括:
内部RAM中的位寻址区 单元地址为20H-2FH,共16个单元,128个位,位地址是00H—7FH. 特殊功能寄存器中的可寻址位 可供位寻址的特殊功能寄存器共有11个,实际有寻址位83个。 注意: 位寻址只能直接寻址。
(5)寄存器间接寻址是将要处理数据的地址放在寄存器中,即用寄存器中的数据作为存储单元的地址数值.
MOV @R1,#05H ;将数值05H送入到以R1内数值为地址的内部RAM单元中
ADD A,@R1; 将累加器A中的数值加上以R1内数值为地址的内部RAM单元中的 数据结果存放于A
MOVX A,@DPTR ;将以DPTR内数值为地址的外部数据存储器的内容送给累加器A 注意: 寄存器间接寻址范围包括内部RAM和外部RAM,且外部RAM只能寄存器间接寻址,访问外部数据存储器的指令助记符与访问内部RAM的助记符不同.
(6) 相对寻址方式 目的地址=转移指令所在的地址+转移指令字节数+rel
JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel SJMP rel
(7) 基址加变址寄存器间接寻址
专用16位寄存器(DPTR或PC)存放基地址,寄存器A做变址寄存器,仅两条指令: @A+PC
MOVC A,@A+DPTR
MOVC A,
只能读取程序存储器。 7、指令
(1)一般传输指令 MOV A, Rn (2)累加器传输指令
XCH A, Rn (n为0—7之一,将工作寄存器Rn的内容和A的内容交换) SWAP A ;A的高4位和低4位互换
XCHD A,@Ri ;Ri为R0或R1,将Ri所指单元的低4位与A的低4位互换,高4位不变。 (3)查表指令
MOVC A,@A+DPTR;将DPTR中的16位地址和A中内容相加得新地址,把此地址内容送A MOVC A ,@A+PC;将PC值和A的内容相加所得值作为新地址,将此地址单元内容送A (4)堆栈指令
PUSH direct ;先将SP加1,再将direct所指单元内容推入SP+1所指的堆栈单元 POP direct;先将SP单元的内容弹出到direct单元,再将SP减1 (5)算术运算指令
ADD A, Rn ;将A的内容和Rn的内容相加,结果在A中 ADDC A, Rn;(A)←(A)+(Rn)+CY,Rn为R0~R7之一(带进位)
SUBB A, Rn ;A中内容减去进位位CY ,再减去Rn中内容, 结果在A中(带借位) MUL 乘法 DIV 除法
ANL (逻辑与,例如,ANL P1, A) ORL (逻辑或,例如,ORL P2, A) XRL (逻辑异或,例如,XRL P3, A)
JBC (若目标位置位则跳转并将目标位清零,例如,JBC P1。1, LABEL) CPL (求补, 例如, CPL P3.0) INC (增量指令, 例如, INC P2) DEC (减量指令, 例如, DEC P2)
DJNZ (目标寄存器减1后不为零则跳转, 例如, DJNZ P3, LABEL) MOV PX。Y, C (将进位位送入端口位)
DA A十进制调整指令,对A中的BCD码加法结果进调整 CLR PX.Y (清除端口位)
SETB PX。Y (置位端口位) SETB bit ;某位置1
CLR A ;A清0,不影响标志位 CPL A ;A中内容逐位取反
RR A ;A中内容循环右移一位, ; 最低位D0移到D7
RL A ;A中内容循环左移一位,; 即D7移到D0,D0移到D1等 RRC A ; CY进入A的最高位, A的最低位进入CY,D2进入D1等 RLC A ; A的最高位进入CY,原CY进入A的最低位D0,D0进入D1等
8、中断 分 类 中断源名称 中断申请标志 触发方式 INT0(P3。2)引脚上的低外部中断 外部中断0 IE0(TCON。1) 电平/下降沿引起的中断 T0定时器/计数器溢出后IF0(TCON.5) 引起的中断 INT1(P3.3)引脚上的低外部中断 外部中断1 IE1(TCON。3) 电平/下降沿引起的中断 T1定时器/计数器溢出后IF1(TCON。7) RI (SCON.0) 内部中断
中断的功能
(1)可实现高速CPU与慢速外设之间的配合 (2)可实现实时处理 (3)实现故障的紧急处理 (4)便于人机联系
中断的处理过程主要包括:中断请求、中断响应、中断服务、中断返回4个过程。
EA—中断允许的总控制位。当EA=0时,中断总禁止,相当于关中断,即禁止所有中断;当EA=1时,中断总允许,相当于开中断。此时,每个中断源是否开放由各中断控制位决定.所以只有当EA=1时,各中断控制位才有意义。
ES—串行口中断允许控制位,当ES=0,禁止该中断;ES=1,允许串行中断.
ET1-定时器1中断允许控制位,当ET1=0,禁止该中断;ET1=1,允许定时器1中断 EX1-外部中断1允许控制位,当EX1=0,禁止外部 中断1;当EX1=1,允许外部中断1。
串口中断 TI ( SCON。1) 引起的中断 串行口接收完成或发送完一帧数据后引起的中断 0023H 001BH 0013H 000BH 0003H 中断入口地址 内部中断 定时器/计数器T0中断 内部中断 定时器/计数器T1中断 ET0—定时器0中断允许控制位,当ET0=0,禁止该中断;ET0=1,允许定时器0中断。 EX0—外部中断0允许控制位,当EX0=0,禁止外部中断0;当EX0=1,允许外部中断0。 定时器控制寄存器(TCON)
该寄存器的字节地址为88H,位地址为88H-8FH,也可以用TCON。0-TCON。7表示
INT0、 T0、 INT1、 T1、(最高)
串口、T2(最低) 在开放中断的条件下,用下述四个原则使用中断优先级结构:
(1)非中断服务子程序可以被任何一个中断申请所 中断,而与优先级结构无关。 (2)如果若干中断同时提出申请,则CPU将选择优先级、优先权最高者予以响应。 (3)低优先级可以被高优先级的中断申请所中断.换句话说,同级不能形成嵌套、高优先级不能被低优先级嵌套,当禁止嵌套时,必须执行完当前中断服务子程序之后才考虑是否响应另一个中断申请.
(4)同一个优先级里,优先权的顺序是由硬件决定而不能改变的.但是用户可以通过改变优先级的方法改变中断响应的顺序。例如,8051单片机中串行口的优先权最低,但是可以在中断优先级寄存器IP中写入10H,则只有串行口是最高优先级。若同时有若干中断提出申请,则一定会优先响应串行口的申请。 串行口控制寄存器(SCON)
SCON寄存器的字节地址为98H,位地址为98H~9FH,其中的低两位RI和TI锁存串行口的接收中断和发送中断的请求标志位
中断响应的条件:中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。
9、定时器
概念:在 8051单片机中,定时器/计数器就是一个固定长度的二进制计数器,当对输入脉冲信号的数量进行计数时,我们称其为计数器,当对单片机的系统时钟或其它标准时钟进行计数时,由于这类时钟信号本身就表示时间,计数值对应着时间值,所以从这个角度上将其称为定时器。
组成:在8051单片机中,内部定时器都是可编程控制的定时器/计数器,至少由两部分组成:
脉冲计数电路和控制字寄存器及译码控制电路。
10、串行接口的四种工作方式
(1)模式0(MODE0): 同步移位寄存器方式。8位数据(先为LSB)从引脚RXD接收/移出,引脚TXD输出移位时钟,波特率固定为晶振频率的1/12.模式0通常用来扩展输入输出口。 (2)模式1(MODE1):10位数据被发送(从引脚TXD)或接收(从引脚RXD):1个启动位,8个数据位,1个停止位。在接收时,停止位被送入特殊功能寄存器的SCON的RB8位。波特率是可变的。
(3)模式2(MODE2):11位数据被发送(从引脚TXD)或接收(从引脚RXD):1个启动位,8个数据位,可编程的第9个数据位,1个停止位。发送时,第9位(SCON 的TB8位)可被赋予0或1。例如,可将奇偶校验位送至TB8位。在接收时,停止位被送入特殊功能寄存器SCON的RB8位.模式2的波特率可为1/32或1/64晶振频率。
(4)模式3(MODE3):11位数据被发送(从引脚TXD)或接收(从引脚RXD):1个启动位,8个数据位,可编程的第9个数据位,1个停止位。发送时,第9位(SCON 的TB8位)可被赋予0或1。
实际上,除了波特率之外,模式2和模式3是相同的。模式3的波特率是可变的.
fosc2SMOD模式1或3波特率3212[256(TH1)]
8255A的工作方式0,A口作为输入,B、C口作为输出
取端口A:0FF7CH B:0FF7DH C:0FF7EH 控制寄存器地址:0FF7FH 根据题意写入控制字为10010000=90H. MOV A,#90H(根据题意计算而变化) MOV DPTR,#0FF7FH 控制寄存器地址→DPTR MOVX @DPTR,A 方式控制字→控制寄存器 MOV DPTR,#0FF7CH A口地址→DPTR MOVX A,@DPTR 从A口读数据 MOV DPTR,#0FF7DH B口地址→DPTR MOV A,#DATA1 要输入的数据DATA1→A MOVX @DPTR,A 将DATA1送B口输出 MOV DPTR,#0FF7EH C口地址→DPTR MOV A,#DATA2 DATA2→A
MOVX @DPTR,A 将DATA2送C口输出
ILEALEP0.7G锁存器译码器FDHFEHFFH+5V1# DAC0832~CSXFERRfbIOUT1OA1IOUT2P0.08051VxDI7WR~DI0WR1WR22# DAC0832CSXFERRfbIOUT1IOUT2OA2+5VILEDI7Vy~DI0WR1WR1 DAC0832启动转换程序 ORG 0000H MOV R1,#data1 MOV A,@R1 MOVX @DPTR,A MOV DPTR,#0BFFFH MOV R1,#data2 MOVX @DPTR,A MOV DPTR,#7FFFH MOVX @DPTR,A
例:用定时器0,方式2计数,要求每计满100次,将P1.0 端取反.
分析:TMOD=00000110B
计数初值:TH0=TL0=28-100=156=9CH 程序如下:
ORG START:MOV MOV MOV SETB TR0
LOOP:JBC TF0,DONE ; 判计满100次否?若计满则清零TF0且转DONE SJMP DONE:CPL P1.0 SJMP
LOOP LOOP 1000H TMOD,#06H TL0,#9CH TH0,#9CH
例7.3 已知单片机晶振频率为12MHz,要求使用T0定时0。5ms,使单片机P1。0引脚上连续输出周期为1ms的方波.
分析:首先算出机器周期=12/(12MHz)=1us,所以0。5ms需要T0计数M次
M=0.5ms/1us=500
256〈500<8192,所以选择方式0
初值N=213-500=7692=1E0CH
余的均计入高8位TH0的初值.
因为选用方式0,低8位TL0只使用低5位,其
TL0=0CH, TH0=0F0H
ORG 0000H RESET: AJMP
START
ORG 000BH AJMP T0INT ORG 0100H
START: MOV SP,#60H
MOV TH0,#0F0H MOV TL0,#0CH
SETB TR0
SETB ET0 SETB EA MAIN: AJMP T0中断服务程序 T0INT: CPL P1。0
MOV TL0,#0CH MOV TH0,#0F0H RETI
MAIN
3、假设单片机晶振fosc=6MHz,请利用T0和P1.0输出矩形波,矩形波的高电平
宽50us,低电平宽300us.(P。145 第13)
晶振fosc=6MHz→机器周期为2us 定时器T0使之工作于模式3
定时50us的初值为:256—25=231 (E7H)
定时300US的初值为:256—150=106 (6AH) 方法1:
MOV TMOD , #00000011B ;T0工作于模式3 MOV TCON ,#0 ;清TR0 , TF0
MOV TL0 , #0E7H ;高电平初值。 256—25 SETB P1.0 ;P1。0口输出高电平 SETB TR0 ;启动定时器T0
LOOP1: JNB TF0 , LOOP1 ;检测T0是否溢出 CLR TF0 ;清除溢出标志 CLR TR0 ;关闭定时器
MOV TL0 , #6AH ;写低电平初值 256—150 SETB TR0 ;启动定时器T0 CLR P1。0 ;使P1。0输出低电平
LOOP2: JNB TF0 , LOOP2 ;检测T0是否溢出 CLR TF0 ;清除溢出标志 CLR TR0 ;关闭定时器
MOV TL0 , #0E7H ;写高电平初值 256—25 SETB TR0 ;启动定时器T0 SETB P1.0 ;使P1.0输出高电平 SJMP LOOP1 ;重复
6、设fosc=12MHz,编写程序,其功能为:对T0进行初始化,使之工作于模式2,产生200us的定时,并用查询T0溢出标志TF0的方法,控制P1。0引脚输出周期为2ms的方波。(P。146 第18题)
MOV TMOD , #02H ; T0工作于模式2,定时方式
MOV TCON , #0 ; 清除TF0、TR0。 MOV TH0 , #56 ; (256-200)=56 MOV TL0 , #56 ;
MOV R7 , #5 ; 200us与1ms是5倍的关系 SETB TR0 ; 启动定时器T0 SETB P1.0 ; 将P1.0置高电平
LOOP: JNB TF0 , LOOP ; 检测T0的溢出标志
CLR TF0 ; 清除T0的溢出标志 DJNZ R7 , LOOP ; 是否到5次 MOV R7 , #5 ; 重新写入计数次数 CPL P1.0 ; 取反P1。0口 SJMP LOOP ; 循环往复
9、当系统选用6MHz晶体振荡器时,由T0工作在方式为2,利用中断响应,产生周期为2ms(脉冲宽度为1ms)的方波序列,并由P1.0输出。 (1)写出T0定时器的方式控制字,T0定时器初值计算。 (2)试编写程序完成此功能。
思路:
方波的周期为2ms,每隔1ms对P1.0取反,可完成题目要求。
系统晶体振荡器的频率为6MHz,机器周期为2us,定时器T0在方式2时,最大定时256us×2=512us,达不到1ms的要求,故将定时器T0的初始值选为:256—250=6(定时0.5ms),两次后取反P1.0 口。 (1)T0的初始值为: X=256-250=6 T0的控制字为:
MOV TMOD , #20H MOV TCON (2)参考程序如下: ORG 0000H SJMP Main ORG 000BH AJMP T0 ORG 0030H
Main: MOV TMOD , #20H CLR TR0 CLR TF0 ; MOV IE , #02H MOV IP , #0 MOV TH0 , #6 ; MOV TL0 , #6 ; MOV R7 , #2 ; SETB TR0 ; SETB EA SJMP $
, #0 ;定时器T1工作于方式2 ;关闭定时器T1 清除定时器T1溢出标志 ;允许定时器T1中断 ;不设置悠闲级别 定时器T1初值 (256—250=6)
定时0。5ms与1ms的2倍的关系 启动定时器T1 ;开中断
T0: DJNZ R7 , NEXT ;两次是否到?未到则中断返回,到则继续 CPL P1.0 ;取反P1.0口 MOV R7 , #2 ;重置2倍的关系 NEXT: RETI ;中断返回
12、要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。
思路:
(1)只要使P1。1每隔500µs取反一次即可得到1ms方波;。
(2)将T1设为定时方式0:GATE=0,C/T(—)=0,M1M0=00;T0不用可为任意,只要不使其进入方式3,一般取0即可.故TMOD=00H。下面计算500µs定时T1的初值:
机器周期: T=1µs , 设初值为X则: X=8192—500=7692=1111000001100 B =1111 0000 0 0110 B = F 0 0 C H
因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=#0CH;X的高8位应装入TH1,所以TH1=#F0H. 参考源程序如下:
MOV TCON , #0 ;清TF1、TR1
MOV TMOD , #0 ;定时器T1工作于方式0 MOV TH1 , #0F0H ;定时500us的初值 MOV TL1 , #0CH ;8192—500=7692=F00CH SETB TR1 ;启动定时器T1
LOOP: JNB TF1 , LOOP ;等待定时500us的溢出 CLR TF1 ;清除溢出标志 CPL P1。1 ;取反P1。1口 CLR TR1 ;关闭定时器T1
MOV TH1 , #0F0H ;重写定时500us的初值 MOV TL1 , #0CH ;重写定时500us的初值 SETB TR1 ;启动定时器T1 SJMP LOOP
13、试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1。7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHz。
定时器T1确定工作于方式1 计数100的初始值为:65536—100 100=64+32+4=01100100 B
65536—100=1111 1111 1001 1100 B = FF9CH 定时10ms的初始值为:65536—10000 5000=4096+512+256+128+8 =1001110001000
65536-5000=60536=1110 1100 0111 1000 B = EC78H 参考程序如下:
LOOP3: CLR TR1 ;关闭定时器T1
CLR TF1 ;清除定时器T1的溢出标志
MOV TMOD 50H ;定时器T1工作于方式1,计数
MOV TH1 , #0FFH ;计数100的初值
MOV TL1 , #9CH ;65536—100=FF9CH SETB TR1 ;启动定时器T1 LOOP1: JNB TF1 , LOOP1 ;等待计数100溢出
MOV TMOD , #10H ;定时器T1工作于方式1,定时 CLR TF1 ;清除定时器溢出标志 CLR TR1 ;关闭定时器T1 MOV TH1 , #0ECH ;定时10ms的初值 MOV TL1 , #78H ;65536-5000=EC78H SETB TR1 ;启动定时器T1 LOOP2: JNB TF1 , LOOP2 ;等待定时10ms溢出 CPL P1.7 ;取反P1。7口 SJMP LOOP3 ;返回循环
14、若单片机晶振为12MHz,利用定时器1方式1,产生1ms的定时,在P1。0脚产生周期为2ms方波,用查询方式工作,查询标志为TF1。 已知fosc =12MHz→1个机器周期为1us 1ms=1000us
初值=65536-1000=54536
64536转换为二进制:1111 1100 0001 1000 T0的低8位:00011000 (18H) T0的高8位:11110000 (FCH)
则有: (TL0) ←#18H ; (TH0) ←#0FCH 参考源程序如下:
MOV TCON , #10H ;定时器T1工作于方式1 MOV TMOD , #0 ;清除TR1、TF1 MOV TH1 , #0FCH ;定时1ms的初值 MOV TL1 , #18H ;65536—1000=FC18H SETB TR1 ;启动定时器T1
LOOP: JNB TF1 , LOOP ;等待定时1ms的溢出 CLR TF1 ;清除溢出标志 CPL P1.0 ;取反P1.0口 CLR TR1 ;关闭定时器T1 MOV TH1 , #0FCH ;重写定时1ms的处值 MOV TL1 , #18H ;重写定时1ms的处值 SETB TR1 ;启动定时器T1 SJMP LOOP ;返回循环
15、系统时钟频率为6 MHz,试用定时器T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环不止.
(1) 定时器T0工作于方式1,计数1000的初值为:65536-1000
1000=512+256+128+64+32+8=0000 0001 1111 1000 B 65536-1000=1111 1100 0001 1000 B = FC18H
(2) 晶振fosc=6MHz,机器周期为2us,定时器T0工作于方式1,定时1ms的初值为:65536—500
500=256+128+64+32+16+4 = 0000000111110100 B (取反+1可得到结果)
(65536-500)=65036=1111 1110 0000 1100 B
TH0=#0FEH ; TL0=#0CH (3) 参考程序如下:
LOOP3: MOV TMOD , #0000 0101 B CLR TF0 CLR TR0
MOV TH0 , #0FCH MOV TL0 , #18H SETB TR0 LOOP1: JNB TF0 , LOOP1 CLR TF0 CLR TR0
MOV TMOD , #01H MOV TH0 , #0FEH MOV TL0 , #0CH SETB TR0
LOOP2: JNB TF0 , LOOP2 SJMP LOOP3
一、填空题:
1、MCS—5l单片机的最大程序寻址空间是 KB,该空间的地址范围从
至 ,系统上电及复位后,程序入口地址为 。
2、若由程序设定PSW中的RS1、RS0=01,则工作寄存器R0~R7的直接地址为__ __。 3、MCS—51单片机的I/O端口采用__ __ 编址方式。、
4、一个8位D/A转换器其分辨率为_ __,若该8位D/A转换器的基准电压为5V,则数字量100对应得模拟量为 。
5、单片机系统中经常采用的地址译码技术包括 法和 法。 6、INTEL 8051 CPU 是 位的单片机,其内部有 KB的ROM。 7、指出下列各指令中源操作数的寻址方式.
(1) MOVC A,@A+DPTR (2) XCH A,@R0; (3) MOV C,P1。0 (4) JC LOOP
8、判断下列各条指令的书写格式是否有错,并指出原因。
(1) MUL R0R1 (2) MOV A, @R7
(3) MOV A, #3000H (4) MOV R1, C
9、单片机与外设进行数据交换通常有__________方式、__________方式和_____ 方式三种。
10、MCS—51单片机串行口的方式0是________ _____方式,方式2是 方式。 11、单片机复位后SP中的状态为_________,P0~P3口的状态为_________。
12、串行通信根据数据传送时的编码格式不同可分为________________和________________两种方式。
13、堆栈按照___________原则工作,使用__________指明栈顶位置。 14、8051单片机片内有___________字节的ROM,____________字节的RAM。
15、使用8031单片机构成的系统时,其EA引脚应______________,因为______________________.
16、ADC0809是_____位的A/D转换器.
17、单片机复位后PC的内容为___________,复位对片内RAM中存放的内容______(有,无)影响。
18、多位LED显示器通常有________显示和_________显示两种接口..
19。 执行下列两条指令后,PSW中的标志位(CY)= ,(OV)= ,(AC)= ,(P)= 。
MOV
A,#80H
ADD A,#98H
20.JC LOOP指令中操作数的寻址方式是 , MOV 数的寻址方式为 . 21.下列指令中正确的是 。
(1) RLC
R7
(2)SETB
R7。0
(3) MOV A, @DPTR
(4)POP 40H
A,P1指令中源操作
22.一个4k*4RAM芯片的地址线有 根,数据线有 . 23.设(A)=30H,(B)=40H,(SP)=40H,执行下列程序段后,(A)= 。
PUSH PUSH POP A POP B
A B
24.若8位A/D转换器的满量程输入为5V时,该转换器可分辨的最小电压是 。 25.一单片机系统的外部晶体振荡器频率为6MHz,现启动单片机的的定时/计数器1统计外部脉冲的个数,当计满100时,使P1.0输出0。则:
当T1工作在方式0时,T1的初值应为(TH1)= ,(TL1)= ; 当T1工作在方式1时,T1的初值应为(TH1)= ,(TL1)= ; 当T1工作在方式2时,T1的初值应为(TH1)= ,(TL1)= 。 26。 已知(SP)=60H,子程序DELAY的首地址为1878H,现执行位于1123H处的LCALL DELAY三字节指令后,(PC)= ,(61H)= ,(62H)= 。
一、填空题:(答)
1。 64KB, 0, 0FFFFH, 0 2。 08~0FH 3。 统一
4。 1/256, 1.953V(5*100/256V) 5. 线选法, 译码法 6. 8, 4
7. 基址变址寻址, 寄存器间接寻址, 位寻址, 相对寻址 8. ×, 乘法指令用A×B;
×, 寄存器间接寻址用R0和R1(只能用R1和R0作指针); ×, A是8位寄存器
×, C为进位位,不能送给寄存器
9、查询、定时、中断. 10、8位移位寄存器,多机 11、07H、FFH
12、同步通信、异步通信 13、先进后出,SP 14、4K,128。
15、接地,其片内没有程序存储器 16、8
17、0000H、无 18、静态,动态 19。1,1,0, 0 20.相对寻址, 直接寻址 21.(4)
二、选择题:
1.当MCS—51单片机接有外部存储器时,P2口可作为 。
A.数据输入口
B。 数据的输出口
22.12, 4 23.40H 24。 19。53mV
25。 FCH, 1CH, FFH, 9CH, 9CH, 9CH 26。 1878H, 26H, 11H
C.准双向输入/输出口 D.高8位地址线
2.单片机的并行接口中,作为数据线使用的并行口是 。
A.P0
B. P1
C。 P2
D. P3
3.MCS-5l单片机的堆栈区是设置在 中。 A.片内ROM区 C.片内RAM区
B.片外ROM区 D. 片外RAM区
4.片内RAM的20H~2FH为位寻址区,所包含的位地址是 。 A.00H~20H C.20H~2FH
B。 00H~7FH D.00H~FFH
5.在寄存器间接寻址方式中,间址寄存器中存放的数据是 。 A.参与操作的数据 C.程序的转换地址
B.操作数的地址值 D.指令的操作码
6.当需要从MCS-51单片机程序存储器取数据时,采用的指令为 .
A。 MOV A, @R1
B。MOVC A, @A + DPTR
C. MOVX A, @ R0 D。MOVX A, @ DPTR 7. 能够用紫外光擦除ROM中程序的只读存储器称为 。 A。掩膜ROM
B。PROM C。EPROM D.EEPROM
8. 在片外扩展一片2716程序存储器芯片要 地址线。 A.8根
B.13根
C.11根
D。20根
9. 定时器/计数器工作方式1是 。 A. 8位计数器结构 C. 13位计数结构
B. 2个8位计数器结构 D。 16位计数结构
10.T0中断的中断入口地址为 .
A. 0003H B. 000BH C。 0013H D. 001BH
二、选择题(答)
1.D,2。A,3.C,4. C,5。B,6. B,7.C,8。
三、分析程序,写出结果
1、已知(A)=83H, (R0)=17H,(17H)=34H,执行下列程序段后(A)= 。
ANL A, #17H ORL 17H, A XRL A,@R0 CPL A
2、下列程序段执行后,(R0)=_________,(7EH)=_________.
MOV R0,#7FH MOV 7EH,#0 MOV 7FH,#42H DEC @R0 DEC R0 DEC @R0
A,9.D,10。 B
3、已知 (R3)=05H, 运行程序后, 结果为(50H )= 。
MAIN:MOV A, R3
MOV DPTR, #TAB MOVC A,@A+DPTR MOV 50H, A RET
09, 16
81
TAB: DB 00, 01, 04,
DB 25, 36, 49, 64,
这个子程序的功能是: 。 4、已知一片DAC0832接成单缓冲方式,其地址为4000H,其控制程序如下:
MOV
DPTR, #4000H
MOV R0, #00H
WAIT: MOV
A,R0
MOVX @DPTR,A
INC R0
NOP SJMP WAIT
读程序执行后,DAC0832输出的波形为 波。
5.已知 (R3)=05H,程序运行后,结果为(50H )= 。
MAIN:MOV A, R3
MOV DPTR, #TAB MOVC A,@A+DPTR MOV 50H, A RET
DB 00, 01, 04, 09, 16 DB 25, 36,
49, 64,
81
TAB:
这个子程序的功能是 。
6.该段程序执行后,(A)= ,(CY)= 。
MOV A, #56H MOV R4,#95H ADD DA
A, R4 A
7. 下面该段程序的功能是 。
MOV MOV MOV
LOOP:
MOVX INC
DPTR, #1000H R0, #20H A, #0FFH @DPTR, A DPTR
DJNZ R0, LOOP
8.下列程序段执行后,(A)=_________,(B)=_________。
MOV A,#0FBH MOV B,#12H DIV AB
9。 下面该段程序的功能是 .
三、分析程序,写出结果(答)
1. 0CBH 2。 7EH, 0FFH
3。 25, 查表求A中所放数的平方值 4. 锯齿波
5. 25(或19H),查表求0~9数字的平均值 6. 51H, 1
7. 将外部RAM中从1000H单元开始的20H个单元的值置成0FFH。 8. 13(0DH), 17(11H) 9. 完成0~8之间自然数的求和。
CLR A MOV MOV
R0, A R2, #09H
LOOP: ADD A, R0
INC DJNZ MOV
R0 R2, R3, A HERE
LOOP
HERE: SJMP
四、编程题:
1、编程将外部RAM 从1200H单元开始的100个单元清零。
2、(25分)P1口连接有8个LED (LED0~LED7),编写程序使每次亮4个LED,即开始时偶数码的灯亮,下一个时刻奇数码的灯亮,如此循环.灯亮持续时间为2s。 (1)画出单片机89C51扩展8个灯的电路图;(10分) (2)编写程序实现该功能.(15分)
3、(10分)编程将外部RAM 从1000H单元开始的100个单元清零。
4、变量X的值存放在内部RAM的30H单元中,编程求解下列函数式,将求得的函数值y存
入内部RAM的40H单元。(15分)
1y01x0x0 x05、用查表法将累加器A拆为两个ASCII码,存入内部RAM的20H和21H单元中。(10分)
四、编程题:(答)
1.
ORG MOV MOV MOV
LOOP:
MOVX
1000H
R5, #20 DPTR, #1200H R0,#40H A, @DPTR
MOV @R0, A INC DPTR INC R0
DJNZ R5, LOOP
END
2.(1)
5V
R1 R2 R3 R4 R5 R6 R7 R8
P1
89C51 (2)
ORG 1000H
LED0LED4LED5 LED1 LED6LED7 LED2LED3
LJMP MAIN
ORG 001BH LJMP
T0INT
ORG 1000H MOV MOV MOV MOV MOV MOV SETB EA SETB ET0 SETB TR0 SJMP MOV MOV INC R2
CJNE R2, #100, QUIT MOV CPL A MOV RET END
P1,A R2,#00H $
TH0, #0B1H TL0, #0E0H P1, #0FFH A,#55H R2,#00H TMOD, #01H TH0, #0B1H TL0, #0E0H
MAIN:
T0INT:
QUIT:
3、
ORG MOV MOV MOV
1000H R5, #20
DPTR, #1200H R0,#40H A, @DPTR @R0, A DPTR R0 R5, LOOP
LOOP:
MOVX MOV INC INC DJNZ
END
4、 ORG 2000H MOV A,30H JZ DONE JB ACC。7。LOOP MOV SJMP
A,#01H DONE
LOOP: DONE:
MOV A,#0FFH MOV 40H,A SJMP $ END
5、
ORG 1000H
MOV DPTR, #1000H
LOOP: 6. 7.
MOV R4, #20 MOVX A,@DPTR ORL A, #80H MOVX @DPTR, A INC DPTR DJNZ R4, LOOP END
ORG 1000H MOV MOV MOVX JB MOVX MOV INC MOVX JB MOVX
A, #0 DPTR, #8000H @DPTR, A P3。2, $ A, @DPTR 40H, A DPTR @DPTR, A P3。2, $ A, @DPTR
ADD A, 40H RR MOV END
A 40H,A
ORG 1000H
MOV MOV MOVC
A, R0
DPTR, #TABLE A, @A+DPTR P1, A
MOV
TABLE: DB 0C0H, 0F9H,0A4H, 0B0H,99H, 92H, 82H, 0F8H, 80H, 90H DB 88H,END
83H, 0C6H,0A1H, 86H,8EH
因篇幅问题不能全部显示,请点此查看更多更全内容