题目
第一章习题参考答案1-1:何谓单片机?与通用微机相比,两者在结构上有何异同?答:将构成计算机的基本单元电路[1]如微处理器[2](CPU)、存储器[3]、I/O接口电路和相应实时控制[4]器件[5]等电路集成在一块芯片上,称其为单片微型计算机,简称单片机。单片机与通用微机相比在结构上的异同:(1)两者都有CPU,但通用微机的CPU主要面向数据处理[6],其发展主要围绕数据处理功能、计算速度和精度的进一步提高。例如,现今微机的CPU都支持浮点运算,采用流水线作业,并行处理[7]、多级高速缓冲(Cache)技术等。CPU的主频达到数百兆赫兹(MHz),字长普遍达到32位。单片机主要面向控制,控制中的数据类型[8]及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。例如,现在的单片机产品的CPU大多不支持浮点运算,CPU还采用串行工作方式,其振荡频率大多在百兆赫兹范围内;在一些简单应用系统中采用4位字长的CPU,在中、小规模应用场合广泛采用8位字长单片机,在一些复杂的中、大规模的应用系统中才采用16位字长单片机,32位单片机产品目前应用得还不多。(2)两者都有存储器,但通用微机中存储器组织结构主要针对增大存储容量[9]和CPU对数据的存取速度。现今微机的内存容量达到了数百兆字节(MB),存储体[10]系采用多体、并读技术和段、页等多种管理模式。单片机中存储器的组织结构比较简单,存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写按直接物理地址来寻址[11]存储器单元,存储器的寻址空间一般都为64 KB。(3)两者都有I/O接口,但通用微机中I/O接口主要考虑标准外设(如CRT、标准键盘、鼠标、打印机、硬盘、光盘等)。用户通过标准总线连接外设,能达到即插即用。单片机应用系统的外设都是非标准的,且千差万别,种类很多。单片机的I/O接口实际上是向用户提供的与外设连接的物理界面。用户对外设的连接要设计具体的接口电路,需有熟练的接口电路设计技术。ANL A,#17H 10000011与00010111 = 0000 0011ORL 17H,A 00110100或00000011 = 0011 0111XRL A,@R0 00110111异或0000 0011 = 0011 0100CPL A ~A 1100 1000 CBH3-10请写出达到下列要求的逻辑操作[12]的指令,要求不得改变未涉及位的内容1)使累加器[13]A的低位置‘1’2)清累加器A的高4位3)使A.2和A.3置‘1’4)清除A.3、A.4、A.5、A.6SETB AC..1;ANL A,#0FH;ORL A,#00001100BANL A,#10000111B3-11指令LJIMP addr16与AJMP addr11的区别是什么?LJIMP addr16是长转移,LCALL的作用就是将addr16直接赋给PCAJMP addr11,在当前PC的2KB范围跳转(因为addr11就是2KB),即PC高五位不变,低十一位等于addr11。3-12试说明指令CJNE @R1,#7AH,10H的作用。若本条指令地址为2500H,其转移地址是多少?当前地址2500H。执行该指令后PC为2503H,加上10H后,目标地址是2513H。3-13下面执行后(SP)=________, (A) =________, (B) =________,并解释每条指令的作用。ORG 2000H;起始地址为2000HMOV SP,#40H;(SP)=40HMOV A,#30H;(A)=30HLCALL 2500H;调用2500H子程序[14]ADD A,#10H;(A)<—(A)+10,(A)=40HMOV B,A;(B)=40HHERE:SJMP HEREORG 2500H;起始地址为2500HMOV DPTR,#2009H;(DPTR)=2009HPUSH DPL;(SP)=40H+1=41HPUSH DPH ; (SP)=41H+1=42HRET ;返回3-1.已知P1.7= 1,A.0= 0,C= 1,FIRST=1000H,SECOND=1020H,试写出下列指令的执行结果。(1)MOV 26H,C 1(2)CPL A.0 1(3)CLR P1.7 0(4)ORL C,/P1.7 1(5)FIRST:JC SECOND(6)FIRST:JNB A.0,SECOND(7)SECOND:JBC P1.7,FIRST3-15经汇编后,下列各条语句标号[15]将是什么值?ORG 2000HTABLE:DS 5WORD:DB 15,20,25,30 (2005H)=15,FANG:EQU 1000H FANG=1000HBEGIN:MOV A,R03-16设fosc=12MHZ,定时器/计数器[16]0的初始化程序和中断服务程序如下:MOV TH0,#0DHMOV TL0,#0D0HMOV TMOD,#01HSETB TR0:;中断服务程序ORG 000BHMOV TH0,#0DHMOV TL0,#0D0H:RETI问:1)该定时器/计数器工作于什么方式?2)相应的定时时间或计数值是多少?3)为什么在中断服务程序中药重置定时器/计数器的初值?●1)方式12)定时时间为:fosc=12MHZ Tcy=1usT=N*Tcy=(65536-x)*Tcy定时范围:1~65536计数值为:N=216-x=65536-x计数范围为:1~655363)定时器T0的溢出对外无脉冲[17]信号,重置定时器/计数器的初值可以再形成计数脉冲3-18设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数。ZERO EQU 20H ;零的统计NEGETIVE EQU 21H ;负数的统计POSITIVE EQU 22H ;正数的统计COUNT EQU 100 ;比较个数ORG 0000HLJMPMAINORG 0040HMOV ZERO,#0MOV NEGETIVE,#0MOV POSITIVE,#0MOV R2,#0MOV DPTR,# 2000HLOOP: MOVX A,@DPTRCJNE A,#0,NONZEROINC ZEROAJMP NEXTNONZERO: JC NEGINC POSITIVEAJMP NEXTNEG: INC NEGETIVENEXT: INC DPTRINC R2CJNE R2,#COUNT,LOOPSJMP 3-20 51单片机从串行口发送缓冲区首址为30H的10个ASCII码字符,最高位用于奇偶校验,采用偶校验方式,要求发送的波特率[18]为2400波特,时钟频率ƒosc=12MHz,试编写串行口发送子程序。单片机采用12 MHz晶振;设串行口工作于方式1;定时器/计数器T1用作波特率发生器,工作于方式2;PCON中的SMOD位为1;发送的波特率要求为2400。定时器/计数器T1初值计算:根据公式波特率=2SMOD×溢出率/32有溢出率=2400×16=38 400溢出周期=1/溢出率=26μs (此为定时器/计数器的定时值)定时器初值=256-26=230=E6H根据要求确定定时器/计数器的TMOD中的方式控制字为20H,串行口SCON中的控制字为40H,PCON控制字为80H。则相应的发送程序如下:TSTART:MOV TMOD,#20H;置定时器/计数器T1工作于方式2定时MOV PCON, #80HMOV TL1,#0E6H;定时器/计数器T1置初值MOV TH1,#E6H;定时器/计数器T1置重装数MOV SCON,#40H;置串行口工作于方式1MOV R0,#30H;R0作地址指针,指向数据块首址MOV R7,#10;R7作循环计数器,置以发送=字节数SETB TR1;启动定时器/计数器T1LOOP:MOV A,@R0;取待发送的一个字节MOV C,P;取奇偶标志,奇为1,偶为0MOV A.7,C;给发送的ASCII码最高位加偶校验位MOV SBUF,A;启动串行口发送WAIT:JNB TI,WAIT;等待发送完毕CLR TI;清TI标志,为下一个字节发送作准备INC R0;指向数据块下一个待发送字节的地址DJINZ R7,LOOP;循环发送,直到数据块发送完毕
第一章习题参考答案1-1:何谓单片机?与通用微机相比,两者在结构上有何异同?答:将构成计算机的基本单元电路[1]如微处理器[2](CPU)、存储器[3]、I/O接口电路和相应实时控制[4]器件[5]等电路集成在一块芯片上,称其为单片微型计算机,简称单片机。单片机与通用微机相比在结构上的异同:(1)两者都有CPU,但通用微机的CPU主要面向数据处理[6],其发展主要围绕数据处理功能、计算速度和精度的进一步提高。例如,现今微机的CPU都支持浮点运算,采用流水线作业,并行处理[7]、多级高速缓冲(Cache)技术等。CPU的主频达到数百兆赫兹(MHz),字长普遍达到32位。单片机主要面向控制,控制中的数据类型[8]及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。例如,现在的单片机产品的CPU大多不支持浮点运算,CPU还采用串行工作方式,其振荡频率大多在百兆赫兹范围内;在一些简单应用系统中采用4位字长的CPU,在中、小规模应用场合广泛采用8位字长单片机,在一些复杂的中、大规模的应用系统中才采用16位字长单片机,32位单片机产品目前应用得还不多。(2)两者都有存储器,但通用微机中存储器组织结构主要针对增大存储容量[9]和CPU对数据的存取速度。现今微机的内存容量达到了数百兆字节(MB),存储体[10]系采用多体、并读技术和段、页等多种管理模式。单片机中存储器的组织结构比较简单,存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写按直接物理地址来寻址[11]存储器单元,存储器的寻址空间一般都为64 KB。(3)两者都有I/O接口,但通用微机中I/O接口主要考虑标准外设(如CRT、标准键盘、鼠标、打印机、硬盘、光盘等)。用户通过标准总线连接外设,能达到即插即用。单片机应用系统的外设都是非标准的,且千差万别,种类很多。单片机的I/O接口实际上是向用户提供的与外设连接的物理界面。用户对外设的连接要设计具体的接口电路,需有熟练的接口电路设计技术。ANL A,#17H 10000011与00010111 = 0000 0011ORL 17H,A 00110100或00000011 = 0011 0111XRL A,@R0 00110111异或0000 0011 = 0011 0100CPL A ~A 1100 1000 CBH3-10请写出达到下列要求的逻辑操作[12]的指令,要求不得改变未涉及位的内容1)使累加器[13]A的低位置‘1’2)清累加器A的高4位3)使
A.2和A.3置‘1’4)清除
A.3、A.4、A.5、A.6SETB A
C..1;ANL A,#0FH;ORL A,#00001100BANL A,#10000111B3-11指令LJIMP addr16与AJMP addr11的区别是什么?LJIMP addr16是长转移,LCALL的作用就是将addr16直接赋给PCAJMP addr11,在当前PC的2KB范围跳转(因为addr11就是2KB),即PC高五位不变,低十一位等于addr11。3-12试说明指令CJNE @R1,#7AH,10H的作用。若本条指令地址为2500H,其转移地址是多少?当前地址2500H。执行该指令后PC为2503H,加上10H后,目标地址是2513H。3-13下面执行后(SP)=________, (A) =________, (B) =________,并解释每条指令的作用。ORG 2000H;起始地址为2000HMOV SP,#40H;(SP)=40HMOV A,#30H;(A)=30HLCALL 2500H;调用2500H子程序[14]ADD A,#10H;(A)<—(A)+10,(A)=40HMOV B,A;(B)=40HHERE:SJMP HEREORG 2500H;起始地址为2500HMOV DPTR,#2009H;(DPTR)=2009HPUSH DPL;(SP)=40H+1=41HPUSH DPH ; (SP)=41H+1=42HRET ;返回3-
1.已知P1.7= 1,
A.0= 0,C= 1,FIRST=1000H,SECOND=1020H,试写出下列指令的执行结果。(1)MOV 26H,C 1(2)CPL
A.0 1(3)CLR P
1.7 0(4)ORL C,/P
1.7 1(5)FIRST:JC SECOND(6)FIRST:JNB
A.0,SECOND(7)SECOND:JBC P
1.7,FIRST3-15经汇编后,下列各条语句标号[15]将是什么值?ORG 2000HTABLE:DS 5WORD:DB 15,20,25,30 (2005H)=15,FANG:EQU 1000H FANG=1000HBEGIN:MOV A,R03-16设fosc=12MHZ,定时器/计数器[16]0的初始化程序和中断服务程序如下:MOV TH0,#0DHMOV TL0,#0D0HMOV TMOD,#01HSETB TR0:;中断服务程序ORG 000BHMOV TH0,#0DHMOV TL0,#0D0H:RETI问:1)该定时器/计数器工作于什么方式?2)相应的定时时间或计数值是多少?3)为什么在中断服务程序中药重置定时器/计数器的初值?●1)方式12)定时时间为:fosc=12MHZ Tcy=1usT=N*Tcy=(65536-x)*Tcy定时范围:1~65536计数值为:N=216-x=65536-x计数范围为:1~655363)定时器T0的溢出对外无脉冲[17]信号,重置定时器/计数器的初值可以再形成计数脉冲3-18设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数。ZERO EQU 20H ;零的统计NEGETIVE EQU 21H ;负数的统计POSITIVE EQU 22H ;正数的统计COUNT EQU 100 ;比较个数ORG 0000HLJMPMAINORG 0040HMOV ZERO,#0MOV NEGETIVE,#0MOV POSITIVE,#0MOV R2,#0MOV DPTR,# 2000HLOOP: MOVX A,@DPTRCJNE A,#0,NONZEROINC ZEROAJMP NEXTNONZERO: JC NEGINC POSITIVEAJMP NEXTNEG: INC NEGETIVENEXT: INC DPTRINC R2CJNE R2,#COUNT,LOOPSJMP $3-20 51单片机从串行口发送缓冲区首址为30H的10个ASCII码字符,最高位用于奇偶校验,采用偶校验方式,要求发送的波特率[18]为2400波特,时钟频率ƒosc=12MHz,试编写串行口发送子程序。单片机采用12 MHz晶振;设串行口工作于方式1;定时器/计数器T1用作波特率发生器,工作于方式2;PCON中的SMOD位为1;发送的波特率要求为2400。定时器/计数器T1初值计算:根据公式波特率=2SMOD×溢出率/32有溢出率=2400×16=38 400溢出周期=1/溢出率=26μs (此为定时器/计数器的定时值)定时器初值=256-26=230=E6H根据要求确定定时器/计数器的TMOD中的方式控制字为20H,串行口SCON中的控制字为40H,PCON控制字为80H。则相应的发送程序如下:TSTART:MOV TMOD,#20H;置定时器/计数器T1工作于方式2定时MOV PCON, #80HMOV TL1,#0E6H;定时器/计数器T1置初值MOV TH1,#E6H;定时器/计数器T1置重装数MOV SCON,#40H;置串行口工作于方式1MOV R0,#30H;R0作地址指针,指向数据块首址MOV R7,#10;R7作循环计数器,置以发送=字节数SETB TR1;启动定时器/计数器T1LOOP:MOV A,@R0;取待发送的一个字节MOV C,P;取奇偶标志,奇为1,偶为0MOV
A.7,C;给发送的ASCII码最高位加偶校验位MOV SBUF,A;启动串行口发送WAIT:JNB TI,WAIT;等待发送完毕CLR TI;清TI标志,为下一个字节发送作准备INC R0;指向数据块下一个待发送字节的地址DJINZ R7,LOOP;循环发送,直到数据块发送完毕
A.2和A.3置‘1’4)清除
A.3、A.4、A.5、A.6SETB A
C..1;ANL A,#0FH;ORL A,#00001100BANL A,#10000111B3-11指令LJIMP addr16与AJMP addr11的区别是什么?LJIMP addr16是长转移,LCALL的作用就是将addr16直接赋给PCAJMP addr11,在当前PC的2KB范围跳转(因为addr11就是2KB),即PC高五位不变,低十一位等于addr11。3-12试说明指令CJNE @R1,#7AH,10H的作用。若本条指令地址为2500H,其转移地址是多少?当前地址2500H。执行该指令后PC为2503H,加上10H后,目标地址是2513H。3-13下面执行后(SP)=________, (A) =________, (B) =________,并解释每条指令的作用。ORG 2000H;起始地址为2000HMOV SP,#40H;(SP)=40HMOV A,#30H;(A)=30HLCALL 2500H;调用2500H子程序[14]ADD A,#10H;(A)<—(A)+10,(A)=40HMOV B,A;(B)=40HHERE:SJMP HEREORG 2500H;起始地址为2500HMOV DPTR,#2009H;(DPTR)=2009HPUSH DPL;(SP)=40H+1=41HPUSH DPH ; (SP)=41H+1=42HRET ;返回3-
1.已知P1.7= 1,
A.0= 0,C= 1,FIRST=1000H,SECOND=1020H,试写出下列指令的执行结果。(1)MOV 26H,C 1(2)CPL
A.0 1(3)CLR P
1.7 0(4)ORL C,/P
1.7 1(5)FIRST:JC SECOND(6)FIRST:JNB
A.0,SECOND(7)SECOND:JBC P
1.7,FIRST3-15经汇编后,下列各条语句标号[15]将是什么值?ORG 2000HTABLE:DS 5WORD:DB 15,20,25,30 (2005H)=15,FANG:EQU 1000H FANG=1000HBEGIN:MOV A,R03-16设fosc=12MHZ,定时器/计数器[16]0的初始化程序和中断服务程序如下:MOV TH0,#0DHMOV TL0,#0D0HMOV TMOD,#01HSETB TR0:;中断服务程序ORG 000BHMOV TH0,#0DHMOV TL0,#0D0H:RETI问:1)该定时器/计数器工作于什么方式?2)相应的定时时间或计数值是多少?3)为什么在中断服务程序中药重置定时器/计数器的初值?●1)方式12)定时时间为:fosc=12MHZ Tcy=1usT=N*Tcy=(65536-x)*Tcy定时范围:1~65536计数值为:N=216-x=65536-x计数范围为:1~655363)定时器T0的溢出对外无脉冲[17]信号,重置定时器/计数器的初值可以再形成计数脉冲3-18设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数。ZERO EQU 20H ;零的统计NEGETIVE EQU 21H ;负数的统计POSITIVE EQU 22H ;正数的统计COUNT EQU 100 ;比较个数ORG 0000HLJMPMAINORG 0040HMOV ZERO,#0MOV NEGETIVE,#0MOV POSITIVE,#0MOV R2,#0MOV DPTR,# 2000HLOOP: MOVX A,@DPTRCJNE A,#0,NONZEROINC ZEROAJMP NEXTNONZERO: JC NEGINC POSITIVEAJMP NEXTNEG: INC NEGETIVENEXT: INC DPTRINC R2CJNE R2,#COUNT,LOOPSJMP $3-20 51单片机从串行口发送缓冲区首址为30H的10个ASCII码字符,最高位用于奇偶校验,采用偶校验方式,要求发送的波特率[18]为2400波特,时钟频率ƒosc=12MHz,试编写串行口发送子程序。单片机采用12 MHz晶振;设串行口工作于方式1;定时器/计数器T1用作波特率发生器,工作于方式2;PCON中的SMOD位为1;发送的波特率要求为2400。定时器/计数器T1初值计算:根据公式波特率=2SMOD×溢出率/32有溢出率=2400×16=38 400溢出周期=1/溢出率=26μs (此为定时器/计数器的定时值)定时器初值=256-26=230=E6H根据要求确定定时器/计数器的TMOD中的方式控制字为20H,串行口SCON中的控制字为40H,PCON控制字为80H。则相应的发送程序如下:TSTART:MOV TMOD,#20H;置定时器/计数器T1工作于方式2定时MOV PCON, #80HMOV TL1,#0E6H;定时器/计数器T1置初值MOV TH1,#E6H;定时器/计数器T1置重装数MOV SCON,#40H;置串行口工作于方式1MOV R0,#30H;R0作地址指针,指向数据块首址MOV R7,#10;R7作循环计数器,置以发送=字节数SETB TR1;启动定时器/计数器T1LOOP:MOV A,@R0;取待发送的一个字节MOV C,P;取奇偶标志,奇为1,偶为0MOV
A.7,C;给发送的ASCII码最高位加偶校验位MOV SBUF,A;启动串行口发送WAIT:JNB TI,WAIT;等待发送完毕CLR TI;清TI标志,为下一个字节发送作准备INC R0;指向数据块下一个待发送字节的地址DJINZ R7,LOOP;循环发送,直到数据块发送完毕
题目解答
答案
42H 40H 40H