单片机原理与应用及c51程序设计(第二版)课后答案_第1页
单片机原理与应用及c51程序设计(第二版)课后答案_第2页
单片机原理与应用及c51程序设计(第二版)课后答案_第3页
单片机原理与应用及c51程序设计(第二版)课后答案_第4页
单片机原理与应用及c51程序设计(第二版)课后答案_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章1给出下列有符号数的原码、反码和补码假设计算机字长为8位。45896112答【45】原00101101,【45】反00101101,【45】补00101101【89】原11011001,【89】反10100110,【89】补10100111【6】原10000110,【6】反11111001,【6】补11111010【112】原01110000,【45】反01110000,【45】补011100002指明下列字符在计算机内部的表示形式。ASENDFJFMDSV120答41H73H45H4EH64H66H4AH46H6DH64H73H76H31H32H30H3什么是单片机答单片机是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。4单片机的主要特点是什么答主要特点如下1在存储器结构上,单片机的存储器采用哈佛HARVARD结构2在芯片引脚上,大部分采用分时复用技术3在内部资源访问上,采用特殊功能寄存器SFR的形式4在指令系统上,采用面向控制的指令系统5内部一般都集成一个全双工的串行接口6单片机有很强的外部扩展能力5指明单片机的主要应用领域。答单机应用1工业自动化控制;2智能仪器仪表;3计算机外部设备和智能接口;4家用电器多机应用功能弥散系统、并行多机处理系统和局部网络系统。第二章1MCS51单片机由哪几个部分组成答MCS51单片机主要由以下部分组成的时钟电路、中央处理器CPU、存储器系统RAM和ROM、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器SFR。2MCS51的标志寄存器有多少位,各位的含义是什么答MCS51的标志寄存器PSW有8位;D7D6D5D4D3D2D1D0CACF0RS1RS0OVP含义如下CPSW7进位或借位标志位。ACPSW6辅助进位或借位可标志位。F0PSW5用户标志位。是系统预留给用户自己定义的标志位。RS1、RS0PSW4、PSW3寄存器组选择位。可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。OVPSW2溢出标志位。在加法或减法运算时,如运算的结果超出8位二进制数的范围,则OV置1,标志溢出,否则OV清零。PPSW0奇偶标志位。用于记录指令执行后累加器A中1的个数的奇偶性。若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶数,则P清零。其中PSW1未定义,可供用户使用。3在8051的存储器结构中,内部数据存储器可分为几个区域各有什么特点答片内数据存储器按功能可以分成以下几个部分工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区,00H1FH单元,可用R0R7等8个寄存器访问;位寻址区,20H2FH单元,可按位方式访问;一般RAM区,30H7FH单元;堆栈区,可从08到7F单元;特殊功能寄存器区位于80HFFH单元。4什么是堆栈说明MCS51单片机的堆栈处理过程。答堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。CS51单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据是从地址高端向低端延伸。入栈和出栈数据是以字节为单位的。入栈时,SP指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;出栈时,先把SP指针指向单元的数据取出,然后再把SP指针的内容自动减1。5MCS51单片机有多少根I/O线它们和单片机的外部总线有什么关系答MCS51单片机有32根I/O线,由P0口经地址锁存器提供低8位A7A0,P2口提供高8位A15A8而形成。数据总线宽度为8位,由P0口直接提供。控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。6什么是机器周期MCS51单片机的一个机器周期包括多少个时钟周期答机器周期机器周期是单片机的基本操作周期,每个机器周期包含S1、S2、S66个状态,每个状态包含两拍P1和P2,每一拍为一个时钟周期振荡周期。因此,一个机器周期包含12个时钟周期。7如果时钟周期的频率为12MHZ,那么ALE信号的频率为多少答2MHZ第三章1在MCS51单片机中,寻址方式有几种其中对片内RAM可以用哪几种寻址方式对片外RAM可以用哪几种寻址方式答寻址方式可分为数的寻址和指令寻址,数的寻址有常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内RAM寻址有寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外RAM寻址有寄存器间接寻址方式。2在对片外RAM单元寻址中,用RI间接寻址与用DPTR间接寻址有什么区别答片外数据存储器寻址中,用RI间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。3在位处理中,位地址的表示方式有哪几种答1直接位地址(00H0FFH)。例如20H2字节地址带位号。例如20H3表示20H单元的3位。3特殊功能寄存器名带位号。例如P01表示P0口的1位。4位符号地址。例如TR0是定时/计数器T0的启动位。4写出完成下列操作的指令。(1)R0的内容送到R1中。MOVA,R0MOVR1,A(2)片内RAM的20H单元内容送到片内RAM的40H单元中。MOV40H,20H(3)片内RAM的30H单元内容送到片外RAM的50H单元中。MOVA,30HMOVR0,50HMOVXR0,A(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。MOVA,50HMOVDPTR,3000HMOVXDPTR,A(5)片外RAM的2000H单元内容送到片外RAM的20H单元中。MOVDPTR,2000HMOVXA,DPTRMOV20H,A(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。MOVDPTR,1000HMOVXA,DPTRMOVDPTR,4000HMOVDPTR,A(7)ROM的1000H单元内容送到片内RAM的50H单元中。MOVA,0MOVDPTR,1000HMOVCA,ADPTRMOV20H,A(8)ROM的1000H单元内容送到片外RAM的1000H单元中。MOVA,0MOVDPTR,1000HMOVCA,ADPTRMOVXDPTR,A5区分下列指令有什么不同(1)MOVA,20H和MOVA,20H答前者源操作数是直接寻址,后者源操作数立即寻址。(2)MOVA,R1和MOVXA,R1答前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。(3)MOVA,R1和MOVA,R1答前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。(4)MOVXA,R1和MOVXA,DPTR答前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。(5)MOVXA,DPTR和MOVCA,ADPTR答前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。6设片内RAM的(20H)40H,(40H)10H,(10H)50H,(P1)0CAH。分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。MOVR0,20HMOVA,R0;A40HMOVR1,A;R140HMOVA,R1;A10HMOVR0,P1;(40H)0CAHMOVP2,P1P20CAHMOV10H,A(10H)10HMOV20H,10H(20H)10H结果(20H)10H、(10H)10H、(40H)0CAH、P20CAH和P10CAH7已知(A)02H,(R1)7FH,(DPTR)2FFCH,片内RAM(7FH)70H,片外RAM(2FFEH)11H,ROM(2FFEH)64H,试分别写出以下各条指令执行后目标单元的内容。(1)MOVA,R1结果累加器A等于70H(2)MOVXDPTR,A结果片外RAM(2FFCH)单元等于02H(3)MOVCA,ADPTR结果累加器A等于64H(4)XCHDA,R1结果累加器A等于00H,片内RAM(7FH)单元等于72H8已知(A)78H,(R1)78H,(B)04H,CY1,片内RAM(78H)0DDH,(80H)6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。(1)ADDA,R1;累加器A等于55H,CY等于1(2)SUBBA,77H;累加器A等于00H,CY等于0(3)MULAB;累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0(4)DIVAB;累加器A等于1EH,B寄存器等于00H,CY、OV等于0(5)ANL78H,78H;片内RAM(78H)单元等于58H(6)ORLA,0FH;累加器A等于7FH(7)XRL80H,A;片内RAM(80H)等于14H9设(A)83H,(R0)17H,(17H)34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。ANLA,17H;A03HORL17H,A;(17H)37HXRLA,R0;A34HCPLA;ACBH结果ACBH,(R0)17H,(17H)37H10写出完成下列要求的指令。(1)累加器A的低2位清零,其余位不变。ANLA,11111100B(2)累加器A的高2位置“1”,其余位不变。ORLA,11000000B(3)累加器的高4位取反,其余位不变。XRLA,11110000B(4)累加器第0位、2位、4位、6位取反,其余位不变。XRLA,01010101B11说明LJMP指令与AJMP指令的区别答LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,缺点是执行时间长,字节数多。AJMP指令后带的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址ADDR11送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。12设当前指令CJNEA,12H,10H的地址是0FFEH,若累加器A的值为10H,则该指令执行后的PC值为多少若累加器A的值为12H呢答指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。13用位处理指令实现P14P10(P11P12)/P13的逻辑功能。程序MOVC,P11ORLC,P12ANLC,P10ORLC,/P13MOVP14,C14下列程序段汇编后,从1000H单元开始的单元内容是什么ORG1000HTABDB12H,34HDS3DW5567H,87H答(1000H)12H,(1001H)34H,(1002H)00H,(1003H)00,(1004H)00,(1005H)67H,(1006H)55H,(1007H)87H,(1008H)00H15试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。程序MOVR0,20HMOVR2,03HLOOPMOVA,R0MOVXR0,AINCR0DJNZR2,LOOPSJMP16编程实现将片外RAM的2000H2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。程序MOVR0,20HMOVDPTR,2000HMOVR2,30HLOOPMOVXA,DPTRMOVR0,AMOVA,00MOVXDPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP17编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。程序MOVDPTR,1000HMOVR2,100MOVR7,00MOVR6,00LOOPMOVXA,DPTRADDA,R6MOVR6,AMOVA,R7ADDCA,0MOVR7,AINCDPTRDJNZR2,LOOPSJMP18编程实现R4R3R2,结果放于R7R6R5中。程序ORG0100HMUL1MOVA,R2MOVB,R3MULAB;R2R3,结果的低字节直接存入积的R5MOVR5,A;结果的高字节存入R6中暂存起来MOVR6,BMUL2MOVA,R2MOVB,R4MULAB;R2R4,结果的低字节与R6相加后,再存入R6中ADDA,R6MOVR6,AMOVA,B;结果的高字节加上进位位后存入R7中ADDCA,00MOVR7,ASJMP19编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。程序MOVC,20H0MOVA0,CMOVC,20H1MOVA1,CMOVC,21H2MOVA2,CMOVC,21H3MOVA3,CMOVC,22H4MOVA4,CMOVC,22H5MOVA5,CMOVC,23H6MOVA6,CMOVC,23H7MOVA7,CMOVR2,A20用查表的方法实现一位十六进制数转换成ASCII。程序(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)C16STASCMOVDPTR,TABMOVA,R2MOVCA,ADPTRMOVR2,ARETTABDB30H,31H,32H,33H,34H,35H,36H,37HDB38H,391H,41H,42H,43H,44H,45H,46H21编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。程序MOVDPTR,2000HMOVR3,100MOVR2,00LOOPMOVXA,DPTRJNZNEXTINCR2NEXTINCDPTRDJNZR3,LOOPSJMP第四章1C语言有哪些特点答C语言具有以下特点1语言简洁、紧凑,使用方便、灵活2运算符丰富3数据结构丰富,具有现代化语言的各种数据结构4可进行结构化程序设计5可以直接对计算机硬件进行操作6生成的目标代码质量高,程序执行效率高7可移植性好2有哪些数据类型是MCS51单片机直接支持的答MCS51单片机直接支持的数据类型标准分为基本数据类型和组合数据类型,基本数据类型有字符型CHAR、短整型SHORT、整型INT、长整型LONG、浮点型FLOAT、双精度型DOUBLE、特殊功能寄存器型和位类型,其中CHAR型与SHORT型相同,FLOAT型与DOUBLE型相同。组合数据类型有数组类型、结构体类型、共同体类型和枚举类型,另外还有指针类型和空类型。3C51特有的数据类型有哪些答C51特有的数据类型有特殊功能寄存器型和位类型。4C51中的存储器类型有几种,它们分别表示的存储器区域是什么答C51中的存储器类型有6种,分别如下DATA直接寻址的片内RAM低128B,访问速度快BDATA片内RAM的可位寻址区20H2FH,允许字节和位混合访问IDATA间接寻址访问的片内RAM,允许访问全部片内RAMPDATA用RI间接访问的片外RAM低256BXDATA用DPTR间接访问的片外RAM,允许访问全部64KB片外RAMCODE程序存储器ROM64KB空间5在C51中,BIT位与SBIT位有什么区别答BIT位类型符用于定义一般的位变量。存储器类型只能是BDATA、DATA、IDATA,只能是片内RAM的可位寻址区,严格来说只能是BDATA。SBIT位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。6在C51中,通过绝对地址来访问的存储器有几种答通过绝对地址来访问存储器有三种方法1使用C51运行库中预定义宏。2通过指针访问。3使用C51扩展关键字_AT_7在C51中,中断函数与一般函数有什么不同答中断函数在定义时后面带INTERRUPTM修饰符,M的取值为031,对应的中断情况如下0外部中断0,1定时/计数器T0,2外部中断1,3定时/计数器T1,4串行口中断,5定时/计数器T2,其他值预留。编写MCS51中断函数需要注意如下几点。1中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。2中断函数没有返回值。3在任何情况下都不能直接调用中断函数4如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。5C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。6C51编译器从绝对地址8M3处产生一个中断向量,其中M为中断号,也即INTERRUPT后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。7中断函数最好写在文件的尾部,并且禁止使用EXTERN存储类型说明。防止其他程序调用。8按给定的存储类型和数据类型,写出下列变量的说明形式。1在DATA区定义字符变量VAL1。CHARDATAVAL12在IDATA区定义整型变量VAL2。INTIDATAVAL23在XDATA区定义无符号字符型数组VAL34。UNSIGNEDCHARXDATAVAL344在XDATA区定义一个指向CHAR类型的指针PX。CHARXDATAPX5定义可寻址位变量FLAG。BITFLAG6定义特殊功能寄存器变量P3。SFRP30XA07定义特殊功能寄存器变量SCON。SFRSCON0X988定义16位的特殊功能寄存器T0。SFR16T00X8A9写出下列关系表达式或逻辑表达式的结果,设A3,B4,C5。1ABCMAININTX,Y,ZSERIAL_INITIALXY8ZXPRINTF“NDDD“,Y,Z,XXY8ZXPRINTF“NDDD“,Y,Z,XXY8ZXPRINTF“NDDD“,Y,Z,XXY8ZXPRINTF“NDDD“,Y,Z,XPRINTF“N“WHILE1结果8998898778872INCLUDEEXTERNSERIAL_INITIALMAININTX,Y,ZSERIAL_INITIALPRINTF“INPUTDATAX,YN“SCANF“DD“,PRINTF“NXYXYXYXYXY“PRINTF“N“PRINTF“N3D3D“,X,YZXYPRINTF“5D“,ZZXYPRINTF“5D“,ZZXYPRINTF“5D“,ZZXYPRINTF“5D“,ZWHILE1执行结果INPUTDATAX,Y12XYXYXYXYXY121100103INCLUDEEXTERNSERIAL_INITIALMAININTX,Y,ZSERIAL_INITIALPRINTF“INPUTDATAX,YN“SCANF“DD“,PRINTF“NXYXX|YXPRINTF“N3D3D“,X,YZYPRINTF“5D“,ZZX|YPRINTF“5D“,ZZXPRINTF“5D“,ZPRINTF“N“PRINTF“N“PRINTF“THATISALLN“WHILE1执行结果INPUTDATAX,YXYXX|YXMAININTA,BUNSIGNEDINTX,YSERIAL_INITIALAB0XAA55XY0XAA55PRINTF“NA4XB4XX4XY4X“,A,B,X,YAA1XX1PRINTF“NA4XB4XX4XY4X“,A,B,X,YPRINTF“N“PRINTF“N“PRINTF“THATISALLN“WHILE1执行结果AAA55BAA55XAA55YAA55A54AABD52AX54AAY552ATHATISALL11BREAK和CONTINUE语句的区别是什么答BREAK语句可以跳出SWITCH结构,使程序继续执行SWITCH结构后面的一个语句。BREAK语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。CONTINUE语句用在循环结构中,用于结束本次循环,跳过循环体中CONTINUE下面尚未执行的语句,直接进行下一次是否执行循环的判定。CONTINUE语句和BREAK语句的区别在于CONTINUE语句只是结束本次循环而不是终止整个循环;BREAK语句则是结束循环,不再进行条件判断。12用分支结构编程实现输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。参考程序INCLUDEINCLUDEVOIDMAINVOIDUNSIGNEDCHARXSCON0X52/串口初始化TMOD0X20TH10XF3TR11WHILE1PRINTF“INPUTXN“/输出提示信息SCANF“C“,SWITCHXCASE1PRINTF“AN“BREAKCASE2PRINTF“BN“BREAKCASE3PRINTF“CN“BREAKCASE4PRINTF“DN“BREAKCASE5PRINTF“QUITN“BREAKDEFAULTPRINTF“RETRYN“IFX5BREAKWHILE113输入3个无符号的字符数据,要求按由大到小的顺序输出。参考程序INCLUDEINCLUDEVOIDMAINVOIDUNSIGNEDCHARX,Y,Z,MSCON0X52/串口初始化TMOD0X20TH10XF3TR11PRINTF“INPUTX,Y,Z“/输出提示信息SCANF“C,C,C“,PRINTF“N“IFX/包含特殊功能寄存器库INCLUDE/包含I/O函数库VOIDMAINVOID/主函数INTI,S0/定义整型变量I1SCON0X52/串口初始化TMOD0X20TH10XF3TR11WHILEI/包含特殊功能寄存器库INCLUDE/包含I/O函数库VOIDMAINVOID/主函数INTI,S0/定义整型变量I1SCON0X52/串口初始化TMOD0X20TH10XF3TR11DO/累加1到10的平方之和在S中SSIIIWHILEI/包含特殊功能寄存器库INCLUDE/包含I/O函数库VOIDMAINVOID/主函数INTI,S0/定义整型变量SCON0X52/串口初始化TMOD0X20TH10XF3TR11FORI1I/包含特殊功能寄存器库INCLUDE/包含I/O函数库MAINUNSIGNEDCHARF5,M,I,JSCON0X52/串口初始化TMOD0X20TH10XF3TR11PRINTF“输入任意5个字符“SCANF“C,C,C,C,C“,PRINTF“N“FORI0IFJ1MFJFJFJ1FJ1MPRINTF“由小到大的顺序为C,C,C,C,C“,F0,F1,F2,F3,F4PRINTF“N“WHILE116用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。参考程序INCLUDE/包含特殊功能寄存器库INCLUDE/包含I/O函数库MAINUNSIGNEDCHARX,Y,ZUNSIGNEDCHARP,P1,P2,P3SCON0X52/串口初始化TMOD0X20TH10XF3TR11PRINTF“INPUTX,YANDZN“SCANF“C,C,C“,PRINTF“N“P1P2P3IFP1/包含特殊功能寄存器库INCLUDE/包含I/O函数库STRUCTSTUDENTUNSIGNEDCHARNUMBER10UNSIGNEDCHARNAME10UNSIGNEDINTGRADEP13MAINUNSIGNEDCHARI,J0SCON0X52/串口初始化TMOD0X20TH10XF3TR11PRINTF“INPUT3STUDENDNUMBER,NAMEANDGRADEN“FORI0IP1JGRADEJIPRINTF“成绩最高的学生是S,成绩是D“,P1JNAME,P1JGRADEPRINTF“N“WHILE1第五章1单片机C语言与汇编语言混合编程有哪几种方式通常采用什么方式答单片机C语言和汇编语言混合编程分为汇编中调用C51函数和C51程序中引用汇编,通常使用的是在C51程序中引用汇编。在C51程序中使用汇编语言有两种情况一种是汇编程序部分和C51程序部分为不同的模块,或不同的文件,通常由C51程序调用汇编程序模块的变量和函数也可称为子程序或过程;另一种是嵌入式汇编,即在C51程序中嵌入一段汇编语言程序。2简述C51程序调用汇编程序时如何实现参数传递。答C51中调用汇编程序进行参数传递时都必须严格遵守C51函数的参数和返回值的相关约定。行参数传递的方式有两种,一种是通过寄存器传递参数,C51中不同类型的实参会存入相应的寄存器,在汇编中只需对相应寄存器进行操作,即可达到传递参数的目的;第二种是通过固定存储区传递。3简述嵌入式汇编的实现方法。答在C51程序中嵌入汇编程序通常的处理方法如下。第一步在C文件中以如下方式嵌入汇编程序。第二步在KEILC51软件的PROJECT窗口右击嵌入汇编程序的C文件,在弹出的快捷菜单中选择OPTIONSFOR命令,选中右边的GENERATEASSEMBLERSRCFILE和ASSEMBLESRCFILE复选框,使检查框由灰色变成黑色有效状态。第三步根据选择的编译模式,把相应的库文件如SMALL模式时,是KEILC51LIBC51SLIB加入到工程中,该文件必须作为工程的最后文件。4简述C51中调用汇编程序的实现方法。答编写为C51调用的汇编程序,参数须按规定的寄存器或存储器传送,程序格式有相应的规则,这些规则比较繁琐,为了便于处理,在实际中我们往往先用C51写出这个程序的主体,然后用SRC控制指令编译产生ASM文件,修改这个ASM文件得到我们所要的汇编函数。处理过程具体如下。第一步先用C语言程序编写出程序框架,如文件名为A1C注意参数。第二步在KEILC51的PROJECT窗口中右击该C语言文件,在弹出的快捷菜单中选择OPTIONSFOR,右边的GENERATEASSEMBLERSRCFILE和ASSEMBLESRCFILE,使检查框由灰色变成黑色有效状态第三步根据选择的编译模式,把相应的库文件如SMALL模式时,是KEILC51LIBC51SLIB加入工程中,该文件必须作为工程的最后文件。库文件与编译模式的关系如前面。第四步编译后将会产生一个SRC的文件,将这个文件扩展名改为ASM。这样就形成了可供C51程序调用的汇编程序。随后可在该文件的代码段中加入所需的指令代码。第五步将该汇编程序与调用它的主程序一起加到工程文件中,这时工程文件中不再需要原来的C语言文件和库文件,主程序只需要在程序开始处用EXTERN对所调用的汇编程序中的函数作声明,在主程序中就可调用汇编程序中的函数了。第六章1何为“准双向I/O接口”在MCS51单片机的四个并口中,哪些是“准双向I/O接口”答准双向I/O接口是能实现输入输出功能,但在使用时只能从输入和输出中选择一个。MCS51单片机的四个并口中P1、P2、P3是准双向I/O接口。280C51单片机内部有几个定时/计数器它们由哪些功能寄存器组成怎样实现定时功能和计数功能答80C51单片机内部有两个16位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMOD和TCON功能寄存器组成。通过TMOD中的C/T位选择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。3定时/计数器T0有几种工作方式各自的特点是什么答有四种工作方式,特点见下表M1M0工作方式方式说明00013位定时/计数器01116位定时/计数器1028位自动重置定时/计数器113两个8位定时/计数器只有T0有4定时/计数器的四种工作方式各自的计数范围是多少如果要计10个单位,不同的方式初值应为多少答有四种方式。方式0计数范围18192;方式1计数范围165536;方式2计数范围1256;方式3计数范围1256。如果计10个单位,方式0初值为8192108182;方式1初值为655361065526;方式2初值为25610246;方式2初值为25610246。5设振荡频率为12MHZ,如果用定时/计数器T0产生周期为100MS的方波,可以选择哪几种方式,其初值分别设为多少答只能选择方式1,初值为655365000015536。6何为同步通信何为异步通信各自的特点是什么答异步通信方式的特点是数据在线路上传送时是以一个字符字节为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。同步通信方式的特点是数据在线路上传送时以字符块为单位,一次传送多个字符,传送时须在前面加上一个或两个同步字符,后面加上校验字符。特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。7单工、半双工和全双工有什么区别答单工方式只有一根数据线,信息只能单向传送;半双工方式也只有一根数据线,但信息可以分时双向传送;全双工方式有两根数据线,在同一个时刻能够实现数据双向传送。8设某异步通信接口,每帧信息格式为10位,当接口每秒传送1000个字符时,其波特率为多少答10000波特9串行口数据寄存器SBUF有什么特点答发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器SBUF串行口数据寄存器,执行MOVSBUF,A发送时为发送数据寄存器,执行MOVA,SBUF接收时为接收数据寄存器。10MCS51单片机串行口有几种工作方式各自特点是什么答有四种工作方式,分别是方式0、方式1、方式2和方式3。其中方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。方式1,称为8位的异步通信方式,通常用于双机通信。方式2和方式3,称为9位的异步通信方式,通常用于多机通信。11说明SM2在方式2和方式3对数据接收有何影响。答通过SM2对方式2和方式3数据接收进行控制,SM21,那么只有接收的第9位为“1”才接收有效。如SM20,接收的第9位无论为1还是0都接收有效。12怎样来实现利用串行口扩展并行输入/输出口答利用串行口在方式0时,当外接一个串入并出的移位寄存器,就可以扩展并行输出口;当外接一个并入串出的移位寄存器时,就可以扩展并行输入口。13什么是中断、中断允许和中断屏蔽答在计算机中,由于计算机内外部的原因或软硬件的原因,使CPU从当前正在执行的程序中暂停下来,而自动转去执行预先安排好的为处理该原因所对应的服务程序。执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件系统和软件系统称为中断系统。中断允许是允许中断请求送CPU产生中断,中断屏蔽是禁止中断请求信号送CPU产生中断。148051有几个中断源中断请求如何提出答MCS51单片机提供5个硬件中断源两个外部中断源P32和P33,两个定时/计数器T0和T1中断;1个串行口中断。INT0I1外部中断源和的中断请求信号从外部引脚P32和P33输入;两个定时/计数器T0和T1的溢出中断TF0和TF1定时/计数器T0或T1溢出时INT01提出;串行口中断由发送中断标志T1和接收中断标志R1产生。158051的中断源中,哪些中断请求信号在中断响应时可以自动清除哪些不能自动清除应如何处理答工作在边沿触发方式下的两个外部中断源和两个定时/计数器中断中断请求信号在中断响应时可以自动清除,工作在电平触发方式下的两个外部中断源和串行口中断不能自动清除。工作在电平触发方式下的两个外部中断源的中断请求信号通过外加硬件和加软件的方式清除,串行口中断标志T1和标志R1完全由软件清除。168051的中断优先级有几级在形成中断嵌套时各级有何规定答8051的中断优先级有两级;形成中断嵌套时规定1正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。2正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。3CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。17设8051的P1中各位接发光二极管,分别用汇编语言和C语言编程实现逐个轮流点亮二极管,并循环显示。参考程序ORG0000HLJMPMAINORG0100H;主程序MAINMOVA,01HLOOPMOVP1,ACALLDELAYRLASJMPLOOPSJMPDELAYMOVR7,0FFHDJNZR7,RETENDC语言程序INCLUDE/包含特殊功能寄存器库VOIDDELAYUNSIGNEDINTXVOIDMAINUNSIGNEDCHARI,JWHILE1I01FORJ0J/包含特殊功能寄存器库SBITP1_0P10VOIDMAINTMOD0X01TH00XFCTL00X18EA1ET01TR01WHILE1VOIDTIME0_INTVOIDINTERRUPT1/中断服务程序TH00XFCTL00X18P1_0P1_0198051系统中,已知振荡频率为12MHZ,用定时/计数器T1,实现从P11产生周期为2S的方波。要求分别用汇编语言和C语言进行编程。解从P11产生2S的方波,应产生500MS的周期性的定时,定时到对P11取反就可实现。由于定时时间较长,一个定时/计数器T1不能直接实现,采用定时/计数器T1产生周期性为10MS的定时,然后用一个寄存器R2对10MS计数100次来实现。系统时钟为12MHZ,定时/计数器T1定时10MS,计数值N为10000,只能选方式1,方式控制字为00010000B(10H),初值XX6553610000555361101100011110000B则TH111011000BD8H,TL111110000BF0H。定时/计数器T1采用中断处理方式。汇编程序ORG0000HLJMPMAINORG001BHLJMPINTT1ORG0100HMAINMOVTMOD,10HMOVTH1,0D8HMOVTL1,0F0HMOVR2,00HSETBEASETBET1SETBTR1SJMPINTT1MOVTH1,0D8HMOVTL1,0F0HINCR2CJNER2,64H,NEXTCPLP11MOVR2,00HNEXTRETIENDC语言程序INCLUDE/包含特殊功能寄存器库SBITP1_1P11CHARIVOIDMAINTMOD0X10TH10XD8TL10XF0EA1ET11I0TR11WHILE1VOIDTIME0_INTVOIDINTERRUPT3/中断服务程序TH10XD8TL10XF0IIFI100P1_1P1_1I0208051系统中,已知振荡频率为12MHZ,用定时/计数器T1,实现从P11产生高电平宽度为10MS,低电平宽度为20MS的矩形波。要求分别用汇编语言和C语言进行编程。解本题处理方式有多种,这里采用对定时/计数器T1形成10MS周期定时,用R2对10MS计数,当计到1,则对P11置1,当计到2和3,则对P11置0来实现。用定时/计数器T1形成10MS周期定时见上题。程序如下ORG0000HLJMPMAINORG001BHLJMPINTT1ORG0100HMAINMOVTMOD,10HMOVTH1,0D8HMOVTL1,0F0HMOVR2,00HSETBEASETBET1SETBTR1SJMPINTT1MOVTH1,0D8HMOVTL1,0F0HINCR2CJNER2,01H,NEXTSETBP11SJMPEXITNEXTCJNER2,02H,NEXT1CLRP11SJMPEXITNEXT1CJNER2,03H,NEXTSETBP11MOVR2,00EXITRETIENDC语言程序INCLUDE/包含特殊功能寄存器库SBITP1_1P11CHARIVOIDMAINTMOD0X10TH10XD8TL10XF0EA1ET11I0TR11WHILE1IFI0P1_11IFI1P1_10IFI2P1_10VOIDTIME0_INTVOIDINTERRUPT3/中断服务程序TH10XD8TL10XF0IIFI3I021用8051单片机的串行口扩展并行I/O接口,控制16个发光二极管依次发光,画出电路图,用汇编语言和C语言分别编写相应的程序。解采用在串口连接两个CD4094来实现,电路图如下8051RXDTXDP10DATACLKSTBDATACLKSTB程序如下;ORG0000HLJMPMAINORG0100HMAINMOVSCON,00HMOVR4,10HMOVR3,00HMOVR2,01HCLRP10STARTMOVA,R3MOVSBUF,ALOOPJNBTI,LOOPMOVA,R2MOVSBUF,ALOOP1JNBTI,LOOP1SETBP10ACALLDELAYCLRTICLRCMOVA,R2RLCAMOVR2,AMOVA,R3RLCAMOVR3,ACLRP10DJNZR4,START1SJMPMAINDELAYMOVR7,05HLOOP2MOVR6,0FFHLOOP1DJNZR6,LOOP1DJNZR7,LOOP2RETENDC语言程序INCLUDEVOIDDELAYUNSIGNEDINTXUNIONUNSIGNEDINTWORDSTRUCTUNSIGNEDCHARHIGHUNSIGNEDCHARLOWBYTESNUMBERVOIDMAININTISCON0X00WHILE1NUMBERWORD0X01FORI0IINCLUDEMAINUNSIGNEDCHARIXBYTE0X7F030X90WHILE1IXBYTE0X7F00XBYTE0X7F01I17用汇编语言编写出定时扫描方式下矩阵键盘的处理程序。该程序放于定时器的中断服务程序中。定时器每10MS中断一次,执行一次中断服务程序。F1和F2标志位用片内RAM的50H和51H单元。ACALLKS1JNZLK1MOV50H,0;无键按下,F1的F0标志清0结束MOV51H,0SJMPOUTLK1CJNE50H,1,OUT1;有键按下检查F1标志是否为1,不为1置1结束。CJNE51H,01,OUT;再检查F2标志是否为1,为1说明已处理按键则结束。LK2MOVR2,0FEH扫描查询键码MOVR4,00HLK4MOVDPTR,7F00HMOVA,R2MOVXDPTR,AINCDPTRINCDPTRMOVXA,DPTRJBACC0,LONEMOVA,00HAJMPLKPLONEJBACC1,LTWOMOVA,08HAJMPLKPLTWOJBACC2,LTHRMOVA,10HAJMPLKPLTHRJBACC3,NEXTMOVA,18HLKPADDA,R4求键码放累加大器A,MOV51H,1F2标志置1,结束SJMPOUTNEXTINCR4MOVA,R2JNBACC7,KENDRLAMOVR2,ASJMPLK4KENDSJMPOUT扫描完结束KS1MOVDPTR,7F00H检查有无按键MOVA,00HMOVXDPTR,AINCDPTRINCDPTRMOVXA,DPTRCPLAANLA,0FHRETOUT1MOV50H,1OUT18用C语言编写出定时扫描方式下矩阵键盘的处理程序。F1和F2标志已在主函数前定义。/检测有无键按下函数UCHARCHECKKEY/检测有无键按下函数,有返回0XFF,无返回0UCHARIXBYTE0X7F000X00IXBYTE0X7F02IIIFI0X0FRETURN0ELSERETURN0XFF/键盘扫描函数UCHARKEYSCAN/键盘扫描函数,如果有键按下,则返回该键的编码,如果无键按下,则返回0XFFUCHARSCANCODE/定义列扫描码变量UCHARCODEVALUE/定义返回的编码变量UCHARM/定义行首编码变量UCHARK/定义行检测码UCHARI,JIFCHECKKEY0RETURN0XFF/检测有无键按下,无返回0XFFELSEDELAY200/延时IFCHECKKEY0RETURN0XFF/检测有无键按下,无返回0XFFELSESCANCODE0XFEM0X00/列扫描码,行首码赋初值FORI0IINCLUDE/定义绝对地址访问DEFINEUCHARUNSIGNEDCHARDEFINEIN0XBYTE0X0000/定义IN0为通道0的地址STATICUCHARDA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论