编写 C51 程序控制单片机,需要添加的存储 51 单片机寄存器地址的头文件是

编写 C51 程序控制单片机,需要添加的存储 51 单片机寄存器地址的头文件是,第1张

头文件里面定义了51系列单片机各寄存器的地址sbitclk=p1^0;//位定义,把p1点0i/o口位定义成clk写程序的时候clk就代替p1^6口往下的几个位定义都是一样的

譬如说我写代码clk=1;则单片机的p10引脚为高电平(有些不一样)如果写clk=0;则单片机的p10引脚为低电平(高电平可以简单的理解为此点电压对地线电压的值)

随着单片机硬件性能的提高,编写应用程序更着重于程序本身的效率。

Franklin或KEIIC51交叉编译器是专为51系列单片机设计的一种高效的C语言编译器,用其开发的应用程序易于维护,可移植性好,是目前较流行的51系列单片机的开发工具。

一、C51语言程序设计的基本技巧

首先,C51语言程序设计要尽可能采用结构化的设计方法。可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可使程序的可读性、移植性增强。

C51语言的主程序结构:

#include

main0{while(1);}

这是最小的C程序,包括头部文件和程序主体。头部文件为引用的外部资源文件,包括硬件信息和外部模块提供的可使用的函数和变量的说明。

语句定义后,就可以在C语言程序中像汇编一样使用这些硬件设备。

在C5l中常用项目来管理,项目一般分为C文件块和头部文件块,常把不同的功能写在不同的C文件中,依靠项目的管理,最后把所有文件连接起来,这样就可以得到烧录的HEX文件或BIN文件。没有在头部文件中列出的文件,可以算是该C文件的内部函数和变量,外部C不能使用。另外,在程序设计过程中要充分利用C51语言的预处理命令。

对于一些常用的常数,如TRUE、FAlSE、PI,以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义(#de-fine)或集中起来放在一个头文件中进行定义,再采用文件包含命令(#in-elude)将其加入到程序中,这样当需要修改某个参量时,只需修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都进行修改,有利于文件的维护和更新。

举例:利用宏定义和条件编译,源程序不作任何修改就可适用于不同时钟频率的单片机系统,并可根据情况的不同取不同的delay值,完成不同的目的。程序如下:

#define flag 1#ifdef flag==l#define fose 6Mdelay=10;#elif flag==0#define fose 8Mdelay=12;#else#define fosc 12Mdelay=20;#endiFMain0{ for(I=O;l

#include<reg51h>

#include "intrinsh"

#include "absacch"

#define uchar unsigned char

uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};//0-9

unsigned char disdat[4]="2018";

sbit key=P3^0;

void ext0() interrupt 0

{

key++;

key%=3;

}

void t1isr() interrupt 3 //显示

{

TH1=0xec;

TL1=0x78;

P0=0xff;

P2=0x01<<scanled;

P0=~ledtab[disdat[3]];

scanled++;

scanled%=4;

}

main()

{

TMOD=0x10;

TH1=0xec;

TL1=0x78;

TR1=1;

ET1=1;

EA=1;

while(1)

{

if(key==0)

{

disdat[]="0423";

while(key==0);

disdat[]="2018";

}

}

}

在返回值类型不为void类型时,是有用的。

在 int main()中,return 表示返回一个整形,

正常结束,而在一般函数体中 return 0 表示不正常的结束。

void display()

{

com1= 1;

com2= 1;

com3= 1; // close all segment display

nop();

com_count++; //位选移位

// return; //调试时使用,以免干扰调试

if(com_count>3) com_count=1; //控制位选,使他能自动循环。

switch(com_count)

{

case 1: //位选码为1就准备显示第一个数码管

segment=table[key_value];//送数码管的数字显示编码。

com3=0; //开此位选

break; //停止,跳出循环

case 2: //位选码为2就准备显示第二个数码管

segment=table[volume_l]; //同上

com1=0;//同上

break;//同上

case 3://同上

segment=table[volume_h];

com2=0;

break;

default: //默认入口

return; //跳出循环,也就是数码管显示无任何动作。

}

推荐使用keil,现在至少使用的都是是V6以上的版本。

keil uvision2:>

以上就是关于编写 C51 程序控制单片机,需要添加的存储 51 单片机寄存器地址的头文件是全部的内容,包括:编写 C51 程序控制单片机,需要添加的存储 51 单片机寄存器地址的头文件是、at89c51单片机 如何用c语言编程啊、求大神用c51编写一个单片机小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9309321.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存