ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:25.28KB ,
资源ID:24315206      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24315206.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理.docx

1、单片机原理单片机原理及应用模拟卷A 除非特别声明,编程题可以使用汇编语言编写,也可以使用C语言编写1、 分析程序的执行结果,将结果填写到空格中。 ORG 0000HMOV 30H,#50H MOV R0,#30H MOV A,R0 ;(A= 50H ) MOV A,#79H MOV B,#20H ;(A= 79H B= 20H ) DIV AB ;(A= 03H B= 19H ) PUSH B MOV B,#0AH MUL AB ;(A= 1EH B= 0 ) POP B ADD A,B ;(A= 37H B= 19H ) MOV 30H,A ;(30H单元的内容= 37H ) MOV 20H

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

3、HAJMP MAINORG 0030HMIAN:MOV R0,#50HMOV R1,#06HMOV R2,#02HMOV DPTR,#2800HMOV A,R0MOV B,ACH:ANL A,#0FH PUSH ACCSUB A,#0AHJNC AD37POP ACCADD A,#30HJMP SAVAD37: POP ACC ADD A,#37HSAV: DJNZ R2,LL MOVX DPTR,A INC DPTR SWAP B MOV B,A JMP CHLL:INC R0 DJNZ R1,DONEDONE:HLTEND3、 某一故障检测系统,当出现故障1时,线路1上出现上升沿;当出现故

4、障2时,线路2上出现下降沿。没有故障时,线路1为低电平,线路2为高电平。出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。 解答:如下图所示:故障1从P32输入,利用INT0, 故障2从P33输入,利用INT1,使用L1作为故障1的指示灯,L2作为故障2的指示灯。程序清单:ORG 0000H AJMP MIAN ORG 0003H AJMP GU1 ORG 0013H AJMP GU2 ORG 1000HMAIN: MOV TCON,#05H MOV IE,#85HHERE: SETB P1.0 SETB P1.

5、1GU1: CLR P1.0 JB P3.2,GU1 RETIGU2: CLR P1.1 JB P3.3,GU2 RETI END4、 用MSC1211的T0定时/计数器,设计程序,实现在P1.0输出周期为200ms的占空比为1:1的方波,输出500个方波后停止输出。参考答案:ORG 0000HLJMP MAINORG 000BH ;T0口中断服务程序入口地址LJMP INT_T0MAIN: MOV TMOD,#00H ;T0工作于方式0定时MOV TL0,#0CHMOV TH0,#1EH ;设定秒中断周期为1msMOV A,200 ;设定输出周期为200 msMOV R2,1000 ;输出5

6、00个方波SETB TR0SETB ET0SETB EASETB P1.0SJMP $ INT_T0:MOV TL0,#0CH MOV TH0,#1EH ;T0重装时间常数CPL P1.0 P1.0位取反DEC R2JZ ENDP ;若R2为0,则结束程序,否则返主程序继续输出RETI ;返主程序ENDP: END5、 利用MSC1211的A/D构成数据采集系统。使用模拟通道0进行连续数据采集,采集8次后取得平均值,存放到预先分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(应在适当的地方加程序注释)。参考答案:#include#includee

7、xtern 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+=bipolar();temp=wout; SUMR0=temp&0xff; SUMR1=(temp8)&0xff; SUMR2=(temp16)&0xff; SUMR3=(temp24)&0xff; if(out=8) SUM=SUMR3

8、24+SUMR216+SUMR1=100) j=0;min(void) float dummy; int decimation; decimationg=1440;/抽取因子 PDCON&=0x77;/打开ADC ACLK=9;/模拟采样频率ADMUX=0;/使用通道0ADCON0=0x30;/内部基准2.5V,缓冲器关,BOD关,PGA=0ADCON1=0x01;/双极性,自动稳定模式,偏移增益自校准ADCON2=decimation&0xff;/写入抽取因子低字节ADCON3=(decimation8)&0x07;/写入抽取因子高字节AIE=&0x20;autobaud(); /等待校准

9、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转换后同步输出(均使用电压输出模式)。试编写程序实现。参考答案:includedata unsigned int k,j,i;void main(void) PDCON&=0X48; ADCON0=0X30; DACSEL=6; DACSEL=4; DACL=0X24; DACSEL=

10、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; DACSEL=6;DACL=0Xfc; 单片机原理及应用模拟卷B 7、 分析程序的执行结果,将结果填写到空格中。 ORG 0000HMOV 30H,#50H MOV R0,#30H MOV A,R0 ;(A= 50H ) MOV A,#79H MOV B,#20H ;(A= 79H B=

11、20H ) DIV AB ;(A= 03H B= 19H ) PUSH B MOV B,#0AH MUL AB ;(A= 1EH B= 0 ) POP B ADD A,B ;(A= 37H B= 19H ) MOV 30H,A ;(30H单元的内容= 37H )LOOP: AJMP LOOP8、 将MCS51内部RAM50H55H单元存放的12个16进制数变为ASCII码,放到2800H单元开始的外部RAM中。参考答案: ORG 0000HLJMP MAINMAIN: MOV DPTR,#70H MOV R1,#1120H MOV R0,#06TOP: MOV A,DPTR PUSH ACC

12、ANL A,#0FH ;取出四位二进制数 PUSH ACC CLR C SUBB A,#0AH POP ACC ;弹回A中 JC LOOP ;该数10去LOOP ADD A,#07H ;否则加07HLOOP: ADD A,#30H ;加30H MOV R2,A POP ACC ANL #0F0H ;取出下一个四位二进制数 PUSH ACCCLR C SUBB A,#0AH POP ACC ;弹回A中 JC LOOP ;该数10去LOOP1 ADD A,#07H ;否则加07HLOOP1: ADD A,#30H ;加30H SWAP A ORL A,R2 MOVX R1,A ;将结果存到RAM中

13、 INC DPTR INC R1 DEC R0 JNZ TOP ;判断转换完没有,未转换完则转TOP9、 编制四个十六进制单字节数相加后求平均的程序。参考答案:ORG 0000HSJMP MAINORG 0030HMAIN:MOV A,#00HADD A,R0ADDC A,R1ADDC A,R2ADDC A,R3MOV B,#04HDIV ABEND10、 用8031的T0定时/计数器,设计程序,实现在P1.0输出50ms的方波,输出100个方波后停止输出。参考答案:MSC1211的T0定时/计数器,设计程序,实现在P2.0输出周期为400ms的占空比为1:1的方波,输出1000个方波后停止输

14、出。(20分)(12MHz,一个时间周期为2uS)ORG 0000HLJMP MAINORG 000BH ;T0口中断服务程序入口地址LJMP INT_T0MAIN: MOV TMOD,#00H ;T0工作于方式0定时MOV TL0,#0CHMOV TH0,#1EH ;设定秒中断周期为1msMOV A,400 ;设定输出周期为400 msMOV R2,2000 ;输出1000个方波SETB TR0SETB ET0SETB EASETB P1.0SJMP $ INT_T0:MOV TL0,#0CH MOV TH0,#1EH ;T0重装时间常数CPL P1.0 P1.0位取反DEC R2JZ EN

15、DP ;若R2为0,则结束程序,否则返主程序继续输出RETI ;返主程序ENDP: END 11、 甲单片机利用方式1将内部RAM30H37H单元的ASCII码发送到乙机。编制甲机发送和乙机接收的程序(加奇校验)。参考答案:利用MSC1211或8051设计应答方式下的通讯程序。通讯参数:晶振为11.0592MHz,每帧为11位,第九位数据为奇偶校验用的补偶位。通讯过程如下:甲机首先发送一帧信息、乙机对接收的数据进行奇偶校验,若补偶正确则乙机向甲机发出“00”作为回答信号,甲机接收到乙机的此信息后再发送下一个字节。若奇偶校验错,则乙机发出“0FFH”作为回答信号,要求甲机再次发送原数据,直至数据

16、发送正确。甲机发送200个字节后才停止发送。甲机发送数据的首址为ADDRT,乙机接收数据的首址为ADDRR。(应在适当的地方加程序注释)(20分)主程序(甲机):ORG 0000HLJMP MAINT ORG 0023HLJMP INTSE1 MAIN: MOV PCON,#80H ;波特率加倍 MOV SCON,#90H ;置工作方式2,并允许接收 MOV DPTR,#ADDRT ;设置数据块首址指针 MOV R0,#00H ;设置发送字节初值 SETB EA ; CPU开中断 SETB ES MOVX A,DPTR ;取第一个发送数据 MOV C,P ;数据补偶 MOV TB8,C MOV

17、 SBUF,A ;启动串行口,发送数据 SJMP $ ;中断服务程序INTSE1: JB RI,LOOP ;检测是否是接收中断?若RI1,转入接收程序 CLR TI ;因RI0,表明是甲机发送数据中断 LJMP ENDT ;甲机发送一数据完毕跳至中断返回程序LOOP: CLR RI MOV A,SBUF ;取乙机的应答数据 SUBB A,#01H ;若乙机应答信息为00H,数据传送正确,转LOOP3 JC LOOP3 MOVX A,DPTR ;若乙机应答信息为0FFH,数据传送不正确 MOV C,P MOV TB8,C MOV SBUF,A ;启动串行口,重新发送一次数据 LJMP ENDT

18、;跳至中断返回程序LOOP3: INC DPTR ;修改地址指针 INC R0 MOVX A,DPTR ;下一个数据补偶 MOV C,P MOV TB8,C MOV SBUF,A ;启动串行口,发送信的数据 CJNE R0,#0C8H,ENDT ;判断200个字节是否发送完毕 CLR ES ;全部发送完毕,禁止串行口中断ENDT: RETI END主程序(乙机):ORG 0000HLJMP MAINRORG 0023HLJMP INTSE2ORG 0100H MAIN: MOV PCON,#80H ;波特率加倍 MOV SCON,#90H ;置工作方式2,并允许接收 MOV DPTR,#ADD

19、RR ;设置数据块首址指针 MOV R0,#00H ;设置发送字节初值 SETB EA ; CPU开中断 SETB ES SJMP $ ;中断服务程序INTSE2: JB RI,LOOP ;检测是否是接收中断?若RI1,转入接收程序 CLR TI ;因RI0,表明是乙机发送中断 LJMP ENDT ;乙机发送完毕跳至中断返回程序LOOP: CLR RI MOV A,SBUF ;取甲机发送的数据 MOV C,P ;奇偶校验 JC LOOP1 ;如8位数为奇,则转LOOP1再检测RB8位,RB8=1,则9位数据位奇,补偶 JC LOOP2 ;错,转LOOP2 LJMP LOOP3 ;补偶正确,转L

20、OOP3LOOP1: ANL C,RB8 ;8位数为奇,再检测RB8 JC LOOP3 ;RB8=1,补偶正确,转LOOP3LOOP2: MOV A,#0FFH ;本机发出0FFH,表明传送不正确。 MOV SBUF,A LJMP ENDTLOOP3: MOVX DTPR,A ;将接收的正确信息送数据缓冲区 MOV A,#00H ;本机发出应答信息给甲机,表明数据传送正确 MOV SBUF,A INC R0 ;修改指针 INC DPTR CJNE R0,#0C8H,ENDT ;判断200个字节是否接收完毕 CLR ESENDT: RETI END12、 试用8031和8155实现键盘和LED动

21、态显示。画出原理示意图并编制键盘扫描程序和LED动态显示程序(16个键的键盘扫描和6位LED显示)。参考答案:变量k从0变到300,变化步长为20。对于每一个值,使用整形数算术运算计算40*k,k*k*k和(50*k/120+60)3。这三个值通过MSC1211的D/A转换后同步输出(均使用电压输出模式)。试编写程序实现。(5分) includedata unsigned int k,j,i;void main(void) PDCON&=0X48; ADCON0=0X30; DACSEL=6; DACSEL=4; DACL=0X24; DACSEL=5;DACH=0x24;while(1) D

22、ACSEL=0;DAC=0x8000; for(j=0;j100;j+) DAC=0; for(k=0;k301;k+=20) DACSEL=1;DAC=40*k; DACSEL=2;DAC=k*k*k; DACSEL=3;i=50*k/1200+60;DAC=i*i*i; DACSEL=6;DACL=0Xfc; 单片机原理及应用模拟卷 C一、 分析程序的执行结果,将结果填写到空格中。 1、 MOV 40H,#80H MOV R0,#40H MOV A,R0 ;(A= 80H ) MOV B,#20H DIV AB ;(A= 4 B= 0 ) MOV R0,A ;最终结果存于内存单元 40H

23、中。 2、 MOV A,#2AH RR A MOV B,A MUL AB ;(A= B9H B= 01H ) (OV= 1 CY= 0 ) 3、 MOV A,#0B2H MOV R1,#055H ANL A,R1 ;(A= 10H ) ORL A,R1 ;(A= 55H ) XRL A,R1 ;(A= 00H ) SWAP A ;(A= 55H ) 4、 设内存20H的内容为30H,30H的内容为46H,46H的内容为57H MOV R0,#30H MOV A,R0 ;(PSW中P的内容= 1 ) XCH A,R0 ADD A,#0DBH SUBB A,#74H ;(A= 96H ) ;(PS

24、W中P的内容= 0 ) ;( PSW中C的内容= 1 ) 5、 MOV 25H,#39H CLR 2AH ;(25H)=( B) CPL 2CH ;(25H)=( B) SETB 2EH ;(25H)=( B) MOV C,28H ;( PSW中C的内容= )二、 程序设计13、 MCS51内部RAM 40H60H单元存放着有符号16进制数,将其中能被2整除的数,存放到0090H单元开始的外部RAM中。使用汇编语言编写 参考答案: ORG 0000H JMP START START: MOV SP,#60H MOV DPTR,#0090H MOV R0,#40H MOV R1, #21LOOP

25、0: MOV A,R0 MOV B, #2 DIV AB MOV R2, B CJNZ R2, #0, LOOP1 ;余数为0则继续,不为0则转移 MOV A,R0 MOV DPTR,A INC DPTRLOOP1: INC R0DJNZ R1, LOOP0 END14、 用MSC1211的T1定时/计数器,定时0.1S中断,使P1口的8个发光二极管每隔1S 循环点亮。设系统主频为6MHZ。参考答案:ORG 0000HLJMP MAIN ;转主程序ORG 001BH ;T1中断服务程序入口地址LJMP T1-ISRORG 0100HMAIN:MOV SP,#60H ;设置堆栈指针 MOV P1

26、,#01H ;设置P1.1发光 MOV TMOD,#10H ;T1初始化 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 ;启动T0计数 SETB ET1 ;允许T0中断 SETB EA ;CPU开中断 SJMP $ ;等待T1_ISR:MOV TL1,#B0H MOV TH1,#3CH MOV A,P1 ;P1口循环左移 RL A MOV P1,AEXIT: RETI END15、 设有甲、乙两台单片机,以工作方式3进行串行通讯,设晶振为11.0592MHz,波特率为9600,甲机将内存单元中的120个数据作补偶校验后发送给乙机,乙机对接收到的数据进行奇偶校验,若校验正

27、确,则从机发送00H给甲机,甲机继续发送数据,校验不正确,则发送0FFH给甲机,甲机重新发送原数据,编写乙机的接收程序。(应在适当的地方加程序注释)参考答案: ORG 0000HAJMP MAINORG 0023HLJMP SE2_INTMAIN: 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 ESSJMP $ ;等待接收中断SE2_INT:JB RI,LOOPACLR T1LJMP ENDRLOOPA: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 ;补偶正确,转LOOP3LOOP1: ANL C, RB8 ;8位数为奇,再检测RB8位 JC LOOP3 ;RB8=1,补偶正确,转LOOP3LOOP

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1