参考答案和解析
正确答案: (1)选择小存储模式;
(2)尽可能使用最小数据类型;
(3)尽量使用“unsigned”数据类型;
(4)尽量使用局部变量;
(5)选择高效率的编译器。
更多“如何编写高效的单片机C51程序?”相关问题
  • 第1题:

    采用单片机的C语言开发时,只能利用C51语言书写程序,不能嵌套汇编语言。


    正确答案:错误

  • 第2题:

    在C51语言编程中,编写中断服务函数时需要考虑如何进行现场保护、阻断其他中断、返回时自动恢复现场等处理的程序段的编写。


    正确答案:错误

  • 第3题:

    80C51单片机的程序存储器低端的几个特殊单元的用途如何?


    正确答案: 0000H:单片机复位入口地址;
    0003H:外部中断0的中断服务程序入口地址;
    000BH:定时/计数器0溢出中断服务程序入口地址;
    0013H:外部中断1的中断服务程序入口地址;
    001BH:定时/计数器1溢出中断服务程序入口地址;
    0023H:串行口的中断服务程序入口地址。

  • 第4题:

    单片机汇编程序与C51程序在应用系统开发上有何特点?


    正确答案: 采用C51进行程序设计,对系统硬件资源的分配比用汇编语言简单,且程序的阅读和修改比较容易,适于编写较大一点的程序。
    汇编语言生成的目标程序占存储空间少、运行速度快,具有效率高、实时性强的优点,适于编写短小高效的程序。

  • 第5题:

    C51函数定义的一般形式是什么?如何定义中断处理程序?如何选择工作寄存器组?


    正确答案: 返回类型函数名(形参表)[interruptm][usingn]
    {
    局部变量定义
    执行语句
    }
    [interruptm]字段中的m定义中断处理程序的中断号,[usingn]字段中的n选择工作寄存器组。

  • 第6题:

    C51语言处理单片机的中断是由专门的中断函数来处理的。


    正确答案:正确

  • 第7题:

    C51单片机有哪几种寻址方式?适用于什么地址空间?


    正确答案: C51单片机寻址方式主要有七种,即:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、位寻址、基址寄存器加变址寄存器间接寻址和相对寻址。
    立即寻址适应于8位立即数对片内RAM地址单元的赋值,也可用于16位的立即数对DPTR赋值;直接寻址方式适应于片内RAM的所有地址空间;寄存器寻址适应于片内00H~1FH的32个字节,用R0,R1,…,R7表示;寄存器间接寻址只能使用寄存器R0或Rl作为地址指针,来寻址内部RAM(00H~FFH)中的数据,寄存器间接寻址也适用于访问外部RAM;位操作指令能对内部RAM中的位寻址区(20H~2FH)和某些有位地址的特殊功能寄存器进行位操作,实现位状态传送、状态控制、逻辑运算操作;基址寄存器加变址寄存器间接寻址用于访问程序存储器中的数据表格;相对寻址用于相对转移指令中,转移目标地址在当前地址的-128~127字节范围内的地址空间。

  • 第8题:

    C51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某内部数据单元的内容是否为零?


    正确答案:C51单片机的PSW程序状态字中无ZERO(零)标志位, 判断某内部数据单元的内容是否为零,只能通过传递数据到累加器A,再判断A中的每一位是否为零,来确定其值是否为零。

  • 第9题:

    单片机C51中用关键字()来改变寄存器组。

    • A、interrupt
    • B、unsigned
    • C、using
    • D、reentrant

    正确答案:C

  • 第10题:

    89C51单片机运行出错或程序“跑飞”时,如何摆脱困境?


    正确答案:软件方面:设置看门狗;检查程序,是否有死循环 硬件方面:在单片机电源输入位置加0.1u电容,最好在电源与地之间加一个100u的电解电容,防止因为电源的波动或干扰信号,引起出错。

  • 第11题:

    简述C51单片机的分类。


    正确答案:C51单片机的分类,就是特指MCS-51系列。那么MCS-51系列的单片机基本上没什么区别,至少内核都是一模一样的。不同的就是功能模块稍有不同。比如说:有些具有AD/DA模块,有些没有;有些有EEPROM(STC89C52),有些没有(AT89S52); 有些ROM有8K(AT89S52),有些只有2K; 有些RAM有256B,而有些只有128BIT; 有些40个管脚(AT89C51、89C52、89S52),有些20个管脚(AT89C2051、89C4051); 有些有内部晶振,有些没有; 但这些都是稍微一点点的区别,基本都还是算一样的。

  • 第12题:

    问答题
    delphi如何编写CGI程序?

    正确答案: 使用WebBroker,WebSnap,WebService均可实现。
    解析: 暂无解析

  • 第13题:

    单片机汇编语言的编写的源程序的后缀名为()

    • A、.c
    • B、.obj
    • C、.asm
    • D、.exe

    正确答案:C

  • 第14题:

    C51中的AT89S51单片机的特殊功能寄存器如何定义?试举例说明。


    正确答案: sfr     TMOD= 0x89声明TMOD为定时器/计数器的模式寄存器,地址为89H 
    说明:sfr之后的寄存器名称必须大写,定义之后可以直接对这些寄存器赋值。

  • 第15题:

    简述C51语言对C51单片机特殊功能寄存器的定义方法。


    正确答案: 特殊功能寄存器型是C51扩展的数据类型,用于访问MCS-51单片机中的特殊功能寄存器数据。它分为sfr和sfr16两种类型。sfr为字节型特殊功能寄存器类型,占一个字节单元,利用它可访问单片机内部的所有特殊功能寄存器;sfr16为双字节型特殊功能寄存器类型,占两个字节单元,利用它可访问单片机内部占用两个字节的特殊功能寄存器,如定时器T0和T1。C51中特殊功能寄存器的访问必须先用sfr和sfr16进行声明。
    例如:sfr P1=0x90,即:约定P1为P1端口在片内的寄存器,在后面的语句编程中可通过对P1赋值,实现对P1端口的赋值。如用P1=255对P1端口的所有引脚置“1”。

  • 第16题:

    简述C51单片机直接支持的数据类型,并加以说明。


    正确答案: 字符型(char):char有有符号字符型signedchar和无符号字符型unsigned char之分,他们的长度都为一个字节。对于signed char,其字节的最高位是符号位,“0”表示正数,“1”表示负数,以补码表示,表示的数值范围是-128~127;对于unsigned char,表示的数值范围是0~256,可以用来存放无符号的数值,也可存放西文字符。
    整型(int):int有有符号字整型signed int和无符号整型unsigned int之分,他们的长度均为双字节。对于signed int,它存放双字节有符号的数值,以补码表示,表示的数值范围是-327698~32767;对于unsigned int,它存放双字节无符号的数值,表示的数值范围是0~65535。
    长整型(long):long有有符号字整型signed long和无符号整型unsigned long之分,他们的长度均为4个字节。对于signed long,它存放4字节有符号的数值,以补码表示,表示的数值范围是-2147483648~2147483647;对于unsigned long,它存放双字节无符号的数值,表示的数值范围是0~4294967295。
    浮点型(float):float型数据长度为4个字节,格式符合IEEE-754标准的单精度浮点型数据,包含指数和尾数两部分,最高位为符号位,“0”表示正数,“1”表示负数,其余8位为阶码,最后23位为尾数的有效数位,由于尾数的整数部分隐含为“1”,所以尾数的精度为24位。表示的数值范围是±1.175494E-38~±3.402823E+38(加38)。
    双精度型(double):double型占8个字节,其数值范围为1.7E-308~1.7E+308。

  • 第17题:

    C51应用程序的参数传递有哪些方式?特点如何?


    正确答案:参数传递可以采用寄存器、固定存储器位置方式。寄存器传递方式最多可以传递3个参数。这种参数传递可以产生高效的代码。当无寄存器可用时,参数可以采用固定的存储器位置传递。在SMALL模式下,参数传递在内部RAM中完成。在COMPACT和LARGER模式下,参数的传递要在外部RAM中完成。

  • 第18题:

    C51单片机内部有几个定时器/计数器,有几种工作方式?最多可连接几个下降沿触发的外部中断信号?


    正确答案:C51单片机内设有2个可编程的定时/计数器,定时器0有4种工作方式,定时器1有3种工作方式。最多可以连接4个下降沿触发的外部中断信号。 

  • 第19题:

    C51应用程序具有怎样的结构?


    正确答案:C51程序由一个或多个函数构成,其中至少应包含一个主函数main。程序从主函数开始执行,调用其它函数后又返回主函数,被调用函数如果位于主调函数前面,可以直接调用,否则应先说明后调用。被调用函数可以是用户自编的函数,或是C51编译器提供的库函数。

  • 第20题:

    利用80C51单片机汇编语言进行程序设计的步骤如何?


    正确答案: 一、任务分析
    首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。这是应用系统程序设计的基础和条件。
    二、算法设计
    经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。三、流程描述
    程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。
    流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。

  • 第21题:

    简述C51程序调用汇编程序时如何实现参数传递。


    正确答案:C51中调用汇编程序进行参数传递时都必须严格遵守C51函数的参数和返回值的相关约定。行参数传递的方式有两种,一种是通过寄存器传递参数,C51中不同类型的实参会存入相应的寄存器,在汇编中只需对相应寄存器进行操作,即可达到传递参数的目的;第二种是通过固定存储区传递。

  • 第22题:

    对8255芯片编程时,定义PA口的地址#definePA8255XBYTE[0x7FFFC],则在编写C51程序时,应该包含()头文件。


    正确答案:absacc.h

  • 第23题:

    单片机C51中用关键字()来表示中断函数。

    • A、interrupt
    • B、unsigned
    • C、using
    • D、reentrant

    正确答案:A