-1-单片机原理及应用模拟题3一、分析程序的执行结果,将结果填写到空格中。1、MOV40H,#80HMOVR0,#40HMOVA,@R0;(A=80H)MOVB,#20HDIVAB;(A=4B=0)MOV@R0,A;最终结果存于内存单元40H中。2、MOVA,#2AHRRAMOVB,AMULAB;(A=B9HB=01H)(OV=1CY=0)3、MOVA,#0B2HMOVR1,#055HANLA,R1;(A=10H)ORLA,R1;(A=55H)XRLA,R1;(A=00H)SWAPA;(A=55H)4、设内存20H的内容为30H,30H的内容为46H,46H的内容为57HMOVR0,#30HMOVA,@R0;(PSW中P的内容=1)XCHA,R0ADDA,#0DBHSUBBA,#74H;(A=96H);(PSW中P的内容=0);(PSW中C的内容=1)-2-二、程序设计1、MCS51内部RAM40H~60H单元存放着有符号16进制数,将其中能被2整除的数,存放到0090H单元开始的外部RAM中。[使用汇编语言编写]解:ORG0000HJMPSTARTSTART:MOVSP,#60HMOVDPTR,#0090HMOVR0,#40HMOVR1,#21LOOP0:MOVA,@R0MOVB,#2DIVABMOVR2,BCJNZR2,#0,LOOP1;余数为0则继续,不为0则转移MOVA,@R0MOV@DPTR,AINCDPTRLOOP1:INCR0DJNZR1,LOOP0END2、某一故障检测系统,当出现故障时,线路出现下降沿;没有故障时,线路为高电平。出现故障时,相应的指示灯变亮。故障消失后,指示灯熄灭。试用MSC1211为单片机实现该故障检测功能,画出电路原理图,并写出相应程序。解答:如图所示,使用P10作为故障指示灯,故障源从P32输入,-3-相应的程序为:ORG0000HAJMPMAINORG0003HLI:CLRP1.0JNBP1.0,LIRETIORG1000HSETBIT0SETBEX0SETBEAHERE:SETBP1.0AJMPHEREEND3、用MSC1211的T1定时/计数器,定时0.1S中断,使P1口的8个发光二极管每隔1S循环点亮。设系统主频为6MHZ。解:ORG0000HLJMPMAIN;转主程序ORG001BH;T1中断服务程序入口地址LJMPT1-ISRORG0100H-4-MAIN:MOVSP,#60H;设置堆栈指针MOVP1,#01H;设置P1.1发光MOVTMOD,#10H;T1初始化MOVTL1,#B0HMOVTH1,#3CHSETBTR1;启动T0计数SETBET1;允许T0中断SETBEA;CPU开中断SJMP$;等待T1_ISR:MOVTL1,#B0HMOVTH1,#3CHMOVA,P1;P1口循环左移RLAMOVP1,AEXIT:RETIEND4、设有甲、乙两台单片机,以工作方式3进行串行通讯,设晶振为11.0592MHz,波特率为9600,甲机将内存单元中的120个数据作补偶校验后发送给乙机,乙机对接收到的数据进行奇偶校验,若校验正确,则从机发送00H给甲机,甲机继续发送数据,校验不正确,则发送0FFH给甲机,甲机重新发送原数据,编写乙机的接收程序。(应在适当的地方加程序注释)解:ORG0000HAJMPMAINORG0023HLJMPSE2_INTMAIN:MOVSP,#60HMOVTMOD#20HMOVTH1,#0FDH;设置波特率为9600bpsMOVTL1,#0FDHMOVSCON,#90H;串行口工作方式3,允许接收MOVDPTR,#2000H;接收数据区MOVR1,#120SETBTR1SETBEASETBES-5-SJMP$;等待接收中断SE2_INT:JBRI,LOOPACLRT1LJMPENDRLOOPA:CLRRIMOVA,SBUFMOVC,P;奇偶校验JCLOOP1;如8位数是奇,则转LOOP1再检测RB8位ORLC,RB8;如8位数为偶,再检测RB8位,RB8=1,则9位数据为奇,补偶JCLOOP2;错,转LOOP2LJMPLOOP3;补偶正确,转LOOP3LOOP1:ANLC,RB8;8位数为奇,再检测RB8位JCLOOP3;RB8=1,补偶正确,转LOOP3LOOP2:MOVA,#0FFH;检测不正确发送FF给甲机MOVSBUF,AJMPENDRLOOP3:MOVX@DPTR,AMOVA,#00HMOVSBUF,AINCDPTRDJNZR1,ENDRCLRES;停止接收ENDR:RETI