版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用1、解析程序的执行结果,将结果填写到空格中。ORG0000HMOV30H,#50HMOVR0,#30HMOVA,R0;(A=50H)MOVA,#79HMOVB,#20H;(A=79HB=20H)DIVAB;(A=03HB=19H)PUSHBMOVB,#0AHMULAB;(A=1EHB=00H)POPBADDA,B;(A=37HB=19H)MOV30H,A;(30H单元的内容=37H)MOV20H,30HCLR01H;(20H单元的内容=37H)MOVA,20H;(PSW中P的内容=1)CPLARRA;(PSW中C的内容=0)SWAPA;(A=46H)ADDCA,#0F0H;(A
2、=36H);(PSW中P的内容=0);(PSW中C的内容=1)RLA;(A=6CH);(PSW中P的内容=0);(PSW中C的内容=0)LOOP:AJMPLOOP2、将MCS51内部RAM60H65H单元存放的12个16进制数变为ASCII码,放到0090H单元开始的外面RAM中。使用汇编语言编写MAIN:MOVR0,#60HMOVR2,#6MOVDPTR,#0090HHASC:MOVA,R0ANLA,#0FH;障蔽高四位ADDA,#0DHMOVCA,A+PC;查表低四位变换为ASCII码MOVXDPTR,A;送如外面RAMINCDPTRMOVA,R0ANLA,#0F0HSWAPAADDA,#
3、6MOVC,A+PC;高四位变换为ASCII码MOVXDPTR,AINCR0INCDPTRDJNZR2,HASCENDASCTAB:DB30H31H32H33H34H35H36H37H38H39HDB41H42H43H44H45H46H3、用MSC1211的T0准时/计数器,设计程序,实现在P1.0输出周期为200ms的占空比为1:1的方波,输出500个方波后停止输出。解:ORG0000HLJMPMAINORG000BH;T0口中断服务程序入口地址LJMPINT_T0MAIN:MOVTMOD,#00H;T0工作于方式0准时MOVTL0,#0CHMOVTH0,#1EH;设定秒中断周期为1msMO
4、VA,200;设定输出周期为200msMOVR2,1000;输出500个方波SETBTR0SETBET0SETBEASETBP1.0SJMP$INT_T0:MOVTL0,#0CHMOVTH0,#1EH;T0重装时间常数CPLP1.0P1.0位取反DECR2JZENDP;若R2为0,则结束程序,否则返主程序连续输出RETI;返主程序ENDP:END4、利用MSC1211的A/D构成数据采集系统。使用模拟通道0进行连续数据采集,采集8次后获取平均值,存放到起初分配好的100个内存单元中,这100个单元存满后,再从第一个单元进行覆盖保存。写出完满的程序清单(应在合适的地方加程序说明)。解:#incl
5、ude#includeexternvoidautobaud(void);/声明外面函数externvoidbipolar(void);floata100=0,w8=0;intout=0;longresult,temp;intj;intAUXinterrupts(void)interrupt6using1/中断服务程序if(PAI=6)/办理AD中断wout+=bipolar();temp=wout;SUMR0=temp&0 xff;while(1)SUMR1=(temp8)&0 xff;SUMR2=(temp16)&0 xff;DACSEL=0;DAC=0 x8000;SUMR3=(temp2
6、4)&0 xff;for(j=0;j100;j+)if(out=8)DAC=0;for(k=0;k151;k+=10)SUM=SUMR324+SUMR216+SUMR1=100)j=0;min(void)floatdummy;intdecimation;decimationg=1440;/抽取因子PDCON&=0 x77;/打开ADCACLK=9;/模拟采样频率ADMUX=0;/使用通道0ADCON0=0 x30;/内部基准2.5V,缓冲器关,BOD关,PGA=0ADCON1=0 x01;/双极性,自动牢固模式,偏移增益自校准ADCON2=decimation&0 xff;/写入抽取因子低字节
7、ADCON3=(decimation8)&0 x07;/写入抽取因子高字节AIE=&0 x20;autobaud();等待校准for(i=0;i4;i+)while(!(AIE&0X20)dummy=ADRESL;SSCON=0;/除去求和存放器EAI=1;While(1);5、变量k从0变到150,变化步长为10。对于每一个值,使用整形数算术运算计算8*k,k*k*k和(40*k/150)3。这三个值经过MSC1211的D/A变换后同步输出(均使用电压输出模式)。试编写程序实现。解:includedataunsignedintk,j,i;voidmain(void)PDCON&=0X48;A
8、DCON0=0X30;DACSEL=6;DACSEL=4;DACL=0X24;DACSEL=5;DACH=0 x24;DACSEL=2;DAC=k*k*k;DACSEL=3;i=40*k/150;DAC=i*i*i;DACSEL=6;DACL=0Xfc;6、利用MSC1211或8051设计应答方式下的多机通讯程序。通讯参数:晶振为11.0592MHz,9600,n,8,1。通讯过程以下:主机第一发送从机地址,从机收到地址后进行比较,若是地址切合,则将从机地址回发给主机作为应答信号。主机收到从机的地址应答信号后,将内存单元中的120个数据发送给从机,并进行数据块校验(将各个数据进行异或),若校验
9、正确,则从机发送00H给主机,否则发送0FFH给主机,主机重新发送数据。(应在合适的地方加程序说明)解:主机程序以下:ORG0000HLJMPMAINT;跳至主程序入口地址ORG0023H;串行口中断服务程序入口LJMPINTSTMAINT:MOVSCON,#90H;置工作方式2,并赞同接收MOVTMOD,#20H;置T1工作方式2MOVTH1,#0FDHMOVTL1,#0FDHMOVDPTR,#ADDR;设置数据块首址ADDR的地址指针MOVR0,#120;设置发送字节数MOVR1,#00H;设置校验和的初值MOVR2,#NAMESETBTB8;置位TB8位,作为发送地址桢信息特色SETBT
10、R1SETBEA;CPU开中断SETBES;赞同串行口中断MOVA,R2;发送地址桢信息MOVSBUF,ASJMP$;中断服务程序INTST:MOVA,TB8;判断是发送地址还是数据,若为数据则转LOOP0CJNEA,01H,LOOP0CLRTI;地址桢信息发送完后清发送中断LOOP0:JBRI,LOOP1;检查是否是接受中断?若RI=1则转入接受乙机发送应答信息CLRTI;因RI=0,表示是甲机发送中断数据的中断央求。CPU响应中断,在中断服务程序中应清中断标志MOVA,TB8;CJNEA,#01H,LOO3;若为发送数据中断则转LOOP3连续发送数据LJMPENDT;甲机发送一数据达成跳至
11、中断返回程序LOOP1:CLRRI;清接受中断标志MOVA,TB8;判断是发送地址还是数据,若为数据则转LOOP2CJNEA,#01H,LOOP4;若TB8为0则接受的为乙机数据校验应答MOVA,SBUF;取乙机的应答数据CJNEA,R2,LOOP2;若乙机应答信息不是从机地址,则地址传达不正确,则转LOOP2程序重新发送地址信息,否则清TB8,发送数据CLRTB8LOOP3:MOVXA,DPTR;取下一个数MOVSBUF,A;启动串行口,发送新的数据XRLA,R1MOVR1,AINCDPTR;更正地址指针DECR0;更正发送字节数记数值CJNER0,#00H,ENDT;鉴识120个字节数据都
12、发送完没有。若是没有发送完则跳至中断返回程序。连续发送MOVA,R1MOVSBUF,A;数据全部发送达成则发送校验和LJMPENDTLOOP4:MOVA,SBUF;取乙机的应答数据CJNEA,#00H,LOOP5;若数据发送不正确,则转LOOP5重新发送CLRES;全部发送达成,禁止串行口中断LOOP5:MOVDPTR,#ADDR;设置数据块首址ADDR的地址指针MOVR0,#120;设置发送字节数MOVR1,#00H;设置校验和的初值LJMPLOOP2LOOP2:MOVA,R2;发送地址桢信息MOVSBUF,ARETIENDT:RETIEND从机程序以下:ORG0000HLJMPMAINR;
13、跳至主程序入口地址ORG0023H;串行口中断服务程序入口LJMPINTSRMAINR:MOVSCON,#0B0H;置工作方式2,并赞同接收MOVTMOD,#20H;置T1工作方式2MOVTH1,#0FDHMOVTL1,#0FDHMOVDPTR,#ADDR;设置数据块接收首址为ADDRMOVR0,#120;设置接收字节数MOVR2,#NAMEMOVR1,#00H;设置校验和的初值SETBRB8;置位RB8位,作为接受地址信息特色SETBTR1SETBEA;CPU开中断SETBES;赞同串行口中断SJMP$;中断服务程序INTSR:MOVA,RB8;判断是接收地址还是数据,若为数据则转LOOP0
14、CJNEA,01H,LOOP0CLRRI;地址桢信息接受完后清接收中断MOVA,SBUFXRLA,R2JZLOOP;若地址切合则转LOOP,否则中断返回LJMPENDRLOOP:CLRSM2CLRRB8MOVA,R2MOVSBUF,A;想主机发送从机地址LJMPENDRLOOP0:JBRI,LOOP1;检查是否是接受中断?若RI=1则转入接受甲机发送的数据CLRTI;因RI=0,表示是乙机发送中断数据的中断央求。CPU响应中断,在中断服务程序中应清中断标志LJMPENDR;甲机发送一数据达成跳至中断返回程序LOOP1:CLRRI;清接受中断标志DECR0JZLOOP2;数据未接收完则中断返回,
15、若接收完则转LOOP2,校验MOVA,SBUF;取甲机发送的数据MOVXDPTR,AXRLA,R1MOVR1,ALOOP2:MOVA,SBUF:取甲机发送的校验和XRLA,R1JZRIGHTLJMPWRONGRIGHT:MOVA,#00HMOVSBUF,ALJMPENDRWRONG:MOVA,#0FFHMOVSBUF,AMOVDPTR,#ADDR;设置数据块接收首址为ADDRMOVR0,#120;设置接收字节数LJMPENDRENDR:RETIEND单片机原理及应用1、解析程序的执行结果,将结果填写到空格中。ORG0000HMOV30H,#50HMOVR0,#30Hvoidmain(void)
16、MOVA,R0;(A=50H)TMOD=0X01;MOVA,#79HTL0=0XB0;MOVB,#20H;(A=79HTH0=0X3C;B=20H)EA=1;DIVAB;(A=ET0=1;03HB=19H)TR0=1;PUSHBwhile(1)MOVB,#0AHMULAB;(A=if(a=100)1EB=00H)POPBEA=0;ADDA,B;(A=37HTR0=0;B=19H)MOV30H,A;(30H单元的内容=37H)LOOP:AJMPLOOPvoidtimer0(void)interrupt12、MCS51内部RAM50H55H单元存放的12个16进制数变为ASCII码,放到2800H
17、单元开始的外面RAMTL0=0XB0;中。TH0=0X3C;MAIN:cplp1.0;MOVR0,#50Ha+;MOVR2,#6MOVDPTR,#2800H5、甲单片机利用方式1将内部RAM30H37H单元的HASC:ASCII码发送到乙机。编制甲机发送和乙机接收的程MOVA,R0序(加奇校验)。ANLA,#0FH;障蔽高四位A机发送程序设计ADDA,#0DHST:MOVCA,A+PC;查表低四位变换为ASCII码MOVTMOD,#20HMOVXDPTR,A;送如外面RAMMOVTL1,#0E8HINCDPTRMOVTH1,#0E8HMOVA,R0SETBTR1ANLA,#0F0HMOVSCO
18、N,#50HSWAPAMOVR0,#30HADDA,#6MOVR1,#08HMOVC,A+PC;高四位变换为ASCII码LOOP:MOVXDPTR,AMOVA,R0INCR0CALLFSINCDPTRINCR0DJNZR2,HASCDJNZR1,LOOPENDRETASCTAB:DB30H31H32H33H34H35H36H37H38H39HFS:DB41H42H43H44H45H46HMOVC,P3、编制四个十六进制单字节数相加后求平均的程序。CPLC假设4个16进制的单字节分别为a,b,c,d,计算结果MOVACC.7,C方到e中MOVSBUFA#includeWAIT:#defineuc
19、harunsignedcharJNBTI,WAITvoidmain(void)CLRTIRETuchara,b,c,d,e;B机的接受程序设计30H37H中e=(a+b+c+d)/4;接受串口发来的程序,假设存放在while(1);ST:MOVTMOD,#20H4、用8031的T0准时/计数器,设计程序,实现在P1.0MOVTL1,#0E8H输出50ms的方波,输出100个方波后停止输出。MOVTH1,#0E8H#includeSETBTR1#defineucharunsignedcharMOVSCON,#50Huchara;MOVR0,#30HMOVR1,#08Hbreak;LOOP:CAL
20、LJSJNCERRORMOVR0,AINCR0DJNZR1,LOOPVoidjpch(void)RETERROR:;出理,如返回出信息等./按描理程序RETJS:LED描子程序JNBRIJS假各端口都已初始化CLRRI#includeMOVA,SBUFUnsignedcharduanx=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 xbdMOVPCUnsignedcharweix=0 x80,0 x40,0 x20,0 x10,0 x80,0 x40ANLA,#7FHVoidmain(void)RETInit();/初始化各端口6、用8031和8155和LED示。画出P1=0
21、原理表示并制描程序和LED示程While(1)序(16个的描和6位LED示)。描子程序:Unsignedchar;#includeFor(i=0;i6,i+)#include#defineucharunsignedcharP0=duanxi;#defineuintunsignedintP1+ucharnum,i;P0=weixi;uinttemp;Delay();voidmain(void)P1=0;P0=0;while(1)i=0;keych();p1=05、利用8031和8位A/D(ADC0809)构成数据采集系。voidkeych()每隔20ms采集通道0的一次数据,将采集的数据存放在3
22、0H的内部RAM中。画出原理表示,写出完满的程for(i=0;i4;i+)序清。(提示:需要用定器和外面中断)。片机原理及用temp=0 xfe;一、解析程序的行果,将果填写到空格中。temp=_crol_(temp,i);1、MOV40H,#80HP0=temp;MOVR0,#40Htemp=P0;MOVA,R0;(A=80H)temp=temp&0 xf0;MOVB,#20Hif(temp!=0 xf0)DIVAB;(A=delay();04HB=00H)if(P0&0 xf0)!=0 xf0)MOVR0,A;最果存于内存元40H中。switch(temp)2、MOVA,#2AHRRAca
23、se0 x70:MOVB,Ajpch;MULAB;break;(A=B9HB=01H)case0 xb0:(OV=1jpch;CY=0)break;3、MOVA,#0B2Hcase0 xd0:MOVR1,#055Hjpch;ANLA,R1;(A=10H)break;ORLA,R1;(A=55H)case0 xe0:XRLA,R1;(A=00H)jpch;SWAPA;(A=00H)4、设内存20H的内容为30H,30H的内容为46H,46H的内容为57HMOVR0,#30HMOVA,R0;(PSW中P的内容=1)XCHA,R0ADDA,#0DBHSUBBA,#74H;(A=96H);(PSW中P
24、的内容=0);(PSW中C的内容=0)5、MOV25H,#39HCLR2AH;(25H)=00111001B)CPL2CH;(25H)=(00101001B)SETB2EH;(25H)=(01101001B)MOVC,28H;(PSW中C的内容=1)二、程序设计1、MCS51内部RAM40H60H单元存放着有符号16进制数,将其中能被2整除的数,存放到0090H单元开始的外面RAM中。使用汇编语言编写解:ORG0000HJMPSTARTSTART:MOVSP,#60HMOVDPTR,#0090HMOVR0,#40HMOVR1,#21LOOP0:MOVA,R0MOVB,#2DIVABMOVR2,
25、B不为0则转移CJNZR2,#0,LOOP1余;数为0则连续,MOVA,R0MOVDPTR,AINCDPTRLOOP1:INCR0DJNZR1,LOOP0END2、用MSC1211的T1准时/计数器,准时0.1S中断,使P1口的8个发光二极管每隔1S循环点亮。设系统主频为6MHZ。解:ORG0000HLJMPMAIN;转主程序ORG001BH;T1中断服务程序入口地址LJMPT1-ISRORG0100HMAIN:MOVSP,#60H;设置货仓指针MOVP1,#01H;设置P1.1发光MOVTMOD,#10H;T1初始化MOVTL1,#B0HMOVTH1,#3CHSETBTR1;启动T0计数SE
26、TBET1;赞同T0中断SETBEA;CPU开中断SJMP$;等待T1_ISR:MOVTL1,#B0HMOVTH1,#3CHMOVA,P1;P1口循环左移RLAMOVP1,AEXIT:RETIEND3、设有甲、乙两台单片机,以工作方式3进行串行通讯,设晶振为11.0592MHz,波特率为9600,甲机将内存单元中的120个数据作补偶校验后发送给乙机,乙机对接收到的数据进行奇偶校验,若校验正确,则从机发送00H给甲机,甲机连续发送数据,校验不正确,则发送0FFH给甲机,甲机重新发送原数据,编写乙机的接收程序。(应在合适的地方加程序说明)解:ORG0000HAJMPMAINORG0023HLJMPSE2_INTMAIN:MOVSP,#60HMOVTMOD#20HMOVTH1,#0FDH;设置波特率为9600bpsMOVTL1,#0FDHMOVSCON,#90H;串行口工作方式3,赞同接收MOVDPTR,#2000H;接收数据区MOVR1,#120SETBTR1SETBEASETBESSJMP$;等待接收中断SE2_INT:JBRI,LOOPACLRT1LJMPENDRLOOPA:CLRRIMOVA,SBUFMOVC,P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效服务保障承诺书4篇范文
- 确认2026年员工年终奖发放函(6篇)
- 肝囊肿硬化术后护理查房
- 产品责任规范承诺书8篇
- 市场营销策划与实施策略方案手册
- 烹饪美食技巧快速掌握指南
- 扬州梅岭中学2025-2026学年初三9月大联考数学试题含解析
- 江苏省无锡市宜兴中学2026届中考冲刺六语文试题含解析
- 吉林省农安县新农中学2026年初三下学期第三次周末达标考试语文试题含解析
- 个人形象穿搭技巧不同场合着装建议指导书
- 2025广西桂林国民村镇银行招聘30人笔试历年典型考题及考点剖析附带答案详解
- (正式版)DB51∕T 3335-2025 《合成氨生产企业安全风险防控规范》
- 排水管道施工环境保护方案
- 互联网+健康科普内容用户画像
- GB/T 31703-2025陶瓷球轴承氮化硅球
- GB/T 19466.2-2025塑料差示扫描量热(DSC)法第2部分:玻璃化转变温度和台阶高度的测定
- 人工智能导论 课件 第8章 大模型与具身智能
- 2026年江西环境工程职业学院单招职业适应性测试模拟测试卷附答案
- 2026年安全员之C证(专职安全员)考试题库500道附答案(模拟题)
- GB/T 46635.1-2025滑动轴承使用实际连杆汽车发动机轴承试验台第1部分:试验台
- 孕产期健康管理的精准化干预策略
评论
0/150
提交评论