20XX电气工程及其自动化单片机原理及应用山东大学网络教育模拟题及答案_第1页
20XX电气工程及其自动化单片机原理及应用山东大学网络教育模拟题及答案_第2页
20XX电气工程及其自动化单片机原理及应用山东大学网络教育模拟题及答案_第3页
20XX电气工程及其自动化单片机原理及应用山东大学网络教育模拟题及答案_第4页
20XX电气工程及其自动化单片机原理及应用山东大学网络教育模拟题及答案_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、 页眉 单片机原理及应用 1、 分析程序的执行结果,将结果填写到空格中。 ORG 0000H MOV 30H,#50H MOV R0,#30H MOV A,R0 ;(A= 50H ) A,#79H MOV ;(A= 79H B= 20H MOV B,#20H ) ) 19H ;(A= 03H B DIV A B= B PUSH B,#0AH MOV ) B= 1EH MUL AB 00H ;(A= B POP ) 19H A,B ADD ;(A= 37H B= ) 37H 30H,A MOV 单元的内容 ;(30H= 20H,30H MOV ) CLR 01H ;(20H单元的内容= 37H

2、) A,20H MOV 1 = 的内容P中;(PSW A CPL 页脚 页眉 RR A ;( PSW中C的内容= 0 ) ;(A= 46H ) SWAP A ADDC ) A,#0F0H ;(A= 36H 0 ) ;(PSW中P的内容= 1 ;( PSW 中C的内容= ) ) RL A ;(A= 6CH ;(PSW中P 0 = ) 的内容 的内容中;( PSWC = 0 ) LOOP: AJMP LOOP 2、 将MCS51内部RAM60H65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外部RAM中。使用汇编语言编写 MAIN: MOV R0,#60H MOV R2,

3、#6 MOV DPTR, #0090H HASC: MOV A,R0 ANL A,#0FH ;屏蔽高四位 页脚 页眉 ADD A,#0DH MOVC A,A+PC ;查表低四位转换为ASCII码 MOVX DPTR,A ;送如外部RAM INC DPTR MOV A,R0 ANL A,#0F0H SWAP A ADD A,#6 码高四位转换为 ;ASCIIMOVC,A+PC MOVX DPTR,A INC R0 INC DPTR DJNZ R2,HASC END ASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39H DB41H 42H 43H 4

4、4H 45H 46H 3、 某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故障 页脚 页眉 2时,线路2上出现下降沿。没有故障时,线路1为低电平,线路2为高电平。出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。 4、 用MSC1211的T0定时/计数器,设计程序,实现在P1.0输出周期为200ms的占空比为1:1的方波,输出500个方波后停止输出。 解:ORG 0000H LJMP MAIN ORG 000BH ;T0口中断服务程序入口地址 LJMP INT_T0 MAIN: MOV TMOD,#

5、00H ;T0工作于方式0定时 MOV TL0,#0CH MOV TH0,#1EH ;设定秒中断周期为1ms MOV A,200 ;设定输出周期为200 ms MOV R2,1000 ;输出500个方波 SETB TR0 SETB ET0 SETB EA SETB P1.0 SJMP $ INT_T0:MOV TL0, #0CH MOV TH0, #1EH ;T0重装时间常数 CPL P1.0 P1.0位取反 DEC R2 JZ ENDP ;若R2为0,则结束程序,否则返主程序继续输出 RETI ;返主程序 ENDP: END 页脚 页眉 5、 利用MSC1211的A/D构成数据采集系统。使用

6、模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(应在适当的地方加程序注释)。 解:#include #include extern void autobaud(void);/声明外部函数 extern void bipolar(void); float a100=0,w8=0;int out=0;long result,temp;int j; int AUXinterrupts(void)interrupt6 using1/中断服务程序 if(PAI=6) /处理AD中断 wout+=

7、bipolar(); temp=wout; SUMR0=temp&0xff; SUMR1=(temp8)&0xff; SUMR2=(temp16)&0xff; SUMR3=(temp24)&0xff; if(out=8) SUM=SUMR324+SUMR216+SUMR1=100) j=0; min(void) float dummy; int decimation; 页脚 页眉 decimationg=1440;/抽取因子 PDCON&=0x77;/打开 ADC ACLK=9;/模拟采样频率 ADMUX=0;/使用通道0 ADCON0=0x30;/内部基准2.5V,缓冲器关,BOD关,PGA

8、=0 ADCON1=0x01;/双极性,自动稳定模式,偏移增益自校准 ADCON2=decimation&0xff;/写入抽取因子低字节 ADCON3=(decimation8)&0x07;/写入抽取因子高字节 AIE=&0x20; autobaud(); / 等待校准 for(i=0;i4;i+) while(!(AIE&0X20) dummy=ADRESL; SSCON=0;/清除求和寄存器 EAI=1; While(1); 6、 变量k从0变到150,变化步长为10。对于每一个值,使用整形数算术运算计算8*k,k*k*k和(40*k/150)3。这三个值通过MSC1211的D/A转换后同

9、步输出(均使用电压输出模式)。试编写程序实现。 解:include data unsigned int k,j,i; void main(void) PDCON&=0X48; 页脚 页眉 ADCON0=0X30; DACSEL=6; DACSEL=4; DACL=0X24; DACSEL=5; DACH=0x24; while(1) DACSEL=0;DAC=0x8000; for(j=0;j100;j+) DAC=0; for(k=0;k151;k+=10) DACSEL=1;DAC=8*k; DACSEL=2;DAC=k*k*k; DACSEL=3;i=40*k/150;DAC=i*i*i

10、; DACSEL=6;DACL=0Xfc; 7、 利用MSC1211或8051设计应答方式下的多机通讯程序。通讯参数:晶振为11.0592MHz,9600,n,8,1。通讯过程如下:主机首先发送从机地址,从机收到地址后进行比较,如果地址相符,则将从机地址回发给主机作为应答信号。主机收到从机的地址应答信号后,将内存单元中的120个数据发送给从机,并进行数据块校验(将各个数据进行异或),若校验正确,则从机发送00H给主机,否则发送0FFH给主机,主机重新发送数据。(应在适当的地方加程序注释) 解:主机程序如下: 页脚 页眉 ORG 0000H LJMP MAINT ;跳至主程序入口地址 ORG 0

11、023H ;串行口中断服务程序入口 LJMP INTST MAINT: MOV SCON,#90H ;置工作方式2,并允许接收 MOV TMOD,#20H ;置T1工作方式2 MOV TH1,#0FDH MOV TL1,#0FDH MOV DPTR,#ADDR ;设置数据块首址ADDR的地址指针 MOV R0,#120 ;设置发送字节数 MOV R1,#00H ;设置校验和的初值 MOV R2,#NAME SETB TB8 ;置位TB8位,作为发送地址桢信息特征 SETB TR1 SETB EA ;CPU开中断 SETB ES ;允许串行口中断 MOV A,R2 ;发送地址桢信息 MOV SB

12、UF,A SJMP $ ;中断服务程序 INTST: MOV A,TB8 ;判断是发送地址还是数据,若为数据则转LOOP0 CJNE A,01H,LOOP0 CLR TI ;地址桢信息发送完后清发送中断 LOOP0:JB RI,LOOP1 ;检查是否是接受中断?若RI=1则转入接受乙机发送应答信息 CLR TI ;因RI=0,表明是甲机发送中断数据的中断请求。CPU响应中断,在中断服务程序中应清中断标志 MOV A,TB8; CJNE A,#01H,LOO3 ;若为发送数据中断则转LOOP3继续发送数据 LJMP ENDT ;甲机发送一数据完毕跳至中断返回程序 LOOP1:CLR RI ;清接

13、受中断标志 MOV A,TB8 ;判断是发送地址还是数据,若为数据则转LOOP2 CJNE A,#01H,LOOP4;若TB8为0则接受的为乙机数据校验应答 MOV A,SBUF ;取乙机的应答数据 CJNE A,R2,LOOP2 ;若乙机应答信息不是从机地址,则地址传送不正确,则转LOOP2程序重新发送地址信息,否则清TB8,发送数据 CLR TB8 页脚 页眉 LOOP3:MOVX A,DPTR ;取下一个数 MOV SBUF,A ;启动串行口,发送新的数据 XRL A,R1 MOV R1,A INC DPTR ;修改地址指针 DEC R0 ;修改发送字节数记数值 CJNE R0,#00H

14、,ENDT ;判别120个字节数据都发送完没有。如果没有发送完则跳至中断返回程序。继续发送 MOV A,R1 MOV SBUF,A ;数据全部发送完毕则发送校验和 LJMP ENDT LOOP4:MOV A,SBUF ;取乙机的应答数据 CJNE A,#00H,LOOP5 ;若数据发送不正确,则转LOOP5重新发送 CLR ES ;全部发送完毕,禁止串行口中断 LOOP5:MOV DPTR,#ADDR ;设置数据块首址ADDR的地址指针 MOV R0,#120 ;设置发送字节数 MOV R1,#00H ;设置校验和的初值 LJMP LOOP2 LOOP2:MOV A,R2 ;发送地址桢信息 M

15、OV SBUF,A RETI ENDT: RETI END 从机程序如下: ORG 0000H LJMP MAINR ;跳至主程序入口地址 ORG 0023H ;串行口中断服务程序入口 LJMP INTSR MAINR:MOV SCON,#0B0H ;置工作方式2,并允许接收 MOV TMOD,#20H ;置T1工作方式2 MOV TH1,#0FDH MOV TL1,#0FDH MOV DPTR,#ADDR ;设置数据块接收首址为ADDR MOV R0,#120 ;设置接收字节数 MOV R2,#NAME MOV R1,#00H ;设置校验和的初值 SETB RB8 ;置位RB8位,作为接受地

16、址信息特征 页脚 页眉 SETB TR1 SETB EA ;CPU开中断 SETB ES ;允许串行口中断 SJMP $ ;中断服务程序 INTSR: MOV A, RB8 ;判断是接收地址还是数据,若为数据则转LOOP0 CJNE A,01H,LOOP0 CLR RI ;地址桢信息接受完后清接收中断 MOV A,SBUF XRL A,R2 JZ LOOP ;若地址相符则转LOOP,否则中断返回 LJMP ENDR LOOP: CLR SM2 CLR RB8 MOV A,R2 MOV SBUF,A ;想主机发送从机地址 LJMP ENDR LOOP0:JB RI,LOOP1 ;检查是否是接受中

17、断?若RI=1则转入接受甲机发送的数据 CLR TI ;因RI=0,表明是乙机发送中断数据的中断请求。CPU响应中断,在中断服务程序中应清中断标志 LJMP ENDR ;甲机发送一数据完毕跳至中断返回程序 LOOP1:CLR RI ;清接受中断标志 DEC R0 JZ LOOP2 ;数据未接收完则中断返回,若接收完则转LOOP2,校验 MOV A,SBUF ;取甲机发送的数据 MOVX DPTR,A XRL A,R1 MOV R1,A LOOP2:MOV A,SBUF :取甲机发送的校验和 XRL A,R1 JZ RIGHT LJMP WRONG RIGHT:MOV A,#00H MOV SB

18、UF,A LJMP ENDR WRONG:MOV A,#0FFH 页脚 页眉 MOV SBUF,A DPTR,#ADDR MOV ;设置数据块接收首址为ADDR R0,#120 ;设置接收字节数 MOV ENDR LJMP RETI ENDR:END 单片机原理及应用 1、分析程序的执行结果,将结果填写到空格中。 ORG 0000H MOV 30H,#50H MOV R0,#30H MOV A,R0 ;(A= 50H ) A,#79H MOV ) 79H 20H B= ;(A= MOV B,#20H ;(A= 03H B= 19H B DIV A ) B PUSH B,#0AH MOV ) 1

19、E AB MUL ;(A= B= 00H B POP ) ;(A= 37H ADD A,B 19H B= MOV = 单元的内容;(30H37H 30H,A ) LOOP: AJMP LOOP 页脚 页眉 2、 MCS51内部RAM50H55H单元存放的12个16进制数变为ASCII码,放到2800H单元开始的外部RAM中。 MAIN: MOV R0,#50H MOV R2,#6 MOV DPTR, #2800H HASC: MOV A,R0 ANL A,#0FH ;屏蔽高四位 ADD A,#0DH ;查表低四位转换为ASCII码 MOVC A,A+PC RAM MOVX DPTR,A ;送如

20、外部INC DPTR MOV A,R0 ANL A,#0F0H SWAP A ADD A,#6 码ASCII MOVC,A+PC 高四位转换为;MOVX DPTR,A 页脚 页眉 INC R0 INC DPTR DJNZ R2,HASC END ASCTAB:DB 30H 31H 32H 33H 34 H 35H 36H 37H 38H 39H DB41H 42H 43H 44H 45H 46H 3、 编制四个十六进制单字节数相加后求平均的程序。 假设4个16进制的单字节分别为a,b,c,d,计算结果方到e中 #include #define uchar unsigned char void

21、main(void) uchar a,b,c,d,e; e=(a+b+c+d)/4; while(1); 页脚 页眉 4、 用8031的T0定时/计数器,设计程序,实现在P1.0输出50ms的方波,输出100个方波后停止输出。 #include #define uchar unsigned char uchar a; void main(void) TMOD=0X01; TL0=0XB0; TH0=0X3C; EA=1; ET0=1; TR0=1; while(1) if(a=100) EA=0; TR0=0; 页脚 页眉 void timer0(void) interrupt 1 TL0=0

22、XB0; TH0=0X3C; cpl p1.0; a+; 5、 甲单片机利用方式1将内部RAM30H37H单元的ASCII码发送到乙机。编制甲机发送和乙机接收的程序(加奇校验)。 A机发送程序设计 ST: MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H 页脚 页眉 SETB TR1 MOV SCON ,#50H MOV R0,#30H MOV R1,#08H LOOP: MOV A,R0 CALL FS INC R0 DJNZ R1,LOOP RET FS: MOV C,P CPL C MOV ACC.7,C MOV SBUF A WAIT: JNB TI,

23、WAIT CLR TI RET 页脚 页眉 B机的接受程序设计 接受串口发来的程序,假设存放在30H37H中 ST: MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H SETB TR1 MOV SCON ,#50H MOV R0,#30H MOV R1,#08H LOOP: CALL JS JNC ERROR MOV R0,A INC R0 DJNZ R1,LOOP RET ERROR:;出错处理,如返回出错信息等 页脚 页眉 RET JS: JNB RI JS CLR RI MOV A, SBUF MOV P C ANL A,#7FH RET 6、 试用80

24、31和8155实现键盘和LED动态显示。画出原理示意图并编制键盘扫描程序和LED动态显示程序(16个键的键盘扫描和6位LED显示)。 键盘扫描子程序: #include #include #define uchar unsigned char #define uint unsigned int uchar num,i; uint temp; 页脚 页眉 void main(void) while(1) keych(); void keych() for(i=0;i4;i+) temp=0xfe; temp= _crol_(temp, i); P0=temp; temp=P0; temp=tem

25、p&0xf0; if(temp!=0xf0) delay(); if(P0&0xf0)!=0xf0) 页脚 页眉 switch(temp) case 0x70: jpch; break; case 0xb0: ; jpch break; case 0xd0: jpch; break; case 0xe0: jpch; break; 页脚 页眉 Void jpch(void) ./按键扫描处理程序 LED动态扫描子程序 假设各端口都已初始化 #include Unsigned char duanx=0x3f,0x06,0x5b,0x4f,0x66,0xbd Unsigned char weix=

26、0x80,0x40,0x20,0x10,0x80,0x40 Void main(void) Init();/初始化各端口 P1=0 While(1) Unsigned char ; For (i=0;i6,i+) 页脚 页眉 P0=duanxi; P1+ P0=weixi; Delay(); P1=0; P0=0; i=0; p1=0 5、利用8031和8位A/D(ADC0809)构成数据采集系统。每隔20ms采集通道0的一次数据,将采集的数据存放在30H的内部RAM中。画出原理示意图,写出较完整的程序清单。(提示:需要用定时器和外部中断)。 单片机原理及应用 一、分析程序的执行结果,将结果填

27、写到空格中。 1、 MOV 40H,#80H 页脚 页眉 MOV R0,#40H MOV A,R0 ; (A= 80H ) MOV B, #20H DIV AB ;(A= 04H B= 00H ) MOV R0,A ; 中。 最终结果存于内存单元 40H #2AH 2、,MOV A A RR A MOV B, ) 01H B9H ;(A= MUL AB B= ) 1 CY= 0 (OV= #0B2H A MOV 3、 , R1 ,#055H MOV ) ; R1 A, (A= 10H ANL R1 A ORL , ( ;A= 55H ) 00H ( ; R1 , XRL A A= ) SWAP

28、 A ) 00H A= (; 页脚 页眉 4、 设内存20H的内容为30H,30H的内容为46H,46H的内容为57H MOV R0,#30H ) P的内容= 1 ;A,R0 MOV (PSW中 A,R0 XCH #0DBH ADD A, SUBB 96H ) A,#74H ;(A= 0 ) 的内容= ; (PSW中P ) C ;( PSW中的内容= 0 MOV 25H,#39H 、5 B) 00111001 ( CLR 2AH ;25H)= ; 2CH CPL (25H) 00101001 B ) =( 01101001 B SETB =25H; 2EH ()( ) ) 1 = 的内容C中M

29、OV ( PSW; 28H ,C 页脚 页眉 二、程序设计 1、MCS51内部RAM 40H60H单元存放着有符号16进制数,将其中能被2整除的数,存放到0090H单元开始的外部RAM中。使用汇编语言编写 解: ORG 0000H JMP START START: MOV SP,#60H MOV DPTR,#0090H MOV R0,#40H MOV R1, #21 LOOP0: MOV A,R0 MOV B, #2 DIV AB MOV R2, B CJNZ R2, #0, LOOP1 ;余数为0则继续,不为0则转移 MOV A,R0 MOV DPTR,A INC DPTR LOOP1: I

30、NC R0 DJNZ R1, LOOP0 END 2、用MSC1211的T1定时/计数器,定时0.1S中断,使P1口的8个发光二极管每隔1S 循环点亮。设系统主频为6MHZ。 解:ORG 0000H LJMP MAIN ;转主程序 中断服务程序入口地址ORG T1; 001BH 页脚 页眉 LJMP T1-ISR ORG 0100H MAIN:MOV SP,#60H ;设置堆栈指针 ;设置P1.1P1,#01H 发光 MOV ; MOV TMOD,#10H T1初始化 #B0H MOV TL1, #3CH ,MOV TH1 ;启动T0计数 SETB TR1 ;允许T0中断 SETB ET1 ;

31、CPU开中断 SETB EA ;等待 $ SJMP TL1,#B0H T1_ISR:MOV TH1,#3CH MOV ;P1 MOV A,P1 口循环左移 A RL P1,A MOV RETI EXIT: END 3、设有甲、乙两台单片机,以工作方式3进行串行通讯,设晶振为11.0592MHz,波特率为9600,甲机将内存单元中的120个数据作补偶校验后发送给乙机,乙机对接收到的数据进行奇偶校验,若校验正确,则从机发送00H给甲机,甲机继续发送数据,校验不正确,则发送0FFH给甲机,甲机重新发送原数据,编写乙机的接收程序。(应在适当的地方加程序注释) 解:ORG 0000H AJMP MAIN

32、 ORG 0023H LJMP SE2_INT MAIN: 页脚 页眉 MOV SP,#60H MOV TMOD #20H MOV TH1,#0FDH ;设置波特率为9600bps MOV TL1,#0FDH MOV SCON,#90H ;串行口工作方式3,允许接收 MOV DPTR,#2000H;接收数据区 MOV R1,#120 SETB TR1 SETB EA SETB ES SJMP $ ;等待接收中断 SE2_INT: JB RI,LOOPA CLR T1 LJMP ENDR LOOPA:CLR RI MOV A,SBUF MOV C,P ;奇偶校验 JC LOOP1 ;如8位数是奇,则转LOOP1再检测RB8位 ORL C,RB8 ; 如8位数为偶,再检测RB8位,RB8=1,则9位数据为奇,补偶 JC LOOP2 ;错,转LOOP2 LJMP LOOP3 ;补偶正确,转LOOP3 LOOP1: ANL C, RB8 ;8位数为奇,再检测RB8位 JC

温馨提示

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

评论

0/150

提交评论