51单片机keil的使用问题

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-30
51单片机keil的编程问题

unsigned char 和 unsigned int 的区别就是位数不同吗,前者是8位二进制数,最大值是255,占用一个字节内存。而后者是16位数,最大数是65535,占用两个字节内存。当数据大于255,就必须用int型。而数据小于256时,就尽量用char型,不要用int型,以节省单片机内存。因单片机内存很有限,要节省内存的使用,最单片机编程的基本要求。

AAA是个long型数据吧?
问这样的问题之前,你应当先了解一下Keil Cx51的默认数据类型。Cx51在不修改项目配置时,计算时默认的数据类型是int型的(有符号整型),所以在没有类型指定的前提下,9600×4会计算得到溢出的结果变成-27136(0x9600),接下来执行赋值操作时promote类型为四字节,即0xFFFF9600。

要想得到正确的结果,应当加上强制类型转换:
AAA = (long)9600*4;

这是你在建工程的时候,自动为你添加的一个文件。因为单片机启动并不是从main开始的,但是你写c代码一般是从main开始的,在main之前需要执行一小段汇编代码。这个文件就是那段代码。

启动文件,keil自动生成的

  • 51单片机,keilc51,如何使用data变量超过128怎么办?谢谢
    答:将堆栈指针SP指向128之后。如果你定义了数组。将数组定义为Idata。很难想象单个变量使用,你能用尽128个data类内存单元。如果真的用尽了,那只有将访问频率低的内存单元放到idata类去。总之,不要走极端,变量也有轻重缓急之分,不能一味追求性能将所有变量都定为data类。
  • keiluvosion2编译51单片机程序时出现这种错误
    答:找不到“库文件:C:\KEIL\C51\LIB\C51FPS.LIB”。重新安装一遍KEIL,试试看。
  • 51单片机汇编程序用keil编程,编译后怎么知道程序能否正常运行?比如说输 ...
    答:黑盒测试。先用已知输入1,测试系统输出是否为已知输出1,接着更换已知输入2验证输出是否为已知输出2……依此进行验证。
  • keil5添加51单片机工程怎么操作
    答:keil5添加51单片机工程的方法步骤首先点击project-NewuVisionProject-选择路径-添加工程名称新建后弹出一个选择路径的界面,我们需要新建一个项目文件夹,这儿以LED文件夹为例,再设置工程名称,这里设置led为工程名称,注意不要添加后缀名,因为下面已有扩展名了,是.uvproj。设置好工程名后,点击保存保存后,...
  • 为什么用keil4编译的hex文件载入到51单片机无法使用,在别人电脑用dais编...
    答:dais我没用过,但,KEIL会在工程文件中包含51单片机的各种设置,可能由于你没有把所有的设置都移植到KEIL中,所以才会发生这种情况。另外,不同的编译器,对于同样的C代码,会编译成不同的机器码,所以,无法使用也是有可能发生的,这时候就需要你根据实际情况进行修改。
  • 51单片机,使用keil软件,4字节加法或减法子程序
    答:四个字节加上四个字节,和应该是4~5个字节。本程序,需要三个地址指针,但是一般只有两个(R0和R1)可以用;如果换用工作区,就比较麻烦了。下面使用B充当“和”的地址指针,RESULT + 4单元,充当加数2的地址指针。程序如下:RESULT equ 30H ;和数的地址 ORG 0000H ;实验数据如下:MOV ...
  • 用于开发STM32、开发keil软件和开发C51的keil软件相冲突怎么解决?_百度...
    答:\r\n如果先装keilC51,后装keilMDK的,装在不同的目录里,装完之后不管是51工程还是stm32工程默认都会用keilMDK打开,这样打开51工程时会出错.\r\n \r\n最简单的方法: 要打开51的工程必须先打开keilC51程序,然后再程序里打开工程文件。\r\n打开stm32工程当然没有问题.\r\n \r\n第二个方法:...
  • 怎么用keil写汇编程序并且下载到51单片机中去,我试了但硬件没反应,求详...
    答:Keil写汇编程序与写c程序差不多,写一个汇编程序步骤如下。一,运行keil,建一个工程。二,新建一个文件,另存为后缀为asm的汇编文件。三,将这个文件载入刚建的工程。四,现在可以录入代码了。五,录入完成后编译调试直到没有错误和警告,生成HEX文件。六,将HEX文件下载到单片机,运行看效果。七,...
  • KEIL 单片机编程问题,好多错误。求大神帮改一下。万分感激
    答:include<reg51.h>#define uchar unsigned char#define uint unsigned intdelay_1ms(uint);init_12864(void);init_12864_dis(void);Send_threelines(int, char);write_string(char, char, char *p);uchar key_can; //按键值void key() //独立按键程序{ static uchar key_new; ...
  • 请问在Keil C中对51单片机编程时,头文件中没有被调用到的函数怎么处理...
    答:把target options中的device页中选上"Use LX51 ...",然后在LX51 Misc页中的Misc Control中填入"REMOVEUNUSED",确认后重新编译即可自动去掉未调用的函数。我希望回答问题的人能本着一种解决问题的态度而不是想去批判提问题的人。———来自Just_Engineer的解答,希望可以帮到你。———...