(整理)单片机基础修订本答案
单片机答案

答:PC是一个16位的地址寄存器,用于存放将要从ROM中读出的下一字节指令码的地址,因此也称为地址指针。PC的基本工作方式有:1)自动加1。CPU从ROM中每读一个字节,自动执行PC+1→PC。2)执行转移指令时,PC会根据该指令要求修改下一次读ROM新的地址。3)执行调用子程序或发生中断时,CPU会自动将当前PC值压入堆栈,将子程序入口地址或中断入口地址装入PC;子程序返回或中断返回时,恢复原有被压入堆栈的PC值,继续执行原顺序程序指令。
6.试述P3口的第二功能。
答:P3.0-RXD:串行口输入端,P3.1-TXD:串行口输出端,P3.2- :外部中断0请求输入端,P3.3- :外部中断1请求输入端,P3.4-T0:定时/计数器0外部信号输入端,P3.5-T1:定时/计数器1外部信号输入端,P3.6- :外RAM写选通信号输出端,P3.7- :外RAM讯选通信号输出端。
11.简述单片机CPU写存储器的步骤过程。
答:存储器的写操作:例如,若要将数据ABH写入存储器地址为CDH的存储单元中,其简化过程如下:
1)CPU将地址码CDH送到地址总线上,经存储器地址译码器选通地址为CDH的存储单元;2)CPU将数据ABH送到数据总线上;3)CPU发出“写”信号,存储器读/写控制开关将数据传送方向拨向“写”;4)存储器将数据总线上的数据ABH送人已被选中的地址为CDH的存储单元中。
2.设N1=+1001011B,N2=-1010100B,求:N1,N2的真值、N1,N2的原码、N1,N2的反码和N1,N2的补码。
解:
真值:N1=+1001011B,N2=-1010100B
原码:N1=01001011B,N2=11010100B
单片机习题答案

单片机原理及应用作业参考答案 1.2 单片机的结构特点表现在哪些主要方面? . 单片机的结构特点表现在哪些主要方面? 答: (1)在存储器结构上,严格将程序存储器和数据存储器在空间上分开,并使用不同的寻址方式,使用两个不同的地址指针; (2)在内部有一个全双工的串行接口; (3)有一个独立进行操作的位处理器. 1.4 通用单片机的供应状态主要取决于什么?供应状态有哪几种?用户选用单片机的供应状态的原则. 通用单片机的供应状态主要取决于什么?供应状态有哪几种? 是什么? 是什么? 答:通用单片机的供应状态主要取决于片内ROM 的配置状态. (1)片内ROM 的配置状态掩膜ROM,适合于低成本.大批量产品的场合(2)片内EPROM 配置状态可通过高压脉冲写入应用程序到EPROM,适合于开发样机,小批量生产. (3)片内无ROM 配置状态必须外扩EPROM,价格低,使用灵活,适合于需要外接能在现场进行修改和更新程序存储器的应用场合. 2.3 单片机的EA 端有何功用?8031 的EA 端应如何处理,为什么? . 端有何功用? 端应如何处理,为什么? 答: EA 端是访问外部程序存储器的控制信号:当EA 无效时,访问内部ROM,当EA 为有效时,访问外部ROM.由于8031 没有内部ROM,所以EA 端必须接低电平. 2. MCS-51 引脚中有多少I/O 线?它们与单片机对外的地址总线, . 4 它们与单片机对外的地址总线, 数据总线和控制总线有什么关系? - 数据总线和控制总线有什么关系? 地址总线和数据总线各是几位? 地址总线和数据总线各是几位? 答:MCS-51 引脚中有32 根I/O 线,一般由P0 口提供单片机对外的数据总线,同时作为分时复用的地址总线的低8 位, P2 口作为地址总线的高8 位, 由控制总线由第二功能的状态下的P3 口以及RST, , EA ALE 和PSEN 提供. 2.5 8051 单片机的内部数据存储器可以分为哪几个不同的区域?各有什么特点? . 单片机的内部数据存储器可以分为哪几个不同的区域?各有什么特点? 答:数据存储器主要分为两个区域:00H~7FH 是真正的RAM 区,80H~FFH 专门用作特殊功能寄存器的区域. 其中00H~7FH 可分为三个区域: 00H~1FH 为四组工作寄存器; 20H~2FH 为128 位位寻址区, 30H~7FH 为一般RAM 区. 2.6 单片机对外有几条专用控制线?其功能是怎样的? . 单片机对外有几条专用控制线?其功能是怎样的? 答:单片机对外的专用控制线有 4 条,分别是: (1) PSEN : 外部取指操作,在访问外部ROM 时, PSEN 信号自动产生; (2)ALE/ PROG :ALE 为地址锁存允许信号,在访问外部ROM 或RAM 时,用来锁存P0 口的低8 位地址.第二功能PROG 是对8751 的EPROM 编程时,编程脉冲输入. 1 (3) EA /VPP: EA 是访问外部程序存储器的控制信号, EA 无效时,访问内部ROM, EA 有效时,访问外部ROM,第二功能VPP 为对8751EPROM 的21V 编程电源输入. (4)RST/VPD:RST 是复位信号输入端,第二功能VPD 是备用电源输入端. 2.8 有哪几种方法使单片机复位?复位后各寄存器,RAM 中的状态如何? 中的状态如何? . 有哪几种方法使单片机复位?复位后各寄存器, 答:单片机的复位方式有两种,上电自动复位和按钮复位.复位后各寄存器状态为: PC 0000H ACC 00H PSW 00H SP 07H DPTR 0000H P0~P3FFH IP XX000000B IE 0X000000B TMOD 00H TCON 00H TL0 00H TH0 00H TL1 00H TH1 00H SCON 00H SBUF XXH PCON 0XXX0000B 2.9 在8051 扩展系统中,片外程序存储器和片外数据存储器使用相同的地址编址,是否会在数据总线扩展系统中,片外程序存储器和片外数据存储器使用相同的地址编址, . 上出现争总线的现象?为什么? 上出现争总线的现象?为什么? 答:不会发生争总线的现象,因为从外部ROM 取指令需要用ALE 和PSEN 信号控制读取操作,由P2 和P0 提供地址;而片外数据存储器的读写除了地址之外还要RD , WR 控制,所以不会争总线. 2.10 如果8051 端口P0~P3 作为通用I/O 口使用,则在输入引脚数据时应注意什么? . 口使用,则在输入引脚数据时应注意什么? ~答:8051 的P1,P2 和作为一般输入I/O 口的P 以及第一功能的P3 口均为准双向口,在输入数据时应先向端口写1,然后方可作为高阻输入.以使其场效应管T2 截止,才不会影响输入电平. 3.2 若要完成以下的数据传送,应如何用MCS-51 的指令实现? . 若要完成以下的数据传送, 的指令实现? (1)R1 的内容传送到R0 (5)ROM2000H 单元的内容传送到R0 MOVA,R1 MOV DPTR,#2000H MOV R0,A CLR A MOVC A,@A+DPTR (2) 外部RAM20H 单元的内容传送到R0 MOV R0,#20H MOV R0,A MOVX A,@R0 (6)ROM2000H 单元的内容传送到内部RAM20H 单元MOV R0,A MOV DPTR,#2000H CLR A (3)外部RAM20H 单元的内容传送到内MOVC A,@A+DPTR 部RAM20H 单元MOV R0,#20H MOV 20H,A MOVX A,@R0 (7)ROM2000H 单元的内容传送到外部RAM20H 单元MOV 20H,A MOV DPTR,#2000H CLR A (4)外部RAM1000H 单元内容传送到内MOVC A,@A+DPTR 部RAM20H 单元MOV DPTR,#1000H MOV R0,#20H MOVX A,@DPTR MOVX @R0,A MOV 20H,A 3.3 间接转移指令JMP @A+DPTR 有何优点?为什么它能代替众多的判跳指令?试举例说明. 有何优点?为什么它能代替众多的判跳指令?试举例说明. . 答:该间接转移指令的转移地址由 A 的内容和数据指针DPTR 的内容之和决定,且两者都是无符号数, 由DPTR 决定多分支转移程序的首地址, A 的不同值实现多分支转移. 由因为可以根据A 的内容进行分支转移,所以可以替代众多判跳指令. 如:根据 A 的内容调用相应的程序,如 A 为0 调用OP0,A 为 1 调用OP1,这里 A 的值小于128. MOV DPTR,#OPTAB 2 A @A+DPTR … OPTAB: ACALL OP0 ACALL OP1 ACALL OP2 … 3.4 设内部RAM 的30H 单元的内容为40H,即(30H)= )=40H,还知(40H)= )=10H, (10H)= )=00H, . , )= ,还知( )= , ( )= , 端口P1=0CAH.问执行以下指令后,各有关存储器单元,寄存器以及端口的内容(即R0,R1,A,B, = .问执行以下指令后,各有关存储器单元,寄存器以及端口的内容( , , , , P1 以及40H,30H,10H 单元的内容) 单元的内容) , , . MOV R0,#30H ; (R0)=30H MOV A,@R0 ;(A)=(30H)=40H MOV R1,A ; (R1)=40H MOV B,@R1 ; (B)=(40H)=10H MOV @R1,P1 ; (40H)=0CAH MOV P2,P1 ; (P2)=0CAH MOV 10H,#20H ; (10H)=20H MOV 30H,10H ; (30H)=20H 3.5 已知8751 单片机的P1 口为输出,经驱动电路接有8 只发光二极管.当输出位是1 时,发光二极 . 口为输出, 只发光二极管. 管点亮; 时发光二极管熄灭.试分析下述程序的执行过程及发光二极管的发光情况. 管点亮;输出位是0 时发光二极管熄灭.试分析下述程序的执行过程及发光二极管的发光情况. LP: MOV P1,#81H ;1000 0001B LCALL DELAY LCALL DELAY MOV P1,#24H ;0010 0100B MOV P1,#42H ;0100 0010B LCALL DELAY LCALL DELAY MOV P1,#42H ;0100 0010B MOV P1,#24H ;0010 0100B LCALL DELAY LCALL DELAY SJMP LP MOV P1,#18H ;0001 1000B 答:程序执行MOV P1,#DATA 后,根据DATA 的每位的值点亮相应的LED,调用延时程序使点亮的LED 保持一段时间.LED 发光的情况为:每次同时点亮两个LED 并从两边向中间移动,然后再向两边移动, 并一直循环. 3.6 在上题中,若系统的晶体振荡器频率为6MHz,求子程序DELAY 的延时时间. 的延时时间. . 在上题中, , DELAY: MOV R2,#0FAH ;①2S L1: MOV R3,#0FAH ;②2S L2: DJNZ R3,L2 ;③4S DJNZ R2,L1 ;④4S RET ;⑤4S 0FAH=250D 其中③执行250 次,执行时间为250×4S 其中②③④循环250 次,该循环执行时间为(2+250×4+4)×250S 加上①和⑤的执行时间,DELAY 的延时时间为2+(2+250×4+4)×250+4=251.506ms 延时程序的设计: 延时程序的设计: 首先设计内循环: MOV R3,#data1 ;2s NOP ;2s DJNZ R3,$ ;4s×data1 延时时间t1=2+2+4×data1=4×(data1+1)=1000s=1ms,则data1=249 3 RL JMP 若需要大于1ms 时间,则先增加一层循环MOV R2,#data2 ;2s L1: MOV R3,#data1 ;2s NOP ;2s DJNZ R3,$ ;4s×data1 DJNZ R2,L2 ;(4s+t1)×data2 延时时间为:2+(4s+t1)×data2=2+[4s+4×(data1+1)]×data2= =2+4×(data1+2)×data2=250ms,这里将data1 修正为248, 得2+4×(248+2)×data2=2+1000×data2=250ms 则data2=250 3.7 根据图3-3 线路,试设计灯亮移位程序,使8 只发光二极管每次亮一个,循环右移或左移,一个一线路,试设计灯亮移位程序, 只发光二极管每次亮一个,循环右移或左移, . 个地亮,循环不止. 个地亮,循环不止. MOV A,#80H DIS: MOV P1,A ACALL DELAY RR A AJMP DIS 3.8 设逻辑运算表达式为: . 设逻辑运算表达式为: Y = A (B + C) + D (E + F ) 其中变量A,B,C 分别为P1.0,P1.4,定时器1 溢出标志TF1,D,E,F 分别为22H.0,22H.3,外中断, , , , , , , , , 现上述逻辑功能的程序段. 方式标志IE1;输出变量为P1.5.试编写实现上述逻辑功能的程序段. ; .试编写实现上述逻辑功能的程序段MOV C,P1.4 ORL ANL MOV MOV ORL ANL CPL ORL MOV C,/TF1 C,P1.0 F0,A C,22H.3 C,/IE1 C,22H.0 C C,/F0 P1.5,C ; (B + C) ; A (B + C) ;用户自定义标志位,暂存数据;(E + F ) ; D (E + F ) ; D (E + F ) ; A (B + C) + D (E + F ) 4.1 试设计数据块传送程序,将起始地址为0400H 的100 个连续单元中的内容送到以4000H 为首址的区. 试设计数据块传送程序, 域中去解:分析:地址为16 位,且进行数据传送,所以连续单元应为外部的存储器,只能使用外部数据传送指令,由于源和目的地址都为16 位,所以要保存DPTR 的值,但源低8 位和目的低8 位相同,可以用一个寄存器保存. MOV R0,#00 NEXT: MOV DPH,#04H MOV DPL,R0 MOVX A,@DPTR MOV DPH,#40H MOVX @DPTR,A INC R0 CJNE R0,#100,NEXT 4.2 试编写程序,计算片内RAM 区40H~47H8 个单元中数的算术平均值,结果存放在4AH 中. 个单元中数的算术平均值, . 试编写程序, ~解:分析:8 个数总和最大值为FFH×8=7F8H,所以求和时必须用两字节加法,设R7 保存和高8 位, R6 保存低8 位,求和后再除以8 即得算术平均值,这里需使用16/8 除法,但因为除数为23,所以可以直4 接通过算术右移3 位实现除以8,前提存储的数据为无符号数. MOV MOV MOV NEXT : MOV INC ADD MOV CLR A ADDC MOV CJNE MOV DIV8: CLR C MOV RRC MOV MOV RRC MOV DJNZ R0,#40H R6,#00H R7,#00H A,@R0 R0 A,R6 R6,A ;和低字节清零;和高字节清零;取出一个字节;地址指针下移;低字节求和;保存和的低字节A,R7 ;如果低字节求和有进位,则加至高字节R7,A ;保存和的高字节R0,#48H,NEXT R1,#03H ;循环移位 3 次,实现除以8 A,R7 A R7,A A,R6 A R6,A R3,DIV8 ;高字节先移位,将D0 移至C ;将C 移入低字节的D7,从而实现16 位数据的移位16 位除以8 位除法子程序: 位除法子程序: 被除数R6R5,除数R4,商R3R2,余数R1 DIV168: JC NEXT MOV R3,#00H MOV A,R2 MOV R1,#00H ADD A,#01H NEXT2: MOV R2,A CLR C JNC NEXT2 MOV A,R5 INC R3 SUBB A,R4 AJMP NEXT2 MOV R5,A NEXT: MOV A,R5 MOV A,R6 ADD A,R4 SUBB A,#00H MOV R1,A MOV R6,A RET 4.3 设有两个长度为15 的数组,分别存放在0200H 和0500H 为首地址的存储区域中,试编写程序求的数组, 为首地址的存储区域中, . 其对应项之和, 为首地址的存储区域中. 其对应项之和,结果存放在以0300H 为首地址的存储区域中. 解:分析:0200H 和0500H 都是片外地址,必须利用MOVX 指令获取数据,这将导致DPTR 使用不方便,解决办法: (1)0200H,0500H 和0300H 低字节地址相同,可以共用DPL,DPH 单独处理; (2)可以考虑先将两个存储区的数据先转移到内部RAM 中,然后再进行运算. 这里只是求对应项之和,并不是多位数求和,两数相加,可能产生进位,这里应该只考虑没有进位的情况. 这里采用第一种方法 5 MOV R0,#15 MOVX A,@DPTR MOV DPL,#00H ADD A,B NEXT: MOV DPH,#02H MOV DPH,#03H MOVX A,@DPTR MOVX @DPTR,A MOV B,A INC DPTR MOV DPH,#05H DJNZ R0,NEXT 4.4 在起始地址为2100H,长度为64 的数表中找 F 的ASCII 码,并将其地址送到1000H 和1001H 单. , 元中去. 元中去. 解:都为RAM 单元,只要找到"F" ,则停止查找.利用寄存器R7 保存高8 位地址,R6 保存低8 位地址. SF: MOV DPTR,#2100H MOVX @DPTR,A MOV R0,#64 INC DPTR NEXT1:MOVX A,@DPTR MOV A,R7 CJNE A,#4FH,NEXT2 MOVX @DPTR,A MOV R7,DPH AJMP SFEND MOV R6,DPL NEXT2:INC DPTR MOV DPTR,#1000H DJNZ R0,NEXT1 MOV A,R6 SFEND: RET 4.5 设计一个多字节无符号数加法子程序和减法子程序. . 设计一个多字节无符号数加法子程序和减法子程序. 解: (1)多字节无符号数加法(2)多字节无符号数减法设R0 为加数首地址,R1 为被加数首地址,R2 设R0 为被减数首地址,R1 为减数首地址,R2 为字节数为字节数JIAFA: CLR C JIANFA: CLR C NEXT: MOV A,@R0 NEXT: MOV A,@R0 ADDC A,@R1 SUBB A,@R1 MOV @R0,A MOV @R0,A INC R0 INC R0 INC R1 INC R1 DJNZR2,NEXT DJNZ R2,NEXT RET RET 4.6 试设计一个双字节无符号数乘法子程序和除法子程序. . 试设计一个双字节无符号数乘法子程序和除法子程序. 解:设被乘数为R7R6,乘数为R5R4,结果存于R3R2R1R0 设被除数为R7R6,除数为R5R4,商存于R3R2,余数存于R1R0 将被除数减除数,够减商加1,然后将差作为被减数,继续前面的减法操作,直到不够减为止,这时需要恢复余数. 6 MUL1616:MOV MOV MUL MOV MOV MOV MOV MUL ADD MOV A,R6 B,R4 AB R0,A R1,B A,R7 B,R4 AB A,R1 R1,A MOV ADC MOV MOV MOV MUL ADD MOV MOV ADC A,B A,#0 R2,A A,R6 B,R5 AB A,R1 R1,A A,B A,R2 MOV MOV MOV MUL ADD MOV MOV ADC MOV RET R2,A A,R7 B,R5 AB A,R2 R2,A A,B A,#0 R3,A DIV1616:MOV DPTR,#0 JC NEXT MOV R1,A LOOP: CLR C INC DPTR MOV A,DPH MOV A,R6 JMP LOOP MOV R3,A SUBB A,R4 NEXT: MOV A,R6 MOV A,DPL MOV R4,A ADD A,R4 MOV R2,A MOV A,R7 MOV R0,A RET SUBB A,R5 MOV A,R7 MOV R7,A ADC A,R5 4.7 在3000H 为首的存储器区域中,存放着14 个由ASCII 码表示的0~9 之间的数,试编写程序将它为首的存储器区域中, . ~之间的数, 单元中. 们转换成BCD 码,并以压缩BCD 码的形式存放在2000H~2006H 单元中. ~解:0~9 的ASCII 码为30H~39H,首先必须去掉其中的3,可以通过减去30H 实现,也可通过ANL 实现.另外还得将两个BCD 码压缩成一个BCD 码,注意低地址对应低字节,比如3000H 为31H(低字节) ,3001H 为38H(高字节) ,合并后应为81H,存于2000H 单元,可利用ORL 或ADD 进行合并. 由于涉及到源和目的地址都为16 位,为了方便操作,现将转换结果存于内部RAM. MOV R0,#30H MOV @R0,A MOV R1,#14 INC R0 MOV DPTR,#3000H CJNE R1,#37H,NEXT MOV R0,#30H NEXT: MOVX A,@DPTR ;取出低字节MOV DPTR,#2000H INC DPTR ;源区地址指针下移NEXT2:MOV A,@R0 ANL A,#0FH ;低字节转换为BCD 码INC R0 MOV R4,A ;暂存数据MOVX @DPTR,A MOVX A,@DPTR ;取出高字节INC DPTR INC DPTR CJNE R0,#37H,NEXT2 ANL A,#0FH ;高字节转换为BCD 码SW AP A ;高低四位互换ORL A,R4 ;将两个BCD 码合并 4.8 编写一段程序,模拟如图所示的逻辑电路的逻辑功能,要求将四个输入与非门的逻辑模拟先写成一. 编写一段程序,模拟如图所示的逻辑电路的逻辑功能,要求将四个输入与非门的逻辑模拟先写成一个子程序,然后以多次调用得到整个电路的功能模拟. 都已定义为位地址, 个子程序,然后以多次调用得到整个电路的功能模拟.设X,Y,Z 和W 都已定义为位地址,若程序中还, , 需要其他地址标号,也可以另行定义. 需要其他地址标号,也可以另行定义. 解: 方法一:设计四输入与非门子程序,利用子程序必定要传递参数,但位操作的传送指令必须由C 完成,所以调用子程序时参数传递较复杂. 7 MOV MOV MOV CPL MOV MOV MOV MOV MOV ACALL MOV SETB MOV MOV MOV MOV MOV MOV ACALL MOV C,W 00H,C C,Z C 01H,C C,Y 02H,C C,X 03H,C NAND4 04H,C 00H C,X 01H,C C,Y 02H,C C,Z 03H,C NAND4 05H,C CPL MOV CPL MOV MOV MOV ACALL SETB MOV MOV MOV MOV MOV ACALL MOV AJMP NAND4: ANL ANL ANL CPL C RET END 01H C,Y C 02H,C C,W 03H,C NAND4 00H 01H,C C,04H 02H,C C,05H 03H,C NAND4 F,C $ MOV C,00H C,01H C,02H C,03H SETB 00H MOV C,X MOV 01H,C 方法二:利用宏实现MACRO,宏可以带参数,所以参数传递将很方便NAND4 MACRO A1,A2,A3,A4 MOV ONE,C MOV C,A1 NAND4 X,Y,ONE,W ANL C,A2 MOV 04H,C ANL C,A3 SETB ONE ANL C,A4 NAND4 X,Y,ONE,W CPL C MOV 05H,C ENDM CPL Y SETB ONE ORG 0000H NAND4 X,Y,ONE,W AJMP MAIN MOV 06H,C ORG 0030H SETB ONE MAIN: MOV C,Z NAND4 04H,05H,06H,ONE CPL C MOV F,C 5.3 已知8051 单片机系统时钟频率为6MHz,试利用定时器T0 和P1 口输出矩形脉冲,其波形如图所. 口输出矩形脉冲, , 示(建议用方式2) ) . 解:定时器T0 的工作方式:方式2,定时方式,所以TMOD 为:0000010(02H) 定时初值: 8-TH0 初值)×时钟周期×12=(28-X)×(1/6M)×12=40s (2 X=236=0ECH,360s 则为9 次定时中断MOV TMOD,#02H JNB TF0,$ CLR TF0 MOV TH0,#0ECH MOV TL0,#0ECH NEXT1: CLR P1.0 CLR P1.0 WAIT2: JNB TF0,$ SETB TR0 CLR TF0 DJNZ R0,WAIT2 NEXT3: MOV R0,#09H SETB P1.0 AJMP NEXT3 8 5.4 要求8051 单片机定时器的定时值以内部RAM 的20H 单元的内容为条件而改变;当(20H)= . 单元的内容为条件而改变; )=00H )= )=01H 时,定时值为20ms.请根据以上要求编写相应程序. 时,定时值为10ms;当(20H)= ; )= .请根据以上要求编写相应程序. 解:采用定时器T0,工作方式:方式1,定时方式,所以TMOD 为:0000001(01H) 定时初值:216-T0 初值) ( ×时钟周期×12= 16-X) (2 ×(1/6M)×12= 16-X) (2 2s=10[(20H)+1]1000s X = 65536 10[(20H) + 1]1000 = 65536 5000 5000 ×(20H) 2 = 60536 5000(20H ) = EC 78H 1388H × (20H ) (这里20H 单元的内容最大为12,否则超出16 为定时器的范围) TIMER:MOV A,20H MOV B,#88H MUL AB ;88H×(20H) MOV R0,A ;R0 保存低字节MOV R1,B ;R1 保存高字节MOV A,20H MOV B,#13H MUL AB ;13H×(20H) ADD A,R1 MOV R1,A ;只要限制20H 单元内容小于13,1388H×(20H)即为两字节CLR C MOV A,78H SUBB A,R0 ;78H 减去1388H×(20H)的低字节MOV TL0,A MOV A,#0ECH SUBB A,R1 ;ECH 减去1388H×(20H)的高字节MOV TH0,A MOV TMOD,#01H SETB TR0 W AIT: JNB TF0,WAIT RET ;定时时间到上述定时初值的设置适合(20H)为00H~12H,即可以实现10ms~190ms 的定时. 若仅仅是10ms 和20ms 两种情况,初值设置将更简单X 00 H = 60536 = EC 78H TIMER: MOV CJNE MOV MOV AJMP NEXT1: CJNE X 01H = EC 78H 1388H ×(01H ) = D8F0H MOV MOV NEXT2: MOV SETB WAIT: JNB RET TH0,#0D8H TL0,#0F0H TMOD,#01H ;T0 工作方式TR0 TF0,WAIT ;定时时间到A,20H A,#00H,NEXT1 TH0,#0ECH TL0,#78H NEXT2 A,#01H,NEXT2 5.5 试用定时器T1 设计外部事件计数器.要求每计数1 万个脉冲,就将T1 转为10ms 定时方式,当. 设计外部事件计数器. 万个脉冲, 定时方式, 定时到后,又转为计数方式,如此反复循环不止. 定时到后,又转为计数方式,如此反复循环不止.设系统的时钟频率为6MHz,建议选用方式 1 编写相, 应程序. 应程序. 解:T1 工作方式为方式1,计数方式:TMOD:01010000(50H) ,定时方式:TMOD:00010000(10H) 计数初值X=M-计数模值=65536-10000=55536=D8F0H 定时初值(65536-X)×2=10000,X=60536=EC78H MAIN: MOV TMOD,#50H WAIT1: JBC TF1,NEXT1 MOV TL1,#0F0H AJMP W AIT1 MOV TH1,#0D8H NEXT1: MOV TMOD,#10H SETB TR1 MOV TL1,#78H 9 MOV W AIT2: JBC TH1,#0ECH TF1,MAIN AJMP W AIT2 5.7 利用8051 单片机定时器测量某正脉冲宽度宽度,采用何种工作方式可以获得最大的量程?若时钟. 单片机定时器测量某正脉冲宽度宽度,采用何种工作方式可以获得最大的量程? 频率为6MHz,则允许测量的最大脉宽是多少? ,则允许测量的最大脉宽是多少? 解:要获得最大量程,那么定时/计数器的计数值必须达到最大,只有方式 1 是工作在16 位计数模式. 因为测脉宽,所以定时/计数器工作于定时方式,且由外部中断引脚电平启动定时. 最大定时时间为: (M-X)×T=(65536-0)×12×1/6MHz=131.072ms 7.3 某异步通讯接口,其帧格式由一个起始位,7 个数据位,1 个奇偶校验位和一个停止位组成.当该. 某异步通讯接口,其帧格式由一个起始位, 个数据位, 个奇偶校验位和一个停止位组成. 接口每分钟传送1800 个字符时,计算其传送波特率. 个字符时,计算其传送波特率. 解:由帧格式可知:一个字符由1+7+1+1=10 位组成,波特率=1800×10/60=300 波特. 7. 为什么定时器T1 用作串行口波特率发生器时常采用工作方式2?若已知T1 设置成方式2, . 6 ? , 用作波特率发生器, 特率发生器,系统时钟频率为11.0592MHz,求可能产生的最高和最低的波特率各是多少? ,求可能产生的最高和最低的波特率各是多少? 答:因为定时器T1 的方式 2 为自动重装定时初值,这样操作方便,也避免了因重装定时初值引起的定 2 SMOD f OSC 1 时误差.由波特率= × 32 12 256 初值当初值为0,SMOD=0 时,得到最低波特率=112.5 当初值为255,SMOD=1 时,得到最低波特率=57.6K 7.7 在8051 应用系统中,时钟频率为6MHz.现需利用定时器T1 方式 2 产生1200 波特的波特率.试. 应用系统中, 波特的波特率. . 计算定时器的初值,并指出实际得到的波特率与所要求的波特率是否有误差. 计算定时器的初值,并指出实际得到的波特率与所要求的波特率是否有误差. 解:根据波特率计算公式2 SMOD f OSC 1 ×32 12 256 初值 2 SMOD 6MHz 1 1 SMOD 1200 = × = 15625 × 2 32 12 256 初值256 初值当SMOD=0 时,初值为243,此时实际的波特率为:1201.92 当SMOD=1 时,初值为230,此时实际的波特率为:1201.92 所以实际波特率与要求的波特率有误差. 7.8 试设计一个8051 单片机的双机通讯系统,并编写程序将 A 机片内RAM40H~5FH 的数据块通过. 单片机的双机通讯系统, ~中去. 串行口传送B 机的片内RAM 60H~7FH 中去. ~解:该双机通讯系统,是将A 机数据发送到B 机,所以可以采用单工工作方式串行口采用方式 1 10 位异步收发,采用查询方式MOV R0,#40H A 机:发送MOV TMOD,#20H CLR TI MOV TL1,#0F3H NEXT: MOV A,@R0 MOV TH1,#0F3H INC R0 MOV SBUF,A SETB TR1 MOV SCON,#40H JNB TI,$ 10 CJNE R0,#60H, NEXT MOV R0,#60H AJMP $ NEXT: CLR RI JNB RI,$ B 机:接收MOV TMOD,#20H MOV A,SBUF MOV TL1,#0F3H MOV @R0,A MOV TH1,#0F3H INC R0 SETB TR1 CJNE R0,#80H, NEXT AJMP $ MOV SCON,#50H 8.1 8051 有几个中断源,各中断标志是如何产生的,又是如何复位的?CPU 响应中断时其中断入口地有几个中断源,各中断标志是如何产生的,又是如何复位的? . 址各是多少? 址各是多少? 答:8051 有5 个中断源,分别是外部中断0,定时器T0 中断,外部中断1,定时器T1 中断,串行口中断.中断入口地址分别为0003H,000BH,0013H,001BH,0023H. 定时器中断标志TF1 和TF0 是当计数器溢出时产生的,CPU 响应中断时能自动清除;外部中断IE1 和IE0 则是根据外部INT1 和INT0 的变化产生的, 只有边沿方式的IE1 和IE0 能在响应中断是自动清除, 电平方式的只能软件清除;串行口中断标志RI,TI 是在串行口接收和发送是产生的,它们只能利用软件清除. 8.3 如何区分串行通讯中的发送中断和接收中断? . 如何区分串行通讯中的发送中断和接收中断? 答:串行通讯中,发送和接收中断共用一个中断入口地址,但可以通过RI 和TI 标志判断是哪种中断, TI=1 表示发送中断,RI=1 表示接收中断. 8.4 如何设定外部中断源是采用边沿触发还是电平触发? 这两种中断触发所产生的中断过程有和不. 如何设定外部中断源是采用边沿触发还是电平触发? 同? 答:可通过IT1 和IT0 标志位进行设置,IT=0 时,为电平触发,IT=1 时,为边沿触发.电平触发,CPU 响应中断时不会清除IE 标志,所以中断返回前应撤销INT 引脚上的低电平;边沿触发方式,CPU 连续两个机器周期采样到先高后低的电平,则置位IE 标志,CPU 响应中断时由硬件清除IE 标志. 8.7 试用中断方法设计秒,分脉冲发生器,即由8051 的P1.0 每秒钟产生一个机器周期的正脉冲,由. 试用中断方法设计秒,分脉冲发生器, 每秒钟产生一个机器周期的正脉冲, P1.1 每分钟产生一个机器周期的正脉冲. 每分钟产生一个机器周期的正脉冲. 解:设系统时钟为6MHz,由定时器完成定时,最大定时时间为65536×2us=131096us=131.096ms,所以设置定时器定时时间为100ms,10 次定时为 1 秒钟,60 次一秒为一分钟,所以设置两个计数器分别对10 和60 计数(M-X)×2us=100ms,所以X=15536=3CB0H ORG 0000H MOV R4,#60 AJMP MAIN MOV R3,#10 ORG 0023H STB ET0 AJMP INTTIMER SETB EA MAIN: MOV TH0,#3CH INTTIMER: MOV TL0,#0B0H MOV TL0,#0B0H MOV TMOD,#01H MOV TH0,#3CH SETB TR0 DJNZ R3,INTEND CLR P1.0 SETB P1.0 CLR P1.1 CLR P1.0 11 MOV R3,#10 CLR P1.1 DJNZ R4,INTEND MOV R4,#60 SETB P1.1 INTEND: RETI 8.8 试运用定时器中断技术设计一个秒闪电路,其功能是使发光二极管LED 每秒钟闪亮400ms,设系统. 试运用定时器中断技术设计一个秒闪电路, , 主频为6MHz. . 答: 分析题目可知每秒钟LED 闪亮400ms, 也就是600msLED 灭, 那也就是只要LED 亮400ms, 600ms 灭即满足要求, 即要实现两个延时, 根据定时/计数器延时计算公式: (M-X) T=定时值, 最大定时值为65536 ×2us=131.072ms,不足400ms,所以设置基本延时为100ms,400ms 和600ms 定时通过多次基本延时实现. (M-X)×2us=100ms,所以X=15536=3CB0H 程序如下: LED ORG AJMP ORG AJMP MAIN: MOV MOV MOV SETB MOV STB SETB INTTIMER: MOV MOV INC CJNE CLR AJMP NEXT: CJNE SETB MOV INTEND: EQU P1.0 0000H MAIN 0023H INTTIMER TH0,#3CH TL0,#0B0H TMOD,#01H LED R3,#00H ET0 EA TL0,#0B0H TH0,#3CH R3 R3,#04H,NEXT LED INTEND R3,#0AH,INTEND LED R3,#00H RETI 12。
单片机课后习题答案

单片机原理、接口及应用——嵌入式系统技术基础习题解答预备篇计算机的基础知识40H,62H,50H,64H,7DH ,FFH812 ,104, 213, 256, 2936, 941机器数真值分别为: 27,233,-128,-8,14717,31467,-27824,-12478 (1) 33H+5AH=8DH, OV=1, CY=0。
(2) -29H-5DH=7AH, OV=0, CY=1。
(3) 65H-3EH=27H, OV=0, CY=1。
(4) 4CH-68H=E4H, OV=0, CY=0。
ASCII码表示的十六进制数分别为: 105H, 7CAH, 2000H,8A50H基础篇第1章、MCS-51单片机结构单片微型计算机(即单片机)是包含CPU、存储器和I/O接口的大规模集成芯片,即它本身包含了除外部设备以外构成微机系统的各个部分,只需接外设即可构成独立的微机应用系统。
微机处理器仅为CPU,CPU是构不成独立的微机系统的。
参见教材1.1.1节参见教材第6页表格参见教材表参见教材表和表当PSW=10H 表明选中的为第二组通用寄器R0~R7的地址为10H~17H程序存储器和数据存储器尽管地址相同,但在数据操作时,所使用的指令不同,选通信号也不同,因此不会发生错误。
内部数据程序外部数据程序振荡周期=μs 机器周期=2μs 指令周期=2~8μsA=0,PSW=0,SP=07,P0~P3=FFH第2章、51系列单片机的指令系统参见教材节因为A累加器自带零标志,因此若判断某内部RAM单元的内容是否为零,必须将其内容送到A,JZ指令即可进行判断。
当A=0时,两条指令的地址虽然相同,但操作码不同,MOVC是寻址程序存储器,MOVX是寻址外部数据存储器,送入A的是两个不同存储空间的内容。
目的操作数源操作数寄存器直接SP间接寻址直接直接直接直接立即寄存器间址直接寄存器间址寄存器Cy=1, OV=0, A=94H√ ×√ ×× ×√ √× √× ×× ×× √× ×× ×× ×A=25H (50H)=0 (51H)=25H (52H)=70HSP=(61H) (SP)=(24H)SP=(62H) (SP)=(10H)SP=(61H) DPL =(10H)SP=(60H) DPH=(24H)执行结果将0送外部数据存储器的2410单元程序运行后内部RAM(20H)=B4H,A=90H机器码源程序7401 LA: MOV A,#01HF590 LB: MOV P1,AB40AFA CJNE,#10,LB 80F6 SJMP LAANL A,#0FHSWAP AANL P1,#0FHORL P1,ASJMP $MOV A,R0XCH A,R1MOV R0,ASJMP $(1)利用乘法指令MOV B,#04HMUL ABSJMP $(2) 利用位移指令RL ARL AMOV 20H,AANL A,#03HMOV B,AMOV A,20HANL A,#0FCH(3)用加法指令完成ADD A,ACCMOV R0,A ;R0=2AMOV A,#0ADDC A,#0MOV B,A ;B存2A的进位MOV A,R0ADD A,ACCMOV R1,A ;R1=4AMOV A,BADDC A,B ;进位×2MOV B,A ;存积高位MOV A,R1 ;存积低位SJMP $XRL 40H,#3CHSJMP $MOV A,20HADD A,21HDA AMOV 22H,A ;存和低字节MOV A,#0ADDC A,#0MOV 23H,A ;存进位MOV A,R0JZ ZEMOV R1,#0FFHSJMP $ZE: MOV R1,#0SJMP $MOV A,50HMOV B,51HMUL ABMOV 53H,BMOV 52H,ASJMP $MOV R7,#0AHWOP: XRL P1,#03HDJNZ R7,WOPSJMP $单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进下一单元的最低位,必须用大循环移位指令移位4次。
单片机基础及应用项目三课后习题及答案

uchar code tab1[] ={16,4,32,2,248,15,136,8,136,8,248,15,136,8,136,8,248,15,128,0,128,0,254,63,128,0,128,0,0,0,0,0};
//--片——//
uchar code tab2[] ={0,2,8,2,8,2,8,2,248,31,8,0,8,0,8,0,248,7,8,4,8,4,8,4,4,4,2,4,0,0,0,0};
2.8*8点阵编程通常采用行扫描和列扫描,简述其原理?
答:行扫描就是控制点阵显示器的行线依次输出有效驱动电平(高电平,针对行共阳的点阵),当每行行线状态有效时,分别输出对应的行扫描码至列线,驱动该行LED点亮。
列扫描就是控制点阵显示器的列线依次输出有效驱动电平(低电平,针对行共阳的点阵),当每列列线状态有效时,分别输出对应的列扫描码至行线,驱动该列LED点亮。
//---全局变量声明--//
ulong column; //点阵列
ulong row; //点阵行
ulong dt;
//点阵显示数组
uchar code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};
4.74hc245芯片是(A)
A、驱动器B、译码器C、锁存器D、编码器
5.存储8*8点阵的一个汉字的信息,需要的字节数为(A)
(完整版)单片机试题及答案

(完整版)单⽚机试题及答案单⽚机原理与接⼝技术习题答案习题与思考题11-1 微型计算机通常由哪些部分组成?各有哪些功能?答:微型计算机通常由控制器、运算器、存储器、输⼊/输出接⼝电路、输⼊设备和输出设备组成。
控制器的功能是负责从内部存储器中取出指令并对指令进⾏分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调⼯作;运算器主要完成算数运算和逻辑运算;存储器⽤于存储程序和数据;输⼊/输出接⼝电路完成CPU与外设之间相连;输⼊和输出设备⽤于和计算机进⾏信息交流的输⼊和输出。
1-2 单⽚微型计算机与⼀般微型计算机相⽐较有哪些区别?有哪些特点?答:与通⽤微型计算机相⽐,单⽚机的硬件上,具有严格分⼯的存储器ROM和RAM和I/O端⼝引脚具有复⽤功能;软件上,采⽤⾯向控制的指令系统和硬件功能具有⼴泛的通⽤性,以及品种规格的系列化。
单⽚机还具备体积⼩、价格低、性能强⼤、速度快、⽤途⼴、灵活性强、可靠性⾼等特点。
1-3 简述计算机的⼯作过程。
答:计算机的⼯作是由微处理器以⼀定的时序来不断的取指令、指令译码和执⾏指令的过程。
1-4 单⽚机的⼏个重要指标的定义。
答:单⽚机的重要指标包括位数、存储器、I/O⼝、速度、⼯作电压、功耗和温度。
1-5 单⽚微型计算机主要应⽤在哪些⽅⾯?答:单⽚机的主要应⽤领域有智能化产品、智能化仪表、智能化测控系统、智能化接⼝等⽅⾯。
1-6 为什么说单⽚微型计算机有较⾼的性能价格⽐和抗⼲扰能⼒?答:因为单⽚微型计算机主要⾯向特定应⽤⽽设计,设计者在硬件和软件上都⾼效率地设计,量体裁⾐、去除冗余,⼒争在同样的硅⽚⾯积上实现更⾼的性能,具备较⾼的性能、价格⽐;单⽚机嵌⼊式系统中的软件⼀般都固化在存储器芯⽚或单⽚机本⾝中,⽽不是存贮于磁盘等载体中,另外单⽚机体积⼩,可以放⼊屏蔽设备中,从⽽使其具有较⾼的抗⼲扰能⼒。
1-7 简述单⽚机嵌⼊式系统的定义和特点。
答:单⽚机嵌⼊式系统是嵌⼊到对象体系中的专⽤计算机系统;其特点是⾯向特定应⽤、与各个⾏业的具体应⽤相结合、硬件和软件⾼效率、软件固化在存储器芯⽚或单⽚机本⾝和不具备⾃举开发能⼒。
单片机基础及应用项目一课后习题及答案

一、填空题1. 51系列单片机为8 位单片机2.51单片机RST引脚上保持 2 个机器周期以上的高电平时,单片机即发生复位。
3.当单片机CPU响应中断后,程序将自动转移到该中断源所对应的入口地址处,并从该地址开始执行程序,通常在该地址处存放转移指令以便转移到中断服务程序。
其中外部中断INT0的入口地址为0003H ,定时器T0入口地址000BH ,外部中断INT1的入口地址为0013H ,定时器T1入口地址001BH ,串行口的中断入口地址为0023H 。
4. 在CPU内部,反映程序运行状态或反映运算结果的特殊功能寄存器是PSW 。
5. 若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为08~0FH 。
6. 8051的堆栈区一般开辟在用户RAM区。
7. 片内RAM低128个单元划分为工作寄存器区、位寻址区和用户RAM区三个区。
8.EA脚的功能是控制程序存储器的选择,单片机使用片内程序存储器时,该引脚应该接+5V高电平。
9. 单片机最小系统除了包括单片机外,还应包括电源电路、复位电路、时钟电路和存储器选择电路。
10. P0口作输出端口时,P0的输出驱动级为漏极开路电路,输出极无上拉电阻,接拉电流负载时,需要外接上拉电阻,接灌电流负载时,可以不接上拉电阻。
二、选择题1. 单片机的XTAL1和XTAL2引脚是(D)引脚A、外接定时器B、外接串行口C、外接中断D、外接晶振2.51单片机芯片是双列直插式封装的,有(C)个引脚A、24B、30C、40D、503. 51单片机的(D)口的引脚,还具有外中断、串行通信等第二功能A、P0B、P1C、P2D、P34. 单片机应用程序一般存放在(B)A、RAMB、ROMC、寄存器D、CPU5. 以下不是构成单片机的部件(D)A、微处理器B、存储器C、I/O接口D、打印机6. ALU表示(D)A.累加器 B.程序状态字寄存器 C.计数器 D.算术逻辑部件7. 51单片机的V ss(20)引脚是(B)引脚A.主电源+5V B.接地 C.备用电源 D.访问片外存贮器8. 51单片机的程序计数器PC为16位计数器,其寻址范围是(D)A.8K B.16K C.32K D.64K9. 单片机的ALE引脚是以晶振振荡频率的(C)固定频率输出正脉冲,因此它可作为外部时钟或外部定时脉冲使用。
(完整版)单片机试题及其答案
一填空题1. A T89S51单片机芯片共有 40 个引脚,MCS-51系列单片机为 8 位单片机。
2. AT89S51单片机有 2 级优先级中断。
3. AT89S51内部数据存储器的地址范围是 00H-7FH ,位地址空间的字节地址范围是20H-2FH ,对应的位地址范围是 00H-7FH ,外部数据存储器的最大可扩展容量是64k字节。
4. 单片机也可称为微控制器或嵌入式控制器。
5.当MCS-51执行MOVC A,@A+PC指令时,伴随着 PSEN 控制信号有效。
6. 当单片机复位时PSW= 00 H,当前的工作寄存器区是0区,R4所对应的存储单元地址为 04 H。
7. MCS-51系列单片机指令系统的寻址方式有寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址加变址、位寻址。
(相对寻址也可)8. 51系列单片机的典型芯片分别为AT89S51 、 8031 、 AT89C51 。
9. A T89S51的 p3 口为双功能口。
10. 由A T89S51组成的单片机系统在工作时EA引脚应该接地。
二选择题1.如果(A)=45H,(R1)=20H,(20H)=12H,执行XCHD A, @ R1;结果(A)=(A)A.42HB.20HC.12HD.15H2. AT89S51复位后,PC与SP的值为分别为(B)A.0000H、00HB.0000H、07HC.FFFFH、00HD.0000H、FFH3. 堆栈数据的进出原则是(B)A.先进先出 B.先进后出 C.后进后出 D.进入不出4. 已知:R0=28H (28H)=46H,顺序执行下面三条指令后MOV A,#32H; MOV A,45H ; MOV A,@R0执行结果A的内容为( A )A.46HB.28HC.45HD.32H5. AT89S51单片机中,唯一一个用户不能直接使用的寄存器是(C).A. PSWB.DPTR C . PC D. B三判断题1.AT89S51单片机可执行指令:MOV 35H,@R3。
51单片机基础知识试题题库(含答案)
第二章习题参考答案一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。
2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。
3、当使用8751且EA=1,程序存储器地址小于 1000H 时,访问的是片内ROM。
4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。
5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。
6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。
7、PSW中RS1 RS0=10时,R2的地址为 12H 。
8、PSW中RS1 RS0=11时,R2的地址为 1AH 。
9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。
10、PC复位后为 0000H 。
11、一个机器周期= 12 个振荡周期= 6 个时钟周期。
12、PC的内容为将要执行的的指令地址。
13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。
14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。
15、若A中的内容为63H,那么,P标志位的值为 0 。
16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW=00H 。
这时当前的工作寄存器区是第 0 工作寄存器区。
17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。
18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。
19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。
调用返回时,再进行出栈保护,把保护的断点送回到 PC 。
20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为 64 KB。
51单片机基础知识试题题库含答案
第二章习题参考答案一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。
2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。
3、当使用8751且EA=1,程序存储器地址小于1000H 时,访问的是片内ROM。
4、MCS-51系统中,当PSEN为低电平信号有效时,表示CPU要从外部程序存储器读取信息。
5、MCS-51有4组工作寄存器,它们的地址范围是00H~1FH 。
00~07H 08~0FH 10~17H 18~1FH6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。
位寻址区7、PSW中RS1 RS0=10时,R2的地址为12H 。
8、PSW中RS1 RS0=11时,R2的地址为1AH 。
9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第0 组,8个寄存器的单元地址为00H ~ 07H 。
10、PC复位后为0000H 。
11、一个机器周期= 12 个振荡周期= 6 个时钟周期。
12、PC的内容为将要执行的的指令地址。
13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为2us 。
14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H 。
15、若A中的内容为63H,那么,P标志位的值为0 。
0110001116、8051单片机复位后,R4所对应的存储单元的地址为04H ,因上电时PSW=00H 。
这时当前的工作寄存器区是第0 工作寄存器区。
17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。
18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。
19、通过堆栈操作实现子程序调用,首先就要把PC 的内容入栈,以进行断点保护。
调用返回时,再进行出栈保护,把保护的断点送回到PC 。
20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为64 KB。
51单片机基础知识试题题库含答案
第二章习题参考答案一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。
2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。
3、当使用8751且EA=1,程序存储器地址小于1000H 时,访问的是片内ROM。
4、MCS-51系统中,当PSEN为低电平信号有效时,表示CPU要从外部程序存储器读取信息。
5、MCS-51有4组工作寄存器,它们的地址范围是00H~1FH 。
00~07H 08~0FH 10~17H 18~1FH6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。
位寻址区7、PSW中RS1 RS0=10时,R2的地址为12H 。
8、PSW中RS1 RS0=11时,R2的地址为1AH 。
9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第0 组,8个寄存器的单元地址为00H ~ 07H 。
10、PC复位后为0000H 。
11、一个机器周期= 12 个振荡周期= 6 个时钟周期。
12、PC的内容为将要执行的的指令地址。
13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为2us 。
14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H 。
15、若A中的内容为63H,那么,P标志位的值为0 。
0110001116、8051单片机复位后,R4所对应的存储单元的地址为04H ,因上电时PSW=00H 。
这时当前的工作寄存器区是第0 工作寄存器区。
17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。
18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。
19、通过堆栈操作实现子程序调用,首先就要把PC 的内容入栈,以进行断点保护。
调用返回时,再进行出栈保护,把保护的断点送回到PC 。
20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为64 KB。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
------------- ------------- 单片机基础问答题答案:第2章 1、.8051单片机芯片包含哪些主要逻辑功能部件?各有什么主要功能? 答: CPU:控制单片机各部份协调工作进行算术和逻辑运算 内部数据存储器:存储数据 内部程序存储器:存储程序 定时器/计数器,并行I/O口 串行口,中断控制系统,时钟电路 2、MCS—51单片机的EA信号有何功能?在使用8031时EA信号引脚应如何处理? 答:访问程序存储器控制信号,EA=0访问外部程序存储器,EA=1访问内部程序存储器。8031无内部程序存储器,所以EA接地。 3、MCS—51 单片机有哪些信号需要芯片引脚以第二功能的方式提供? 答:P3口,ALE/PROG(30脚),EA/VPP(31脚), RST/VPD(9脚) 4、内部RAM低128单片划分为哪3个主要部分?说明各部分的使用特点? 答: 1.寄存器区, 可寄存器寻址 2.位寻址区 ,可位寻址 3.用户RAM区,其单元地址为30H~7FH,一般还把堆栈开辟在用户RAM区 5、程序计数器(PC)作为不可寻址寄存器,它有哪些特点? 答:PC是一个16位的计数器。其内容为将要执行的指令地址,寻址范围达64KB。有以下功能: A.自动加1功能,从而实现程序的顺序执行。 B.上电复位功能。 C.能接收内部数据总线上来的数据,主要通过转移,调用,返回等指令改变其内容 以实现程序的转移,转移范围216=64K=65536。 PC没有地址,是不可寻址的。 6、堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值? 答:堆栈是一种数据结构,堆栈的最大特点就是“后进先出”的数据操作规则。堆栈是为子程序调用和中断操作而设立的。其具体功能有两个:保护断点和保护现场。堆栈指示器SP的作用是指示栈顶地址。程序设计时一般把SP值初始化为30H以后,因为复位时,SP初始化为07H,而这里是寄存器区和位寻址区。 7、MCS—51的4个I/O口在使用上有哪些分工和特点?试比较各口的特点? 答: P1口:只有一种功能通用I/O口 P2口:通用I/O口和地址总线高八位 P3口:一种功能通用I/O口和第二功能状态 P0口:一种功能通用I/O口和AB/DB复用总线 8、MCS—51单片机运行出错或程序进入死循环,如何摆脱困境? 答:按复位键以重新启动。
9、什么是指令周期,机器周期和时钟周期?如何计算机器周期的确切时间? 答:执行一条指令所需的时间称之为指令周期, 机器周期就是振荡脉冲的十二分频, 时钟周期定义为状态(用S表示),2个振荡脉冲。 10、使单片机复位有哪几种方法?复位后机器的初始状态如何? 答:复位操作有上电自动复位和按键手动复位两种方式。按键手动复位有电平方式和脉冲方------------- ------------- 式两种。 它们的复位状态如下: PC 0000H TCON 00H ACC 00H TL0 00H PSW 00H TH0 00H SP 07H TL1 00H DPTR 0000H TH1 00H P0~P3 FFH SCON 00H IP xx000000B SBUF 不定 IE 0x000000B PCON 0xxx0000b TMOD 00H ----------------------------------------------------------------------------------------------------------- 单片机基础编程题答案:第4章 1、把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM 输出缓冲区outbuf进行传送,一直进行到遇见回车符CR或整个字符传送完毕。 ORG 0030H MOV R0,#inbuf MOV R1,#outbuf MOV R4,#10H LOOP:MOV A,@R0;从内部RAM取数 CJNE A,#0DH,LL;是否为回车符CR SJMP STOP;是转停止传送 LL: MOVX @R1,A;不是则传送到外部RAM INC R0 INC R1 DJNZ R4,LL;沒传送完则循环 STOP: SJMP $ 2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。 ORG 0030H MOV R0,#list MOV A,@R0;取第一个正数 LOOP: INC R0;指向下一个正数 MOV 3AH,@R0 CJNE A,3AH,CHK;前一个数与后一个数比较 CHK: JC LOOP1;前一个数小,则转 MOV A,@R0;前一个数大,取后一个数 LOOP1: XCH A,3AH CJNE A,#0FFH,LOOP XCH A,3AH;取最小数 MOV 3BH,A SJMP $
3、求8个数的平均值,这8个数以表格形式存放在从table开始的单元中。 ------------- ------------- ORG 0030H MOV R0,#table MOV R6,#07H MOV R3,#00H MOV A,@R0 CLR C LOOP:INC R0 ADD A,@R0;累加 JNC LOOP1 INC R3 LOOP1: DJNZ R6,LOOP CLR C MOV R5,#03H MOV R2,A LOOP2: MOV A,R3;除8 RRC A MOV R3,A MOV A, R2 RRC A MOV R2,A DJNZ R5,LOOP2 4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部RAM中byte单元中。变换后行到的8个ASCII码存放在外部RAM以buf始的存储单元中去。 ORG 0030H MOV R0,#byte MOV DPTR,#buf MOV R5,#08H MOV A,@R0 LOOP: RLC A MOV R7,A JC LOOP1 MOV A,#30H SJMP LOOP2 LOOP1: MOV A,#31H LOOP2: MOVX @DPTR,A MOV A,R7 INC DPTR DJNZ R5,LOOP 5、搜索一串ASCII码字符中最后一个非空格字符,字符串从外部RAM 8100H单元开始存放,并用一个回车符(0DH)作结束。编程实现搜索并把搜索到的非空格字符的地址存入内部RAM单元40H和41H中,其中高字节放入41H单元。 ORG 0030H MOV DPTR,#8100H ------------- ------------- MOV 40H,#00H MOV 41H,#00H LOOP: MOVX A,@DPTR INC DPTR CJNE A,#0DH,LOOP;是否为回车符 loop1: mov a,dpl;dptr-1,指向0dh单元地址 clr c subb a,#01h mov dpl,a mov a,dph subb a,#00h mov dph,a loop2:mov a,dpl;dptr-1,调整单元地址 clr c subb a,#01h mov dpl,a mov a,dph subb a,#00h mov dph,a movx a,@dptr;取下一个数 cjne a,#20h,loop3;是否为空格字符,不是转 sjmp loop2;是空格字符则转调整单元地址 loop3: mov 40h,dpl;存最后一个非空格字符的 mov 41h,dph;地址 sjmp $ end 6、比较两个ASCII码字符串是否相等。字符串的长度在内部RAM 41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。如果两个字符串相等,则置内部RAM 40H单元为00H;否则置40H单元为FF。 ORG 0030H MOV R0,#42H MOV R1,#52H MOV R7,41H LOOP: MOV A,@R0 MOV 30H,@R1 CJNE A,30H,LK INC R0 INC R1 DJNZ R7,LOOP MOV 40H ,#00H SJMP DD LK: MOV 40H,#0FFH DD: SJMP DD 7.外部RAM首址为table的数据表中,有10个字节的数据。编程将每个字节的最高位无条------------- ------------- 件地置“1”。 ORG 0030H MOV DPTR,#table MOV R6,#10 LOOP:MOVX A,@DPTR SETB E7H MOVX @DPTR,A INC DPTR DJNZ R6,LOOP 8、 8000H开始的有200个字节的源数据区,隔一个单元送到4000H开始的数据区。在目的数据区中,每隔两个单元写一个数。如遇0DH(回车)则传送结束。 ORG 0030H MOV DPTR,#8100H;源数据区首址 PUSH DPL ;源首址暂存堆栈 PUSH DPH ; MOV DPTR,#4000H;目的数据区首址 MOV R2,DPL ;目的首址暂存寄存器 MOV R3,DPH ; MOV R7,#200 LOOP:POP DPH ;取回源地址 POP DPL ; MOVX A,@DPTR ;取出数据 INC DPTR ;源地址增量 INC DPTR ;隔一个单元 PUSH DPL ;源地址暂存堆栈 PUSH DPH ; MOV DPL,R2 ;取回目的地址 MOV DPH,R3 ; CJNE A,#0DH,LL;是否为0DHSJMP LP ;是0DH则传送结束 LL: MOVX @DPTR,A ;数据送目的区 INC DPTR ;目的地址增量 INC DPTR ;隔两个单元 INC DPTR MOV R2,DPL ;目的地址暂存寄存器 MOV R3,DPH ; DJNZ R7,LOOP ;没完,继续循环 LP: RET ;返回主程序
9、 输入缓冲区inbuf存有80个字节,编程实现将其中所有的组分隔符(1DH)地址依次压入separ栈中。 ORG 0030H MOV SP,#separ MOV R0,#inbuf MOV R4,#80