共2条
1/1 1 跳转至页
PICC9,50 熟悉PICC9.50版本的大虾进来帮帮忙,谢谢!
问
我安装好9.50版本后发现不能编译了,提示错误如下:Error[922] : chip "16F54" not present in chipinfo file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\dat\PICc-lite.ini"
我对应的编译文件路径如下:C:\Program Files\HI-TECH Software\PICC-Lite\9.50\bin\PICl.exe
我想问这个PICl.exe是不是C编译执行文件呀?如果不是我该怎么设置?我现在编译的F54芯片.谢谢! 答 1: 似乎是PIC.H中没有16F54的定义引起的……另外也可能是你的PICC9.50装的有问题……
请问你的PICC9.50在哪儿下的?我到现在还没找到哪儿下的可以正常用。 答 2: 啊,不会把我在下面的这个地址下载的
原版下载地址:http://www.htsoft.com/downloads/demos.php
注册文件:
http://mcubbs.com/bbs/viewthread ... amp;extra=#pid14602
附件: htPICc950-crack.rar (2006-8-16 08:46, 326.72 K)
是个破解版,不过听他们说是好用的,
下面是它的INCLUDE文件:没看到54,可是我用716也是这样,晕
#ifndef _PIC_H_
#define _PIC_H_
#ifndef _HTC_H_
#include <htc.h>
#endif
#if defined(_10F200) || defined(_10F202) ||\
defined(_10F204) || defined(_10F206)
#include <PIC10f20x.h>
#endif
#if defined(_10F220) || defined(_10F222)
#include <PIC10f22x.h>
#endif
#if defined(_12C508) || defined(_12C509) ||\
defined(_12F508) || defined(_12F509) ||\
defined(_12C508A) || defined(_12C509A) ||\
defined(_12CE518) || defined(_12CE519) ||\
defined(_12C509AG) || defined(_12C509AF) ||\
defined(_12CR509A) || defined(_RF509AG) ||\
defined(_RF509AF)
#include <PIC125xx.h>
#endif
#if defined(_12F510)
#include <PIC12f510.h>
#endif
#if defined(_16C432) || defined(_16C433)
#include <PIC1643x.h>
#endif
#if defined(_16C52) || defined(_16C54) || defined(_16C54A) ||\
defined(_16C54B) || defined(_16C54C) || defined(_16CR54A) ||\
defined(_16CR54B) || defined(_16CR54C) || defined(_16C55) ||\
defined(_16C55A) || defined(_16C56) || defined(_16C56A) ||\
defined(_16CR56A) || defined(_16C57) || defined(_16C57C) ||\
defined(_16CR57B) || defined(_16CR57C) || defined(_16C58A) ||\
defined(_16C58B) || defined(_16CR58A) || defined(_16CR58B) ||\
defined(_16C58) || defined(_16HV540)
#include <PIC165x.h>
#endif
#if defined(_16F54) || defined(_16F57) || defined(_16F59)
#include <PIC16f5x.h>
#endif
#if defined(_12C671) || defined(_12C672) ||\
defined(_12CE673) || defined(_12CE674)
#include <PIC1267x.h>
#endif
#if defined(_12F629) || defined(_12F675)
#include <PIC12f6x.h>
#endif
#if defined(_12F683)
#include <PIC12f683.h>
#endif
#if defined(_12F675F) || defined(_12F675H) || defined(_12F675K)
#include <PIC12rf675.h>
#endif
#if defined(_16C505) || defined(_16F505)
#include <PIC16505.h>
#endif
#if defined(_16F506)
#include <PIC16f506.h>
#endif
#ifdef _14000
#include <PIC14000.h>
#endif
#if defined(_16C554) || defined(_16C556) || defined(_16C557) || \
defined(_16C558) || defined(_16C554A) || defined(_16C556A) || \
defined(_16C558A)
#include <PIC1655x.h>
#endif
#ifdef _16C61
#include <PIC1661.h>
#endif
#if defined(_16C62) || defined(_16C62A) || defined(_16CR62) ||\
defined(_16C62B)
#include <PIC1662.h>
#endif
#if defined(_16C620) || defined(_16C621) || defined(_16C622) ||\
defined(_16C620A) || defined(_16C621A) || defined(_16C622A) ||\
defined(_16CE623) || defined(_16CE624) || defined(_16CE625) ||\
defined(_16CR620A)
#include <PIC1662x.h>
#endif
#if defined(_16C64) || defined(_16C64A) || defined(_16CR64)
#include <PIC1664.h>
#endif
#if defined(_16C641) || defined(_16C642) ||\
defined(_16C661) || defined(_16C662)
#include <PIC166xx.h>
#endif
#if defined(_16C65) || defined(_16C65A) || defined(_16CR65)
#include <PIC1665.h>
#endif
#if defined(_16C66) || defined(_16C67)
#include <PIC166x.h>
#endif
#if defined(_16C71) || defined(_16C710) || defined(_16C711)
#include <PIC1671x.h>
#endif
#if defined(_16C712) || defined(_16C715) || defined(_16C716)
#include <PIC16715.h>
#endif
#if defined(_16C72) || defined(_16C72A) || defined(_16CR72)
#include <PIC1672.h>
#endif
#if defined(_16C73) || defined(_16C73A) ||\
defined(_16C74) || defined(_16C74A) ||\
defined(_16C63) || defined(_16CR63) || defined(_16C63A) ||\
defined(_16C65B) || defined(_16C73B) || defined(_16C74B) ||\
defined(_16LC74B)
#include <PIC1674.h>
#endif
#if defined(_16C76) || defined(_16C77)
#include <PIC1677.h>
#endif
#if defined(_16C773) || defined(_16C774) || defined(_16C770) ||\
defined(_16C771) || defined(_16C717) || defined(_16C745) ||\
defined(_16C765)
#include <PIC1677x.h>
#endif
#if defined(_16C781) || defined(_16C782)
#include <PIC1678x.h>
#endif
#if defined(_16F627) || defined(_16F628)
#include <PIC16f6x.h>
#endif
#if defined(_16F627A) || defined(_16F628A) || defined(_16F648A)
#include <PIC16f62xa.h>
#endif
#if defined(_16F630) || defined(_16F676)
#include <PIC16630.h>
#endif
#if defined(_12F635) || defined(_16F636) || defined(_16F639)
#include <PIC16f636.h>
#endif
#if defined(_16F684)
#include <PIC16f684.h>
#endif
#if defined(_16F685) || defined(_16F687) || defined(_16F689) ||\
defined(_16F690)
#include <PIC16f685.h>
#endif
#if defined(_16F688)
#include <PIC16f688.h>
#endif
#if defined(_16F83) || defined(_16CR83) || defined(_16C84) || \
defined(_16F84) || defined(_16F84A) || defined(_16CR84)
#include <PIC1684.h>
#endif
#if defined(_16F87) || defined(_16F88)
#include <PIC16f87.h>
#endif
#if defined(_16F873) || defined(_16F874) ||\
defined(_16F876) || defined(_16F877) ||\
defined(_16F872) || defined(_16F871) ||\
defined(_16F870)
#include <PIC1687x.h>
#endif
#if defined(_16F873A) || defined(_16F874A) ||\
defined(_16F876A) || defined(_16F877A)
#include <PIC168xa.h>
#endif
#if defined(_16F72) ||\
defined(_16F73) || defined(_16F74) ||\
defined(_16F76) || defined(_16F77)
#include <PIC16f7x.h>
#endif
#if defined(_16F716)
#include <PIC16f716.h>
#endif
#if defined(_16F785)
#include <PIC16f785.h>
#endif
#if defined(_16F737) || defined(_16F747) ||\
defined(_16F767) || defined(_16F777)
#include <PIC16f7x7.h>
#endif
#if defined(_16F818) || defined(_16F819)
#include <PIC16f81x.h>
#endif
#if defined(_16C923) || defined(_16C924) ||\
defined(_16C925) || defined(_16C926)
#include <PIC169xx.h>
#endif
#if defined(_16F913) || defined(_16F914) ||\
defined(_16F916) || defined(_16F917)
#include <PIC16f91x.h>
#endif
#if defined(_16F946)
#include <PIC16f946.h>
#endif
#if defined(_7C695X)
#include <PIC7695x.h>
#endif
#if defined(_16C99) || defined (_16C99C)
#include <PIC1699.h>
#endif
#if defined(_17C42) || defined(_17C42A) || defined(_17CR42) ||\
defined(_17C43) || defined(_17CR43) || defined(_17C44)
#include <PIC174x.h>
#endif
#if defined(_17C752) || defined(_17C756) || defined(_17C756A) ||\
defined(_17C762) || defined(_17C766)
#include <PIC177xx.h>
#endif
#define CLRWDT() asm("clrwdt")
#define SLEEP() asm("sleep")
#define NOP() asm("nop")
#define __CONFIG(x) asm("\tpsect config,class=CONFIG,delta=2");\
asm("\tdw "___mkstr(x))
#define __IDLOC(w) asm("\tpsect idloc,class=IDLOC,delta=2");\
asm("\tglobal\tidloc_word"); \
asm("idloc_word"); \
asm("\tirpc\t__arg," ___mkstr(w)); \
asm("\tdw 0&__arg&h"); \
asm("\tendm")
#if EEPROM_SIZE > 0
#define __EEPROM_DATA(a, b, c, d, e, f, g, h) \
asm("\tpsect eeprom_data,class=EEDATA,delta=2,space=2"); \
asm("\tdb\t" ___mkstr(a) "," ___mkstr(b) "," ___mkstr(c) "," ___mkstr(d) "," \
___mkstr(e) "," ___mkstr(f) "," ___mkstr(g) "," ___mkstr(h))
#endif
/***********************************************************************
**** FLASH memory read/write/erase macros and function definitions ****
***********************************************************************
* Notes:
* __FLASHTYPE == 0 defined in devices that CAN only read flash memory - CANnot write eg. 16F777
* __FLASHTYPE == 1 defined in traditional devices that CAN write 1 word at a time eg. 16F877
* __FLASHTYPE == 2 defined in devices that CAN only write in 4 word blocks eg. 16F877A
* __FLASHTYPE == 3 defined in devices requiring 32-word block erasure before writing eg. 16F87
* __FLASHTYPE == undefined if device CAN neither read nor write program memory
*/
// macro FLASH_READ returns a word stored at a flash address
#if defined(__FLASHTYPE)
extern unsigned int flash_read(unsigned short addr);
#if EEPROM_SIZE > 0
#define FLASH_READ(addr) \
(EEADR=(addr)&0xff, \
EEADRH=(addr)>>8, \
WREN=0, \
EECON1 |= 0x80, \
RD=1, \
DC=0, \
DC=0, \
(EEDATH << 8) | EEDATA)
#else // FLASH_READ without EEPROM
#define FLASH_READ(addr) \
(EEADR=(addr)&0xff, \
EEADRH=(addr)>>8, \
RD=1, \
DC=0, \
DC=0, \
(EEDATH << 8) | EEDATA)
#endif
#endif // end FLASH_READ
// macro FLASH_WRITE used when writing only one word of data
#if __FLASHTYPE==2 || __FLASHTYPE==3
#define FLASH_WRITE(addr,data) \
do{ \
unsigned short x=data; \
flash_copy((const unsigned char *)&x,1,addr); \
}while(0)
extern void flash_copy(const unsigned char * source_addr,unsigned char length,unsigned short dest_addr);
#elif __FLASHTYPE==1
#define FLASH_WRITE(addr, value) \
EEADR=((addr)&0xff); \
EEADRH=((addr)>>8); \
EEDATH=((value)>>8); \
EEDATA=((value)&0xff); \
EECON1 |= 0x80; \
WREN=1; \
EECON2 = 0x55; \
EECON2 = 0xaa; \
WR=1; \
asm("nop"); \
asm("nop"); \
WREN=0
#endif // end FLASH_WRITE
// macro FLASH_ERASE used to clear a 32-Byte sector of flash
#if __FLASHTYPE==3
#define FLASH_ERASE(addr) \
while(WR)continue; \
EEADR=((addr)&0xFF); \
EEADRH=((addr>>8)&0xFF); \
EECON1=0x94; \
CARRY=0;if(GIE)CARRY=1;GIE=0;\
EECON2=0x55;EECON2=0xAA;WR=1; \
asm("\tNOP"); \
if(CARRY)GIE=1
// library function version
extern void flash_erase(unsigned short addr);
#endif // end FLASH_ERASE
/***********************************************************************/
/****** EEPROM memory read/write macros and function definitions *******/
/***********************************************************************/
/* NOTE WELL:
The macro EEPROM_READ() is NOT safe to use immediately after any
write to EEPROM, as it does NOT wait for WR to clear. This is by
design, to allow minimal code size if a sequence of reads is
desired. To guarantee uncorrupted writes, use the function
eeprom_read() or insert
while(WR)continue;
before calling EEPROM_READ().
*/
#if EEPROM_SIZE > 0
#ifdef __FLASHTYPE
// macro versions of EEPROM write and read
#define EEPROM_WRITE(addr, value) \
do{ \
while(WR)continue;EEADR=(addr);EEDATA=(value); \
EECON1&=0x7F;CARRY=0;if(GIE)CARRY=1;GIE=0; \
WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
if(CARRY)GIE=1; \
}while(0)
#define EEPROM_READ(addr) ((EEADR=(addr)),(EECON1&=0x7F),(RD=1),EEDATA)
#else // else doesn't write flash
#define EEPROM_WRITE(addr, value) \
do{ \
while(WR)continue;EEADR=(addr);EEDATA=(value); \
CARRY=0;if(GIE)CARRY=1;GIE=0; \
WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
if(CARRY)GIE=1; \
}while(0)
#define EEPROM_READ(addr) ((EEADR=(addr)),(RD=1),EEDATA)
#endif
/* library function versions */
extern void eeprom_write(unsigned char addr, unsigned char value);
extern unsigned char eeprom_read(unsigned char addr);
#endif // end EEPROM routines
/****************************************************************/
/****** Global interrupt enable/disable macro definitions *******/
/****************************************************************/
#ifdef _PIC16
#ifndef ei
#define ei() (GLINTD = 0) // interrupt disable bit
#endif
#if defined(_17C42)
#ifndef di
#define di() { do { GLINTD = 1; } while ( GLINTD == 0 ); } // disable interrupt bit
#endif
#else
#ifndef di
#define di() (GLINTD = 1) // interrupt disable bit
#endif
#endif
#elif defined _PIC14
#ifndef ei
#define ei() (GIE = 1) // interrupt enable bit
#endif
#if defined(_14000) || defined(_16C61) || defined(_16C62) ||\
defined(_16C63) || defined(_16C63A) || defined(_16C64) ||\
defined(_16C65) || defined(_16C65B) || defined(_16C71) ||\
defined(_16C73) || defined(_16C73B) || defined(_16C74) ||\
defined(_16C74B) || defined(_16C84) || defined(_16C745) ||\
defined(_16C765) || defined(_16LC74B)
#ifndef di
#define di() { do { GIE = 0; } while ( GIE == 1 ); } // disable interrupt bit
#endif
#else
#ifndef di
#define di() (GIE = 0) // interrupt enable bit
#endif
#endif
#endif
#endif /* _PIC_H */ 答 3: 晚上回家下…… 答 4: 你装的是Lite版C:\Program Files\HI-TECH Software\PICC-Lite\9.50\
Lite本来就是免费的,只支持几个型号,有代码大小限制。你破解了它也只是支持那几个型号而已。
答 5: %……看来我不用下了…… 答 6: 呵呵..... 答 7: martin :那请问哪里可以下载没有大小和功能限制的9.50?martin :那请问哪里可以下载没有大小和功能限制的9.50?谢谢~! 答 8: 我没下过,不清楚哪里有可以用的坛子里的朋友们,知道的帮帮FZJ吧
我对应的编译文件路径如下:C:\Program Files\HI-TECH Software\PICC-Lite\9.50\bin\PICl.exe
我想问这个PICl.exe是不是C编译执行文件呀?如果不是我该怎么设置?我现在编译的F54芯片.谢谢! 答 1: 似乎是PIC.H中没有16F54的定义引起的……另外也可能是你的PICC9.50装的有问题……
请问你的PICC9.50在哪儿下的?我到现在还没找到哪儿下的可以正常用。 答 2: 啊,不会把我在下面的这个地址下载的
原版下载地址:http://www.htsoft.com/downloads/demos.php
注册文件:
http://mcubbs.com/bbs/viewthread ... amp;extra=#pid14602
附件: htPICc950-crack.rar (2006-8-16 08:46, 326.72 K)
是个破解版,不过听他们说是好用的,
下面是它的INCLUDE文件:没看到54,可是我用716也是这样,晕
#ifndef _PIC_H_
#define _PIC_H_
#ifndef _HTC_H_
#include <htc.h>
#endif
#if defined(_10F200) || defined(_10F202) ||\
defined(_10F204) || defined(_10F206)
#include <PIC10f20x.h>
#endif
#if defined(_10F220) || defined(_10F222)
#include <PIC10f22x.h>
#endif
#if defined(_12C508) || defined(_12C509) ||\
defined(_12F508) || defined(_12F509) ||\
defined(_12C508A) || defined(_12C509A) ||\
defined(_12CE518) || defined(_12CE519) ||\
defined(_12C509AG) || defined(_12C509AF) ||\
defined(_12CR509A) || defined(_RF509AG) ||\
defined(_RF509AF)
#include <PIC125xx.h>
#endif
#if defined(_12F510)
#include <PIC12f510.h>
#endif
#if defined(_16C432) || defined(_16C433)
#include <PIC1643x.h>
#endif
#if defined(_16C52) || defined(_16C54) || defined(_16C54A) ||\
defined(_16C54B) || defined(_16C54C) || defined(_16CR54A) ||\
defined(_16CR54B) || defined(_16CR54C) || defined(_16C55) ||\
defined(_16C55A) || defined(_16C56) || defined(_16C56A) ||\
defined(_16CR56A) || defined(_16C57) || defined(_16C57C) ||\
defined(_16CR57B) || defined(_16CR57C) || defined(_16C58A) ||\
defined(_16C58B) || defined(_16CR58A) || defined(_16CR58B) ||\
defined(_16C58) || defined(_16HV540)
#include <PIC165x.h>
#endif
#if defined(_16F54) || defined(_16F57) || defined(_16F59)
#include <PIC16f5x.h>
#endif
#if defined(_12C671) || defined(_12C672) ||\
defined(_12CE673) || defined(_12CE674)
#include <PIC1267x.h>
#endif
#if defined(_12F629) || defined(_12F675)
#include <PIC12f6x.h>
#endif
#if defined(_12F683)
#include <PIC12f683.h>
#endif
#if defined(_12F675F) || defined(_12F675H) || defined(_12F675K)
#include <PIC12rf675.h>
#endif
#if defined(_16C505) || defined(_16F505)
#include <PIC16505.h>
#endif
#if defined(_16F506)
#include <PIC16f506.h>
#endif
#ifdef _14000
#include <PIC14000.h>
#endif
#if defined(_16C554) || defined(_16C556) || defined(_16C557) || \
defined(_16C558) || defined(_16C554A) || defined(_16C556A) || \
defined(_16C558A)
#include <PIC1655x.h>
#endif
#ifdef _16C61
#include <PIC1661.h>
#endif
#if defined(_16C62) || defined(_16C62A) || defined(_16CR62) ||\
defined(_16C62B)
#include <PIC1662.h>
#endif
#if defined(_16C620) || defined(_16C621) || defined(_16C622) ||\
defined(_16C620A) || defined(_16C621A) || defined(_16C622A) ||\
defined(_16CE623) || defined(_16CE624) || defined(_16CE625) ||\
defined(_16CR620A)
#include <PIC1662x.h>
#endif
#if defined(_16C64) || defined(_16C64A) || defined(_16CR64)
#include <PIC1664.h>
#endif
#if defined(_16C641) || defined(_16C642) ||\
defined(_16C661) || defined(_16C662)
#include <PIC166xx.h>
#endif
#if defined(_16C65) || defined(_16C65A) || defined(_16CR65)
#include <PIC1665.h>
#endif
#if defined(_16C66) || defined(_16C67)
#include <PIC166x.h>
#endif
#if defined(_16C71) || defined(_16C710) || defined(_16C711)
#include <PIC1671x.h>
#endif
#if defined(_16C712) || defined(_16C715) || defined(_16C716)
#include <PIC16715.h>
#endif
#if defined(_16C72) || defined(_16C72A) || defined(_16CR72)
#include <PIC1672.h>
#endif
#if defined(_16C73) || defined(_16C73A) ||\
defined(_16C74) || defined(_16C74A) ||\
defined(_16C63) || defined(_16CR63) || defined(_16C63A) ||\
defined(_16C65B) || defined(_16C73B) || defined(_16C74B) ||\
defined(_16LC74B)
#include <PIC1674.h>
#endif
#if defined(_16C76) || defined(_16C77)
#include <PIC1677.h>
#endif
#if defined(_16C773) || defined(_16C774) || defined(_16C770) ||\
defined(_16C771) || defined(_16C717) || defined(_16C745) ||\
defined(_16C765)
#include <PIC1677x.h>
#endif
#if defined(_16C781) || defined(_16C782)
#include <PIC1678x.h>
#endif
#if defined(_16F627) || defined(_16F628)
#include <PIC16f6x.h>
#endif
#if defined(_16F627A) || defined(_16F628A) || defined(_16F648A)
#include <PIC16f62xa.h>
#endif
#if defined(_16F630) || defined(_16F676)
#include <PIC16630.h>
#endif
#if defined(_12F635) || defined(_16F636) || defined(_16F639)
#include <PIC16f636.h>
#endif
#if defined(_16F684)
#include <PIC16f684.h>
#endif
#if defined(_16F685) || defined(_16F687) || defined(_16F689) ||\
defined(_16F690)
#include <PIC16f685.h>
#endif
#if defined(_16F688)
#include <PIC16f688.h>
#endif
#if defined(_16F83) || defined(_16CR83) || defined(_16C84) || \
defined(_16F84) || defined(_16F84A) || defined(_16CR84)
#include <PIC1684.h>
#endif
#if defined(_16F87) || defined(_16F88)
#include <PIC16f87.h>
#endif
#if defined(_16F873) || defined(_16F874) ||\
defined(_16F876) || defined(_16F877) ||\
defined(_16F872) || defined(_16F871) ||\
defined(_16F870)
#include <PIC1687x.h>
#endif
#if defined(_16F873A) || defined(_16F874A) ||\
defined(_16F876A) || defined(_16F877A)
#include <PIC168xa.h>
#endif
#if defined(_16F72) ||\
defined(_16F73) || defined(_16F74) ||\
defined(_16F76) || defined(_16F77)
#include <PIC16f7x.h>
#endif
#if defined(_16F716)
#include <PIC16f716.h>
#endif
#if defined(_16F785)
#include <PIC16f785.h>
#endif
#if defined(_16F737) || defined(_16F747) ||\
defined(_16F767) || defined(_16F777)
#include <PIC16f7x7.h>
#endif
#if defined(_16F818) || defined(_16F819)
#include <PIC16f81x.h>
#endif
#if defined(_16C923) || defined(_16C924) ||\
defined(_16C925) || defined(_16C926)
#include <PIC169xx.h>
#endif
#if defined(_16F913) || defined(_16F914) ||\
defined(_16F916) || defined(_16F917)
#include <PIC16f91x.h>
#endif
#if defined(_16F946)
#include <PIC16f946.h>
#endif
#if defined(_7C695X)
#include <PIC7695x.h>
#endif
#if defined(_16C99) || defined (_16C99C)
#include <PIC1699.h>
#endif
#if defined(_17C42) || defined(_17C42A) || defined(_17CR42) ||\
defined(_17C43) || defined(_17CR43) || defined(_17C44)
#include <PIC174x.h>
#endif
#if defined(_17C752) || defined(_17C756) || defined(_17C756A) ||\
defined(_17C762) || defined(_17C766)
#include <PIC177xx.h>
#endif
#define CLRWDT() asm("clrwdt")
#define SLEEP() asm("sleep")
#define NOP() asm("nop")
#define __CONFIG(x) asm("\tpsect config,class=CONFIG,delta=2");\
asm("\tdw "___mkstr(x))
#define __IDLOC(w) asm("\tpsect idloc,class=IDLOC,delta=2");\
asm("\tglobal\tidloc_word"); \
asm("idloc_word"); \
asm("\tirpc\t__arg," ___mkstr(w)); \
asm("\tdw 0&__arg&h"); \
asm("\tendm")
#if EEPROM_SIZE > 0
#define __EEPROM_DATA(a, b, c, d, e, f, g, h) \
asm("\tpsect eeprom_data,class=EEDATA,delta=2,space=2"); \
asm("\tdb\t" ___mkstr(a) "," ___mkstr(b) "," ___mkstr(c) "," ___mkstr(d) "," \
___mkstr(e) "," ___mkstr(f) "," ___mkstr(g) "," ___mkstr(h))
#endif
/***********************************************************************
**** FLASH memory read/write/erase macros and function definitions ****
***********************************************************************
* Notes:
* __FLASHTYPE == 0 defined in devices that CAN only read flash memory - CANnot write eg. 16F777
* __FLASHTYPE == 1 defined in traditional devices that CAN write 1 word at a time eg. 16F877
* __FLASHTYPE == 2 defined in devices that CAN only write in 4 word blocks eg. 16F877A
* __FLASHTYPE == 3 defined in devices requiring 32-word block erasure before writing eg. 16F87
* __FLASHTYPE == undefined if device CAN neither read nor write program memory
*/
// macro FLASH_READ returns a word stored at a flash address
#if defined(__FLASHTYPE)
extern unsigned int flash_read(unsigned short addr);
#if EEPROM_SIZE > 0
#define FLASH_READ(addr) \
(EEADR=(addr)&0xff, \
EEADRH=(addr)>>8, \
WREN=0, \
EECON1 |= 0x80, \
RD=1, \
DC=0, \
DC=0, \
(EEDATH << 8) | EEDATA)
#else // FLASH_READ without EEPROM
#define FLASH_READ(addr) \
(EEADR=(addr)&0xff, \
EEADRH=(addr)>>8, \
RD=1, \
DC=0, \
DC=0, \
(EEDATH << 8) | EEDATA)
#endif
#endif // end FLASH_READ
// macro FLASH_WRITE used when writing only one word of data
#if __FLASHTYPE==2 || __FLASHTYPE==3
#define FLASH_WRITE(addr,data) \
do{ \
unsigned short x=data; \
flash_copy((const unsigned char *)&x,1,addr); \
}while(0)
extern void flash_copy(const unsigned char * source_addr,unsigned char length,unsigned short dest_addr);
#elif __FLASHTYPE==1
#define FLASH_WRITE(addr, value) \
EEADR=((addr)&0xff); \
EEADRH=((addr)>>8); \
EEDATH=((value)>>8); \
EEDATA=((value)&0xff); \
EECON1 |= 0x80; \
WREN=1; \
EECON2 = 0x55; \
EECON2 = 0xaa; \
WR=1; \
asm("nop"); \
asm("nop"); \
WREN=0
#endif // end FLASH_WRITE
// macro FLASH_ERASE used to clear a 32-Byte sector of flash
#if __FLASHTYPE==3
#define FLASH_ERASE(addr) \
while(WR)continue; \
EEADR=((addr)&0xFF); \
EEADRH=((addr>>8)&0xFF); \
EECON1=0x94; \
CARRY=0;if(GIE)CARRY=1;GIE=0;\
EECON2=0x55;EECON2=0xAA;WR=1; \
asm("\tNOP"); \
if(CARRY)GIE=1
// library function version
extern void flash_erase(unsigned short addr);
#endif // end FLASH_ERASE
/***********************************************************************/
/****** EEPROM memory read/write macros and function definitions *******/
/***********************************************************************/
/* NOTE WELL:
The macro EEPROM_READ() is NOT safe to use immediately after any
write to EEPROM, as it does NOT wait for WR to clear. This is by
design, to allow minimal code size if a sequence of reads is
desired. To guarantee uncorrupted writes, use the function
eeprom_read() or insert
while(WR)continue;
before calling EEPROM_READ().
*/
#if EEPROM_SIZE > 0
#ifdef __FLASHTYPE
// macro versions of EEPROM write and read
#define EEPROM_WRITE(addr, value) \
do{ \
while(WR)continue;EEADR=(addr);EEDATA=(value); \
EECON1&=0x7F;CARRY=0;if(GIE)CARRY=1;GIE=0; \
WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
if(CARRY)GIE=1; \
}while(0)
#define EEPROM_READ(addr) ((EEADR=(addr)),(EECON1&=0x7F),(RD=1),EEDATA)
#else // else doesn't write flash
#define EEPROM_WRITE(addr, value) \
do{ \
while(WR)continue;EEADR=(addr);EEDATA=(value); \
CARRY=0;if(GIE)CARRY=1;GIE=0; \
WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
if(CARRY)GIE=1; \
}while(0)
#define EEPROM_READ(addr) ((EEADR=(addr)),(RD=1),EEDATA)
#endif
/* library function versions */
extern void eeprom_write(unsigned char addr, unsigned char value);
extern unsigned char eeprom_read(unsigned char addr);
#endif // end EEPROM routines
/****************************************************************/
/****** Global interrupt enable/disable macro definitions *******/
/****************************************************************/
#ifdef _PIC16
#ifndef ei
#define ei() (GLINTD = 0) // interrupt disable bit
#endif
#if defined(_17C42)
#ifndef di
#define di() { do { GLINTD = 1; } while ( GLINTD == 0 ); } // disable interrupt bit
#endif
#else
#ifndef di
#define di() (GLINTD = 1) // interrupt disable bit
#endif
#endif
#elif defined _PIC14
#ifndef ei
#define ei() (GIE = 1) // interrupt enable bit
#endif
#if defined(_14000) || defined(_16C61) || defined(_16C62) ||\
defined(_16C63) || defined(_16C63A) || defined(_16C64) ||\
defined(_16C65) || defined(_16C65B) || defined(_16C71) ||\
defined(_16C73) || defined(_16C73B) || defined(_16C74) ||\
defined(_16C74B) || defined(_16C84) || defined(_16C745) ||\
defined(_16C765) || defined(_16LC74B)
#ifndef di
#define di() { do { GIE = 0; } while ( GIE == 1 ); } // disable interrupt bit
#endif
#else
#ifndef di
#define di() (GIE = 0) // interrupt enable bit
#endif
#endif
#endif
#endif /* _PIC_H */ 答 3: 晚上回家下…… 答 4: 你装的是Lite版C:\Program Files\HI-TECH Software\PICC-Lite\9.50\
Lite本来就是免费的,只支持几个型号,有代码大小限制。你破解了它也只是支持那几个型号而已。
答 5: %……看来我不用下了…… 答 6: 呵呵..... 答 7: martin :那请问哪里可以下载没有大小和功能限制的9.50?martin :那请问哪里可以下载没有大小和功能限制的9.50?谢谢~! 答 8: 我没下过,不清楚哪里有可以用的坛子里的朋友们,知道的帮帮FZJ吧
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |