欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机部分习题答案Word格式.docx

    • 资源ID:7139902       资源大小:83.49KB        全文页数:21页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机部分习题答案Word格式.docx

    1、1个中断检测周期,4个对ISR的调用周期(LCALL)。最慢发生在CPU正在执行RETI指令的时候,需要再执行一条指令才能进入中断服务程序,而最慢的指令是DIV需要8个系统时钟周期。因此,最慢需要18个系统时钟周期:1个中断检测周期,5个执行RETI的周期,8个执行DIV指令的周期,4个对ISR的调用周期(LCALL)。9、C8051F020单片机的外部RAM有片内和片外之分,如何实现片外的RAM?复用与非复用方式的外部RAM是什么意思?数据总线和地址总线是如何连接的?通过外部数据存储器接口EMIF实现片外数据存储器,用并行口P0-P3或P4-P7实现数据总线和地址总线,数据线和地址线可以复用

    2、也可以非复用,由EMIOCF控制。复用是指数据总线和地址总线的低8位共用一组端口信号线。非复用是指数据总线和地址总线的低8位各用单独的一组端口信号线。若用低端端口实现,复用时用P2口提供地址高8位,P3口提供地址低8位和数据线;非复用时用P1口提供高8位地址线,P2口提供地址线低8位,P3口提供数据线。若用高端端口实现,非复用则用P5、P6提供地址高、低8位,P7做数据线,复用则用P6提供地址线高8位,P7提供地址低8位和数据线。10.什么是优先权交叉开关译码器?C8051F020单片机有多少数字I/O口?C8051F单片机的引脚与片内资源是如何对应的?C8051F单片机没有为定时器、串行口、

    3、A/D、D/A等提供单独的引脚信号线,而是用并行口P0-P3提供,C8051F单片机允许使用部分数字和模拟外设,没有用到的就不用分配引脚信号,因此内部提供了一个优先交叉开关译码电路,实现P0-P3和这些资源的可编程连接,这就是优先交叉开关译码器。C8051F单片机有64位数字I/O端口。其中P0-P3可以按照优先交叉开关译码的方式为片内资源分配引脚,用端口I/O交叉开关寄存器XBR0-XBR2实现。11、假如一个单片机应用系统中要用到的资源位UART0、SMBus、SPI、和CP0分配端引口(共9个引脚)。另外将外部存储器解耦配置为复用方式并使用低端口。同时还将P1.2、P1.3、P1.4配置

    4、为模拟输入,以便用ADC1测量加在这些引脚上的电压。试用Config软件进行优先权交叉开关译码器的配置,写出配置步骤,配置XBR0XBR2等相关SFR的值。(1)按UART0EN=1(XBR0.2)、SMB0EN=1(XBR0.0)、SPI0EN=1(XBR0.1)、CP0E=1(XBR0.7)、EMIFLE=1(XBR2.1)设置XBR0、XBR1、XBR2得XBR0=0x87、XBR1=0x00、XBR2=0x02;(2)存储器接口配置为复用方式并使用低端口,有PTRSEL=0(EMIOCF.5)、EMD2=0(EMIOCF.4);(3)P1.2P1.4配置为模拟输入方式有:P1MDIN=

    5、0xe3;(4)设置XBARE=1使能交叉开关,则XBR2=0x42。UART0优先级最高,P0.0、P0.1分配给TX0、RX0;SPI优先权次之,P0.2P0.4分配给SCK、MISO、MOSI、P0.5P0.7分配给ALE、/RD、/WR、P1.0分配给NSS;下一个优先的是SMBUS,P1.1分配给SDA、P1.2P1.4做模拟量输入,跳过,P1.5分配给SCL;再下面的优先权是CP0,P1.6分配给CP0;(5)UART0的TX0(P0.0)、ALE(P0.5)、/RD(P0.6)、/WR(P0.7)的输出设置为推挽方式,P0MDOUT=0xe1;(6)P2、P3设置为推挽方式P2M

    6、DOUT=0xff、P3MDOUT=0xff;(7)P1设置为漏极开路方式,并禁止3个模拟输入的输出驱动:P1MDOUT=0x00、P1=0xff。13、8051F单片机进入空闲方式时,单片机的振荡器是否工作?采用何种方法能使单片机退出空闲方式?工作。复位或中断。14、C8051F020有几个复位源,分别是什么?自己的项目中最常使用的是什么复位源?7个:上/电复位、外部/RST引脚复位、外部CNVSTR信号复位、软件命令复位、比较器0复位、时钟丢失检测器复位、WatchDog超时复位。15、再简单的试验程序中,如果看门狗定时器复位不使用,该如何禁用?向WDTCN写入0xDE后,4个系统时钟周期

    7、内再写入0xAD。该过程不应被中断。C51代码:EA=0; /禁止中断WDTCN=0xDE; WDTCN=0xAD; EA=1; /允许中断第三章:1、片外RAM从1000H10FFH单元有一数据块,用汇编语言编写程序将其传送到片外RAM的2500H单元开始的区域中。 $INCLUDE(C8051F020.INC)org 0000hmov dptr,#1000hmov r2,#256(mov r2,#0)mov r3,#25hmov r4,#00hloop:movx a,dptrpush dphpush dpl 或者mov dph,r3mov dpl,r4movx dptr,Apop dplp

    8、op dphinc dptrinc r4djnz r2,loopsjmp $end3、用汇编语言编写将累加器A的一位十六进制数(A的高4位为0)转换为ASC码的程序,转换结果仍存放在累加器A中,要求用查表和非查表两种方式实现。ADD A,#30HCJNE A,#3AH,CONTCONT:JNC ADD7JMP EXITADD7:ADD A,#7EXIT:SJMP $ END4、用汇编语言编程实现函数,设x的值存放在片内RAM的35H单元,y的值存放在片内RAM的36H单元。 y =x+1 ,x10;0,5=x=10;-1,x5 MOV A,35H ;取x CJNE A,#11,NEXT1 ;与

    9、11比较,不等于11,转NEXT1NEXT1:JNC NEXT2 ;大于等于11,转NEXT2 CJNE A,#5,NEXT3 ;小于11,再与5比较,不等于5转NEXT3NEXT3:JNC NEXT4 ; 无借位(大于等于5),转NEXT4 MOV A,#-1 ;小于5 AJMP NEXT5补充:符号函数MOV A,35HJZ DONEJNB ACC.7,POSIMOV A,#-1(0FFH)SJMP DONEPOSI: MOV A,#1DONE: MOV 36H,AEND或MOV R0,#0FFHJB ACC.7,NEGMOV R0,#01HNEG: MOV A,R0NEXT4:MOV A

    10、,#0 ;5到10之间NEXT2: ADD A,#1 ;大于10NEXT5:MOV 36H,A SJMP $ END 或(同学作业):X EQU 35HY EQU 36HORG 0000HAJMP STARTORG 0100HSTART:MOV A,XCLR C SUBB A,#05HJNC NEXTMOV Y,#0FFHAJMP DONENEXT:SUBB A,#0BHJNC NEXT1MOV Y,#00HINC AMOV Y,A6、用汇编语言编写程序,将R0中的8位二进制数的各位用其ASC码表示,结果保存到片内RAM的30H开始的单元中。MOV R1,#30HMOV R7,#8MOV A,

    11、R0 RLC AJC 0NEMOV R1,#30HJMP EXIT 或者ONE: MOV R1,#31HEXIT: INC R1DJNZ R7,NEXT11、用汇编语言编程求两个无符号数据块中最大值的乘积。数据块的首地址分别为片内RAM的60H和70H,每个数据块的第一字节用来存放数据块的长度。结果存入片内MOV R0,#60HACALL MAXMOV B,A;第一个数据块最大值MOV R0,#70HMUL AB;两个数据块最大值相乘MOV 5FH,BMOV 5EH,AMAX: MOV A,R0;数据块长度DEC AMOV R7,AINC R0MOV A,R0;第一个数据LOOP: CLR C

    12、MOV B,AMOV A,R0SUBB A,B;两个比较,也可以用CJNE实现MOV A,BSJMP NEXT1 ADD A,BDJNZ R7,LOOP (下一行)RET第4章:5利用C8051F020单片机的T0计数,每计10个脉冲,P1.0取反一次,试用查询和中断两种方式编程。确定工作方式,计算初值:选方式2计数方式,初值=256-10=246=0xf6;查询方式程序:sbit P1_0=P10;void main(void)/关看门狗WDTCN=0xde;WDTCN=0xad;/配置交叉开关XBR1=0x02;/允许T0外部输入XBR2=0x40;/使能交叉开关/初始化定时器0TMOD=

    13、0x06;/ 方式2计数TL0=OxF6;TH0=OxF6;TR0=1;/启动T0While(1)While(!TF0);/等待计数溢出TF0=0;P1_0=!P1_0;IE|=0x82;/允许T0中断While(1);/等待中断void T0_ISR(void) interrupt 1 P1_0=!中断方式程序:XBR2=0X40;8在C8051F020单片机中,已知系统时钟频率为12MHz,编写程序使P1.0和P1.1分别输出周期为2ms和50s的方波。解:P1.0和P1.1分别每1ms和25s取反一次即可。选T0方式1定时25s,每溢出40次P1.0取反一次。初值计算:由P157公式:,

    14、选T0M=0得: a=216-25=65511=0xffe7;程序:sbit P1_1=P11; int count=40;TMOD=0x01;/ 方式1定时TL0=0xe7;TH0=0xff;TL0|=0xe7;Count-;If(Count=0) P1_1=!P1_1; Count=40;15当C8051F020的串行口工作在方式2、3时,它的第9数据位可用作“奇偶校验位”进行传送,接收端用它来核对接收到的数据正确与否。试编写串行口方式2带奇偶校验的发送和接收程序。发送程序:void send(char ch)ACC=ch;TB80=P;SBUF0=ch;While (!TI0);TI0=

    15、0;接收程序:char receive(void) While (!RI0); RI0=0;ACC=SBUF0; If (RB80=P) return ch;16. 设甲乙两机采用UART0方式1通信,波特率为4800,甲机发送0、1、2、1FH,乙机接受并存放在内部RAM以20H为首地址的单元,试用查询和中断两种方式编写甲、乙两机的程序(系统时钟为12MHz) 设利用T1工作在定时方式2(自动重装初值)提供波特率,T1M=0(按振荡器12分频)计数,SMOD0=0,T1初值计算如下:X=256=256-=250=FAH#include unsigned char xdata tbuf=0x0

    16、,0x1,0x1f;unsigned char i;unsigned char xdata *p=tbuf;XBR0=0x04; /配置交叉开关P0MDOUT|=0x01;/TX0(P0.0)为推挽输出方式TMOD=0x20; /初始化并启动T1 TH1=0xfa; TL1=0xfa; TR1=1; SCON0=0x40; /UART0初始化 for(i=0;i32;i+) SBUF0=*p; /一字节送发送SBUF0 p+; while(! /等待发送完成 TI0=0;查询方式接收程序: unsigned char i;char data *p; /发送数据块地址指针 SCON0=0x50;

    17、 /UART0初始化,允许接收 p=0x20; /地址指针初始化 /等待UART0接收一个字符 RI0=0;*p=SBUF0; /放入接收缓冲区 参考P195例4.7正弦波发生器程序:DAC0输出更新发生在写DAC0H时:#includesfr16 DAC0=0xd2void dac0_init(void);uninsigned int i;float x,y;dac0_init();/DAC0初始化while(1) for(x=0;x(2*3.14159);x+=0.1)/12位DAC的数字容量为4K(0-0FFFH),y的值最大为4096y=2048*(sin(x)+1); DAC0=y;

    18、/设置待转换的值并启动DA转换 for(i=0;=200;i+);/延时可改变正弦波的周期void dac0_int(void) REF0CN=0x03; DAC0CN|=0x08;方波输出:定时器T3溢出时DAC更新。sfr16 TMR3RL=0x92;srf16 DAC0=0xd2;#define SYSCLK 2000000void Timer3_Init(int counts);void Timer3_ISR(void);void DAC_Init(void); unsigned int i; WDTCN=0xde;Timer3_Init(SYSCLK/12/5);DAC_Init()

    19、;EA=1;DAC0L=0xf0;/设置待转换的值0FF0HDAC0H=0x0f;for(i=0;100;DAC0L=0x0; /设置待转换的值0000HDAC0H=0x0;void DAC_init(void)REF0CN=0x03;/内部偏压发生器和电压基准缓冲器工作DAC0CN|=0x88;/使能DAC0,T3溢出时更新void Timer3_Init(int counts)TMR3CN=0x00;/SYSCLK/12作为时基TMR3RL=-counts;/重载值TMR3=0xffff;/立即重载EIE2|=0x01;/允许T3中断TMR3CN=0x04;/启动T3void Timer3

    20、_ISR(void)TMR3CN&=(0x80);/清TF3实验2:查表实验$INCLUDE(C8051F020.INC)mov dptr,#tablemov a,#3rl amov r1,amovc a,a+dptrpush dplmov dptr,#2000hmovx dptr,amov a,r1mov dptr,#2001hl1:sjmp l1table: dw 8000h,8001h,8002h,8003h或: MOV A,#3CALL SEARCHMOV DPTR,#2000HMOV A,R2MOVX DPTR,AMOV A,R3INC DPTRSEARCH:MOV DPTR,#tableRL ARETMOVX A,A+DPTRMOV R2,AMOV R3,A


    注意事项

    本文(单片机部分习题答案Word格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开