填空 单片机与普通计算机的不同之处在于其将()()和()三部分集成于一块芯片上 答:CPU、存储器、IO口 8051与8751的区别是:答:内部程序存储器的类型不同 在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为()。答:2us 内部RAM中,位地址为30H的位,该位所在字节的字节地址为()。答:26H 若A中的内容为63H,那么,P标志位的值为()。答:0 PC可以看成是程序存储器的地址指针 8031单片机复位后,R4所对应的存储单元的地址为(),因上电时PSW=()。这时当前 的工作寄存器区是()组工作寄存器区。答:04H、00H、0 使用8031芯片时,需将/A引脚接()电平,因为其片内无()存储器。答:低、程序 片内RAM低128个单元划分为0003个主要部分 答:工作寄存器区、位寻址区、数据缓冲区 通过堆栈操作实现子程序调用,首先就要把()的内容入栈,以进行断点保护。调用返回 时,再进行出栈保护,把保护的断点送回到()。答:PC、PC 在基址加变址寻址方式中,以()作变址寄存器,以()或()作基址寄存器。 答:累加器A,DPTR、PC 假定累加器A中的内容为30H,执行指令 1000H: MOVC A, @A+PC 后,把程序存储器()单元的内容送入累加器A中。 答:103H 下列程序段的功能是什么? PUSH A PUSH B POP A POP B 答:交换A、B的内容 外部中断1所对应的中断入口地址为()H。答:0013H 各中断发出的中断请求信号,都会标记在MCS-51系统的TCON与SCON寄存器中 在MCS-51中,需要外加电路实现中断撤除的是电平方式的外部中断 在存储器扩展中,无论是线选法还是译码法,最终都是为了扩展芯片的(片选) 端提供信号 起止范围为0000HI-3FFH的存储器的容量是(16)KB 在MCS-51中,PC和DPTR都用于提供地址,但PC是为了访问(程序)存储 器提供地址,而DPIR是为访问(数据)存储器提供地址。 计算机工作时,cpu将数码存入存储器的过程称为“写”操作,从存储器中取 数的过程称为“读”操作。 指令分为操作码和操作数两大部分。操作码表示该指令执行何种操作,操作数表 示参加运算的数据或数据所在的地址 将汇编语言程序翻译成目标程序的过程称为汇编。 存储器由存储体、地址寄存器、地址译码器、存储器输λ隃输出控制电路等部分 组成
一 填空 单片机与普通计算机的不同之处在于其将( )( )和( )三部分集成于一块芯片上。 答:CPU、存储器、I/O 口 8051 与 8751 的区别是:答:内部程序存储器的类型不同 在 MCS-51 单片机中,如果采用 6MHz 晶振,1 个机器周期为( )。答:2us。 内部 RAM 中,位地址为 30H 的位,该位所在字节的字节地址为( )。答:26H 若 A 中的内容为 63H,那么,P 标志位的值为( )。答:0 PC 可以看成是程序存储器的地址指针。 8031 单片机复位后,R4 所对应的存储单元的地址为( ),因上电时 PSW=( )。这时当前 的工作寄存器区是( )组工作寄存器区。答:04H、00H、0 使用 8031 芯片时,需将/EA 引脚接( )电平,因为其片内无( )存储器。答:低、程序 片内 RAM 低 128 个单元划分为()()()3 个主要部分 答:工作寄存器区、位寻址区、数据缓冲区 通过堆栈操作实现子程序调用,首先就要把( )的内容入栈,以进行断点保护。调用返回 时,再进行出栈保护,把保护的断点送回到( )。答:PC、PC 在基址加变址寻址方式中,以( )作变址寄存器,以( )或( )作基址寄存器。 答:累加器 A,DPTR、PC 假定累加器 A 中的内容为 30H,执行指令 1000H:MOVC A,@A+PC 后,把程序存储器( )单元的内容送入累加器 A 中。 答:1031H 下列程序段的功能是什么? PUSH A PUSH B POP A POP B 答:交换 A、B 的内容 外部中断 1 所对应的中断入口地址为( )H。答:0013H 各中断发出的中断请求信号,都会标记在 MCS-51 系统的 TCON 与 SCON 寄存器中。 在 MCS-51 中,需要外加电路实现中断撤除的是电平方式的外部中断 在存储器扩展中,无论是线选法还是译码法,最终都是为了扩展芯片的(片选) 端提供信号。 起止范围为 0000H-3FFFH 的存储器的容量是(16)KB。 在 MCS-51 中,PC 和 DPTR 都用于提供地址,但 PC 是为了访问(程序)存储 器提供地址,而 DPTR 是为访问(数据)存储器提供地址。 计算机工作时, cpu 将数码存入存储器的过程称为“写”操作,从存储器中取 数的过程称为“读”操作。 指令分为操作码和操作数两大部分。操作码表示该指令执行何种操作,操作数表 示参加运算的数据或数据所在的地址。 将汇编语言程序翻译成目标程序的过程称为汇编。 存储器由存储体、地址寄存器、地址译码器、存储器输入/输出控制电路等部分 组成
堆栈指针SP是一个专用地址寄存器,它指明栈顶的位置,起着管理堆栈工作的作用 数据传送的方式有无条件传送方式、查询传送方式、中断传送方式和直接数据通道传送方式 P0口分时复用为第8位地址总线和双向数据总线。 P3口除作为准双向IO接口使用外,还具有第二功能。 “s”一般指本指令所在的首地址,也即本指令执行前的PC值。 在串行通讯中,用每秒传送数据的位数衡量,称为波特率。 除法指令 DIVAB中,被除数放在累加器A中,除数放在寄存器B中,除得的 商放在A中,余数放在B中。 251÷18=13余17 MO A. #251 #FB MOvB,#18;#12H B;(A)=0DH,(B)=11H (Ov)=0,CY)=0 二判断题 判断下列说法是否正确 A、程序计数器PC不能为用户编程时直接使用,因为它没有地址。 B、内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用 C、8031共有21个特殊功能寄存器,它们的位都是可以用软件设置的,因此,是可以 进行位寻址的。 答:对、错、错 判断下列指令的正误: 1)MOV28H,@R2错2)MOVF0,C对 三读程序 假定A=83H,(R0)=17H,(17H)=34H,执行以下指令 ANL ORL 17H.A XRL AaRO 后,A的内容为() 答:0CBH 已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H=FFH。下述程序执行后 POP POP MOV DPTR #4000H RL MOV BA MOVC AQA+DPTR PUSH A MOV AB MOVC A, @A+DPTR PUSH A
堆栈指针 SP 是一个专用地址寄存器,它指明栈顶的位置,起着管理堆栈工作的作用。 数据传送的方式有无条件传送方式、查询传送方式、中断传送方式和直接数据通道传送方式。 P0 口分时复用为第 8 位地址总线和双向数据总线。 P3 口除作为准双向 I/O 接口使用外,还具有第二功能。 “$”一般指本指令所在的首地址,也即本指令执行前的 PC 值。 在串行通讯中,用每秒传送数据的位数衡量,称为波特率。 除法指令 DIV AB 中,被除数放在累加器 A 中,除数放在寄存器 B 中,除得的 商放在 A 中,余数放在 B 中。 251÷18 = 13 余 17 MOV A , #251 ;#FB MOV B , #18 ;#12H DIV AB ;(A) = 0DH,(B) = 11H, (OV) = 0,(CY) = 0 二 判断题 判断下列说法是否正确 A、 程序计数器 PC 不能为用户编程时直接使用,因为它没有地址。 B、内部 RAM 的位寻址区,只能供位寻址使用,而不能供字节寻址使用。 C、8031 共有 21 个特殊功能寄存器,它们的位都是可以用软件设置的,因此,是可以 进行位寻址的。 答:对、错、错 判断下列指令的正误: 1)MOV 28H,@R2 错 2)MOV F0,C 对 三 读程序 假定 A=83H,(R0)=17H,(17H)=34H,执行以下指令: ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 后,A 的内容为( )。 答:0CBH 已知程序执行前有 A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序执行后: POP DPH POP DPL MOV DPTR,#4000H RL A MOV B,A MOVC A,@A+DPTR PUSH A MOV A,B INC A MOVC A,@A+DPTR PUSH A
RET ORG 4000H DB 10H, 80H,30H, 50H, 30H, 50H 请问:A=(),SP=(),(5H)=(),(52H)=(),PC=() 答:A=50H,SP=50H,(51H=30H,(52H=50H,PC=5030H 在串行数据通讯中,由于传输距高较远,数据信号在传输过程中可能发生畸变,从而引起误码, 为了保证传输质量,软件上可采取排错措施,例如采用串行口方式2,传送11位数据时,可用 第9位数据作为奇偶检验。下面的程序是发送端发送一个字节数据及奇偶位,请完善程序。 MOV SCON #80H 选串行口方式2,传送11位数据 MOV A. #DATA 待发送8位数据送A,注意此时A的 内容将影响PSW中的奇偶标志P,即PSW.0 MOV C. PSW.O ;奇偶标志送C,奇为1、偶为0 MOV TB8. C ;奇偶标志送TB8,待发送的第9位 MOV SBUF.A ;启动一次发送共11位数据 LOOP: JBC TI,NEXT;TI=1时,一帧数据发完,清TI转下 SMP LOOP NEXT 判断P1口输入的数据若为负则转DIR,否则转MIN 方法1:8000E590 MIN: MOvA, PI 800233 RLC A 800340el IC DIR 800580e2 SMP MIN 8007 求偏移量:e=〔目的地址-下条指令地址〕补码 el=(800AH-8005H)补码=05H e2=〔8000H-8007H)补码=(-7)补码=F9H
RET ORG 4000H DB 10H,80H,30H,50H,30H,50H 请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( )。 答:A=50H , SP=50H , (51H)=30H , (52H)=50H , PC=5030H 在串行数据通讯中,由于传输距离较远,数据信号在传输过程中可能发生畸变,从而引起误码, 为了保证传输质量,软件上可采取排错措施,例如采用串行口方式 2,传送 11 位数据时,可用 第 9 位数据作为奇偶检验。下面的程序是发送端发送一个字节数据及奇偶位,请完善程序。 MOV SCON, #80H ;选串行口方式 2,传送 11 位数据 MOV A, #DATA ;待发送 8 位数据送 A,注意此时 A 的 内容将影响 PSW 中的奇偶标志 P ,即 PSW.0 MOV C , PSW.0 ;奇偶标志送 C,奇为 1、偶为 0 MOV TB8 , C ;奇偶标志送 TB8 ,待发送的第 9 位 MOV SBUF , A ;启动一次发送共 11 位数据 LOOP: JBC TI ,NEXT ;TI = 1 时,一帧数据发完,清 TI 转下 SJMP LOOP ……………. NEXT:… 判断 P1 口输入的数据若为负则转 DIR,否则转 MIN。 方法 1:8000 E5 90 MIN : MOV A,P1 8002 33 RLC A 8003 40 e1 JC DIR 8005 80 e2 SJMP MIN 8007 。。。 800A DIR: 。。。 求偏移量:e = 〔目的地址 – 下条指令地址〕补码 e1 = 〔800A H - 8005H〕补码=05H e2 = 〔8000H – 8007H〕补码=〔-7〕补码=F9H
以6MHZ晶振为例 1振荡周期=1/6M=1/6us 1状态周期=2×振荡周期=1/3us 1机器周期=12/2s 1指令周期=2~8μs执行每条指令需要的机器周期数可在指令表中查到。 延时程序就是计算机重复执行一些指令,累积的时间就是软件延时的时间。 例 每条指令执行 执行 总机器 机器周期数T 次数 周期数 D15MS: MOV R5, #N DDI: MOV R7, #M DD2: NOP MNNOP MIN MNDNZ R7, DD2 MN 2MNDJNZ R5, DDI 2NRET 2执行该程序所需总机器周期数为:5MN+3N+3 忽略3机器周期,令该延时程序延时时间等于15ms, 以6MHZ为例,T=2μs则:(5MN+3N)×2×106=15×103 取M=100则 当N=14,延时时间为14084ms 当N=15,延时时 间为1509ms例:在累加器A中的存放一个0-7的数据,由该数据控制程序转向转向8个 子程序中的一个。说明:PROC1PROC8是8个子程序名。*程序清单: START:ANLA,#7H;屏蔽高5位 MOVB,#3;LJMP为3字节 MUL AB MOV DPTR.#BRNH JMP QA+DPTR BRNH: LJMP PROC1 LIMP PROC2 LIMP PROC3 LIMP PROC4 LIMP PROC5 LIMP PROC6 LIMP PROC7 LJMP PROCS 四编程题
以 6MHZ 晶振为例: 1 振荡周期=1/6M=1/6μs 1 状态周期=2×振荡周期=1/3μs 1 机器周期=12/f= 2μs 1 指令周期=2~8μs 执行每条指令需要的机器周期数可在指令表中查到。 延时程序就是计算机重复执行一些指令,累积的时间就是软件延时的时间。 例: 每条指令执行 执行 总机器 机器周期数 T 次数 周期数 D15MS:MOV R5, #N 1 1 1 DD1: MOV R7, #M 1 N N DD2: NOP 1 MN MNNOP 1 MN MN NOP 1 MN MNDJNZ R7,DD2 2 MN 2MNDJNZ R5, DD1 2 N 2NRET 2 1 2 执行该程序所需总机器周期数为: 5MN+3N+3 忽略 3 机器周期,令该延时程序延时时间等于 15ms, 以 6MHZ 为例,T=2μs 则:(5MN+3N)×2×10-6=15×10-3 取 M=100 则: 当 N=14 ,延时时间为 14.084ms 当 N=15 , 延时时 间为 15.09ms 例:在累加器 A 中的存放一个 0~7 的数据,由该数据控制程序转向转向 8 个 子程序中的一个。说明:◆PROC1~PROC8 是 8 个子程序名。程序清单: START: ANL A,#07H;屏蔽高 5 位 MOV B, #3 ;LJMP 为 3 字节 MUL AB MOV DPTR,#BRNH JMP @A+DPTR BRNH: LJMP PROC1 LJMP PROC2 LJMP PROC3 LJMP PROC4 LJMP PROC5 LJMP PROC6 LJMP PROC7 LJMP PROC8 四 编程题
1.试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则 将51H单元置为“0IH”;若未找到,则将5H单元置为“00H”。 答: START MOV RO,#30H MOV R2.#20H LOOP MOV A,、 CJNE A, #OAAH, NEXT MOV 51H#OlH LIMP EXIT NEXT INC DJNZ R2. LOOP MOV 51H#OOH EXIT: RET 2.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方 式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的 频率为6MHz,请使用方式1实现,要求编写出程序。 解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数 工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志 位识别下一轮定时器/计数器T0的工作方式。编写程序如下: ORG 0000H LJMP MAIN ORG 00BH LJ MP ITOP MAIN: MOV TMOD,#06H:定时器/计数器T0为计数方式2 MOVT0,#156 计数100个脉冲的初值赋值 MOV THO.#156 SETB GAtE 打开计数门 SETB TRO 启动T0,开始计数 SETB ETO 允许T0中断 SETB EA CPU开中断 CLR 设置下一轮为定时方式的标志位 WAIT. AJMP WAIT ITOP. CLR EA 关中断 F0, COUNT:FO=1,转计数方式设置 MOV TMOD,#00H:定时器/计数器T0为定时方式0 MOV TH0,#OFEH:定时lms初值赋值 MOV TLO.#OCH SETB EA SETB FO RET COUNT MOV TMOD#06H MOV TLO.#156 SETB EA LR FO RET
1.试编写程序,查找在内部 RAM 的 30H~50H 单元中是否有 0AAH 这一数据。若有,则 将 51H 单元置为“01H”;若未找到,则将 51H 单元置为“00H”。 答:START: MOV R0,#30H MOV R2,#20H LOOP: MOV A,@R0 CJNE A,#0AAH,NEXT MOV 51H,#01H LJMP EXIT NEXT: INC R0 DJNZ R2,LOOP MOV 51H,#00H EXIT: RET 2.采用定时器/计数器 T0 对外部脉冲进行计数,每计数 100 个脉冲后,T0 转为定时工作方 式。定时 1ms 后,又转为计数方式,如此循环不止。假定 MCS-51 单片机的晶体振荡器的 频率为 6MHz,请使用方式 1 实现,要求编写出程序。 解答:定时器/计数器 T0 在计数和定时工作完成后,均采用中断方式工作。除了第一次计数 工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志 位识别下一轮定时器/计数器 T0 的工作方式。编写程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#06H ;定时器/计数器 T0 为计数方式 2 MOV TL0,#156 ;计数 100 个脉冲的初值赋值 MOV TH0,#156 SETB GATE ;打开计数门 SETB TR0 ;启动 T0,开始计数 SETB ET0 ;允许 T0 中断 SETB EA ;CPU 开中断 CLR F0 ;设置下一轮为定时方式的标志位 WAIT: AJMP WAIT IT0P: CLR EA ;关中断 JB F0,COUNT ;F0=1,转计数方式设置 MOV TMOD,#00H ;定时器/计数器 T0 为定时方式 0 MOV TH0,#0FEH ;定时 1ms 初值赋值 MOV TL0,#0CH SETB EA SETB F0 RETI COUNT: MOV TMOD,#06H MOV TL0,#156 SETB EA CLR F0 RETI