PIC单片机C语言编程

来源:本站
导读:目前正在解读《PIC单片机C语言编程》的相关信息,《PIC单片机C语言编程》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC单片机C语言编程》的详细说明。
简介:这是一篇PIC单片机采用C语言编程,说明C编译器的特点之一。一点亮LED为例说明。

LED点亮太简单了。不就是将接有LED的口置高或低就Ok了,却是如此。首先需要了解C编程。假设已有基本的C基础。此外将目标板连接好,在RC口的RC7~RC4连接串有102电阻的LED。如果是双向的LED效果最好。打开Uedit32,创建第一个项目,文件夹名:pic16f873a/picTest/,项目名:test。这款软件尽管以项目管理方式,但实际上他是文件操作管理软件,因此一个项目下可以放所有的相关编程,只要文件名能区别即可。

在弹出的工程设置对话框中/关闭即可——除非已有程序,可以添加进工程中。在工程界面:文件/新建输入led.c;而后工程/添加到工程/文件,将刚创建的led.c加入项目。与所有单片机编程一样首相需要加入头文件,在头输入:

#include<pic.h>

__CONFIG(0xFF32);//参阅PIC16F873A pdf文档 P 142 14.1 Configuration Bits配置字

//接着可以采用多种方法实现,最简单方法是直接创建main函数

void main(void){

long i;//长整形最大65535

//define port

TRISC=0b00001111;//H7-4=Input/L3-0=Out

PORTC=0x50;//=01010000

while(1){

PORTC=0x50;

for(i=50000;i>0;i--);

PORTC=0xA0;//=10100000

for(i=50000;i>0;i--);

}

}

一共13行。

为什么不用PORTB呢?因为B口的有弱上拉设置,所以我们先用简单的C口操作。在编译之前需要选择采用那种C编译软件,PICC是与Uedit32常配的编译器,单击高级/工程工具配置,按下述选输菜单项目名称:16f873a命令行:PICC C编译器绝对路径PICC9.80binpicc.exe -16F873A %F工作目录:项目绝对路径picTest工具栏位图/图标:PICC C编译器绝对路径PICC9.80resourceshitech_logo.ico第一行是编译项目名称第二行是编译器的文件夹路径和文件名后跟的参数第三行是要编译的对象文件的文件夹路径第四行是编译器的图标,可以不要

之后在高级/最下一行可以看到:16f873a的选项,单击他会对当前打开的C文件进行编译,如果没有问题会产生一个与编译文件名一样的.hex文件,将此文件烧到MCU中就可以看到结果了。

打开PicKit2,单击Device Family/Midrange/Standart;在下边的 Device右边下拉找到PIC16F873A;文件/Import Hex/将工程文件夹下的编译好的.hex加到程序中,本例文件为:led.hex;而后单击Write或Programmer/Write Device/数秒之后就下载完成了,可以单击VDD PICKit 2下边的On选框,加载电压到目标机,观看结果。

小小改进,上述程序没有问题,一切如愿,但不规范——C规定先定义再使用,并且最好以模块化的方式。上述可以分析得到:IO口的定义,有一个延时语句,控制LED是主要的——分成ioInit、delay和main,程序改成:

#include<pic.h>

__CONFIG(0xFF32);//参阅PIC16F873A pdf文档 P 142 14.1 Configuration Bits配置字

//define port

void ioInit(void){

TRISC=0b00001111;//H7-4=Input/L3-0=Out

PORTC=0x50;//=01010000

}

//Delay

void delay(long ts){

long i;

for(i=ts;i>0;i--);

}

void main(void){

ioInit();

while(1){

PORTC=0x50;//=01010000

delay(50000);

PORTC=0xA0;//=10100000

delay(50000);

}

}

一共18行。

上述程序从语句上看多了几行,从结构上非常清晰。编译后的程序效率呢?

前边的:

:040000008A11B02F82

:100F600083018A11B32F0F3083168700503083120C

:100F7000870050308700A301A201C330A100503088

:100F8000A000FF30A007031CA107031CA207031C3D

:100F9000A3072308803AFF0080307F02031DDA2F69

:100FA00000302202031DDA2F00302102031DDA2F48

:100FB000013020020318C12FA0308700A301A20135

:100FC000C330A1005030A000FF30A007031CA107D0

:100FD000031CA207031CA3072308803AFF008030EC

:100FE0007F02031DFD2F00302202031DFD2F003064

:100FF0002102031DFD2F01302002031CB92FE42F15

:02400E0032FF7F

:00000001FF

改后的:

:040000008A11B82F7A

:100F700083018A11C22F0F308316870050308312ED

:100F8000870008008A11BB278A1150308700A3010F

:100F9000A201C330A1005030A0008A11DC278A11C1

:100FA000A0308700A301A201C330A1005030A000EF

:100FB0008A11DC278A11C52F2308A7002208A60062

:100FC0002108A5002008A4002708803AFF008030EF

:100FD0007F02031DF52F00302602031DF52F003080

:100FE0002502031DF52F01302402031C0800FF30E9

:100FF000A407031CA507031CA607031CA707E42FCF

:02400E0032FF7F

:00000001FF

你会发现少了整整一行,效率反而高了。这就是神秘的C编译器。它是结构化的编译器。就是说,对顺序写的程序编译效率低,对结构化的程序编译效率高,当然一般来说执行速度也会好点的。如果你手里有PIC的反编译器,可以试试回来后的结果。

提醒:《PIC单片机C语言编程》最后刷新时间 2024-03-14 00:53:44,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC单片机C语言编程》该内容的真实性请自行鉴别。