第1页四川理工学院试卷(2009至2010学年第1学期)课程名称:微控制器技术(A卷)参考答案及评分标准命题教师:适用班级:自动化07级1、2、3、4班考试年月日共8页注意事项:1、满分100分。要求卷面整洁、字迹工整、无错别字。2、考生必须将姓名、班级、学号完整、准确、清楚地填写在试卷规定的地方,否则视为废卷。3、考生必须在签到单上签到,若出现遗漏,后果自负。4、如有答题纸,答案请全部写在答题纸上,否则不给分;考完请将试卷和答题卷分别一同交回,否则不给分。试题一、填空题(每空1分,共25分)1.单片机是将CPU、存储器、I/O接口和相应的控制部件集成到一块芯片上形成的微型计算机。2.在存储器结构上,8051微控制器采用的是哈佛结构,具有数据和程序两种存储器,每种存储器的最大存储空间可达64KB。3.8052芯片有3个定时/计数器,6个中断源。4.已知SP=25H,PC=2345H,标号Label的地址为3456H,问执行LCALLLabel指令后,堆栈指针SP=27H,(26H)=48H,(27H)=23H,PC=3456H。5.8051微控制器的中断系统最多可以有2级中断嵌套。外部中断的触发方式有两种,分别为低电平触发和下降沿触发。6.指令POPB的源操作数是SP,是寄存器间接寻址方式,目的操作数是B,是寄存器寻址方式。7.MCS-51单片机的串行口有4种工作方式,其中方式0是移位寄存器方式,用RXD引脚传送数据,用TXD引脚输出同步时钟信号。8.I2C总线由一根_数据线_和一根___时钟线__构成。题号一二三四总分评阅(统分)教师得分得分评阅教师系专业级班学号姓名密封线密封线内不要答题第2页二、选择题,请将答案填入题后括号内(每小题2分,共20分)1.单片机能直接运行的程序叫(C)A.源程序B.汇编程序C.目标程序D.编译程序2.8051与80C51的区别在于:(B)A.内部ROM的类型不同B.半导体工艺的形式不同C.内部寄存单元的数目不同D.定时器数目不同3.8051微控制器的晶振频率为fosc=24MHz,则执行一条双周期指令需要(A)A.1µSB.0.5µSC.2µSD.4µS4.下列指令中错误的是:(D)A.MOV﹫R0,AB.ADDA,R4C.ANL20H,#20HD.SUBR4,R35.8031微控制器的定时器T0工作在计数方式时:(D)A.由内部时钟频率定时,一个时钟周期加1B.由内部时钟频率定时,一个机器周期加1C.对外部计数脉冲计数,上升沿加1D.对外部计数脉冲计数,至少需要二个机器周期才能识别1个计数脉冲6.以下MCS-51中断优先级控制的叙述中,错误的是(D)A.低优先级不能中断高优先级,但高优先级能中断低优先级B.同级中断不能嵌套C.同级中断请求按时间的先后顺序响应D.同时同级的多中断请求,将形成阻塞,系统无法响应7.外中断初始化的内容不包括(A)A.设置中断响应方式B.设置外中断允许C.设置中断总允许D.设置中断方式8.在进行串行通信时,若两机的双向发送与接收只能分时进行,则为(A)A.半双工传送B.单工传送C.全双工传送D.以上都不对9.关于I2C总线的描述,错误的是(C)A.属于串行总线B.传递信息数据时,数据线上每一位信息的改变必须发生在时钟线为低电平期间C.发送开始信号和结束信号时,时钟线应为低电平D.器件地址码包含器件类型码、片选码和读写控制码得分评阅教师第3页10.以下不属于液晶显示器LCD的特点的是(B)A.体积小、重量轻、功耗低B.耐高温等恶劣环境C.可分为笔段式、字符点阵式和图形点阵式D.字符点阵式LCM的控制器可分为带字库型和不带字库型三、读程及分析题(共19分)1.读下列程序,回答问题。(6分,第一空2分,后面四空每空1分)MOVR0,#dataMOVA,@R0RLAMOVR1,ARLARLAADDA,R1MOV@R0,A上述程序段实现的功能是:把data单元的内容乘以10放回原单元;若程序执行前data=40H,(40H)=10H,执行上述程序段后,(A)=A0H,(40H)=A0H,(R0)=40H,(R1)=20H。2.读下列程序,回答问题。(7分,第一空3分,后面四空每空1分)voidmain(void){unsignedchardatavar1;unsignedcharpdata*dp1;unsignedintxdata*dp2;unsignedchardata*dp3;dp1=0x30;dp2=0x1000;*dp1=0xff;*dp2=0x1234;dp3=&var1;*dp3=0x20;}得分评阅教师系专业级班学号姓名密封线密封线内不要答题第4页上述程序段中“pdata”的含义是指:以Ri间接访问的片外RAM低256Byte;执行完上述指令后,变量var1的值是0x20,片外0x30单元的内容是0xff,片外0x1000单元的内容是0x34,片外0x1001单元的内容是0x12。3.下图为8051扩展3片存储器2764的电路连接示意图,看图完成下列问题。(6分)5855588用十六进制数表示各片2764的地址范围。第(1)片2764的地址范围是:C000H~DFFFH(2分);第(2)片2764的地址范围是:A000H~BFFFH(2分);第(3)片2764的地址范围是:6000H~7FFFH(2分)。四、综合编程题,编程语言不限,程序应有适当注释(每小题12分,共36分)1.下图是8051的并口扩展图,根据图写出8255的A口、B口、C口和控制口的地址,假设8051未用的P2口引脚都为“1”。8255的A口和B口都工作于方式0,编制在8个共阴极数码管上从D0到D7分别显示1~8的程序。已知0~9的字段码表:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;选通D0到D7位选码:0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f。(如果使用延时函数,可只说明不写内容)得分评阅教师符号地址D7D6D5D4D3D2D1D0TCON88HTF1TR1TF0TR0IE1IT1IE0IT0TMOD89HGATEC/TM1M0GATEC/TM1M0IEA8HEAET2ESET1EX1ET0EX0SCON98HSM0SM1SM2RENTB8RB8TIRIPCON87HSMOD第5页2.答:8255的A口、B口、C口和控制口的地址分别是:7F00H、7F01H、7F02H、7F03H。(4分)D0D1D2D7OEGD0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q774LS373VCCOEGD0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q774LS373VCCPA0PA1PA2PA3PA4PA5PA6PA7PB1PB2PB3PB4PB5PB6PB7PB0P2.7CSWRWRRDRDACEA0A1A0A1P0D0~D7888051825574LS373系专业级班学号姓名密封线密封线内不要答题#includereg51.h#includeabsacc.h//定义绝对地址访问(2分)voiddelay(void)//延时函数unsignedcharcodevalue[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};unsignedcharchocode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};(2分)voidmain(void){unsignedinti;XBYTE[0x7f03]=0x80;//8255A初始化(2分)while(1){for(i=0;i8;i++){XBYTE[0x7f00]=codevalue[i+1];//送出字段码XBYTE[0x7f01]=chocode[i];//送出位选码delay();}}}(2分)ORG0000HMAIN:MOVA,#10000000BMOVDPTR,#7F03H;MOVX@DPTR,A;(2分)MOVR3,#FEHLOOP:MOVR0,#1LOOP1:MOVA,R3MOVDPTR,#7F01HMOVX@DPTR,AMOVA,R0MOVDPTR,#TABMOVCA,@A+DPTRRLAMOVR3,AMOVDPTR,#7F00HMOVX@DPTR,AACALLDELAYINCR0CJNER0,#9,LOOPLCALLLOOP1;(4分)TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DHDB07H7FH,6FH,77H,7CH,39H,5EH,79H,71HEND;(2分)第6页2.设fosc=11.0592MHz,试编写一段程序,其功能为对串行口初始化,使之工作于方式1,波特率为1200bps,SMOD=0;并用查询串行口状态的方法,读出接收缓冲器的数据并回送到发送缓冲器。答:Baud=120012)256(322)256(322modmodxfTxoscss,smod=0时,x=232=E8H(4分)MAIN:MOVSCON,#01010000BMOVTMOD,#00100000BMOVTH1,#0E8HMOVTL1,#0E8HCLREAMOVPCON,#00HSETBTR1(4分)LOOP:JNBRI,$MOVA,SBUFCLRRI(2分)MOVSBUF,AJNBTI,$CLRTISJMPLOOP(2分)#includereg51.hvoidmain(void){unsignedcharbuf;SCON=0x50;TMOD=0x20;TH1=0xE8;TL1=0xE8;PCON=0x00;TR1=1;(4分)while(1){while(RI==0);buf=SBUF;RI=0;(2分)SBUF=buf;While(TI==0);TI=0;}}(2分)第7页3.下图是ADC0809与微控制器89C51的接口电路图,读图完成下列问题。提示:当START和ALE输入高电平脉冲时,启动一次A/D转换。EOC为高电平时,A/D转换结束,当OE输入为高电平时,可读取A/D转换的结果。(1)A/D转换通道端口地址范围是多少?(未连接地址引脚取“0”)(2)根据图形编写采集8路模拟量程序,并将结果存入20H地址开始的内部RAM中。P0.0~P0.7ALEP2.0WRRD0INTEOCABCCLKD0~D7STARTALEOEADC0809VREF+VREF-IN0~IN7模模模模模模5v89C5174LS373D0~D7Q0Q1Q2GOE(1)由图可得,(1)A/D转换通道端口地址范围是0000H~0007H(2分)(2)程序如下:ORG0003HLJMPINT0ORG0100H;主程序MAIN:MOVR0,#30H;设立数据存储区指针MOVR2,#08H;设置8路采样计数值SETBIT0;设置外部中断0为边沿触发方式SETBEA;CPU开放中断SETBEX0;允许外部中断0中断MOVDPTR,#0000H;送入口地址并指向IN0(2分)LOOP:MOVX@DPTR,A;启动A/D转换,A的值无意义(2分)HERE:SJMPHERE;等待中断ORG0200H;中断服务程序INT0:MOVXA,@DPTR;读取转换后的数字量MOV@R0,A;存入片内RAM单元系专业级班学号姓名密封线密封线内不要答题第8页INCDPTR;指向下一模拟通道INCR0;指向下一个数据存储单元DJNZR2,NEXT;8路未转换完,则继续CLREA;已转换完,则关中断CLREX0;禁止外部中断0中断RETI;中断返回(4分)NEXT:MOVX@DPTR,A;再次启动A/D转换RETI;中断返回(2分)#includereg51.h#includeabsacc.h//定义绝对地址访问#defineucharunsignedchar#defineIN0XBYTE[0x0000]//定义IN0为通道0的