C51语言是什么
C51语言继承了C语言。与C语言不同,C51语言运行在单片机平台上,而C语言运行在普通桌面平台上。C51语言具有C语言结构清晰、易学、具有汇编语言硬件操作能力的优点。
C51语言继承了C语言。与C语言不同,C51语言运行在单片机平台上,而C语言运行在普通桌面平台上。C51语言具有C语言结构清晰、易学、具有汇编语言硬件操作能力的优点。对于有C语言编程基础的读者来说,很容易掌握C51语言的编程。
主要特征
C51语言兼有高级语言和低级语言的优点。
语法结构基本和标准C语言一样,语言简单易学。
运行在单片机平台上,支持多种微处理器,移植性好。对于兼容的8051系列单片机,只要对一种硬件模式下的程序稍加修改甚至不变,就可以移植到另一种不同类型的单片机上运行。
利用高级语言的特性,底层硬件寄存器的操作被最小化。
C51语言提供完整的数据类型、运算符和函数供使用。
C51是一种结构化编程语言。一系列语句用一对花括号就可以组合成复合语句,程序结构清晰。
C51语言的代码执行效率非常接近汇编语言,比汇编语言更容易理解和共享代码。
“你好世界”节目
编程技能
c语言是一种高级编程语言,它提供了一个完整的标准化流程控制结构。因此,在使用C51语言设计单片机应用系统程序时,首先要尽可能采用结构化的编程方法,使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,整个程序可以根据功能分为几个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,最好将一些常用的程序编译成函数,既不会造成整个程序管理的混乱,又增强了可读性和可移植性。
在编程过程中,要充分利用C51语言的预处理命令。宏定义可以用于一些常用的常量,如TRUE、FALSE、PI和各种特殊函数寄存器,也可以用于程序中一些可以根据外部条件改变的重要常量。#定义& # 8221;或者将它们放在一个头文件中进行定义,然后使用文件包含命令& # 8221;# include & # 8221添加到程序中。这样,当某个参数需要修改时,只需要修改相应的包含文件或宏定义,而不是修改每个使用它们的程序文件,有利于文件的维护和更新。例子如下:
例1对于不同的单片晶体振荡器,程序需要不同的延迟时间,延迟时间的长度可以根据外界条件的变化进行修改。对于这样的程序,可以通过宏定义和条件编译来实现。程序如下:
#定义标志1
#ifdef标志==1
#定义fosc 6M
延迟= 10;
#elif标志= = 0
#定义fosc 8M
延迟= 12;
#否则
#定义fosc 12M
延迟= 20;
#endif
main()
{
for(I = 0;我
}
这样,源程序无需任何修改即可应用于不同时钟频率的单片机系统,并可以根据不同的情况取不同的延迟值来完成不同的目的。
混合程序设计
C51编译器可以高效编译C语言源程序,生成高效简洁的代码。在大多数情况下,C语言编程可以达到预期的目的。但是有时候为了直观的编程或者处理一些特殊的地址,就需要使用一定的汇编语言来编程。在其他场合,出于某种目的,汇编语言也可以调用C语言。在这种混合编程中,关键是参数的传递和函数的返回值。他们必须有一个完整的协议,否则数据交换可能出错,例如C语言程序和汇编语言程序的调用,其子程序如下:
公共广告;入口地址
SEG_AD段代码;程序段
RSEG SEG_AD
使用0
广告:MOV·R6,#00
MOV R7,#00
SETB P1.1
ACALL DELAY
CLR P1.1
ACALL DELAY
MOV R0,#10
RR0: SETB P1.2
nototherwiseprovided(for)除非另有规定
CLR P1.2
DJNZ R0,RR0
ACALL DELAY
R6 MOV 30H;模数转换高度
;两位存储在R6
ACALL CIR
MOV R6,30H
SETB P1.2
nototherwiseprovided(for)除非另有规定
CLR P1.2
R6 MOV 30H
ACALL CIR
MOV R6,30H
MOV R0,# 8;模数转换下限
;R7中存储了8位
RR2: SETB P1.2
nototherwiseprovided(for)除非另有规定
CLR P1.2
MOV 30H,R7
ACALL CIR
MOV R7,30H
DJNZ R0,RR2
浸水使柔软
CIR: CLR C
MOV C,P1.0
MOV,30H
带进位循环左移
MOV 30H,A
浸水使柔软
目标
在上面的程序中,函数的返回值是一个无符号整数。根据调用规则,返回值的高位必须在R6,低位必须在R7,以保证数据传输无误。另外,在调用过程中,一定要注意寄存器的堆叠。这样以后使用A/D转换时,就可以用C语言调用汇编语言子程序AD()了。
0条评论