东西还得一点点儿的学呀!
先讲一下熔丝位,上一篇博客介绍mac下工程文件的建立(PIC上的“Hello World”—第一个运行程序),熔丝位的配置是仿照官方库文件修改的,等我把最小系统建立好,因为一次次的烧写失败,无意间发现,MPLAB IDE已经给出了熔丝位配置工具了,就在编辑时候下面的状态输出框里。
第一个是编译状态输出,第二个是任务列表(没发现有啥用),第三个Configuration Bits就是配置熔丝位了,在里面选你需要的熔丝位配置,再点击“Generate Source Code to Output”就直接生成配置代码,粘贴到你的程序里就行了。
最小系统的原理图,网上找的图片,我用的是873A,这个是877A,两块芯片一样的,只是873A功能少了很多。搭建好系统后,把程序烧进去,我用的烧写器是PICkit2,某宝几十块一个,不过我建议大家选择PICkit3,我是当初不知道,随便选的,PICkit3可以进行仿真,我的只能烧写了。
程序再贴一下:
- #include & lt; pic.h & gt;
- #include & lt; xc.h & gt; /* PIC hardware mapping// CONFIG */
- #pragma config FOSC = HS /* Oscillator Selection bits (HS oscillator) */
- #pragma config WDTE = OFF /* Watchdog Timer Enable bit (WDT disabled) */
- #pragma config PWRTE = ON /* Power-up Timer Enable bit (PWRT enabled) */
- #pragma config BOREN = ON /* Brown-out Reset Enable bit (BOR enabled) */
- #pragma config LVP = ON /* Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled) */
- #pragma config CPD = OFF /* Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) */
- #pragma config WRT = OFF /* Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) */
- #pragma config CP = OFF /* Flash Program Memory Code Protection bit (Code protection off) */
- void main( void )
- {
- TRISAbits.TRISA0 = 0; /* using pin as output */
- /* PORTA = 0; //clear all pins to 0 */
- PORTAbits.RA0 = 1; /* turn on the LED by writing to the latch */
- while ( 1 )
- ;
- }
在上篇博客后来补充说明过,因为引脚配置和引脚置位没对上,导致LED总点不亮,为此,我找了整整两天!总以为是熔丝位或者烧写过程中出问题了。TRISAbits.TRISA0这个和后面的PORTAbits.RA0不要错了,前面相当于AVR的DDRX,后面就是PORTX,当然你也可以直接用PORTX,这是个8位寄存器,每一位对应一个引脚,和AVR一样的。
这是IDE的主要操作图标,第一个锤子是编译程序生成hex文件,第二个锤子是清空之前的编译文件重新编译再生成hex,播放图标是运行工程,我的执行不了,估计是不支持仿真;向下的箭头就是下载程序到MCU了,向上箭头是读取MCU中的程序;后面两个也是仿真用的,我主要用的就是两个锤子编译,看心情选哪个,然后直接向下箭头下载就OK了。
好了,祝你早日点灯成功!