PIC单片机的C语言课件.pptx

上传人:飞****2 文档编号:72346231 上传时间:2023-02-10 格式:PPTX 页数:43 大小:321.84KB
返回 下载 相关 举报
PIC单片机的C语言课件.pptx_第1页
第1页 / 共43页
PIC单片机的C语言课件.pptx_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《PIC单片机的C语言课件.pptx》由会员分享,可在线阅读,更多相关《PIC单片机的C语言课件.pptx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 Hitech-PICC Hitech-PICC 编译器基本上符合编译器基本上符合编译器基本上符合编译器基本上符合ANSI CANSI C标准,但是不标准,但是不标准,但是不标准,但是不支持函数的递归调用。其主要原因是因为支持函数的递归调用。其主要原因是因为支持函数的递归调用。其主要原因是因为支持函数的递归调用。其主要原因是因为PIC PIC 单片机特殊单片机特殊单片机特殊单片机特殊的堆栈结构。的堆栈结构。的堆栈结构。的堆栈结构。PIC PIC 单片机的堆栈是硬件实现的,其深度已单片机的堆栈是硬件实现的,其深度已单片机的堆栈是硬件实现的,其深度已单片机的堆栈是硬件实现的,其深度已随芯片固定,无

2、法实现需要大量堆栈操作的递归算法。随芯片固定,无法实现需要大量堆栈操作的递归算法。随芯片固定,无法实现需要大量堆栈操作的递归算法。随芯片固定,无法实现需要大量堆栈操作的递归算法。二、二、二、二、PICC CPICC C编译器的安装编译器的安装编译器的安装编译器的安装 PICC CPICC C编译器可以运行在编译器可以运行在编译器可以运行在编译器可以运行在WindowsWindows操作系统上,可以操作系统上,可以操作系统上,可以操作系统上,可以在在在在MPLAB IDEMPLAB IDE集成开发环境下进行项目开发。集成开发环境下进行项目开发。集成开发环境下进行项目开发。集成开发环境下进行项目开

3、发。下面介绍在下面介绍在下面介绍在下面介绍在MPLAB IDE 7.00MPLAB IDE 7.00集成环境下安装和设置集成环境下安装和设置集成环境下安装和设置集成环境下安装和设置PICCV8.05 PL1 PICCPICCV8.05 PL1 PICC编译器,以及在此环境下编译和调编译器,以及在此环境下编译和调编译器,以及在此环境下编译和调编译器,以及在此环境下编译和调试源程序的基本方法。试源程序的基本方法。试源程序的基本方法。试源程序的基本方法。n n PICC C PICC C编译器的安装编译器的安装安装安装安装安装PICCV8.05 PL1PICCV8.05 PL1 运行文件运行文件pi

4、cc8.05-pl1.exepicc8.05-pl1.exe即可进入安装过程,在安装即可进入安装过程,在安装过程中会出现下图所示的编译器安装路径和磁盘空间需求过程中会出现下图所示的编译器安装路径和磁盘空间需求情况的提示画面。情况的提示画面。注意:应使用英文路径和文件名,不要使用中文。注意:应使用英文路径和文件名,不要使用中文。注意:应使用英文路径和文件名,不要使用中文。注意:应使用英文路径和文件名,不要使用中文。图中的图中的图中的图中的C:HT-PICC:HT-PIC是编译器缺省安装路径,若要改变是编译器缺省安装路径,若要改变是编译器缺省安装路径,若要改变是编译器缺省安装路径,若要改变安装路径

5、,可以通过安装路径,可以通过安装路径,可以通过安装路径,可以通过BrowseBrowse按钮选择安装路径。按钮选择安装路径。按钮选择安装路径。按钮选择安装路径。指定路径后,单击图中的指定路径后,单击图中的指定路径后,单击图中的指定路径后,单击图中的NextNext按钮,出现如下所示的按钮,出现如下所示的按钮,出现如下所示的按钮,出现如下所示的开始安装开始安装开始安装开始安装PICC V8.05PL1PICC V8.05PL1编译器画面。编译器画面。编译器画面。编译器画面。单击图中单击图中NextNext按钮,会进入按钮,会进入PICC CPICC C编译器安装过程。编译器安装过程。经过一段时间

6、后,出现如下所示的提示画面。单击画面上经过一段时间后,出现如下所示的提示画面。单击画面上的的“是是”按钮,安装即成功,并要求重新启动。按钮,安装即成功,并要求重新启动。激活激活激活激活PICC CPICC C编译器编译器编译器编译器 安装完安装完PICCV8.05PL1PICCV8.05PL1编译器,其安装目录下还有一个编译器,其安装目录下还有一个picc_mplab6_setup.exepicc_mplab6_setup.exe文件,这是文件,这是PICCV8.05PL1PICCV8.05PL1编译器运编译器运行在行在MPLABV6.0MPLABV6.0以上版本的支持文件。以上版本的支持文件

7、。PICCV8.05PL1PICCV8.05PL1编译器在安装完成后应在激活后使用,编译器在安装完成后应在激活后使用,如果不激活只能作为如果不激活只能作为DEMODEMO版使用,版使用,DEMODEMO版使用有时间版使用有时间限制。限制。PICCV8.05PL1PICCV8.05PL1编译器的激活方法是:单击编译器的激活方法是:单击PICCPICC编编译器开始菜单中的译器开始菜单中的Compiler ActivationCompiler Activation项,可出现如下所示项,可出现如下所示的编译器激活窗口。的编译器激活窗口。找到激活编译器所需的找到激活编译器所需的SerialSerial、

8、Company NameCompany Name、RegistrationRegistration和和ActivationActivation项的相关信息,分别填入编译器激项的相关信息,分别填入编译器激活窗口对应的文本框中,单击活窗口对应的文本框中,单击“下一步下一步”按钮,编译器即按钮,编译器即被激活。被激活。PICC CPICC C编译器的启动运行编译器的启动运行编译器的启动运行编译器的启动运行 PICC CPICC C编译器安装完成后,便可以在编译器安装完成后,便可以在MPLAB IDEMPLAB IDE集集成开发环境下运行。成开发环境下运行。n n设置设置设置设置PICCPICC的编译

9、环境的编译环境的编译环境的编译环境设置设置PICCPICC的编译环境的编译环境 为便于为便于PICCPICC编译器的编译环境设置,应先在编译器的编译环境设置,应先在MPLAB MPLAB IDEIDE集成开发环境下创建一个集成开发环境下创建一个PICC CPICC C编译器的项目。编译器的项目。创建项目创建项目创建项目创建项目 具体操作步骤如下:具体操作步骤如下:第第1 1步:启动步:启动MPLAB IDE7.00MPLAB IDE7.00集成开发环境窗口。集成开发环境窗口。第第2 2步:选择集成开发环境中的步:选择集成开发环境中的Project-NewProject-New菜单项,打开菜单项

10、,打开如下所示的新项目对话框,在此对话框中设置项目名和项如下所示的新项目对话框,在此对话框中设置项目名和项目路径。目路径。第第3 3步步:在在项项目目名名文文本本框框中中输输入入项项目目名名ledled,在在项项目目路路径径文文本本框框中中输输入入项项目目路路径径D:ledD:led,也也可可以以通通过过单单击击BrowseBrowse按按钮钮选择项目名的保存路径。选择项目名的保存路径。第第4 4步:单击新项目对话框的步:单击新项目对话框的OKOK按钮,出现如下所示的项按钮,出现如下所示的项目树窗口,说明项目已经建立。目树窗口,说明项目已经建立。选择器件选择器件选择器件选择器件 在开始其他工作

11、之前,应先选择开发过程中所需器件,在开始其他工作之前,应先选择开发过程中所需器件,其操作过程如下所示。其操作过程如下所示。首先在首先在MPLABMPLAB集成开发环境中打开集成开发环境中打开ConfigureConfigure菜单,然菜单,然后单击后单击Select DeviceSelect Device菜单项,弹出如下所示的器件选择对菜单项,弹出如下所示的器件选择对话框。此处可以选择话框。此处可以选择PICl6F877APICl6F877A作为开发芯片。作为开发芯片。设置项目设置项目设置项目设置项目 选择语言组件选择语言组件 在创建项目和选定器件后,接下来就可以设置工程的在创建项目和选定器件

12、后,接下来就可以设置工程的编译环境。首先介绍语言组件的设置,操作步骤如下:编译环境。首先介绍语言组件的设置,操作步骤如下:第第1 1步:在步:在MPLABMPLAB集成开发环境中打开集成开发环境中打开Project-Select Project-Select Language ToolsuiteLanguage Toolsuite菜单,弹出如下的选择语言组件对话框。菜单,弹出如下的选择语言组件对话框。第第2 2步:上图所示对话框用来选择开发工具组件,在步:上图所示对话框用来选择开发工具组件,在Active Active ToolsuiteToolsuite下拉列表框中选择下拉列表框中选择HI-

13、TECH PICC ToolsuiteHI-TECH PICC Toolsuite作为开作为开发工具组件,然后在发工具组件,然后在Toolsuite ContentsToolsuite Contents列表框中选择列表框中选择PICCCompilerPICCCompiler项,如下图所示。项,如下图所示。第第3 3步:单击对话框中的步:单击对话框中的BrowseBrowse按钮,弹出如下图所示的按钮,弹出如下图所示的打开文件对话框。在缺省打开文件对话框。在缺省PICC V8.05PL1PICC V8.05PL1编译器安装目录编译器安装目录C:HT-PICbinC:HT-PICbin下,选择下,

14、选择plcc.exeplcc.exe作为编译程序。然后单击作为编译程序。然后单击“打开打开”按钮,可以发现按钮,可以发现PICC CompilerPICC Compiler项已选择项已选择picc.exepicc.exe作为编译程序。作为编译程序。同样,同样,PICC AssemblerPICC Assembler和和PICC LinkerPICC Linker都选择都选择picc.exepicc.exe作作为汇编和链接程序,如下图所示。为汇编和链接程序,如下图所示。第第4 4步:选择完成后,单击上图步:选择完成后,单击上图OKOK按钮,完成选择工具组按钮,完成选择工具组件的工作。件的工作。设

15、置语言组件设置语言组件 其操作步骤如下:其操作步骤如下:第第1 1步:在步:在MPLABMPLAB中打开中打开Project-Set Language ToolsuiteProject-Set Language Toolsuite菜菜单,弹出如下图所示的设置语言组件对话框。单,弹出如下图所示的设置语言组件对话框。第第2 2步:在设置语言组件对话框中,选择步:在设置语言组件对话框中,选择HI-TECH PICC HI-TECH PICC ToolsuiteToolsuite项,单击项,单击HI-TECH PICC ToolsuiteHI-TECH PICC Toolsuite项前的项前的“+”+

16、”号,号,打开目录树,如下图所示。打开目录树,如下图所示。上图中,子目录上图中,子目录ExecutablesExecutables下,下,PICC CompilerPICC Compiler、PICC PICC AssemblerAssembler和和PICC LinkerPICC Linker在选择语言工具组件中都已选择在选择语言工具组件中都已选择picc.exepicc.exe作为编译、汇编、链接的处理程序。作为编译、汇编、链接的处理程序。第第3 3步:在目录树的子目录步:在目录树的子目录Default Search Paths&DirectoriesDefault Search Path

17、s&Directories下,下,Include Search PathInclude Search Path和和Library Search Path Library Search Path 分别选择分别选择C:HT-PICincludeC:HT-PICinclude和和C:HT-PIClibC:HT-PIClib作为搜索路径。作为搜索路径。第第4 4步:设置完包含文件路径和库文件路径后,在设置语步:设置完包含文件路径和库文件路径后,在设置语言组件的对话框中,单击言组件的对话框中,单击OKOK按钮,设置语言组件完成。按钮,设置语言组件完成。至此至此PICCPICC的项目设置完毕,可以对项目进

18、行编译、调的项目设置完毕,可以对项目进行编译、调试和运行了。试和运行了。三、三、PICC PICC 基本编程基本编程PICC PICC 中的基本变量类型中的基本变量类型中的基本变量类型中的基本变量类型 PICC PICC 支持的基本变量类型见下表:支持的基本变量类型见下表:PICC PICC 中的高级变量中的高级变量中的高级变量中的高级变量 基于上表的基本变量,除了基于上表的基本变量,除了bit bit 型位变量外,型位变量外,PICC PICC 完完全支持数组、结构和联合等复合型高级变量,这和标准的全支持数组、结构和联合等复合型高级变量,这和标准的C C 语言所支持的高级变量类型没有什么区别

19、。例如:语言所支持的高级变量类型没有什么区别。例如:数组:数组:unsigned int data10;unsigned int data10;结构体:结构体:struct commInData struct commInData unsigned char inBuff8;unsigned char inBuff8;unsigned char getPtr,putPtr;unsigned char getPtr,putPtr;联合体:联合体:union int_Byte union int_Byte unsigned char c2;unsigned char c2;unsigned int

20、 i;unsigned int i;PICC PICC 对数据寄存器对数据寄存器对数据寄存器对数据寄存器bank bank 的管理的管理的管理的管理 在在PICPIC单片机编程时,单片机数据寄存器的单片机编程时,单片机数据寄存器的bankbank是由是由编程员管理的,因此在定义变量时必须决定这些变量具体编程员管理的,因此在定义变量时必须决定这些变量具体放在哪一个放在哪一个bank bank 中,缺省时,所定义的变量将被定位在中,缺省时,所定义的变量将被定位在bank0bank0中,例如下面所定义的这些变量:中,例如下面所定义的这些变量:unsigned char buffer32;unsign

21、ed char buffer32;bit flag1,flag2;bit flag1,flag2;float val8;float val8;以上变量都是分布在以上变量都是分布在bank0 bank0 中。定义在其它中。定义在其它bank bank 内的内的变量前面必须加上相应的变量前面必须加上相应的bank bank 序号,例如:序号,例如:bank1 unsigned char buffer32;/bank1 unsigned char buffer32;/变量定位在变量定位在bank1 bank1 中中 bank2 bit flag1,flag2;/bank2 bit flag1,fla

22、g2;/变量定位在变量定位在bank2 bank2 中中 bank3 float val8;/bank3 float val8;/变量定位在变量定位在bank3 bank3 中中 volatile volatile 修饰词修饰词修饰词修饰词 PICC PICC 中还有一个特殊的变量修饰词中还有一个特殊的变量修饰词中还有一个特殊的变量修饰词中还有一个特殊的变量修饰词“volatile”volatile”,用来说明一个变量的值是会随机变化的,即使程序没有刻用来说明一个变量的值是会随机变化的,即使程序没有刻用来说明一个变量的值是会随机变化的,即使程序没有刻用来说明一个变量的值是会随机变化的,即使程序

23、没有刻意对它进行任何赋值操作。意对它进行任何赋值操作。意对它进行任何赋值操作。意对它进行任何赋值操作。在单片机中,作为输入的在单片机中,作为输入的在单片机中,作为输入的在单片机中,作为输入的IO IO 端口其内容将是随意变端口其内容将是随意变端口其内容将是随意变端口其内容将是随意变化的;很多特殊功能寄存器的值也将随着指令的运行而动化的;很多特殊功能寄存器的值也将随着指令的运行而动化的;很多特殊功能寄存器的值也将随着指令的运行而动化的;很多特殊功能寄存器的值也将随着指令的运行而动态改变。所有这种类型的变量必须将它们明确定义成态改变。所有这种类型的变量必须将它们明确定义成态改变。所有这种类型的变量

24、必须将它们明确定义成态改变。所有这种类型的变量必须将它们明确定义成“volatile”volatile”类型,例如:类型,例如:类型,例如:类型,例如:volatile unsigned char STATUS 0 x03;volatile unsigned char STATUS 0 x03;volatile bit commFlag;volatile bit commFlag;标准库函数标准库函数标准库函数标准库函数 PICC PICC 提供了较完整的提供了较完整的提供了较完整的提供了较完整的C C 标准库函数支持,其中包括标准库函数支持,其中包括标准库函数支持,其中包括标准库函数支持,其

25、中包括数学运算函数和字符串操作函数。在程序中使用这些现成数学运算函数和字符串操作函数。在程序中使用这些现成数学运算函数和字符串操作函数。在程序中使用这些现成数学运算函数和字符串操作函数。在程序中使用这些现成的库函数时需要注意的是入口参数必须在的库函数时需要注意的是入口参数必须在的库函数时需要注意的是入口参数必须在的库函数时需要注意的是入口参数必须在bank0 bank0 中。中。中。中。如果需要用到数学函数,则用如果需要用到数学函数,则用如果需要用到数学函数,则用如果需要用到数学函数,则用“#include”#include”包含头文件;如果要使用字符串操作函数,就需要包含包含头文件;如果要使

26、用字符串操作函数,就需要包含包含头文件;如果要使用字符串操作函数,就需要包含包含头文件;如果要使用字符串操作函数,就需要包含“#include”#include”头文件。在这些头文件中提供了函头文件。在这些头文件中提供了函头文件。在这些头文件中提供了函头文件。在这些头文件中提供了函数类型的声明。直接查看这些头文件就可以知道数类型的声明。直接查看这些头文件就可以知道数类型的声明。直接查看这些头文件就可以知道数类型的声明。直接查看这些头文件就可以知道PICC PICC 提提提提供了哪些标准库函数。供了哪些标准库函数。供了哪些标准库函数。供了哪些标准库函数。C C 语言中的格式化输出函数语言中的格式

27、化输出函数语言中的格式化输出函数语言中的格式化输出函数“printf/sprintf”printf/sprintf”用在用在用在用在单片机的程序中时要特别谨慎。单片机的程序中时要特别谨慎。单片机的程序中时要特别谨慎。单片机的程序中时要特别谨慎。printf/sprintf printf/sprintf 是一个非常是一个非常是一个非常是一个非常大的函数,一旦使用,你的程序代码长度就会增加很多。大的函数,一旦使用,你的程序代码长度就会增加很多。大的函数,一旦使用,你的程序代码长度就会增加很多。大的函数,一旦使用,你的程序代码长度就会增加很多。C C 和汇编混合编程和汇编混合编程和汇编混合编程和汇编

28、混合编程 用用用用C C 语言进行单片机应用程序开发时经常要使用汇编语言进行单片机应用程序开发时经常要使用汇编语言进行单片机应用程序开发时经常要使用汇编语言进行单片机应用程序开发时经常要使用汇编语句。比如,单片机的一些特殊指令操作在标准的语句。比如,单片机的一些特殊指令操作在标准的语句。比如,单片机的一些特殊指令操作在标准的语句。比如,单片机的一些特殊指令操作在标准的C C 语言语言语言语言语法中没有直接对应的描述,例如语法中没有直接对应的描述,例如语法中没有直接对应的描述,例如语法中没有直接对应的描述,例如PIC PIC 单片机的清看门狗单片机的清看门狗单片机的清看门狗单片机的清看门狗指令指

29、令指令指令“clrwdt”clrwdt”和休眠指令和休眠指令和休眠指令和休眠指令“sleep”sleep”。这样,一个项目。这样,一个项目。这样,一个项目。这样,一个项目中就会出现中就会出现中就会出现中就会出现C C 和汇编混合编程的情形,我们在此讨论一些和汇编混合编程的情形,我们在此讨论一些和汇编混合编程的情形,我们在此讨论一些和汇编混合编程的情形,我们在此讨论一些混合编程的基本方法和技巧。混合编程的基本方法和技巧。混合编程的基本方法和技巧。混合编程的基本方法和技巧。在在在在C C 原程序中直接嵌入汇编指令是最直接最容易的方原程序中直接嵌入汇编指令是最直接最容易的方原程序中直接嵌入汇编指令是

30、最直接最容易的方原程序中直接嵌入汇编指令是最直接最容易的方法。如果只需要嵌入少量几条的汇编指令,法。如果只需要嵌入少量几条的汇编指令,法。如果只需要嵌入少量几条的汇编指令,法。如果只需要嵌入少量几条的汇编指令,PICC PICC 提供了提供了提供了提供了一个类似于函数的语句:一个类似于函数的语句:一个类似于函数的语句:一个类似于函数的语句:asm(“clrwdt”);asm(“clrwdt”);双引号中可以编写任何一条双引号中可以编写任何一条双引号中可以编写任何一条双引号中可以编写任何一条PIC PIC 的标准汇编指令。例如:的标准汇编指令。例如:的标准汇编指令。例如:的标准汇编指令。例如:f

31、or(;)for(;)asm(clrwdt);/asm(clrwdt);/清看门狗清看门狗清看门狗清看门狗asm(sleep);/asm(sleep);/休眠休眠休眠休眠asm(“nop”);/asm(“nop”);/空操作延时空操作延时空操作延时空操作延时 如果需要编写一段连续的汇编指令,如果需要编写一段连续的汇编指令,如果需要编写一段连续的汇编指令,如果需要编写一段连续的汇编指令,PICC PICC 支持另外支持另外支持另外支持另外一种语法描述:用一种语法描述:用一种语法描述:用一种语法描述:用“#asm”#asm”开始汇编指令段,用开始汇编指令段,用开始汇编指令段,用开始汇编指令段,用“

32、#endasm”#endasm”结束。例如下面的一段嵌入汇编指令实现了结束。例如下面的一段嵌入汇编指令实现了结束。例如下面的一段嵌入汇编指令实现了结束。例如下面的一段嵌入汇编指令实现了将将将将0 x200 x7F 0 x200 x7F 间的间的间的间的RAM RAM 全部清零:全部清零:全部清零:全部清零:#asm#asm movlw 0 x20 movlw 0 x20 movwf movwf _FSR_FSR clrf clrf _INDF_INDF incf incf _FSR,f_FSR,f btfss btfss _FSR,7_FSR,7 goto goto$-3$-3#endasm#

33、endasm四、编程实例四、编程实例四、编程实例四、编程实例PICCPICC的头文件的头文件的头文件的头文件 PICCPICC支持下的支持下的支持下的支持下的C C程序代码中一定要包含程序代码中一定要包含程序代码中一定要包含程序代码中一定要包含pic.hpic.h头文件,头文件,头文件,头文件,该文件安装在该文件安装在该文件安装在该文件安装在HT-PICincludeHT-PICinclude目录下。它是很多头文件的目录下。它是很多头文件的目录下。它是很多头文件的目录下。它是很多头文件的集合,集合,集合,集合,C C编译器在编译器在编译器在编译器在pic.hpic.h中根据用户选择的芯片自动载

34、入相中根据用户选择的芯片自动载入相中根据用户选择的芯片自动载入相中根据用户选择的芯片自动载入相应的其它头文件,例如用户选择的芯片是应的其它头文件,例如用户选择的芯片是应的其它头文件,例如用户选择的芯片是应的其它头文件,例如用户选择的芯片是PIC16F877PIC16F877,则,则,则,则pic.hpic.h会把会把会把会把pic1687x.hpic1687x.h载入;例如用户选择的芯片是载入;例如用户选择的芯片是载入;例如用户选择的芯片是载入;例如用户选择的芯片是PIC16F877APIC16F877A,则,则,则,则pic.hpic.h会把会把会把会把pic168xa.hpic168xa.

35、h载入。载入的头文件载入。载入的头文件载入。载入的头文件载入。载入的头文件中其实是声明芯片的寄存器和一些函数。例如以下程序片中其实是声明芯片的寄存器和一些函数。例如以下程序片中其实是声明芯片的寄存器和一些函数。例如以下程序片中其实是声明芯片的寄存器和一些函数。例如以下程序片段:段:段:段:static volatile unsigned char TMR00 x01;static volatile unsigned char TMR00 x01;static volatile unsigned char PCL0 x02;static volatile unsigned char PCL0 x

36、02;static volatile unsigned char STATUS0 x03;static volatile unsigned char STATUS0 x03;static volatile unsigned char PORTA 0 x05;static volatile unsigned char PORTA 0 x05;static volatile unsigned char PORTB 0 x06;static volatile unsigned char PORTB 0 x06;staticstatic unsigned char bank1 OPTION 0 x81

37、;unsigned char bank1 OPTION 0 x81;staticstatic unsigned char bank1 TRISA0 x85;unsigned char bank1 TRISA0 x85;staticstatic unsigned char bank1 TRISB 0 x86;unsigned char bank1 TRISB 0 x86;符号表示地址的意思。这些声明和符号表示地址的意思。这些声明和符号表示地址的意思。这些声明和符号表示地址的意思。这些声明和PICPIC汇编中的定汇编中的定汇编中的定汇编中的定义寄存器是差不多的,例如:义寄存器是差不多的,例如:义寄

38、存器是差不多的,例如:义寄存器是差不多的,例如:TMR0 EQU 0 x01;TMR0 EQU 0 x01;PCL EQU 0 x02;PCL EQU 0 x02;STATUS EQU 0X03;STATUS EQU 0X03;对于特殊功能寄存器的位地址在头文件中也有定义,对于特殊功能寄存器的位地址在头文件中也有定义,对于特殊功能寄存器的位地址在头文件中也有定义,对于特殊功能寄存器的位地址在头文件中也有定义,比如比如比如比如PORTBPORTB端口的位地址定义如下:端口的位地址定义如下:端口的位地址定义如下:端口的位地址定义如下:/*PORTB bits */*PORTB bits */sta

39、tic volatile bit RB7 (unsigned)&PORTB*8+7;static volatile bit RB7 (unsigned)&PORTB*8+7;static volatile bit RB6 (unsigned)&PORTB*8+6;static volatile bit RB6 (unsigned)&PORTB*8+6;static volatile bit RB5 (unsigned)&PORTB*8+5;static volatile bit RB5 (unsigned)&PORTB*8+5;static volatile bit RB4 (unsigned

40、)&PORTB*8+4;static volatile bit RB4 (unsigned)&PORTB*8+4;static volatile bit RB3 (unsigned)&PORTB*8+3;static volatile bit RB3 (unsigned)&PORTB*8+3;static volatile bit RB2 (unsigned)&PORTB*8+2;static volatile bit RB2 (unsigned)&PORTB*8+2;static volatile bit RB1 (unsigned)&PORTB*8+l;static volatile bi

41、t RB1 (unsigned)&PORTB*8+l;static volatile bit RB0 (unsigned)&PORTB*8+0;static volatile bit RB0 (unsigned)&PORTB*8+0;其中其中其中其中RB7RB7代表代表代表代表PORTBPORTB的的的的bit7bit7。我们可以模仿我们可以模仿我们可以模仿我们可以模仿pic.hpic.h文件的定义方法定义文件的定义方法定义文件的定义方法定义文件的定义方法定义RAMRAM中文件中文件中文件中文件寄存器的方法,定义寄存器的方法,定义寄存器的方法,定义寄存器的方法,定义bank0bank0的的的的

42、20h20h,21h21h,22h22h为文件寄存为文件寄存为文件寄存为文件寄存器以及他们的位地址。假设我们把器以及他们的位地址。假设我们把器以及他们的位地址。假设我们把器以及他们的位地址。假设我们把 20h20h取名取名取名取名RAM20HRAM20H,其位地址分别是,其位地址分别是,其位地址分别是,其位地址分别是RAM20H7RAM20H0RAM20H7RAM20H0 21h 21h取名取名取名取名RAM21HRAM21H,其位地址分别是,其位地址分别是,其位地址分别是,其位地址分别是RAM21H7RAM21H0RAM21H7RAM21H0 22h 22h取名取名取名取名RAM22HRAM

43、22H,其位地址分别是,其位地址分别是,其位地址分别是,其位地址分别是RAM22H7RAM22H0RAM22H7RAM22H0 定义如下:定义如下:定义如下:定义如下:static volatile unsigned char RAM20H 0 x20;static volatile unsigned char RAM20H 0 x20;static volatile unsigned char RAM21H 0 x21;static volatile unsigned char RAM21H 0 x21;static volatile unsigned char RAM22H 0 x22;s

44、tatic volatile unsigned char RAM22H 0 x22;RAM20H RAM20H的位地址定义如下:的位地址定义如下:的位地址定义如下:的位地址定义如下:static volatile bit RAM20H7(unsigned)&RAM20H*8+7;static volatile bit RAM20H7(unsigned)&RAM20H*8+7;static volatile bit RAM20H6(unsigned)&RAM20H*8+6;static volatile bit RAM20H6(unsigned)&RAM20H*8+6;static volati

45、le bit RAM20H5(unsigned)&RAM20H*8+5;static volatile bit RAM20H5(unsigned)&RAM20H*8+5;static volatile bit RAM20H4(unsigned)&RAM20H*8+4;static volatile bit RAM20H4(unsigned)&RAM20H*8+4;static volatile bit RAM20H3(unsigned)&RAM20H*8+3;static volatile bit RAM20H3(unsigned)&RAM20H*8+3;static volatile bit

46、 RAM20H2(unsigned)&RAM20H*8+2;static volatile bit RAM20H2(unsigned)&RAM20H*8+2;static volatile bit RAM20H1(unsigned)&RAM20H*8+1;static volatile bit RAM20H1(unsigned)&RAM20H*8+1;static volatile bit RAM20H0(unsigned)&RAM20H*8+0;static volatile bit RAM20H0(unsigned)&RAM20H*8+0;RAH21HRAH21H和和和和RAH22HRAH

47、22H的位地址也可以类似定义:的位地址也可以类似定义:的位地址也可以类似定义:的位地址也可以类似定义:static volatile bit RAM21H7(unsigned)&RAM21H*8+7;static volatile bit RAM21H7(unsigned)&RAM21H*8+7;static volatile bit RAM21H6(unsigned)&RAM21H*8+6;static volatile bit RAM21H6(unsigned)&RAM21H*8+6;static volatile bit RAM21H5(unsigned)&RAM21H*8+5;stat

48、ic volatile bit RAM21H5(unsigned)&RAM21H*8+5;static volatile bit RAM21H4(unsigned)&RAM21H*8+4;static volatile bit RAM21H4(unsigned)&RAM21H*8+4;static volatile bit RAM21H3(unsigned)&RAM21H*8+3;static volatile bit RAM21H3(unsigned)&RAM21H*8+3;static volatile bit RAM21H2(unsigned)&RAM21H*8+2;static vol

49、atile bit RAM21H2(unsigned)&RAM21H*8+2;static volatile bit RAM21H1(unsigned)&RAM21H*8+1;static volatile bit RAM21H1(unsigned)&RAM21H*8+1;static volatile bit RAM21H0(unsigned)&RAM21H*8+0;static volatile bit RAM21H0(unsigned)&RAM21H*8+0;static volatile bit RAM22H7(unsigned)&RAM22H*8+7;static volatile

50、bit RAM22H7(unsigned)&RAM22H*8+7;static volatile bit RAM22H6(unsigned)&RAM22H*8+6;static volatile bit RAM22H6(unsigned)&RAM22H*8+6;static volatile bit RAM22H5(unsigned)&RAM22H*8+5;static volatile bit RAM22H5(unsigned)&RAM22H*8+5;static volatile bit RAM22H4(unsigned)&RAM22H*8+4;static volatile bit RA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁