PIC C语言使用简要说明

合集下载

PIC单片机的C语言使用

PIC单片机的C语言使用

PIC单片机的C语言使用PIC(Perpheral Interface Controllers)单片机是一种高性价比的嵌入式处理器,也是应用最广泛的单片机之一、它们常常用于各种电子设备,例如家电、汽车、电子仪器仪表和医疗设备等。

PIC单片机的优点是具有较低的成本、低功耗和高性能。

在C语言中使用PIC单片机可以实现许多功能,例如控制输入输出、实现逻辑运算、实现算法等。

```c#include <xc.h>#include <pic.h>void mainTRISB=0x00;//将PORTB定义为输出口PORTB=0x00;//将PORTB的值初始化为0while(1)PORTB=0xFF;//将PORTB的值设置为全高电平__delay_ms(1000); // 延时1秒PORTB=0x00;//将PORTB的值设置为全低电平__delay_ms(1000); // 延时1秒}```上述示例程序中,我们使用了XC8编译器,它是一个用于编译PIC单片机C语言程序的开源编译器。

在以上代码中,我们将PORTB定义为输出口,然后在一个无限循环中将PORTB设置为全高电平,并延时1秒,然后将PORTB设置为全低电平,并再次延时1秒。

```c#include <xc.h>#include <pic.h>void mainADCON1=0x0F;//将ADCON1寄存器设置为模拟输入模式TRISB=0x00;//将PORTB定义为输出口PORTB=0x00;//将PORTB的值初始化为0while(1)ADCON0bits.GO = 1; // 启动A/D转换while(ADCON0bits.GO); //等待转换完成//读取A/D转换结果并进行温度转换int adcValue = ADRES;int temperature = (5 * adcValue) / 1023;PORTB = temperature; // 将温度值显示在PORTB上}```在以上代码中,我们首先将ADCON1寄存器设置为模拟输入模式,然后将PORTB定义为输出口,并初始化为0。

PIC单晶片的C语言

PIC单晶片的C语言


第3步:按一下對話方塊中的Browse按鈕,彈出如下圖所 示的打開文件對話方塊。在缺省PICC V8.05PL1編譯器安 裝目錄C:\HT-PIC\bin\下,選擇plcc.exe作為編譯器。然後 按一下“打開”按鈕,可以發現PICC Compiler項已選擇 picc.exe作為編譯器。
同樣,PICC Assembler和PICC Linker都選擇picc.exe 作為彙編和連結程式,如下圖所示。
Hitech-PICC 編譯器基本上符合ANSI C標準,但是不 支援函數的遞迴呼叫。其主要原因是因為PIC 單片機特殊 的堆疊結構。PIC 單片機的堆疊是硬體實現的,其深度已 隨晶片固定,無法實現需要大量堆疊操作的遞迴演算法。
二、PICC C編譯器的安裝 PICC C編譯器可以運行在Windows作業系統上,可 以在MPLAB IDE整合式開發環境下進行專案開發。 下面介紹在MPLAB IDE 7.00集成環境下安裝和設置 PICCV8.05 PL1 PICC編譯器,以及在此環境下編譯和調 試來源程式的基本方法。
按一下圖中Next按鈕,會進入PICC C編譯器安裝過程。 經過一段時間後,出現如下所示的提示畫面。按一下畫面 上的“是”按鈕,安裝即成功,並要求重新啟動。
㈡啟動PICC C編譯器 安裝完PICCV8.05PL1編譯器,其安裝目錄下還有一個 picc_mplab6_setup.exe檔,這是PICCV8.05PL1編譯器運行 在MPLABV6.0以上版本的支援檔。
PIC單片機的 C語言程式設計
一、PIC 單片機C 語言程式設計簡介 用C 語言來開發單片機系統軟體最大的好處是編寫代 碼效率高、軟體調試直觀、維護升級方便、代碼的重複利 用率高等,因此C 語言程式設計在單片機系統設計中已得 到越來越廣泛的運用。PIC 單片機的軟體發展,同樣可以 用C 語言實現。 Microchip 公司沒有自行開發PIC單片機的C 語言編 譯器,但其他公司有開發眾多支援PIC 單片機的C 語言編 譯器,常見的有Hitech、CCS、IAR、Bytecraft 等公司。 其中最常用的是Hitech 公司的PICC 編譯器,它穩定可靠, 編譯生成的代碼效率高,在用PIC 單片機開發者中得到廣 泛認可。

PIC单片机C语言简介

PIC单片机C语言简介

PIC 单片机C 语言编程简介用 C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台的代码移植等等,因此C 语言编程在单片机系统设计中已得到越来越广泛的运用。

针对PIC 单片机的软件开发,同样可以用C 语言实现。

但在单片机上用C 语言写程序和在PC 机上写程序绝对不能简单等同。

现在的PC 机资源十分丰富,运算能力强大,因此程序员在写PC 机的应用程序时几乎不用关心编译后的可执行代码在运行过程中需要占用多少系统资源,也基本不用担心运行效率有多高。

写单片机的 C 程序最关键的一点是单片机内的资源非常有限,控制的实时性要求又很高,因此,如果没有对单片机体系结构和硬件资源作详尽的了解,以笔者的愚见认为是无法写出高质量实用的 C 语言程序。

这就是为什么前面所有章节中的的示范代码全部用基础的汇编指令实现的原因,希望籍此能使读者对PIC 单片机的指令体系和硬件资源有深入了解,在这基础之上再来讨论C 语言编程,就有水到渠成的感觉。

本书围绕中档系列PIC 单片机来展开讨论,Microchip 公司自己没有针对中低档系列PIC单片机的C 语言编译器,但很多专业的第三方公司有众多支持PIC 单片机的 C 语言编译器提供,常见的有Hitech、CCS、IAR、Bytecraft 等公司。

其中笔者最常用的是Hitech 公司的PICC 编译器,它稳定可靠,编译生成的代码效率高,在用PIC 单片机进行系统设计和开发的工程师群体中得到广泛认可。

其正式完全版软件需要购置,但在其网站上有限时的试用版供用户评估。

另外,Hitech 公司针对广大PIC 的业余爱好者和初学者还提供了完全免费的学习版PICC-Lite 编译器套件,它的使用方式和完全版相同,只是支持的PIC 单片机型号限制在PIC16F84、PIC16F877 和PIC16F628 等几款。

这几款Flash 型的单片机因其所具备的丰的片上资源而最适用于单片机学习入门,因此笔者建议感兴趣的读者可从PICC-Lite 入手掌握PIC 单片机的 C 语言编程。

PIC单片机的C语言使用

PIC单片机的C语言使用

PIC单片机的C语言使用(一)在MPLAB-IDE中使用HitechC编译器一、装入编译器:1、启动MPLAB-IDE,如下图所示选择Project-》InstallLanguageTool2、在弹出的安装语言工具对话框里“LanguageSuite”选项现在显示的是Microchip,点击后面的箭我使用的工具是HI-TECHPICCME,所以选择为“HI-TECHPICC”。

3、接下来在“ToolName”里选择编译器组件的调用路径,这里有“PICCCompiler”(C编译器)、“P (汇编器)和“PICCLinker”(链接器)3项都需要设置。

用“Browse”来选择调用路径,把上述3项组件的调用文件都设为。

点“OK”后完成设置。

二、选用编译器:1、新建一个项目,编辑项目对话框的“LanguageToolSuite”栏目默认是“Microchip”,将它改为“HI-TECHPICC”。

2、在项目文件框里点“flasha[.hex]”,这时“NodeProperties”(节点属性)按钮将会亮起来。

点击进入。

3、设置节点属性。

由于还有其他相关连的源程序需要加进来,所以在“LanguageTool”栏里应该选择“PICCLinker”(链接器)。

通常我们可以选择:1)Generatedebuginfo:显示debug信息;2)Createmapfile:选择该项后我们将看到ROM、RAM的使用情况;3)Errorfile:显示错误信息;4)CompileforMPLABICD:如果不使用ICD,就不必选择这个项目了。

4、设置完成之后点“Add Node”来添加节点。

这个项目有两个节点:和,选择节点后点击“NodeProperties”或直接双击节点来进入节点属性设置。

5、节点文件的工具这时应该选择为“PICCCompiler”(C编译器),蓝色圈子里的4项依次是:1)显示debug信息;2)局部优化;3)全局优化;4)ICD编译配件。

PIC单片机的C语言使用

PIC单片机的C语言使用

PIC单片机的C语言使用PIC单片机是一种常见的微控制器芯片,它具有高性能、低功耗和易操作的特点,可广泛应用于各种嵌入式系统开发中。

在PIC单片机的开发过程中,C语言是一种常用的编程语言,本文将介绍PIC单片机的C语言使用。

首先,我们需要了解PIC单片机的基本知识。

PIC单片机拥有多种系列和型号,每种型号都有自己的特点和功能。

在编程之前,我们需要选择合适的型号,并学习其相应的数据手册和用户指南,熟悉芯片的引脚分配、寄存器结构和功能等信息。

在PIC单片机的C语言开发中,我们可以利用一些常用的开发环境和编译器来进行开发。

例如,MPLABX是一种常用的IDE集成开发环境,它可以为PIC单片机提供强大的开发和调试功能。

另外,XC8是一种常用的C编译器,可以将C语言源代码编译成PIC单片机可执行的指令。

在编写PIC单片机的C语言程序时,我们需要熟悉一些基本的语法和语句。

例如,条件语句(if-else语句)可以用于控制程序的流程,循环语句(for循环和while循环)可以用于重复执行段代码,函数可以将一系列的代码封装成一个可复用的模块等等。

此外,C语言还提供了丰富的数据类型和操作符,可以方便地进行变量声明和运算操作。

在PIC单片机的C语言开发中,我们经常需要使用寄存器来配置芯片的各种功能和特性。

寄存器是PIC单片机内部的一种特殊的内存单元,可以用于存储控制和配置信息。

通过访问这些寄存器,我们可以配置IO口、定时器、中断、串口通信等各种功能,并与外部设备进行数据交换。

在C语言中,我们可以使用关键字“volatile”来声明一个寄存器变量,以确保编译器不会对其进行优化。

除了基本的语法和寄存器操作之外,PIC单片机的C语言开发还需要掌握一些常用的库函数和编程技巧。

例如,stdio.h库提供了一系列常用的输入输出函数,可以方便地进行串口通信和打印调试信息。

另外,math.h库提供了一些常用的数学函数,可以进行浮点数运算和数值计算。

PIC单片机的C语言编程指南

PIC单片机的C语言编程指南

PIC单片机的C语言编程指南PIC单片机是一种常用的嵌入式系统开发平台,其具有低功耗、成本低廉、易于编程等优点,在工业自动化、电子设备控制等领域有着广泛应用。

本文将为读者提供一份PIC单片机的C语言编程指南,帮助初学者快速入门并掌握基本的编程技巧。

首先,我们需要了解一些PIC单片机的基本概念。

PIC单片机采用哈佛结构,具有多种型号和系列,每个系列有多个型号可供选择。

不同的型号和系列有不同的特性和功能,因此在编程时需要根据具体的芯片型号进行适配。

PIC单片机的编程语言常用的是C语言,其语法简洁,易于理解和学习,并且具有较高的可移植性。

在编写PIC单片机的C语言程序时,我们需要按照以下步骤进行:1. 引入头文件:使用#include指令引入所需的头文件,头文件包含了定义和声明所需的函数和变量。

3.初始化:在程序开始时对所需的资源进行初始化,包括引脚配置、中断设置、定时器初始化等。

4.主循环:编写主循环代码,其中包括需要重复执行的功能,例如读取传感器数据、处理输入输出等。

5.中断处理:根据需要,编写中断处理函数,处理外部中断、定时器中断等。

6.清理工作:在程序结束时,进行一些清理工作,例如释放资源、关闭设备等。

下面是一个PIC单片机的C语言编程示例:```c#include <xc.h> // 引入XC8编译器的头文件#define LED_PIN RC0 // 定义LED连接的引脚void iniTRISC0=0;//配置RC0引脚为输出模式void maiinit(; // 初始化while(1)LED_PIN=1;//点亮LED__delay_ms(500); // 延时500毫秒LED_PIN=0;//关闭LED__delay_ms(500); // 延时500毫秒}```上述代码实现了一个简单的功能,即使LED灯以500毫秒的间隔交替点亮和关闭。

在程序中,我们首先引入了`<xc.h>`头文件,然后定义了一个宏`LED_PIN`来表示连接LED的RC0引脚。

PIC 单片机的C 语言编程指南

PIC 单片机的C 语言编程指南
电子工程师之家http://Leabharlann
PIC 单片机的 C 语言编程指南
2005-8
1/57
项目开发
芯片解密
零件配单
TEL:15013652265
QQ:38437442
电子工程师之家


1.PIC 单片机 C 语言编程简介 ................................................................................................. 5 2.HITECH-PICC 编译器 ............................................................................................................ 5 3.MPLAB-IDE 挂接 PICC ......................................................................................................... 5 4.C 语言程序基本框架 .............................................................................................................. 6 5.PICC 编译选项设置 ................................................................................................................. 7 5.1 选择单片机型号 ..................

PIC单片机的C语言使用(一)

PIC单片机的C语言使用(一)

PIC单片机的C语言使用(一)在MPLAB-IDE 中使用HitechC 编译器一、装入编译器:1、启动MPLAB-IDE,如下图所示选择Project-》Install Language Toolscreen.width-300)this.width=screen.width-300” border=0>2、在弹出的安装语言工具对话框里“Language Suite”选项现在显示的是Microchip,点击后面的箭头来选择语言。

screen.width-300) this.width=screen.width-300” border=0>我使用的工具是HI-TECH PICCME,所以选择为“HI-TECH PICC”。

3、接下来在“Tool Name”里选择编译器组件的调用路径,这里有“PICC Compiler”(C 编译器)、“PICC Assembler”(汇编器)和“PICC Linker”(链接器)3 项都需要设置。

screen.width-300)this.width=screen.width-300” border=0>用“Browse”来选择调用路径,把上述3 项组件的调用文件都设为PICC.EXE。

点“OK”后完成设置。

screen.width-300)this.width=screen.width-300” border=0>二、选用编译器:1、新建一个项目,编辑项目对话框的“Language Tool Suite”栏目默认是“Microchip”,将它改为“HI-TECH PICC”。

screen.width-300)this.width=screen.width-300” border=0>2、在项目文件框里点“flasha[.hex]”,这时“Node Properties”(节点属性)按钮将会亮起来。

点击进入。

screen.width-300)this.width=screen.width-300”border=0>3、设置节点属性。

PIC单片机C语言教程

PIC单片机C语言教程

PIC单片机C语言教程PIC单片机(Peripheral Interface Controller)是德州仪器(Texas Instruments)公司生产的一款微控制器芯片。

它具有高性能、低功耗、易编程等特点,因此被广泛应用于各种电子设备中。

PIC单片机的编程语言主要是C语言。

C语言是一种广泛使用的高级程序设计语言,它结构简洁、表达能力强、可移植性好。

通过使用C语言,我们可以轻松地编写控制PIC单片机的程序,并且可以充分发挥PIC单片机的特性和功能。

在PIC单片机的C语言教程中,首先需要了解C语言的基础知识,包括变量、数据类型、运算符、控制语句等。

接下来,我们需要学习如何使用C语言编写PIC单片机的程序。

1.引脚配置:在PIC单片机的程序中,我们需要配置引脚的状态,包括输入输出模式、电平状态等。

通过使用C语言,我们可以方便地配置引脚,实现与外部器件的连接和通信。

2.中断编程:中断是PIC单片机的重要特性之一,可以使控制器在特定条件下停止当前任务执行,转而执行中断服务程序。

通过使用C语言,我们可以编写中断服务程序,实现特定条件下的任务切换和响应。

3.定时器编程:定时器是PIC单片机的另一个重要功能,可以实现一定时间间隔内的定时操作。

通过使用C语言,我们可以编程设置定时器的参数,以实现特定的定时操作。

4.串口通信:PIC单片机具有串口通信功能,可以与其他设备进行数据交换。

通过使用C语言,我们可以编写串口通信的程序,实现与其他设备的数据传输和交互。

5.外设控制:PIC单片机可以连接各种外设,如LCD显示屏、键盘、驱动器等。

通过使用C语言,我们可以编写控制程序,实现与外设的连接和控制。

以上只是PIC单片机C语言教程的一部分内容。

除了上述内容,我们还可以学习其他更高级的主题,如编码技巧、优化技术等。

通过系统学习和实践,我们可以掌握PIC单片机的C语言编程技巧,实现各种功能和应用。

总的来说,PIC单片机的C语言教程是一个庞大而丰富的话题,需要通过实践和深入学习来掌握。

PIC单片机的C语言编程

PIC单片机的C语言编程

PIC单片机的C语言编程简介PIC(Peripheral Interface Controller)是一种广泛使用的单片机系列,由美国微芯科技公司(Microchip Technology Inc.)开发和生产。

其特点是体积小、功耗低、功能强大,并且具有高性价比,因此在嵌入式系统领域得到了广泛的应用。

在PIC单片机的编程中,C语言是最常用的编程语言之一。

本文将介绍如何在PIC单片机上使用C语言进行编程。

准备工作在开始C语言编程之前,我们需要准备以下工具和设备:1.PIC单片机开发板:选择一款适合你的需求的PIC单片机开发板,例如PIC16F877A。

2.编程软件:Microchip公司的MPLAB IDE是最常用的PIC单片机编程软件之一,可以在官方网站上免费下载安装。

3.编程语言:C语言是PIC单片机常用的编程语言,具有丰富的库函数和易于学习的语法。

第一个C程序编写第一个C程序是入门PIC单片机编程的第一步。

以下是一个简单的LED闪烁程序示例:#include <xc.h>// 包含使用于PIC单片机的头文件#define _XTAL_FREQ 4000000 // 定义晶振频率为4MHz// 主函数void main(void){TRISB = 0b00000000; // 将PORTB所有引脚设为输出PORTB = 0b00000001; // 将RB0引脚输出高电平while(1){PORTBbits.RB0 = 1; // RB0引脚输出高电平__delay_ms(1000); // 延时1秒PORTBbits.RB0 = 0; // RB0引脚输出低电平__delay_ms(1000); // 延时1秒}}在这个程序中,我们使用了xc.h头文件来包含适用于PIC单片机的库函数和宏定义。

使用#define指令定义了晶振频率为4MHz,可以根据自己的实际情况进行修改。

在main函数中,通过TRISB寄存器将PORTB所有引脚设置为输出模式,并使用PORTB寄存器将RB0引脚输出高电平。

PIC单片机的C语言

PIC单片机的C语言

㈣ volatile 修饰词 PICC 中还有一个特殊的变量修饰词“volatile”,用来 说明一个变量的值是会随机变化的,即使程序没有刻意对 它进行任何赋值操作。 在单片机中,作为输入的IO 端口其内容将是随意变 化的;很多特殊功能寄存器的值也将随着指令的运行而动 态改变。所有这种类型的变量必须将它们明确定义成 “volatile”类型,例如: volatile unsigned char STATUS @ 0x03; volatile bit commFlag;
Hitech-PICC 编译器基本上符合ANSI C标准,但是不 支持函数的递归调用。其主要原因是因为PIC 单片机特殊 的堆栈结构。PIC 单片机的堆栈是硬件实现的,其深度已 随芯片固定,无法实现需要大量堆栈操作的递归算法。
二、PICC C编译器的安装 PICC C编译器可以运行在Windows操作系统上,可 以在MPLAB IDE集成开发环境下进行项目开发。 下面介绍在MPLAB IDE 7.00集成环境下安装和设置 PICCV8.05 PL1 PICC编译器,以及在此环境下编译和调 试源程序的基本方法。

第3步:单击对话框中的Browse按钮,弹出如下图所示的 打开文件对话框。在缺省PICC V8.05PL1编译器安装目录 C:\HT-PIC\bin\下,选择plcc.exe作为编译程序。然后单击 “打开”按钮,可以发现PICC Compiler项已选择picc.exe 作为编译程序。
同样,PICC Assembler和PICC Linker都选择picc.exe 作为汇编和链接程序,如下图所示。
㈤标准库函数 PICC 提供了较完整的C 标准库函数支持,其中包括 数学运算函数和字符串操作函数。在程序中使用这些现成 的库函数时需要注意的是入口参数必须在bank0 中。 如果需要用到数学函数,则用 “#include <math.h>” 包含头文件;如果要使用字符串操作函数,就需要包含 “#include <string.h>”头文件。在这些头文件中提供了函 数类型的声明。直接查看这些头文件就可以知道PICC 提 供了哪些标准库函数。 C 语言中的格式化输出函数“printf/sprintf”用在单片 机的程序中时要特别谨慎。printf/sprintf 是一个非常大的 函数,一旦使用,你的程序代码长度就会增加很多。

PIC单片机的C语言使用(一)——在MPLAB-IDE中使用HitechC编译器

PIC单片机的C语言使用(一)——在MPLAB-IDE中使用HitechC编译器

一、装入编译器:1、启动MPLAB-IDE,如下图所示选择Project-》Install Language2、在弹出的安装语言工具对话框里“Language Suite”选项现在显示的是Microchip,点击后面的箭头来选择语言。

我使用的工具是HI-TECH PICCME,所以选择为“HI-TECH PICC”。

3、接下来在“Tool Name”里选择编译器组件的调用路径,这里有“PICC Compiler”(C编译器)、“PICC Assemble Linker”(链接器)3项都需要设置。

用“Browse”来选择调用路径,把上述3项组件的调用文件都设为PICC.EXE。

点“OK”后完成设置。

二、选用编译器:1、新建一个项目,编辑项目对话框的“Language Tool Suite”栏目默认是“Microchip”,将它改为“HI-TECHPICC”。

2、在项目文件框里点“flasha[.hex]”,这时“Node Properties”(节点属性)按钮将会亮起来。

点击进入。

3、设置节点属性。

由于FLASHA.C还有其他相关连的源程序需要加进来,所以在“Language Tool”栏里应该选择“PICC Linker”(链接器)。

通常我们可以选择:1)Generate debug info:显示debug信息;2)Create map file:选择该项后我们将看到ROM、RAM的使用情况;3)Error file:显示错误信息;4)Compile for MPLAB ICD:如果不使用ICD,就不必选择这个项目了。

4、设置完成之后点“Add Node”来添加节点。

这个项目有两个节点:fla.c和flasha.c,选择节点后点击“Node Properties”或直接双击节点来进入节点属性设置。

5、节点文件的工具这时应该选择为“PICC Compiler”(C编译器),蓝色圈子里的4项依次是:1)显示debug 信息;2)局部优化;3)全局优化;4)ICD编译配件。

PIC学习指南--C语言

PIC学习指南--C语言

if(PORTB_4==0) j=0X03;
PORTB=0XFB;
if(PORTB_5==0) j=0X02;
if(PORTB_4==0) j=0X04;/*以上根据按下的键确定相应的键值*/
PORTB=0X00;
/*恢复 PORTB 的值*/
while(1)
{ if((PORTB_5==1)&&(PORTB_4==1)) break;/*等待键盘松开*/
/*等待发送完毕*/
SSPIF=0;
/*清除 SSPIF 标志*/
} /*主程序*/
main()
{
unsigned I; initial();
/*系统初始化*/
SPIINIT() ;
/*SPI 初始化*/
for(i=8;i>0;i--)
/*连续发送 8 个数据*/
{ data=table[i];
/*通过数组的转换获得待显示的段码*/
/*进行键盘的识别*/
data=table[j];
/*获得需要送出显示的段码*/
0;
/*LACK 信号清 0,为锁存做准备*/
SPILED(data);
RA5=1;
/*最后给一个锁存信号,代表显示任务完成*/
}
/*中断服务程序*/
void interrupt keyint(void)
{
DELAY();
单片机学习指南
资料提供:上海齐济电子有限公司
第1章 PIC16F877 的外围功能模块
1.1.2 简单应用实例
该例用于令与 PORTD 口相连的 8 个发光二极管前 4 个点亮,后 4 个熄灭。在调试程序
前,应使与 PORTD 口相连的 8 位拔码开关拔向相应的位置。

pic单片机c语言编程 -回复

pic单片机c语言编程 -回复

pic单片机c语言编程-回复如何使用C语言编程控制PIC单片机。

概述:PIC单片机是一种广泛应用于嵌入式系统中的微型控制器。

它通过编程控制来执行各种任务,如输入输出控制、定时器和计数器配置、模拟和数字转换等。

本文将简要介绍如何使用C语言编程控制PIC单片机,并为用户提供一种详细的解决方案。

第一步:了解PIC单片机在开始编程之前,我们需要对PIC单片机有基本的了解。

PIC单片机是由微芯科技(Microchip Technology)开发的一种低功耗、容易使用且具有强大功能的单片机。

它具有多个输入输出引脚、内置的闪存和EEPROM存储器、模拟和数字信号处理功能等。

为了更好地理解单片机的结构和功能,请参考PIC单片机的数据手册和技术文档。

第二步:选择合适的编程环境在使用C语言进行PIC单片机编程之前,我们需要选择一个适合的编程环境。

Microchip公司为用户提供了MPLAB X IDE(集成开发环境)和XC8编译器。

MPLAB X IDE是一个功能强大的工具,具有调试和仿真功能,可以帮助用户更好地编写和测试代码。

第三步:配置开发环境在开始编程之前,我们需要确保我们的开发环境正确配置。

首先,我们需要下载并安装MPLAB X IDE和XC8编译器。

然后,我们需要选择一个适合自己的PIC单片机模型,并将其添加到开发环境中。

这样,我们就可以按照用户手册中的说明来配置和连接PIC单片机了。

第四步:编写C程序现在,我们可以开始编写我们的第一个PIC单片机程序了。

在编写C程序之前,我们需要了解一些基本语法和函数,如变量、循环、条件语句、输入输出等。

这些都是C语言编程的基础知识。

在编写程序之前,我们需要定义一些宏和常量,以便更好地控制单片机的功能和性能。

然后,我们可以编写主程序,并在其中使用各种功能函数来实现特定的任务。

例如,我们可以使用输入输出函数来读取和写入数据,使用定时器和计数器函数来生成精确的时间延迟,使用中断函数来处理外部触发事件等等。

pic单片机c语言

pic单片机c语言

PIC单片机 C 语言一、简介PIC(Peripheral Interface Controller)单片机是一种微控制器系列,由美国微芯科技公司推出。

PIC单片机广泛应用于嵌入式系统、自动化控制、仪器仪表等领域。

本文将介绍PIC单片机C语言编程的基础知识。

二、PIC单片机的开发环境准备在开始PIC单片机C语言编程前,我们需要准备开发环境。

以下是常用的开发环境工具:•MPLAB X IDE:Microchip官方推出的集成开发环境(IDE)。

可从Microchip官网免费下载。

•XC8编译器:Microchip官方提供的C语言编译器。

与MPLAB X IDE 配合使用,可编译生成PIC单片机的机器语言。

•PICKIT系列编程器:用于将编译生成的机器语言烧录到PIC单片机中。

在安装好开发环境工具后,我们可以开始进行PIC单片机C语言编程了。

三、PIC单片机的基本语法PIC单片机C语言编程的语法与标准C语言相似,但也有一些特殊的语法规则需要注意。

以下是一些常用的语法要点:1. 声明和定义变量在PIC单片机C语言中,我们可以使用关键字int、char、float等来声明和定义变量。

例如:int a; // 声明一个整型变量achar b; // 声明一个字符型变量bfloat c; // 声明一个浮点型变量c2. 控制语句PIC单片机C语言中的控制语句与标准C语言相似,包括条件语句、循环语句等。

例如:if (condition) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}while (condition) {// 循环体}for (initialization; condition; update) {// 循环体}3. 函数在PIC单片机C语言中,我们可以定义和调用函数。

例如:int add(int a, int b) {return a + b;}int result = add(3, 5); // 调用函数add,并将返回值赋给result变量四、PIC单片机C语言编程实例下面我们以一个简单的实例来演示PIC单片机C语言编程的过程。

PIC编程说明

PIC编程说明

PIC编程说明在编程过程中由于一个端口可能有多个功能,所以在初始化时应该详细设置所以的端口的功能,当使用一种功能时应该将其他功能关闭,否则端口的功能将不能正常工作。

汇编:C语言:-------picc1、在用C语言编程之前,得确定用户用的是哪个辅助C编译器(因为MPLAB IDE 不提供C编译器,不过在8.33版本有捆绑了PICC的C编译器用户可以直接选用)。

注意设置连接编译器的路径。

2 在程序的最前面用#include 预处理指令引用包含头文件,其中必须包含一个编译器提供的“pic.h”文件(在picc18里为:pic18.h),实现单片机内特殊寄存器和其它特殊符号的声明;3 用“__CONFIG”预处理指令定义芯片的配置位;4 声明本模块内被调用的所有函数的类型,PICC 将对所调用的函数进行严格的类型匹配检查;5 定义全局变量或符号替换;6 实现函数(子程序),特别注意main 函数必须是一个没有返回的死循环。

现提供个C 原程序的范例:#include <pic.h> //包含单片机内部资源预定义#include “pc68.h” //包含自定义头文件//定义芯片工作时的配置位__CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS);//声明本模块中所调用的函数类型void SetSFR(void);void Clock(void);void KeyScan(void);void Measure(void);void LCD_Test(void);void LCD_Disp(unsigned char);//定义变量unsigned char second, minute, hour;bit flag1,flag2;//函数和子程序void main(void){SetSFR();PORTC = 0x00;TMR1H += TMR1H_CONST;LED1 = LED_OFF;LCD_Test();//程序工作主循环while(1) {asm(“clrwdt”); //清看门狗Clock(); //更新时钟KeyScan(); //扫描键盘Measure(); //数据测量SetSFR(); //刷新特殊功能寄存器}}为了使编译器产生最高效的机器码,PICC 把单片机中数据寄存器的bank 问题交由编程员自己管理,因此在定义用户变量时你必须自己决定这些变量具体放在哪一个bank 中。

PIC单片机C语言编程入门

PIC单片机C语言编程入门

PICC入门笔记PIC单片机C语言编程入门笔记一、C语言基础复习--------没C语言基础看起来可能有点困难。

(1) 条件判断语句if语句,switch语句(2) 循环执行语句do while语句,while语句,for语句(3) 转向语句break语句,goto语句,continue语句,return语句第三章: 控制语句1.if语句C语言的if语句有三种基本形式。

1、如果表达式的值为真,则执行其后的语句,否则不执行该语句。

if(表达式) 语句;2、如果表达式的值为真,则执行语句1,否则执行语句2 。

If(表达式)语句1;else语句2;3、依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。

然后跳到整个if语句之外继续执行程序。

如果所有的表达式均为假,则执行语句n 。

然后继续执行后续程序。

If(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;…else if(表达式m)语句m;else语句n;2、条件运算符和条件表达式由条件运算符组成条件表达式的一般形式为:表达式1? 表达式2:表达式3其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。

例:max=(a>b)?a:b;意义:如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现。

不但使程序简洁,也提高了运行效率。

3、switch语句C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式){case常量表达式1: 语句1;case常量表达式2: 语句2;…case常量表达式n: 语句n;default : 语句n+1;}其语义是:计算表达式的值。

并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一部分为了对PIC单片机有更好的支持,PICC在标准C的基础上作了一些扩充:• 定义I/O函数,以便在你的硬件系统中使用中定义的函数。

• 用C语言编写中断服务程序• 用C语言编写I/O操作程序• C语言与汇编语言间的接口1-1 与标准C的不同PICC只在一处与标准C不同:函数的重入。

因为PIC单片机的寄存器及堆栈有限,所以PICC不支持可重入函数。

1-2 支持的PIC芯片PICC 支持很多PIC单片机,支持PIC单片机的类型在LIB目录下的picinfo.ini 文件中有定义。

1-3 PICC 包含一些标准库1-4 PICC 编译器可以输出一些格式的目标文件,缺省设置为输出Bytecraft的'COD' 格式和 Intel的'HEX'格式。

你可以用表1-1中的命令来指定输出格式。

表1-1格式名称描述PICC 命令文件类型Motorola HEX S1/S9 type hex file -MOT .HEXIntel HEX Intel style hex records(缺省) -INTEL .HEX Binary Simple binary image -BIN .BIN UBROF Universal Binary Image Relocatable Format -UBROF .UBR Tektronix HEX Tektronix style hex records -TEK .HEX American Hex format with symbols for American -AAHEX .HEX Automation HEX Automation emulatorsBytecraft .COD Bytecraft code format(缺省) n/a(缺省) .COD Library HI-TECH library file n/a .LIB1-5 符号文件PICC -G 命令用于生成符号文件,有了符号文件,你就可以进行源程序调试.命令格式为:PICC -16F877 -G test.c在使用仿真器时必须使用-G命令。

1-6 配置字PIC单片机的配置字可以用__CONFIG命令来定义:#include__CONFIG(x)其中x是配置字,头文件中定义了相应的配置说明符,如:__CONFIG(WDTDIS & XT & UNPROTECT);这将关闭看门狗,设置XT振方式,程序不加密。

注意:不同的配置符间用'&'相联,未定义的部分保留未编程状态。

详细的情况请参考头文件及PIC数据手册。

1-7 ID 位置有些PIC单片机在程序空间外还有ID空间,可用下面的方法来定义:#include__IDLOC(x) 其中x是ID标示,如:__IDLOC(15F0);将ID的四个单元定义为:1, 5, 15, 0. ID的具体位置由所指定的PIC芯片自动设定。

1-8 EEPROM 数据有些PIC单片机支持用外部编程器对内部的EEPROM进行编程。

__EEPROM_DATA()可以将用于初始化的数据放入HEX文件中,如:__EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7)可将0-7八个数放入HEX文件中,在用外部的编程器进行编程时将这八个数写入PIC单片机中。

__EEPROM_DATA不是用于运行时写入EEPROM数据的,在运行时请用 EEPROM_READ(), EEPROM_WRITE()。

1-9 位指令只要有可能,PICC总是采用位指令。

如:int foo;foo |= 0x40;的编译结果为:bsf _foo, 6为了方便可以定义如下宏:#define bitset(var, bitno) ((var) |= (1 << (bitno)))#defien bitclr(var, bitno) ((var) &= (1 << (bitno)))上一条语句可写为:bitset(foo, 6);1-10 支持的数据类型PICC 支持1,2,4字节的基本类型。

所有的多字节类型都采用低有效位在前的格式,表1-2列出了所有数据类型及它们所占空间大小。

表1-2类型大小(位) 数字类型值bit 1 逻辑类型0 或 1signed char 8 有符号字符-128..+127unsigned char 8 无符号字符0..255signed short 16 有符号整数-32768..+32767unsigned short 16 无符号整数0..65535signed int 16 有符号整数-32768..+32767unsigned int 16 无符号整数0..65535signed long 32 有符号整数-2147483648..+2147483647unsigned long 32 无符号整数0..4294967295float 24 浮点double 24 or 32 浮点由-D24, -D32决定1-10-2 位数据类型PICC 支持一位的变量,用bit来定义。

如:static bit init_flag;变量必须是全局的或静态的,它不能是自动变量或一个函数的参数,但可以作为一个函数的返回类型。

位变量很象unsigned char,但它只有0或1两个值,位变量占用空间少,且运算速度快. 所有的位变量在startup是被清0,请在程序开始处初始化它们。

如果将一个整型数赋给位变量,只是将最低位赋给位变量,如果你是想要将一个整型变量是否为0赋值给一个位变量,请用: bitvar = other_var != 0;如要你使用了PICC的-STRICT命令,bit将被视为非法命令。

1-10-2-1使用可位寻址的寄存器位变量的定义可以与绝对地址的定义结合起来使用。

如:为了访问STATUS中Power Down位,先定义STATUS的绝对地址为3,然后再定义一位变量绝对地址为27static unsigned char STATUS @ 0x03;static bit PD @ (unsigned)&STATUS*8+3;注意: 头文件中已定义所有的特殊功能寄存器及相应的位寄存器.1-10-3 PICC浮点数使用IEEE75432位格式和IEEE754(截断)24位格式.float类型使用24位格式,double使用24位或32位格式, 由PICC命令控制, -D24使用24位格式, -D32使用32位格式.1-11 绝对地址变量一个全局的或静态的变量可以定位绝对地址, 使用如下格式:unsigned char Portvar @ 0x06;这里定义了一个名为'Portvar'的变量, 地址为06h,注意,编译器并不保留任何单元,仅仅是将一个变量分配在06h单元. 它等价于汇编语言: _Portvar EQU 06h 编译器及连接器都不作任何检查, 完全由程序员保证分配不会发生冲突.1-12 结构与联合PICC 支持struct及union, 它们可以作为函数的参数及返回值, 也可以作为指针指向的目标.1-12-1 结构限定PICC 支持在结构上使用限定符, 如果在一个结构上使用限定符, 那么, 这个结构的所有成员都被限定.如: bank1 struct { int number; int *ptr; }在这个结构里,number, ptr 都被放在bank1寄存器内.1-12-2 结构中定义位成员PICC 支持在结构中定义位成员.位成员按最低有效位在前的方式存储,位成员总是按8位字节方式存放, 当当前字节放满后再放下一个字节,位成员不会跨字节存放. 如:struct {unsigned hi: 1;unsigned dummy: 6;unsigned lo: 1;} foo @ 0x10;结构foo占用10h单元, hi为10h单元的第0位, lo为10h单元的第7位, dummy为10h 单元的2-6位,(第6位为最高有效位)不使用的位可用未命名的位成员来定义, 如果我们不使用dummy, 就可定义为:struct {unsigned hi: 1;unsigned : 6;unsigned lo: 1;} foo @ 0x10;1-13 在ROM及RAM存放字符串.一个未说明的字符串总是存放在ROM中, 并且只能通过常量指针为访问.#define HELLO "Hello word"SendBuff(HELLO);一个非常量的数组被一个字符串初始化, 如:char fred[] = 'Hello world";将在RAM中保留一个数组, 在startup时, 用存放在ROM中的"Hello world"来初始化.如果要将一个常数字符串作为函数参数或将它赋给一个指针, 必须定义一个常数指针.如: void SendBuff(const char * ptr)1-14 const, volatile 类型限定符.PICC 支持标准C的const, volatile 类型限定符const类型限定符通知编译器一个目标含有的常量并且不会改变. 一个常量被放在ROM中, 显然一个常量是不能被赋值的. 如:const int version = 3;volatile 类型限定符通知编译器, 一个目标不能保证在连续的访问中不被改变. 这将禁止编译器对该目标的优化. 所有的I/O口及在中断中使用的变量必须有volatile 类型限定符.如: volatile unsigned char P_A @ 0x05;对volatile目标的访问与对non-volatile的访问是不同的, 如对volatile目标置1是先将该目标清0后加1, 而对non-volatile目标置1是先将1放在W中后再将W 赋值到目标中.1-14 特别的类型限定符.PICC 支持一些特别的类型限定符: persistent, bank1, bank2及bank3,这些限定符不可用于自动变量.1-14-1 persistent按C的标准, 所有的C变量在startup时被清为0. 但是在有些情况下, 我们希望在复位后仍保持一些变量的值. persistent类型限定符使被其限定的变量在 startup时不被清0, 而保留原有的值.1-14-2 bank1, bank2及bank3类型限定符.bank1, bank2及bank3类型限定符用于指定变量所在的寄存器页. 如:static bank3 unsigned char fred;bank3 unsigned char *ptrfred;缺省页是 bank01-15 C语言中的中断处理在PICC C语言中可以用"interrupt"限定符来编写中断服务程序.一个中断服务函数必须用 interrupt void 来定义, 不能有参数, 并且不能被C语言直接调用. 如:long tick_count;void interrupt tc_int(void){ ++tick_count; }1-15-1 在中断中保存环境PIC单片机硬件只保存PC, PICC 编译器自动地保存其它可能用到的变量. 但是编译器无法确定inline中的汇编语言段使用变量的情况, 你必须自已保护它们.1-15-2 开启中断在PIC.H中定义了所有的中断位, di()关闭所有中断, ei()打开所有中断. 如:ADIE = 1;// A/D interrupt will be usedPEIE = 1;// all peripheral interrupts are enabledei(); // enable all interruptsdi(); // disable all interrupts1-16 在C中使用汇编语言#asm, #endasm, asm()可以在C语言中直接使用汇编语言. #asm, #endasm用来加入一段汇编语言, 而asm()用来加入一条汇编语言. 如:#includeunsinged char var;void main(void){ var = 1;#asmrlf _var, 1rlf _var, 1#endasmasm("rlf _var, 1");}1-17 函数调用变换由于PIC5X只有两级堆栈, PICC 编译器使用转移指令来调用函数, 这样被套调用层次增加, 但调用速度下降, 请在需要快速调用的函数前加fastcall来指定编译器直接使用调用指令调用函数.对于14位的PIC单片机, 将永远使用调用指令调用.1-18 MPLAB使用的调试控制项-FACKLOCAL 命令用于在MPLAB下观察函数内的局部变量-MPLAB_ICD 命令用于使用ICD调试C语言.第二部分2-1安装PICC将CD-ROM装入光驱, 自动运行程序将自动启动, 如果你已禁止自动运行功能, 可以直接运行: cd_drive:\compiler\install.exe安装程序将指导你完成PICC的安装.2-2MPLAB下使用PICC C语言, 请参阅Microchip相应的手册.。

相关文档
最新文档