什么'S programa pic micro的最简单方法?
"Use a PIC Compiler"...
It's much 更轻松 使用高级语言(如C或C)
基本)因为它使用人类容易识别的单词。
这通常是 结果 在 a program
这更容易写和理解。
事实上,我会说它需要 1/10时间 与写入相同的程序相比,编写高级语言程序 汇编程序。这是因为共同组织隐藏了低级细节让您失望 继续解决问题。
你可以使用图片编译器 视觉描述 the 程序流使用选项卡和空格使其很容易查看程序 works.
一个好的图片编译器还包括一个 帮助系统 for 查找语言的元素和模拟器,这使得调试 code easy.
编译器过于解释的其他优势 语言编译器是你可以得到的 最大的性能 out of 芯片。编译器创建直接在芯片上运行的可执行十六进制文件 而解释的语言系统使用中间步骤并存储一个 中间程序在芯片上或单独的存储设备中。 从内存中解释代码需要时间,因此您可以获得更少的性能 it.
解释系统的一个优点是 存储器设备是单独的,它可以根据需要制作,所以可以 create big programs.
解释语言慢的事实不是 宣传,您可以告诉差异,因为编译器将与任何作用 芯片但是对于解释的系统,您必须购买准备好的编程芯片 - 可能在PCB上。只要您拥有一个,编译器将与任何芯片一起使用 programmer.
这将我们带到下一个点 - 如果你想创造 那么很多项目然后是一个编译器,你有一次性不经常成本 - 编译器本身。但是对于解释的系统,您必须继续购买PCB 并支持芯片 - 所以您的项目将花费更多才能进行。
pic编译器(或任何编译器)是一个翻译的程序 一个计算机程序进入另一台计算机程序。以高级语言编写的源代码 被翻译成微控制器理解的机器代码。这个 简化任务,因为您不必编写汇编程序 - 您是 只要 专注于高水平语言。
这是一个例子'C'程序及其汇编器输出 即PIC编译器的(机器代码)输出:
示例高水平'C' language 源代码 为了 a pic compiler:
void main() {
PORTB = 0;
TRISB = 0;
do {
switch (PORTB) {
案例0x00:portb = 0xff;休息;
案例0xff:portb = 0x00;
}
Delay_ms(1000);
} while (1);
}
由编译器生成的输出i.e. 机器代码 (and assembler) :
以下文本很长,请滚动到过去 它可以看到关于它并继续的评论。
;地址Opcode ASM
; -------------------------------------------------------------
$ 0000 $ 2804 goto _main
$ 0004 $ _MAIN:
$ 0004 $ 1303 BCF状态,RP1
$ 0005 $ 1283 BCF状态,RP0
$ 0006 $ 0186 CLRF PORTB
$ 0007 $ 1683 BSF状态,RP0
$ 0008 $ 0186 CLRF TRISB
$ 0009 $ l_main_0:
$ 0009 $ 1303 BCF状态,RP1
$ 000A $ 1683 BSF状态,RP0
$ 000b $ 2812 goto l_main_2
$ 000c $ l_main_4:
$ 000c $ 30ff movlw 255
$ 000D $ 1283 BCF状态,RP0
$ 000E $ 0086 MOVWF PORTB
$ 000f $ 281f goto l_main_3
$ 0010 $ l_main_5:
$ 0010 $ 0186 CLRF PORTB
$ 0011 $ 281f goto l_main_3
$ 0012 $ l_main_2:
$ 0012 $ 1303 BCF状态,RP1
$ 0013 $ 1283 BCF状态,RP0
$ 0014 $ 01F0 CLRF Stack_0
$ 0015 $ 0870 MOVF Stack_0,W
$ 0016 $ 0206 Subwf Portb,W
$ 0017 $ 1903 btfsc状态,z
$ 0018 $ 280c goto l_main_4
$ 0019 $ 30ff movlw 255
$ 001a $ 00f0 movwf stack_0
$ 001b $ 0870 movf stack_0,w
$ 001c $ 0206 Subwf Portb,W
$ 001d $ 1903 btfsc状态,z
$ 001e $ 2810 goto l_main_5
$ 001f $ l_main_3:
$ 001f $ 300b movlw 11
$ 0020 $ 00f0 movwf stack_0
$ 0021 $ 30ff movlw 255
$ 0022 $ 00f1 movwf stack_1
$ 0023 $ 30ff movlw 255
$ 0024 $ 00f2 movwf Stack_2
$ 0025 $ 0bf0 decfsz stact_0,f
$ 0026 $ 2828转到$ + 2
$ 0027 $ 282f goto $ + 8
$ 0028 $ 0bf1 decfsz stack_1,f
$ 0029 $ 282b goto $ + 2
$ 002a $ 282e goto $ + 4
$ 002b $ 0bf2 decfsz stack_2,f
$ 002c $ 282b goto $ -1
$ 002D $ 2828转到-5美元
$ 002e $ 2825转到-9美元
$ 002F $ 3033 MOVLW 51
$ 0030 $ 00f3 movwf stack_3
$ 0031 $ 30ff movlw 255
$ 0032 $ 00f4 movwf Stack_4
$ 0033 $ 0bf3 decfsz stack_3,f
$ 0034 $ 2836 GOTO $ + 2
$ 0035 $ 2839 GOTO $ + 4
$ 0036 $ 0bf4 decfsz stack_4,f
$ 0037 $ 2836 GOTO $ -1
$ 0038 $ 2833转到-5美元
$ 0039 $ 3088 MOVLW 136
$ 003a $ 00f5 movwf stack_5
$ 003b $ 0bf5 decfsz stack_5,f
$ 003c $ 283b goto $ -1
$ 003d $ 0000 nop
$ 003e $ 0000 nop
$ 003f $ 2809 goto l_main_0
$ 0040 $ l_main_1:
$ 0040 $ 2840 GOTO $
这向您展示了多少容易
它是使用编译的语言
原始装配者。
第二列是实际的机器代码 微控制器读取(操作码),而第三和第四则是汇编程序 翻译(比Opcode更可读)。
正如您所看到的,源代码比这更紧凑 汇编器输出并更可读。你也可以看到它正在做 带有波特布的东西,并且与机器一起包含延迟 code you can'真的讲述了什么发生了什么,有很多行 通过代码通过。
当然,评论是(希望)包括写的 汇编程序,但仍有相同数量的语句来理解。
编译器'语言让你...
一个好的图片编译器也会让你......
用于PIC微控制器的两种主要语言 编程Basic和C.这些是迄今为止最流行的语言 是具有不同成本/性能比率的编译器。其他不太受欢迎的照片 编译器是帕斯卡,第四和jal。
具有与语言相关联的ANSI标准意味着 任何PIC编译器都可用于编译源代码 - 并且编译器将 接受该源代码,无论目标微族如何。请注意 必须进行一些调整。寄存器名称,硬件操作等
这是基本的问题,因为没有标准 - 所以如果你 使用一个编译器写出基本源代码,它很可能会 不行 如果您使用不同的编译器。
开始时,您应该使用具有文本的PIC编译器 编辑器和模拟器内置IDE(集成开发 Environment).
一个很好的帮助系统将赋予语言的示例 保存收到文本预订(某些帮助文件也有典型的示例 hardware solutions).
显然成本是考虑因素 - 最好的是成本 更多的。但是,您可以使用一些非常低成本并表现良好的一些。
跳跃 pic编译器 page to
最佳微控制器 - 项目主页
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。