51单片机启动文件为什么可以不添加
㈠ 为什么要包含51单片机的头文件
要编写的是51程序,最终代码是要在51单片机里运行,因此要包含51单片机的头文件。根据查询相关信息显示:包含了51单片机辩灶的寄存器头文件,因对单片机的编程必然涉及到寄存器,e而头文件是把芯片内部寄棚喊存器地址重新命名,51内核都有特殊功能寄存器链灶野。
㈡ 单片机关于STARTUP.A51
用包含一词好像有点不妥,当在kiel C中新建项目时,会问:
Copy standard 8051 Starup Code to Project Forder and add file to Project?
翻译为:复制8051启动代码到项目并和添加文件到项目?
其实无论您选是还是否,您的代码中都将包含该文件。
该文件的作用是 初始化 内外银羡部 RAM使其清零,另外还初始化SP等。
如果上述提示框您选否,对哪些RAM清零将采用默认的桐竖方式。
如果您想改变RAM清零区域(假如希望复位时某些RAM不被清零时会很有用。),您可以选是,这样该文件的一个副本将添锋轮拍加到您的项目,您可以根据需要改写此文件。
其他SP,SAMLL/COMPACT、LARGE模式的重入函数的堆栈和指针的初始化等和RAM的道理是一样的。
㈢ 请高手指点一些"关于51单片机C语言头文件和调用的问题",请详细点,谢谢!!
很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这样的问题,看过本悄逗庆文后,就会明白。其实这个是在头文件中用sfr定义的,现在定义好了的是这样的sfr P1 = 0x90;,也就是说,到底大写,还是小写,就是在这里面决定的。这就说明,如果你要用小写,就得在头文件中改为小写。其实它都是为了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成了0x90)。
还有一点就是,现在有很多改进型的单片指橡机,它们有很多新增的特殊功能寄存器在标准的reg51.h或reg52.h中没有定义,这就需要自己加进头文件(相关厂家已经把它们定义好了),当然也可以直接在程序中定义。下面是一个标准的C51头文件:
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/启握* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2 = T2CON^0;
㈣ 51单片机,Keil里面如何添加头文件,附图
不用添加,直接在主文件中include即可,然后将头文件复制到工程目录下
㈤ 51单片机的汇编语言 不需要头文件么
KEIL编译器默认了枣逗做标准8051模式,具凳衡体文件可以去C:KeilC51INC里面看。指唤
㈥ 为什么51单片机不要写bootloader
因为51单片机运行的一般是前后台程序,程度一拦弊般比较小,而且单片机程序一般直接烧进程序存储器里,执行的时候直接从程序存简键族储器里执行,无亮携需将他们搬到RAM中去,并且一般51单片机RAM都比较小,所以无需写BOOTLOADER.
㈦ 为什么51单片机运行程序的时候,不需要将指令拷贝到RAM里面运行一般不是说ROM速度慢,不能直接
51单并兆片机是哈佛总线结构的,即rom中的程序个ram中的数据是不会交叉的逗派。绝指租单片机资源很有限,用不着拷贝到ram中再执行。
㈧ Keil中,STC芯片不加STARTUP.A51启动文件,会出问题吗
当然会出问题,单片机只认识汇编,不亮樱瞎认识C代码,但上电的时候需要衔接一下。这个启敬空动文件的作颂配用是可以让单片机从初始状态进入你的C代码程序,所以它都是汇编程序。除非你的整个程序都是汇编,或者你自己写个启动代码引导进入C_MAIN函数,不然这个文件是一定要的。
㈨ 51单片机C语言编程时头文件写出来了不用可以吗
可以的,哪怕是函数你写出来不用也是可以的。