机电一体化《单片机原理及应用》山东大学网络教育考试模拟题及问题详解教学文稿_第1页
机电一体化《单片机原理及应用》山东大学网络教育考试模拟题及问题详解教学文稿_第2页
机电一体化《单片机原理及应用》山东大学网络教育考试模拟题及问题详解教学文稿_第3页
机电一体化《单片机原理及应用》山东大学网络教育考试模拟题及问题详解教学文稿_第4页
机电一体化《单片机原理及应用》山东大学网络教育考试模拟题及问题详解教学文稿_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

经典word整理文档,仅参考,双击此处可删除页眉页脚。本资料属于网络整理,如有侵权,请联系删除,谢谢!机电一体化《单片机原理及应用》山东大学网络教育考试模拟题及问题详解精品资料《单片机原理及应用》除非特别声明,编程题可以使用汇编语言编写,也可以使用C语言编写1、分析程序的执行结果,将结果填写到空格中。ORG0000HMOV30H,#50HMOVR0,#30HMOVA,@R0MOVA,#79HMOVB,#20HDIVAB;(A=50H);(A=79HB=20H);(A=03HB=19H)00H)PUSHBMOVB,#0AHMULAB;(A=1EHB=POPBADDA,B;(A=37HB=19H)MOV30H,AMOV20H,30HCLR01H;(30H单元的内容=37H);(20H单元的内容=;(PSW中P的内容=1);(PSW中C的37H)MOVA,20HCPLARRA内容=0)SWAPAADDCA,#0F0H;(A=46H);(A=36H);(PSW中P的内容=0)仅供学习与交流,如有侵权请联系网站删除谢谢2精品资料;(PSW中C的内容=1)RLA;(A=6CH);(PSW中P的内容=0);(PSW中C的内容=0)LOOP:AJMPLOOP2、将MCS51内部RAM60H~65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。[使用汇编语言编写]:MOVR0,#60HMOVR2,#6MOVDPTR,#0090HHASC:MOVA,@R0ANLA,#0FH;屏蔽高四位ADDA,#0DHMOVCA,@A+PC;查表低四位转换为ASCII码;送如外部RAMMOVX@DPTR,AINCDPTRMOVA,@R0ANLA,#0F0HSWAPAADDA,#6仅供学习与交流,如有侵权请联系网站删除谢谢3精品资料MOVC,@A+PC;高四位转换为ASCII码MOVX@DPTR,AINCR0INCDPTRDJNZR2,HASCENDASCTAB:DB30H31H32H33H34H35H36H37H38H39HDB41H42H43H44H45H46H3、某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿。没有故障时,线路1为低电平,线路2为高电平。出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。4、用MSC1211的T0/计数器,设计程序,实现在P1.0输出周期为200ms的占空比为1:1的方波,输出500个方波后停止输出。解:ORG0000HLJMPMAINORG000BH;T0口中断服务程序入口地址LJMPINT_T0:MOVTMOD,#00HMOV,#0CH;T0工作于方式0定时仅供学习与交流,如有侵权请联系网站删除谢谢4精品资料MOVTH0,#1EH;设定秒中断周期为1msMOV,200;设定输出周期为200ms;输出500个方波MOVR2,1000SETBTR0SETBET0SETBEASETBP1.0SJMP$INT_T0:MOVMOVTH0,#1EH;T0重装时间常数P1.0P1.0位取反,#0CHCPLDECJZR2ENDP;若R2为0,则结束程序,否则返主程序继续输出RETI;返主程序ENDP:END5、利用MSC1211的A/D构成数据采集系统。使用模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(应在适当的地方加程序注释)。仅供学习与交流,如有侵权请联系网站删除谢谢5精品资料解:#include<REG1211.H>#include<stdio.h>externvoidautobaud(void);//声明外部函数externvoidbipolar(void);floata[100]={0},w[8]={0};intout=0;longresult,temp;intj;intAUXinterrupts(void)interrupt6using1//中断服务程序{if(PAI==6){//处理AD中断w[out++]=bipolar();temp=w[out];SUMR0=temp&0xff;SUMR1=(temp>>8)&0xff;SUMR2=(temp>>16)&0xff;SUMR3=(temp>>24)&0xff;if(out==8){SUM=SUMR3<<24+SUMR2<<16+SUMR1<<8+SUMR0;}SUM/=8;a[j++]=SUM;if(j>=100){j=0;}}}min(void){floatdummy;intdecimation;decimationg=1440;//抽取因子PDCON&=0x77;//打开ADCACLK=9;//模拟采样频率仅供学习与交流,如有侵权请联系网站删除谢谢6精品资料ADMUX=0;//使用通道0ADCON0=0x30;//内部基准2.5V,缓冲器关,BOD关,PGA=0ADCON1=0x01;//双极性,自动稳定模式,偏移增益自校准ADCON2=decimation&0xff;//写入抽取因子低字节ADCON3=(decimation>>8)&0x07;//写入抽取因子高字节AIE=&0x20;autobaud();//等待校准for(i=0;i<4;i++){while(!(AIE&0X20)){dummy=ADRESL;}SSCON=0;//清除求和寄存器;While(1);}}6、变量k从0变到150,变化步长为10。对于每一个值,使用整形数算术运算计算8*k,k*k*k和(40*k/150)^3。这三个值通过MSC1211的D/A转换后同步输出(均使用电压输出模式)。试编写程序实现。解:include<Reg1211.h>仅供学习与交流,如有侵权请联系网站删除谢谢7精品资料dataunsignedintk,j,i;voidmain(void){PDCON&=~0X48;ADCON0=0X30;DACSEL=6;DACSEL=4;DACL=0X24;DACSEL=5;DACH=0x24;while(1){DACSEL=0;DAC=0x8000;for(j=0;j<100;j++)DAC=0;for(k=0;k<151;k+=10){DACSEL=1;DAC=8*k;DACSEL=2;DAC=k*k*k;DACSEL=3;i=40*k/150;DAC=i*i*i;DACSEL=6;DACL=0Xfc;}}}7、利用MSC1211或8051设计应答方式下的多机通讯程序。通讯参数:晶振为11.0592MHz,9600,n,8,1。通讯过程如下:主机首先发送从机地址,从机收到地址后进行比较,如果地址相符,则将从机地址回发给主机作为应答信号。主机收到从机的地址应答信号后,将内存单元中的120个数据发送给从机,并进行数据块校验(将各个数据进行异或),若校验正仅供学习与交流,如有侵权请联系网站删除谢谢8精品资料确,则从机发送00H给主机,否则发送0FFH给主机,主机重新发送数据。(应在适当的地方加程序注释)解:主机程序如下:ORG0000HLJMPMAINT;跳至主程序入口地址ORG0023H;串行口中断服务程序入口LJMPINTST:MOVSCON,#90H;置工作方式2,并允许接收MOVTMOD,#20HMOVTH1,#0FDH;置T1工作方式2MOV,#0FDHMOVDPTR,#ADDR;设置数据块首址ADDR的地址指针MOVR0,#120MOVR1,#00H;设置发送字节数;设置校验和的初值MOVR2,#NAMESETBTB8SETBTR1SETBEA;置位TB8位,作为发送地址桢信息特征;CPU开中断;允许串行口中断SETBES仅供学习与交流,如有侵权请联系网站删除谢谢9精品资料MOV,R2;发送地址桢信息MOV,ASJMP$;中断服务程序INTST:MOV,TB8;判断是发送地址还是数据,若为数据则转LOOP0CJNE,01H,LOOP0CLRTILOOP0:JB转入接受乙机发送应答信息CLRTI;因,表明是甲机发送中断数据的中;地址桢信息发送完后清发送中断,LOOP1;检查是否是接受中断?若RI=1则断请求。CPU响应中断,在中断服务程序中应清中断标志MOV,;CJNE,#01H,LOO3;若为发送数据中断则转LOOP3继续发送数据LJMPENDT;甲机发送一数据完毕跳至中断返回程序LOOP1:CLRRI;清接受中断标志MOV,TB8LOOP2;判断是发送地址还是数据,若为数据则转CJNE,#01H,;若TB8为0则接受的为乙机数据校验应答仅供学习与交流,如有侵权请联系网站删除谢谢10精品资料MOV,SBUF;取乙机的应答数据;若乙机应答信息不是从机地CJNE,@R2,LOOP2址,则地址传送不正确,则转LOOP2程序重新发送地址信息,否则清,发送数据CLRTB8LOOP3:MOVXA,@DPTR;取下一个数MOV,A;启动串行口,发送新的数据XRL,@R1MOV@R1,AINCDPTR;修改地址指针R0;修改发送字节数记数值DECCJNER0,#00H,ENDT;判别120个字节数据都发送完没有。如果没有发送完则跳至中断返回程序。继续发送MOV,@R1MOV,ALJMPENDT;数据全部发送完毕则发送校验和;取乙机的应答数据LOOP4:MOV,SBUFCJNE,#00H,LOOP5LOOP5重新发送CLRES;若数据发送不正确,则转;全部发送完毕,禁止串行口中断仅供学习与交流,如有侵权请联系网站删除谢谢11精品资料LOOP5:MOVDPTR,#ADDR;设置数据块首址ADDR的地址指针MOVR0,#120MOVR1,#00H;设置发送字节数;设置校验和的初值LJMPLOOP2LOOP2:MOV,R2;发送地址桢信息MOV,ARETI:RETIEND从机程序如下:ORG0000HLJMPMAINR;跳至主程序入口地址ORG0023H;串行口中断服务程序入口LJMPINTSRMAINR:MOVSCON,#0B0H;置工作方式2,并允许接收MOVTMOD,#20HMOVTH1,#0FDHMOV,#0FDH;置T1工作方式2MOVDPTR,#ADDRMOVR0,#120;设置数据块接收首址为ADDR;设置接收字节数MOVR2,#NAME仅供学习与交流,如有侵权请联系网站删除谢谢12精品资料MOVR1,#00H;设置校验和的初值SETBRB8SETBTR1SETBEA;置位RB8位,作为接受地址信息特征;CPU开中断;允许串行口中断SETBESSJMP$;中断服务程序INTSR:MOV,RB8;判断是接收地址还是数据,若为数据则转LOOP0CJNE,01H,LOOP0CLRRI;地址桢信息接受完后清接收中断MOV,SBUFXRL,@R2JZLOOP;若地址相符则转,否则中断返回LJMPENDRLOOP:CLRSM2CLRRB8MOV,@R2MOV,A;想主机发送从机地址LJMPENDRLOOP0:JB,LOOP1;检查是否是接受中断?若RI=1则转入接受甲机发送的数据仅供学习与交流,如有侵权请联系网站删除谢谢13精品资料CLRTI;因,表明是乙机发送中断数据的中断请求。CPU响应中断,在中断服务程序中应清中断标志LJMPENDR;甲机发送一数据完毕跳至中断返回程序LOOP1:CLRRI;清接受中断标志DECJZ@R0LOOP2;数据未接收完则中断返回,若接收完则转,校验MOV,SBUF;取甲机发送的数据MOVX,AXRLA,@R1MOV@R1,ALOOP2:MOV,SBUF:取甲机发送的校验和XRLJZ,@R1RIGHTLJMPWRONGRIGHT:MOV,#00HMOV,ALJMPENDRWRONG:MOV,#0FFHMOV,AMOVDPTR,#ADDR;设置数据块接收首址为ADDRMOVR0,#120;设置接收字节数仅供学习与交流,如有侵权请联系网站删除谢谢14精品资料LJMPENDRENDR:RETIEND《单片机原理及应用》1、分析程序的执行结果,将结果填写到空格中。ORG0000HMOV30H,#50HMOVR0,#30HMOVA,@R0MOVA,#79HMOVB,#20HDIVAB;(A=50H);(A=79HB=20H);(A=03HB=19H)PUSHBMOVB,#0AHMULAB;(A=1EB=00H)POPBADDA,B;(A=37HB=19H)MOV30H,A;(30H单元的内容=37H)LOOP:AJMPLOOP2、MCS51内部RAM50H~55H单元存放的12个16进制数变为ASCII码,放到2800H单元开始的外部RAM中。:MOVR0,#50HMOVR2,#6MOVDPTR,#2800HHASC:MOVA,@R0ANLA,#0FH;屏蔽高四位仅供学习与交流,如有侵权请联系网站删除谢谢15精品资料ADDA,#0DHMOVCA,@A+PCMOVX@DPTR,A;查表低四位转换为ASCII码;送如外部RAMINCDPTRMOVA,@R0ANLA,#0F0HSWAPAADDA,#6MOVC,@A+PC;高四位转换为ASCII码MOVX@DPTR,AINCR0INCDPTRDJNZR2,HASCENDASCTAB:DB30H31H32H33H34H35H36H37H38H39HDB41H42H43H44H45H46H3、编制四个十六进制单字节数相加后求平均的程序。假设4个16进制的单字节分别为,b,,d,计算结果方到e中#include<reg51.h>#defineucharunsignedcharvoidmain(void){uchara,b,c,d,e;e=(a+b+c+d)/4;while(1);}仅供学习与交流,如有侵权请联系网站删除谢谢16精品资料4、用8031的T0定时/计数器,设计程序,实现在P1.0输出50ms的方波,输出100个方波后停止输出。#include<reg51.h>#defineucharunsignedcharuchara;voidmain(void){TMOD=0X01;TL0=0XB0;TH0=0X3C;EA=1;ET0=1;TR0=1;while(1){if(a==100){EA=0;TR0=0;}}}voidtimer0(void)interrupt1{TL0=0XB0;TH0=0X3C;cplp1.0;a++;}5、甲单片机利用方式1将内部RAM30H~37H单元的ASCII码发送到乙机。编制甲机发送和乙机接收的程序(加奇校验)。仅供学习与交流,如有侵权请联系网站删除谢谢17精品资料A机发送程序设计ST:MOVTMOD,#20HMOVTL1,#0E8HMOVTH1,#0E8HSETBTR1MOVSCON,#50HMOVR0,#30HMOVR1,#08HLOOP:MOVA,@R0CALLFSINCR0DJNZR1,LOOPRETFS:MOVC,PCPLCMOVACC.7,CMOVSBUFAWAIT:JNBTI,WAITCLRTIRETB机的接受程序设计接受串口发来的程序,假设存放在30H—37H中ST:MOVTMOD,#20HMOVTL1,#0E8HMOVTH1,#0E8HSETBTR1MOVSCON,#50HMOVR0,#30HMOVR1,#08H仅供学习与交流,如有侵权请联系网站删除谢谢18精品资料LOOP:CALLJSJNCERRORMOV@R0,AINCR0DJNZR1,LOOPRETERROR:………;出错处理,如返回出错信息等RETJS:JNBRIJSCLRRIMOVA,SBUFMOVPCANLA,#7FHRET6、试用8031和8155实现键盘和LED动态显示。画出原理示意图并编制键盘扫描程序和LED动态显示程序(16个键的键盘扫描和6位LED显示)。键盘扫描子程序:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharnum,i;uinttemp;voidmain(void){while(1){keych();仅供学习与交流,如有侵权请联系网站删除谢谢19精品资料}}voidkeych(){for(i=0;i<4;i++){temp=0xfe;temp=_crol_(temp,i);P0=temp;temp=P0;temp=temp&0xf0;if(temp!=0xf0){delay();if((P0&0xf0)!=0xf0){switch(temp){case0x70:jpch;break;case0xb0:jpch;break;case0xd0:jpch;break;case0xe0:jpch;break;}}}}}仅供学习与交流,如有侵权请联系网站删除谢谢20精品资料Voidjpch(void){…..//按键扫描处理程序}LED动态扫描子程序假设各端口都已初始化#include<reg51.h>Unsignedcharduanx[]={0x3f,0x06,0x5b,0x4f,0x66,0xbd}Unsignedcharweix[]={0x80,0x40,0x20,0x10,0x80,0x40}Voidmain(void)Init();//初始化各端口P1=0While(1){Unsignedchar;For(i=0;i<6,i++){P0=duanx[i];P1++P0=weix[i];Delay();P1=0;P0=0;}i=0;p1=0}5、利用8031和8位A/D(ADC0809)构成数据采集系统。每隔20ms采集通道0的一次数据,将采集的数据存放在30H的内部RAM中。画出原理示意图,写出较完整的程序清单。(提示:需要用定时器和外部中断)。仅供学习与交流,如有侵权请联系网站删除谢谢21精品资料《单片机原理及应用》一、分析程序的执行结果,将结果填写到空格中。1、MOV40H,#80HMOVR0,#40HMOV,@R0;(A=80H)MOV,#20HDIVAB;(A=04HB=00H)MOV@R0,A;最终结果存于内存单元40H中。2、MOVRRAMOV,A,#2AHMULAB;(A=B9HB=01H)(OV=1CY=0)3、MOV,#0B2HMOVR1,#055HANL,R1;(A=10H)仅供学习与交流,如有侵权请联系网站删除谢谢22精品资料ORL,R1XRL,R1SWAPA;(A=55H);(A=00H);(A=00H)4、设内存20H的内容为30H,30H的内容为46H,46H的内容为57HMOVR0,#30HMOV,@R0;(PSW中P的内容=1)XCH,R0ADD,#0DBHSUBB,#74H;(A=96H);(PSW中P的内容=0);(PSW中C的内容=0)5、MOV25H,#39HCLR2AH;(25H)(00111001B)CPL2CH;(25H)(00101001B)SETB2EH;(25H)(01101001B)仅供学习与交流,如有侵权请联系网站删除谢谢23精品资料MOVC,28H;(PSW中C的内容=1)二、程序设计1、MCS51内部RAM~60H单元存放着有符号16进制数,将其中能被2整除的数,存放到0090H单元开始的外部RAM中。[使用汇编语言编写]解:ORGJMP0000HSTARTSTART:MOVSP,#60HMOVDPTR,#0090HMOVR0,#40HMOVR1,#21LOOP0:MOV,@R0MOVB,#2DIVABMOVR2,BCJNZR2,#0,LOOP1;余数为0则继续,不为0则转移MOV,@R0MOV@DPTR,AINCDPTRLOOP1:INCR0DJNZR1,LOOP0END仅供学习与交流,如有侵权请联系网站删除谢谢24精品资料2、用MSC1211的T1定时/计数器,定时0.1S中断,使P1口的8个发光二极管每隔1S循环点亮。设系统主频为。解:ORG0000HLJMPMAINORG001BH;转主程序;T1中断服务程序入口地址LJMPT1-ISRORG0100H:MOVSP,#60H;设置堆栈指针;设置P1.1发光;T1初始化MOVP1,#01HMOVTMOD,#10HMOV,#B0HMOVTH1,#3CHSETBTR1;启动T0计数;允许T0中断;CPU开中断;等待SETBET1SETBEASJMP$T1_ISR:MOVTL1,#B0HMOVTH1,#3CHMOVA,P1;P1口循环左移RLAMOVP1,AEXIT:RETI仅供学习与交流,如有侵权请联系网站删除谢谢25精品资料END3、设有甲、乙两台单片机,以工作方式3进行串行通讯,设晶振为11.0592MHz,波特率为9600,甲机将内存单元中的120个数据作补偶校验后发送给乙机,乙机对

温馨提示

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

评论

0/150

提交评论