《PIC微控制器项目设计:C语言》一3.3.2 XC8语言的特性

3.3.2 XC8语言的特性

本文讲的是PIC微控制器项目设计:C语言一3.3.2 XC8语言的特性,在本节中,我们将介绍XC8 C语言的一些特性。不熟悉C语言的读者在继续阅读本章之前应阅读第4章。这里将在适当的时候将给出mikroC Pro for PIC和XC8之间的差异。
有关XC8语言的详细信息可以参阅MPLAB XC8编译器用户指南,该指南可从Microchip公司网站上获取。

程序模板

当创建一个新的XC8程序时,编译器生成图3.22所示的模板。在程序中,我们将修改此模板,并使用图3.23所示的模板来代替它。


XC8程序具有以下结构:

必须在程序开始处声明单个头文件,以声明所有编译器和器件特定类型及SFR。

变量类型

XC8支持表3.1中的变量类型。请注意,字符型变量本身与无符号字符型变量相同。

此外,XC8编译器支持24位或32位浮点变量,可以使用关键字double和float进行声明。

常量

常量对象是只读的,它们存储在微控制器的程序存储器中。在程序中不改变值的对象应存储为常量,以节省有限的随机存取存储器空间。
常量声明的示例如下所示:

在最后一个例子中,从程序存储单元0x100处开始存储常量表。

持久性限定符

持久性限定符可指示变量不能被运行时启动代码所清除。下面给出一个例子:

访问各个I/O引脚

可以通过指定端口名称,后跟字位,然后是句点和端口引脚名称来访问单个I/O引脚。下面给出一个例子:

访问变量的各个位

可以使用以下的宏定义设置或复位变量的各个位:

下面的代码设置了变量Count的第2位:

指定配置位

pragma config指令用于为微控制器编程配置位。下面给出一个例子:

C程序中的汇编语言指令

使用asm语句可以将汇编语言指令插入C程序中。下面给出一个例子:

中断服务程序

中断服务程序通过关键字interrupt来识别,然后是程序的名字。下面给出一个例子:

中断优先级可以在关键字interrupt后指定。例如,

如果要在主程序和中断服务程序之间访问变量,那么建议将这些变量声明为volatile。
语句ei( )和di( )分别启用和禁用全局中断。

程序启动

Main()函数是复位后执行的第一个函数。然而,在复位之后,由编译器提供的附加代码,(也称为启动代码)首先被执行。启动代码将控制传递给main()函数,在启动代码期间,带有指定值的全局变量将加载这些值,没有指定值的全局变量被清除为零。跳转到地址0(复位)位于函数main()的结尾处,因此,如果在main()中最后一条指令之后包含返回语句,或者代码执行到达main()结束处的最后一个终止括号,则程序执行软复位。建议在程序结束时添加一个循环,以便程序在结束时不再执行软复位。

MPLAB XC8软件库函数

MPLAB XC8编译器包含大量的软件库,它们在程序开发过程中非常有用。在本节中,我们将讨论一些常用的库函数。
__delay_ms, __delay_us _delay, _delay3
函数__delay_ms和__delay_us可在程序中创建毫秒和微秒级别的延迟。在使用这些函数之前,应先使用定义_XTAL_FREQ声明时钟频率。假设时钟频率为8MHz,以下代码可以生成20ms延迟:

函数_delay可以根据参数中指定的指令周期创建延迟。在下面的示例中,延迟为20个指令周期:

函数_delay3可以基于3倍指令周期创建延迟。在下面的示例中,延迟为60个指令周期:

__EEPROM_DATA
此函数将数据存储在EEPROM存储器中,这些数据必须以8字节的数据块指定。下面给出一个例子:

ab, labs
它们分别返回整数(abs)或长整数(labs)的绝对值。头文件必须在程序开始处声明。下面给出一个例子:

cos, sin, tan
这些函数返回三角函数的结果,参数必须以弧度来表示。头文件必须在程序的开头声明。下面给出一个例子来计算30°的正弦值,并将结果存储在变量s中:

cosh, sinh, tanh
这些函数实现了双曲线函数cosh、sinh和tanh。头文件必须在程序的开头处声明。下面给出一个例子来计算3.2的双曲正弦函数值:

acos, asin, atan, atan2
这些函数返回以弧度表示的三角函数的倒数。头文件必须在程序的开头声明。
itoa
此函数将数字转换为带有指定基数的字符串。头文件必须在程序的开头声明。在下面的例子中,数字25被转换为字符串并保存到具有十六进制基数的变量bufr中:

log, log10
函数log返回浮点数的自然对数。函数log10返回以10为底的对数。头文件必须包含在程序的开头。
memcmp
此函数是用指定的字节填充n个字节的内存。头文件必须在程序的开头声明。在下面的例子中,表示了用10个字符‘x’填充bufr:

rand
这是一个随机数生成函数,它返回一个0~32?767之间的整数,每次调用该函数时生成的数都会发生改变。头文件必须在程序的开头声明。起始点使用函数srand进行设置。下面给出一个例子:

round
此函数将参数四舍五入为浮点格式最接近的整数值。头文件必须在程序的开头声明。下面给出一个例子:

SLEEP
使用此函数可以将微控制器置于睡眠模式。
sqrt
此函数可以计算浮点数的平方根。头文件必须在程序的开头声明。
String Functions
提供的一些字符串函数如下所示:

tolower, toupper, toascii
它们的作用分别是将小写字符转换为大写字符,将大写字符转换为小写字符,以及将字符转换为ASCII码。
trunc
此函数将参数四舍五入为最接近的整数。头文件必须在程序的开头处声明。

MPLAB XC8外设库

除了这些有用的函数之外,XC8编译器还提供了许多外设库,在使用外围设备开发复杂项目时它们是非常有用的。这些库可用在LCD、SD卡、USB端口、CAN总线、I2C总线、SPI总线等处。

原文标题:PIC微控制器项目设计:C语言一3.3.2 XC8语言的特性

时间: 2024-09-07 04:48:15

《PIC微控制器项目设计:C语言》一3.3.2 XC8语言的特性的相关文章

《PIC微控制器项目设计:C语言》一2.2 数组

2.2 数组 本文讲的是PIC微控制器项目设计:C语言一2.2 数组,数组是通过指定其类型.名称和存储的元素数量进行声明的.例如: 创建了一个无符号基本整型数组,名称为Total,有5个元素.数组的第一个元素索引为0.因此,在上面的例子中,Total[0]指的是它的第一个元素.数组Total存储在存储器的5个连续位置中,如下表所示. 可以通过指定数组名称和索引将数据存储在数组中.例如,为了将25存储到数组的第二个元素中,我们必须写: 同样,可以通过指定数组名称和它的索引对数组中的内容进行读取.例

《PIC微控制器项目设计:C语言》一1.2 微控制器系统

1.2 微控制器系统 本文讲的是PIC微控制器项目设计:C语言一1.2 微控制器系统,微控制器是一种单芯片的计算机."微"表示该装置很小,"控制器"表明该装置可在控制应用系统中使用.另一个用于微控制器的术语是"嵌入式控制器",这是由于在工业.商业和家庭应用设备中,大多数的微控制器都被内置或嵌入在它们控制的设备中. 微处理器在许多方面与微控制器不同.其主要区别是,微处理器需要其他一些外部组件协助进行计算操作,如程序存储器.数据存储器.I/O模块和外

《PIC微控制器项目设计:C语言》一第2章 mikroC Pro for PIC编程语言

第2章 mikroC Pro for PIC编程语言 本文讲的是PIC微控制器项目设计:C语言一第2章 mikroC Pro for PIC编程语言,在商业.工业和教育领域中,针对可编程接口控制器(PIC)18系列单片机的开发,使用的流行C语言编译器有: mikroC Pro for PIC C编译器 PICC18 C编译器 MPLAB C18 C编译器 MPLAB XC8 C编译器 CCS C编译器 mikroC Pro for PIC C编译器是由制造商MikroElektronika(网址

《PIC微控制器项目设计:C语言》一2.10 练习

2.10 练习 本文讲的是PIC微控制器项目设计:C语言一2.10 练习 1.编写一个C程序,设置PORTC的第0位和第7位为逻辑1. 2.编写一个C程序,连续倒序计数,并发送计数值给PORTB. 3.编写一个C程序,将数组里的10个元素都乘以2. 4.编写一个C程序,将两个矩阵P和Q进行相加.假设每个矩阵的维数均为3×3,并将结果存储在另一个称为W的矩阵中. 5.程序重复是什么意思?描述C程序中的while.do-while和for循环操作. 6.什么是数组?编写语句来定义以下数组: a.一个

《PIC微控制器项目设计:C语言》一2.1 mikroC Pro for PIC程序的结构

2.1 mikroC Pro for PIC程序的结构 本文讲的是PIC微控制器项目设计:C语言一2.1 mikroC Pro for PIC程序的结构,图2.1显示了一个mikroC Pro for PIC程序最简单的结构.这个程序使连接到PIC单片机RB0端口(PORTB的第0位)上的发光二极管(LED)按1s的间隔闪烁.如果在这个阶段你没有理解程序的操作过程,请不要担心,随着内容的进展,一切都会清楚的.在图2.1中使用的一些编程语句将在下面进行详细描述. 程序员使用注释阐明程序或编程语句的

《PIC微控制器项目设计:C语言》一第1章 微机系统

第1章 微机系统 1.1 引言 本文讲的是PIC微控制器项目设计:C语言一第1章 微机系统,微机一词用于描述一个系统,该系统至少包括一个微处理器.程序存储器.数据存储器和输入/输出(I/O)模块.有的微机系统还包括一些附加组件,如定时器.计数器.中断处理模块.模拟数字转换器.串行通信模块.USB接口模块等.因此,一个微机系统可以是从由硬盘.键盘.显示器.软盘和打印机构成的大型系统到嵌入控制器的单个芯片的任何系统. 在本书中,我们将只考虑单个硅芯片构成的微型计算机系统.这样的微型计算机系统也称为微

《PIC微控制器项目设计:C语言》一3.5 练习

3.5 练习 本文讲的是PIC微控制器项目设计:C语言一3.5 练习 1.编写一个XC8程序,将PORT C的第0位和第7位设置为逻辑1. 2.编写一个连续倒计数的XC8程序,并将计数值发送给PORTB. 3.编写一个C程序,将有10个元素的数组中每个元素乘以2. 4.解释如何访问端口的各个位.编写代码清零PORTB的第3位. 5.编写一个XC8程序,计算存储在数组中的数字的平均值.假设数组名为M,它有20个元素. 6.编写一个将英寸(1英寸= 0.0254米)转换为厘米的函数.该函数接收的英寸

《PIC微控制器项目设计:C语言》一导读

前 言 本文讲的是PIC微控制器项目设计:C语言一导读,微控制器是一个单芯片微处理器系统,其中包含数据和程序存储器.串行和并行输入/输出.定时器.外部和内部中断,所有这些都集成在一个芯片中,其价格可以低至2.00美元.大约40%的微控制器应用在办公自动化中,例如,PC.激光打印机.传真机.智能电话等.大约1/3的微控制器存在于消费类电子产品中,如CD播放器.高保真设备.视频游戏.洗衣机.厨具等产品.通信市场.汽车市场和军事设备共享其余的应用领域. 目前有许多不同类型的微控制器,它们是由不同的制造

《PIC微控制器项目设计:C语言》一2.5 C运算符

2.5 C运算符 本文讲的是PIC微控制器项目设计:C语言一2.5 C运算符,运算符应用在表达式里的变量和其他对象上,它们会引起一些条件或计算的发生. mikroC Pro for PIC语言支持以下运算符: 算术运算符 逻辑运算符 位运算符 条件运算符 赋值运算符 关系运算符 预处理运算符 原文标题:PIC微控制器项目设计:C语言一2.5 C运算符

《PIC微控制器项目设计:C语言》一3.1 PICDEM PIC18 Explorer开发板

3.1 PICDEM PIC18 Explorer开发板 本文讲的是PIC微控制器项目设计:C语言一3.1 PICDEM PIC18 Explorer开发板,PICDEM PIC18 Explorer开发板(从现在开始称其为Explorer板)是PIC18系列微控制器的低成本开发板.该板配有PIC18F8722型微控制器. 图3.1显示了该Explorer板,其中每个功能都用一个数字来表示.该板提供了以下功能. 1.?PIC18F8722微控制器. 2.?用于连接备用PIC18微控制器的PIM头