收藏 分销(赏)

PIC单片机C语言使用基础手册.doc

上传人:快乐****生活 文档编号:2993090 上传时间:2024-06-12 格式:DOC 页数:13 大小:62.54KB
下载 相关 举报
PIC单片机C语言使用基础手册.doc_第1页
第1页 / 共13页
PIC单片机C语言使用基础手册.doc_第2页
第2页 / 共13页
PIC单片机C语言使用基础手册.doc_第3页
第3页 / 共13页
PIC单片机C语言使用基础手册.doc_第4页
第4页 / 共13页
PIC单片机C语言使用基础手册.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、本手册分两部分:第一部分 HI-TECH PICC C 使用说明. 这里我们只讲述了PICC C和标准C不一样, 它不是一本C语言教程, 而且我们假定你有C语言基础.第二部分 在伟福集成环境下使用PICC. 讲述在伟福集成环境如可设置PICC, 简单调试步骤. 更具体说明请参阅 伟福仿真器使用手册. 相关怎样在MPLAB下使用PICC C语言, 请参阅Microchip对应手册.南京伟福实业电话: 025 3193973 网址: .com 电子信箱: PICC C 编译器请向Microchip 上海分企业购置, 售价: RMB 599. 电话: 021 62755700 网址: .com Hi

2、-tech 企业网址: .com第一部分为了对PIC单片机有愈加好支持,PICC在标准C基础上作了部分扩充:l 定义I/O函数,方便在你硬件系统中使用中定义函数。l 用C语言编写中止服务程序l 用C语言编写I/O操作程序 l C语言和汇编语言间接口1-1 和标准C不一样 PICC只在一处和标准C不一样:函数重入。 因为PIC单片机寄存器及堆栈有限,所以PICC不支持可重入函数。1-2 支持PIC芯片 PICC 支持很多PIC单片机,支持PIC单片机类型在LIB目录下picinfo.ini 文件中有定义。1-3 PICC 包含部分标准库1-4 PICC 编译器能够输出部分格式目标文件,缺省设置为

3、输出BytecraftCOD 格式和 IntelHEX格式。你能够用表1-1中命令来指定输出格式。 表-格式名称描述PICC 命令文件类型Motorola HEXS1/S9 type hex file-MOT.HEXIntel HEXIntel style hex records(缺省)-INTEL.HEXBinarySimple binary image-BIN.BINUBROFUniversal Binary Image Relocatable Format-UBROF.UBRTektronix HEXTektronix style hex records-TEK.HEXAmericanH

4、ex format with symbols for American -AAHEX.HEXAutomation HEXAutomation emulatorsBytecraft .CODBytecraft code format(缺省)n/a(缺省) .CODLibraryHI-TECH library filen/a.LIB1-5 符号文件PICC -G 命令用于生成符号文件,有了符号文件,你就能够进行源程序调试. 命令格式为: PICC -16F877 -G test.c 在使用仿真器时必需使用-G命令。1-6 配置字 PIC单片机配置字能够用_CONFIG命令来定义: #include

5、 _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单片机支持用

6、外部编程器对内部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 bits

7、et(var, bitno) (var) |= (1 (bitno) #defien bitclr(var, bitno) (var) &= (1 (bitno) 上一条语句可写为:bitset(foo, 6);1-10 支持数据类型 PICC 支持1,2,4字节基础类型。 全部多字节类型全部采取低有效位在前格式, 表1-2列出了全部数据类型及它们所占空间大小。 表-类型大小(位)数字类型值bit1逻辑类型0 或 1signed char8有符号字符-128.+127unsigned char 8无符号字符0.255signed short16有符号整数-32768.+32767unsigne

8、d short 16无符号整数0.65535signed int16有符号整数-32768.+32767unsigned int 16无符号整数0.65535signed long32有符号整数-.+unsigned long32无符号整数0.float 24浮点double24 or 32浮点由-D24, -D32决定1-10-1 常量及进制表示 PICC 支持标准C进制表示方法。 l或L后缀表明常量为long类型, u或U后缀表示常量为unsinged类型。 浮点数为double类型,能够用f或F指定浮点数为float类型。 字符型由单引号括起,如a. 字符串由双引号括起,如Hello w

9、orld. 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-

10、2-1 使用可位寻址寄存器 位变量定义能够和绝对地址定义结合起来使用。如:为了访问STATUS中Power Down位,先定义STATUS绝对地址为3,然后再定义一位变量绝对地址为27 static unsigned char STATUS 0x03; static bit PD (unsigned)&STATUS*8+3; 注意: 头文件中已定义全部特殊功效寄存器及对应位寄存器.1-10-3 PICC浮点数使用IEEE754 32位格式和IEEE754(截断)24位格式. float类型使用24位格式,double使用24位或32位格式, 由PICC命令控制, -D24使用24位格式, -D

11、32使用32位格式.1-11 绝对地址变量 一个全局或静态变量能够定位绝对地址, 使用以下格式: unsigned char Portvar 0x06; 这里定义了一个名为Portvar变量, 地址为06h,注意,编译器并不保留任何单元,仅仅是将一个变量分配在06h单元. 它等价于汇编语言: _Portvar EQU 06h 编译器及连接器全部不作任何检验, 完全由程序员确保分配不会发生冲突.1-12 结构和联合PICC 支持struct及union, 它们能够作为函数参数及返回值, 也能够作为指针指向目标. 1-12-1 结构限定PICC 支持在结构上使用限定符, 假如在一个结构上使用限定符

12、, 那么, 这个结构全部组员全部被限定.如: 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为10

13、h单元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

14、world来初始化. 假如要将一个常数字符串作为函数参数或将它赋给一个指针, 必需定义一个常数指针. 如: void SendBuff(const char * ptr)1-14 const, volatile 类型限定符. PICC 支持标准Cconst, volatile 类型限定符const类型限定符通知编译器一个目标含有常量而且不会改变. 一个常量被放在ROM中, 显然一个常量是不能被赋值. 如: const int version = 3;volatile 类型限定符通知编译器, 一个目标不能确保在连续访问中不被改变. 这将严禁编译器对该目标优化. 全部I/O口及在中止中使用变量必需

15、有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. 不过在有些情况下, 我们期望在复位后仍保持部分变量值.

16、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

17、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 used PEIE = 1; / all peripheral interrupts are enabled ei(); / e

18、nable all interrupts di(); / disable all interrupts1-16 在C中使用汇编语言 #asm, #endasm, asm() 能够在C语言中直接使用汇编语言. #asm, #endasm用来加入一段汇编语言, 而asm()用来加入一条汇编语言. 如: #include unsinged char var; void main(void) var = 1; #asm rlf _var, 1 rlf _var, 1 #endasm asm(rlf _var, 1); 1-17 函数调用变换因为PIC5X只有两级堆栈, PICC 编译器使用转移指令来调

19、用函数, 这么被套调用层次增加, 但调用速度下降, 请在需要快速调用函数前加fastcall来指定编译器直接使用调用指令调用函数. 对于14位PIC单片机, 将永远使用调用指令调用.1-18 MPLAB使用调试控制项 -FACKLOCAL 命令用于在MPLAB下观察函数内局部变量 -MPLAB_ICD 命令用于使用ICD调试C语言. 第二部分2-1 安装PICC将CD-ROM装入光驱, 自动运行程序将自动开启, 假如你已严禁自动运行功效, 能够直接运行: cd_drive:compilerinstall.exe 安装程序将指导你完成PICC安装.2-2 设置伟福集成环境在伟福集成环境中, 将编译器路径指向PICC 所在目录将命令行设置为: -16F877 G O Zg -c将连接命令行设置为: -16F877 G O -Zg 其中: -16F877 为芯片型号 G O -c为源程序调试设置项, 不可修改 Zg 为打开优化 你能够在命令行中加入其它控制项2-3 调试语言在WAVESAMPLES目录下有一个PIC C语言例子程序: PIC_C.PRJ. 打开PIC_C项目. 编译该项目(F9). 用F7,F8单步调试例子程序. 打开观察窗口观察变量

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服