打印

自制的PIC18Fxxxx系列C编译,请提意见

[复制链接]
楼主: su_mj000
手机看帖
扫描二维码
随时随地手机跟帖
21
ldy216| | 2008-4-18 14:34 | 只看该作者 回帖奖励 |倒序浏览

我也有汇编编译器

理论上支持各种CPU

使用特权

评论回复
22
ldy216| | 2008-4-18 14:47 | 只看该作者

希望与LZ合作

   我也有宏汇编编译器,动态的,可以支持各种IC及指令集.具有自主的数学函数库.
   如果加上你的C及C++
   再加上可视化窗口式的编辑,图形化的系统,直接拖动目标,面象对象的设计方法,应该可以前景无量.
   这样下来就可以做到MCU无关化,使设计工作大大减轻.同时可以进行多种MCU的混合模拟或在系统仿真.很大一部分设计工作可能只需要设置一些菜单就可以了.
   
   目前只是抽不出大量时间来搞.没人支持.

   QQ:184324486

使用特权

评论回复
23
创易| | 2008-4-18 21:48 | 只看该作者

牛人,还有搞C编译器的,佩服

使用特权

评论回复
24
djyos| | 2008-4-20 09:31 | 只看该作者

牛啊

第一次看到搞编译器的,佩服。
我正在做操作系统,快完工了,约18000行代码,跟楼主一样,一个一个字符码的,现在用的是gcc编译器,现在在arm上调试,不知能不能用上楼主的编译器。

使用特权

评论回复
25
sheenhero| | 2008-4-21 16:15 | 只看该作者

强,钱途无限好!!!

使用特权

评论回复
26
qjy_dali| | 2008-4-21 17:52 | 只看该作者

佩服LZ,很早买了两本编译器方面的专著

放在书架上N久了。赞一个!

使用特权

评论回复
27
su_mj000|  楼主 | 2008-4-22 12:46 | 只看该作者

错误订正

发现一个编译上的错误,特此订正。下述代码会导致
标号缺失而出错:

  int n;
  ...
  while ( --n );



https://bbs.21ic.com/upfiles/img/20076/200767124822267.rar

感谢楼上几位朋友的捧场,谢谢!

其实,与目前商场上流行的正规C编译器相比,P18CC无论在功能上还是
质量上还有不少差距。其主要表现在出错报告和预处理功能方面。

另外,编译器虽然很难写,但随着如今编程工具日新月异,计算机速度
和内存容量的不断提高,原来遥不可及的事现在变得可行了。

有兴趣者可以看看《Lex & YACC》一书。当然,对C语言也应该有较深的
理解和掌握。





相关链接:https://bbs.21ic.com/upfiles/img/20076/200767124822267.rar

使用特权

评论回复
28
xiao| | 2008-4-23 09:08 | 只看该作者

顶一个,搬个板凳。

没有编译器就好像计算机没有灵魂了。网页的浏览器,处理电路图的软件,文字处理软件等等。希望楼主**下去。

使用特权

评论回复
29
hzz137| | 2008-4-24 21:23 | 只看该作者

不错!

使用特权

评论回复
30
李忠意| | 2008-4-27 17:10 | 只看该作者

高手,不过下不下来,没法享受

使用特权

评论回复
31
su_mj000|  楼主 | 2008-4-28 02:22 | 只看该作者

如果没法下载,请贴上你的email地址,

我会把文件直接寄给你。谢谢关注!

使用特权

评论回复
32
zuoyou| | 2008-4-28 16:59 | 只看该作者

re

真ding

使用特权

评论回复
33
xieyuanbin| | 2008-4-29 12:00 | 只看该作者

麻烦重新贴一下或发到我信箱

XYB"@"TOM.COM

使用特权

评论回复
34
su_mj000|  楼主 | 2008-4-30 02:04 | 只看该作者

程序文件打包

xieyuanbin先生,我已把程序文件打包后送到了你的
信箱,请查收。

使用特权

评论回复
35
兰天白云| | 2008-5-1 20:05 | 只看该作者

只能帮点小忙

su_mj000 你写,我帮你测试,怎么样?

使用特权

评论回复
36
su_mj000|  楼主 | 2008-5-2 03:26 | 只看该作者

感谢兰天白云的美意

感谢兰天白云的美意!

受众多兄弟们的鼓励,我眼下正在尝试编制PIC16(14位字长指令)的C编译器。
(这也许的花费很长时间)

毋容置疑的是,编制PIC16编译器的难度似乎更大,主要原因是的PIC16
的资源太少,其结构对C语言的支持更差。PIC16的编译器的功能也将受很
大制约(无法实现函数的递归或重入,不能支持函数指针,中断保护限制等)。

纵观市场上众多的MCU、CPU,相比之下,PIC产品(指12~16位字长产品)及其
兼容产品对C的支持最差。这也是为什么GCC久久没有被移植过来的原因!相反,
我以为Motorola的产品在8位机级别对C语言的支持最佳。其指令的效率最高(CISC
缘故),只是它的运行速度较慢。

使用特权

评论回复
37
ldy216| | 2008-5-4 10:50 | 只看该作者

这是我的动态指令编译及仿真库

;    [CHIP STRUCTION LIBARAY  VER=1.0]
[CHIPGROUP]=
    PIC
;--------------------------------------------------------------------------------------------
[DEFAULT]=
    [PIC16F877A]
;--------------------------------------------------------------------------------------------

[PIC16F873A,PIC16F874A,PIC16F876A,PIC16F877A]=

{

;*****************************************
  ADDWF=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C DC Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0700
  }

  ANDWF=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0500
  }

  CLRF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+128 +0X0100
  }

  CLRW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=0X0100
  }

  COMF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0900
  }

  DECF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0300
  }

  DECFSZ =
  {
    SET=[CYCLE=(P(0)=0:2,1),INSTRUCTIONLENGTH=2,STUTAS=]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0B00
    OPT=[P(0)=P(0)-1,IF P(0)=0 THEN  CYCLE=2  ELSE  CYCLE=1]
  }

  INCF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0A00
  }

  INCFSZ =
  {
    SET=[CYCLE=(P(0)=0:2,1),INSTRUCTIONLENGTH=2,STUTAS=]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0F00
    OPT=[ P(0)=P(0)+1,  IF P(0)=0 THEN   CYCLE=2 ELSE  CYCLE=1]
     
  }

  IORWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0400
  }

  MOVF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0800
  }


  MOVWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7F )+128 
  }

  NOP =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0000
  }

  RLF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0D00
  }

  RRF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0C00
  }

  SUBWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C DC Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0200
  }


  SWAPF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0E00
  }

  XORWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 2) *128 +0X0600
  }
;*****************************************
  BCF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 8) *128 +0X1000
  }  
  BSF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 8) *128 +0X1400
  }  
  BTFSC =
  {
    SET=[CYCLE=(PC=PC+1:2,1),INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 8) *128 +0X1800
  }  
  BTFSS =
  {
    SET=[CYCLE=(PC=PC+1:2,1),INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7F )+(P(1) MOD 8) *128 +0X1C00
  }  
;*****************************************
  ADDLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C DC Z]
    ASM=(P(0) AND 0XFF ) +0X3E00
  }  
  ANDLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF ) +0X3900
  }  
  CALL =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7FF ) +0X2000
  }  
  CLRWDT =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =TONOT,PDNOT]
    ASM=0X64
  }  
  GOTO =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7FF ) +0X2800
  }  

  IORLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF ) +0X3800
  }  
  MOVLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF ) +0X3000
  }  

  RETFIE =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0009
  }  
  RETLW =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF ) +0X3400
  }  
  RETURN=
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0008
  }  
  SLEEP=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =TONOT PDNOT]
    ASM=0X0063
  }  
  SUBLW=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C DC Z]
    ASM=(P(0) AND 0XFF ) +0X3C00
  }  
  XORLW=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF )+0X3A00
  }  
}
;--------------------------------------------------------------------------------------------

[PIC12C508,PIC12C508A,PIC12CE518,PIC12C509,PIC12C509A,PIC12CE519,PIC12CR509A]=

{
  ADDWF=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C DC Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X01C0
  }

  ANDWF=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0140
  }

  CLRF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+32 +0X0040
  }

  CLRW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=0X0040
  }

  COMF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X040
  }

  DECF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0C0
  }

  DECFSZ =
  {
    SET=[CYCLE=(P(0)=0:2,1),INSTRUCTIONLENGTH=2,STUTAS=]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X02C0
    OPT=[  P(0)=P(0)-1,  IF P(0)=0 THEN   CYCLE=2  ELSE  CYCLE=1]
     
  }

  INCF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0280
  }

  INCFSZ =
  {
    SET=[CYCLE=(P(0)=0:2,1),INSTRUCTIONLENGTH=2,STUTAS=]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X03C0
    OPT=[P(0)=P(0)-1, IF P(0)=0 THEN CYCLE=2 ELSE CYCLE=1]
     
  }
  IORWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0100
  }

  MOVF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0200
  }


  MOVWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1F )+0X020 
  }

  NOP =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0000
  }

  RLF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0340
  }

  RRF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0200
  }

  SUBWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C DC Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X080
  }


  SWAPF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0280
  }

  XORWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 2) *32 +0X0180
  }
;*****************************************
  BCF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 8) *32 +0X400
  }  
  BSF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 8) *32 +0X500
  }  
  BTFSC =
  {
    SET=[CYCLE=(PC=PC+1:2,1),INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 8) *32 +0X600
  }  
  BTFSS =
  {
    SET=[CYCLE=(PC=PC+1:2,1),INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1F )+(P(1) MOD 8) *32 +0X700
  }  
;*****************************************
  ANDLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF ) +0XE00
  }  
  CALL =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF ) +0X900
  }  
  CLRWDT =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =TONOT,PDNOT]
    ASM=0X04
  }  
  GOTO =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X1FF ) +0XA00
  }  

  IORLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF ) +0X900
  }  
  MOVLW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF ) +0XC00
  }  

  OPTION =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0002
  }  

  RETLW =
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF ) +0X800
  }  
  SLEEP=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =TONOT PDNOT]
    ASM=0X003
  }  
  TRIS=
  {
    SET=[CYCLE=2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=P(0) AND 0X07
  }  

  XORLW=
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF )+0XF00
  }  


}

;--------------------------------------------------------------------------------------------
[PIC16F627,PIC16F628]=

[PIC16F877A]

{
  CLRW =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=0X0103
  }
}


;--------------------------------------------------------------------------------------------

[PIC16C52,PIC16C54,PIC16C55,PIC16C56,PIC16C57,PIC16C58,PIC16C54S,PIC16CR54S,PIC16C55S,PIC16C57S,PIC16CR57S,PIC16C58S,PIC16CR58S]=

[PIC12C508]

;--------------------------------------------------------------------------------------------

[PIC16C63A,PIC16C65B,PIC16C73B,PIC16C74B,PIC16C73A,PIC16C74A]=
[PIC16F877A]

;--------------------------------------------------------------------------------------------

[PIC16C61,PIC16C62,PIC16C62A,PIC16CR62,PIC16C63,PIC16CR63,_>>
PIC16C64,PIC16C64A,PIC16CR64,PIC16C65,PIC16C65A,PIC16CR65,PIC16C66,PIC16C67]=

[PIC16F877A]

;--------------------------------------------------------------------------------------------
[PIC16F72,PIC16F73,PIC16F74,PIC16F76,PIC16F77]=
[PIC16F877A]
;--------------------------------------------------------------------------------------------
[PIC12F629,PIC12F675]=
[PIC16F877A]
;--------------------------------------------------------------------------------------------
[PIC16C505]=
[PIC12C508]

;--------------------------------------------------------------------------------------------
[PIC16F630,PIC16F676]=
[PIC16F877A]

;--------------------------------------------------------------------------------------------
[PIC18F442,PIC18F242,PIC18F452,PIC18F252]=

{
  ADDWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0X200+(P(2) MOD 2)*0X100+0X2400
  }
  ADDWFC =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0X200+(P(2) MOD 2)*0X100+0X2000
  }

  ANDWF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0X200+(P(2) MOD 2)*0X100+0X1400
  }

  CLRF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0X100+0X6500
  }

  COMF =
  {
    SET=[CYCLE=1,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0X200+(P(2) MOD 2)*0x100+0X1C00
  }

  CPFSEQ=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6200
  }

  CPFSGT=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6400
  }

  CPFSLT=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6000
  }

  DECF=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X0400
  }

  DECFSZ=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X2C00
  }

  DECFSNZ=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X4C00
  }
  INCF=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X2200
  }

  INCFSZ=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X3C00
  }

  INCFSNZ=
  {
    SET=[CYCLE=1 or 2 or 3,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X4200
  }

  IORWF=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X1000
  }

  MOVF=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X5000
  }

  MOVFF=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM(0)=(P(0) AND 0XFFF)+0XC000
    ASM(1)=(P(1) AND 0XFFF)+0XF000
  }

  MOVWF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6E00
  }

  MULWF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X0200
  }

  NEGF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6C00
  }

  RLCF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X3400
  }

  RLNCF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X4400
  }

  RRCF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X3000
  }

  RRNCF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X4000
  }

  SETF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6800
  }

  SUBFWB=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X5400
  }


  SUBWF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X5C00
  }

  SUBWFB=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X5800
  }


  SWAPF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X3800
  }



  TSTFSZ=

  {
    SET=[CYCLE=1 OR 2 OR 3 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x100+0X6600
  }


  XORWF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 2)*0x200+(P(2) MOD 2)*0x100+0X1800
  }

;****************************

  BCF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 8)*0x200+(P(2) MOD 2)*0x100+0X9000
  }
  BSF=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 8)*0x200+(P(2) MOD 2)*0x100+0X8000
  }


  BTFSC=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 8)*0x200+(P(2) MOD 2)*0x100+0XB000
  }
  BTFSS=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 8)*0x200+(P(2) MOD 2)*0x100+0XA000
  }

  BTG=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+(P(1) MOD 8)*0x200+(P(2) MOD 2)*0x100+0X7000
  }

  BC=

  {
    SET=[CYCLE=1 OR 2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE200
  }

  BN=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE600
  }

  BNC=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE300
  }
  BNN=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE700
  }


  BNOV=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE500
  }
  BNZ=

  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE100
  }

  BOV=

  {
    SET=[CYCLE=1 OR 2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE400
  }

  BRA=

  {
    SET=[CYCLE=1 OR 2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7FF)+0XD000
  }
  BZ=

  {
    SET=[CYCLE=1 OR 2,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF)+0XE000
  }

  CALL=

  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM(0)=(P(1) MOD 2)*0X100+ (P(0) AND 0XFF) +0XEC00
    ASM(1)= ((P(0)xFF) AND 0XFFF)  +0XF000
  }
  
  CLRWDT=

  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =TONOT ,PDNOT]
    ASM=0X0004
  }

  DAW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C]
    ASM=0X0007
  }

  GOTO=

  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM(0)= (P(0) AND 0XFF)  +0Xef00
    ASM(1)=((P(0)XFF) AND 0XFFF) +0XF000
  }
  NOP=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0000
  }


  POP=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0006
  }
  PUSH=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0005
  }

  RCALL=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X7FF)+0XD800
  }

  RESET=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =ALL]
    ASM=0X00FF
  }
  RETFIE=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =(GIE/GIEH,PEIE/GIEL)]
    ASM=(P(0) MOD 2) +0X0010
  }


  RETLW=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0XFF) +0X0C00
  }
  RETURN=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) MOD 2) +0X0020
  }
  SLEEP=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =TONOT,PDNOT]
    ASM=0X0003
  }

  ADDLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0XFF) +0X0F00
  }
  ANDLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF) +0X0B00
  }
  IORLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0XFF) +0X0900
  }

  LFSR=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(1) AND 0X0F) +(P(0) AND 0X03) *0X0010 +0XEE00
  }

  MOVLB=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X0F) +0X0100
  }
  MOVLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X0FF) +0X0E00
  }
  MULLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X0FF) +0X0D00
  }
  RETLW=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=(P(0) AND 0X0FF) +0X0C00
  }
  SUBLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =C,DC,Z,OV,N]
    ASM=(P(0) AND 0X0FF) +0X0800
  }
  XORLW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=2,STUTAS =Z,N]
    ASM=(P(0) AND 0X0FF) +0X0A00
  }

  TBLRD*=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0008
  }
  TBLRD*+=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X0009
  }
  
  TBLRD*-=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X000A
  }
  TBLRD+*=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X000B
  }

  TBLWT*=
  {
    SET=[CYCLE=2(5) ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X000C
  }

  TBLWT*+=
  {
    SET=[CYCLE=2(5) ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X000D
  }
  TBLWT*-=
  {
    SET=[CYCLE=2(5) ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X000E
  }
  TBLWT+*=
  {
    SET=[CYCLE=2(5) ,INSTRUCTIONLENGTH=2,STUTAS =]
    ASM=0X000F
  }

}



;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    5152
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    ELAN
[DEFAULT]=
    [EM78P153S]
[EM78P153S]=
{
  NOP=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=0X0000
  }
  DAA=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =C]
    OPT=
    ASM=0X0001
  }
  CONTW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=[CONT=A]
    ASM=0X0002
  }
  SLEP=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =T,P]
    OPT=[]
    ASM=0X0003
  }
  WDTC=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =T,P]
    OPT=[]
    ASM=0X0004
  }
  IOW=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =T,P]
    OPT=[IOCR=A]
    ASM=(P(0) AND 0X0F)
  }

  ENI=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=0X0010
  }

  DISI=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=0X0011
  }

  RET=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=0X0012
  }
  RETI=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=0X0013
  }
  CONTR=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=[A=CONT]
    ASM=0X0014
  }
  IOR=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=[=IOCR]
    ASM=(P(0) AND 0X0F)+0X0010
  }
  MOV=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=[=IOCR]
    ASM=
    {
    IF P(1)="A" THEN
      ASM=(P(0) AND 0X3F)+0X0040
      STATUS=
    ELSEIF P(0)="A" THEN
      ASM=(P(1) AND 0X3F)+0X0400
      STATUS=Z
    ELSE
      ASM=(P(0) AND 0X3F)+0X0440
      STATUS=Z
    ENDIF
    }
  }
  CLRA=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =Z]
    OPT=[A=0]
    ASM=0X0080
  }
  CLRR=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =Z]
    OPT=[P(0)=0]
    ASM=(P(0) AND 0X3F)+0X00C0
  }
  SUB=
  {
    SET=[CYCLE=1 ,INSTRUCTIONLENGTH=1,STUTAS =Z,C,DC]
    OPT=
    ASM=
    {
    IF  P(1)="A" THEN
      ASM=(P(0) AND 0X3F)+0X0140
    ELSEIF P(0)="A" THEN
      IF LEFT(P(1),1)="@" THEN
        ASM=(P(0) AND 0XFF)+0X1D00
      ELSE
        ASM=(P(0) AND 0X3F)+0X0100
      ENDIF
    ENDIF
    }
  }


  RETL=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=(P(0) AND 0X0FF)+0X1C00
  }

  CALL=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=
    ASM=(P(0) AND 0X03FF)+0X1000
  }

  JMP=
  {
    SET=[CYCLE=2 ,INSTRUCTIONLENGTH=1,STUTAS =]
    OPT=[PC=P(0)]
    ASM=(P(0) AND 0X03FF)+0X1400
  }
}
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    MOTOROLA
;--------------------------------------------------------------------------------------------

[ENDSTRUCTION]

使用特权

评论回复
38
ldy216| | 2008-5-4 11:30 | 只看该作者

这是关键字格式,也可用于自动识别单片机品种的

;   [CHIP KEYWORD LIBARAY  VER=1.0]
;   支持多公司多单片机种
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    PIC
[Specialkeyword]=   ;特征指令
  BTFSS,BTFSC,MOVF,MOVFF,MOVWF,MOVFW,COMF,CLRW,CLRF,TBLRD,TBLWT,ANDWF,ADDWF,ADDWFC,BSF,BCF,INCF,INCFSZ,DECF,DECFSZ,IORLW,IORWF,OPTION,TRIS,SUBLW,XORLW,ADDLW,RETLW,SUBWF
  
;--------------------------------------------------------------------------------------------
[Pseudoinstruction]=  ;伪指令集
    LIST,TITLE,__CONFIG,ERRORLEVEL,INCLUDE,#INCLUDE
    DEFINE,#DEFINE,EQU,IDATA

    IF,ELSE,ELSEIF,ENDIF
    MACRO,ENDM,LOCAL
    ORG,END
    ChipGroup,ChipName
;--------------------------------------------------------------------------------------------
[COMMON]=             ;公共指令集
    MOVFW , CLRC, SETC, CLRZ, SETZ, SKPC, SKPNC, SKPZ, SKPNZ,PAGESEL,BANKSEL
    DB,DW,DA
    OPTION,TRIS       ;错误使用TRIS与OPTION
    
    [Pseudoinstruction]
;--------------------------------------------------------------------------------------------
[DEFAULT]=            ;默认指令集
    [PIC16F877A]
    OPTION,TRIS

;--------------------------------------------------------------------------------------------
[COMPANY]=
    MICROCHIP
;--------------------------------------------------------------------------------------------
[PIC18F242,PIC18F252,PIC18F442,PIC18F452]=
    ADDWF , ADDWFC, ANDWF, CLRF, COMF, CPFSEQ, CPFSGT, CPFSLT, DECF, DECFSZ, DECFSNZ, INCF, INCFSZ, INCFSNZ, IORWF, MOVF, MOVFF, MOVWF, MULWF, NEGF, RLCF, RLNCF, RRCF, RRNCF, SETF, SUBWF, SUBFWB, SUBWF, SUBWFB, SWAPF, TSTFSZ, XORWF
    BCF,BSF, BTFSC, BTFSS, BTG
    BC,BN,BNC ,BNN,BNOV,BNZ,BOV,BRA,BZ,CALL
    CLRWDT,DAW,GOTO,NOP,POP,PUSH,RCALL,RESET,RETFIE,RETLW,RETURN,SLEEP,ADDLW,ANDLW,IORLW,LFSR,MOVLB,MOVLW,MULLW,RETLW,SUBLW,XORLW
    TBLRD , TBLWT

    TBLRD*,TBLRD*+,TBLRD*-, TBLRD+*
    TBLWT*,TBLWT*+,TBLWT*-, TBLWT+*

[PIC17C752,PIC17C756A,PIC17C762,PIC17C766]=
    ADDWF , ADDWFC, ANDWF, CLRF, COMF, CPFSEQ, CPFSGT, CPFSLT, DAW, DECF, DECFSZ, DECFSNZ, INCF, INCFSZ, INCFSNZ, IORWF, MOVFP, MOVPF, MOVWF, MULWF, NEGW, NOP, RLCF, RLNCF, RRCF, RRNCF, SETF, SUBWF, SUBWFB, SWAPF, TABLRD, TLRD, TLWT, TSTFSZ, XORWF
    BCF,BSF, BTFSC, BTFSS
    ADDLW,ANDLW,CALL,CLRWDT,GOTO,IORLW,LCALL,MOVLB,MOVLR,MOVLW,MULLW,RETFIE,RETLW,RETURN,SLEEP,SUBLW,XORLW
[PIC16F873A,PIC16F874A,PIC16F876A,PIC16F877,PIC16F877A]=
    ADDWF , ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF
    BCF,BSF, BTFSC, BTFSS
    ADDLW,ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,RETFIE,RETLW,RETURN,SLEEP,SUBLW,XORLW
[PIC16F72,PIC16F73,PIC16F74,PIC16F76,PIC16F77]=
    [PIC16F877A]
[PIC16C52,PIC16C54,PIC16C55,PIC16C56,PIC16C57,PIC16C58,PIC16C54S,PIC16CR54S,PIC16C55S,PIC16C56S,PIC16CR56S,PIC16C57S,PIC16CR57S,PIC16C58S,PIC16CR58S]=
    ADDWF,ANDWF,CLRF,CLRW,COMF,DECF,DECFSZ,INCF,INCFSZ,IORWF,MOVF,MOVWF,NOP,RLF,RRF,SUBWF,SWAPF,XORWF
    BCF,BSF, BTFSC, BTFSS
    ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,OPTION ,RETLW,SLEEP,TRIS,XORLW
[PIC16C505]=
    ADDWF , ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF
    BCF,BSF, BTFSC, BTFSS
    ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,OPTION ,RETLW,SLEEP,TRIS,XORLW
[PIC16F627,PIC16F628]=
    ADDWF , ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF
    BCF,BSF, BTFSC, BTFSS
    ADDLW,ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,RETFIE,RETLW,RETURN,SLEEP,SUBLW,XORLW
[PIC12C508,PIC12C508A,PIC12CE518,PIC12C509,PIC12C509A,PIC12CE519,PIC12CR509A]=
    ADDWF,ANDWF,CLRF,CLRW,COMF,DECF,DECFSZ,INCF,INCFSZ,IORWF,MOVF,MOVWF,NOP,RLF,RRF,SUBWF,SWAPF,XORWF
    BCF,BSF, BTFSC, BTFSS
    ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,OPTION ,RETLW,SLEEP,TRIS,XORLW
[PIC12F629,PIC12F675]=
    ADDWF , ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF
    BCF,BSF, BTFSC ,BTFSS
    ADDLW,ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,RETFIE,RETLW,RETURN,SLEEP,SUBLW,XORLW
[PIC16F630,PIC16F676]=
    ADDWF , ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF
    BCF,BSF, BTFSC ,BTFSS
    ADDLW,ANDLW,CALL,CLRWDT,GOTO,IORLW,MOVLW,RETFIE,RETLW,RETURN,SLEEP,SUBLW,XORLW
[PIC16C61,PIC16C62,PIC16C62A,PIC16CR62,PIC16C63,PIC16CR63,PIC16C64,_>>
 PIC16C64A,PIC16CR64,PIC16C65,PIC16C65A,PIC16CR65,PIC16C66,PIC16C67]=
    [PIC16F877A]
[PIC16C63A,PIC16C65B,PIC16C73A,PIC16C73B,PIC16C74A,PIC16C74B]=
    [PIC16F877A]

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    5152
[Specialkeyword]=   ;特征指令
    AJMP,SJMP,LJMP,DJNZ,JB,JC,JNB,JNC,JZ,SETB,SUBB
[Pseudoinstruction]=  ;伪指令集
    EQU,DEFINE,#DEFINE,INCLUDE,#INCLUDE
    IDATA,XDATA
    MACRO,ENDM,LOCAL
    IF,ELSE,ELSEIF,ENDIF
    ORG,END
    ChipGroup,ChipName
[Common]=
    [Pseudoinstruction]

;--------------------------------------------------------------------------------------------
[COMPANY]=
    ATMEL
[AT89C51,AT89C52,89C2051,89C1051]
    MOV,MOVX,DJNZ,JB,JNB,JC,JNC,JZ,JNZ,LJMP,AJMP,CPL,CLR,SETB,CJNE
    MUL,DIV,JMP,LJMP,SJMP,CALL,LCALL,DB,DW
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    ELAN
[Specialkeyword]=   ;特征指令
    CONTW,SLEP,WDTC,IOW,ENI,DISI,CONTR,IOR,CLRA,SUB,DECA,DEC,OR,AND,XOR,ADD,COMA,COM,INCA,INC,DJZA,DJZ,RRCA ,RLCA, SWAPA,JZA,BC, BS, JBC, JBS,RETL,INT
[Pseudoinstruction]=  ;伪指令集
    EQU,DEFINE,#DEFINE,INCLUDE,#INCLUDE
    MACRO,ENDM,LOCAL
    IF,ELSE,ELSEIF,ENDIF
    ORG,END
    ChipGroup,ChipName
[Common]=
    [Pseudoinstruction]
[DEFAULT]=
    [EM78P153S]
[COMPANY]=
    ELAN

[EM78P153S]=
    NOP,DAA,CONTW,SLEP,WDTC,IOW,ENI,DISI,RET,RETI,CONTR,IOR,MOV,CLRA,CLR
    SUB,DECA,DEC,OR,AND,XOR,ADD,COMA,COM,INCA,INC,DJZA,DJZ
    RRCA,RRC,RLCA,RLC,SWAPA,SWAP,JZA,JZ,BC,BS,JBC,JBS
    CALL,JMP,RETL,INT

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    MOTOROLA
;--------------------------------------------------------------------------------------------

[ENDKEYWORD]


使用特权

评论回复
39
ldy216| | 2008-5-4 11:31 | 只看该作者

一些简单的IC资料说明格式

;BANK AND PAGE DEFINE

[CHIPGROUP]=
    PIC
[DEFAULT]=
    [PIC16F877A]

;##############
;-------------------------------------------------------------------------------------------
[PIC12C508,PIC12C508A,PIC12CE518]=

{
[CONFIG]=

}

{
[PROGRAM MEMORY]=

PAGECOUNT=1
PAGESIZE=0200H
PAGE(0)=[0000H,01FFH]

}

{
[DATA MEMORY]=

BANKCOUNT=1
BANKSIZE=0X20
BANK(0)=[07H,0FH],[10H,1FH]


}


;-------------------------------------------------------------------------------------------
[PIC12C509,PIC12C509A,PIC12CR509A,PIC12CE519]=

{
[CONFIG]=

}

{
[PROGRAM MEMORY]=

PAGECOUNT=2
PAGESIZE=0200H


}

{
[DATA MEMORY]=

BANKCOUNT=2
BANKSIZE=0X20
BANK(0)=[07H,0FH],[10H,1FH]
BANK(1)=[30H,3FH]

}
;##############
;-------------------------------------------------------------------------------------------

[PIC16F627]=

{
[CONFIG]=
}

{
[PROGRAM MEMORY]=
PAGECOUNT=1
PAGESIZE=0400H

}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[20H,7FH]
BANK(1)=[A0H,EFH]
BANK(2)=[120H,14FH]
}
;-------------------------------------------------------------------------------------------

[PIC16F628]=

{
[PROGRAM MEMORY]=
PAGECOUNT=1
PAGESIZE=0800H

}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[20H,7FH]
BANK(1)=[A0H,EFH]
BANK(2)=[120H,14FH]
}
;##############
;-------------------------------------------------------------------------------------------
[PIC16C52]=

{
[PROGRAM MEMORY]=
STACKLEVEL=2
PAGECOUNT=1
PAGESIZE=0180H
PAGE(0)=[0000H,017FH]
RESET=17FH
}
;-------------------------------------------------------------------------------------------
[PIC16C54,PIC16C55,PIC16C54S,PIC16CR54S,PIC16C55S]=

{
[PROGRAM MEMORY]=
STACKLEVEL=2
PAGECOUNT=1
PAGESIZE=0180H
VECTOR_RESET=1FFH
}
[PIC16C56,PIC16C56S,PIC16CR56S]=

{
[PROGRAM MEMORY]=
STACKLEVEL=2
PAGECOUNT=2
PAGESIZE=0200H
VECTOR_RESET=3FFH
}

[PIC16C57,PIC16C58,PIC16C57S,PIC16CR57S,PIC16C58S,PIC16CR58S]=

{
[PROGRAM MEMORY]=
STACKLEVEL=2
PAGECOUNT=4
PAGESIZE=0200H

RESET=7FFH
}


[PIC16C52,PIC16C54,PIC16C55,PIC16C56,PIC16C54S,PIC16CR54S,PIC16C55S,PIC16C56S,PIC16CR56S]=

{
[DATA MEMORY]=
BANKCOUNT=1
BANKSIZE=020H
BANK(0)=[08H,1FH]
}

[PIC16C57,PIC16C57S,PIC16CR57S]=

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=020H
BANK(0)=[08H,1FH]
BANK(1)=[30H,3FH]
BANK(2)=[50H,5FH]
BANK(1)=[70H,7FH]
}

[PIC16C58,PIC16C58S,PIC16CR58S]=

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=020H
BANK(0)=[08H,1FH]
BANK(1)=[30H,3FH]
BANK(2)=[50H,5FH]
BANK(1)=[70H,7FH]
}

;##############
;-------------------------------------------------------------------------------------------
[PIC16F873A,PIC16F874A]=

{
[CONFIG]=

}

{
[PROGRAM MEMORY]=
PAGECOUNT=2
PAGESIZE=0800H

}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[20H,7FH]
BANK(1)=[A0H,FFH]

}
;-------------------------------------------------------------------------------------------

[PIC16F876A,PIC16F877A]=

{
[CONFIG]=

}

{
[PROGRAM MEMORY]=
PAGECOUNT=4
PAGESIZE=0800H
VECTOR_RESET=0000H
VECTOR_INT=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[20H,7FH]
BANK(1)=[A0H,EFH]
BANK(2)=[120H,16FH]
BANK(3)=[1A0H,1EFH]
}

;##############
;-------------------------------------------------------------------------------------------


[PIC18F442,PIC18F242]=

{
[PROGRAM MEMORY]=
STACKLEVEL=32
PAGECOUNT=1
PAGESIZE=4000H
PAGE(0)=[0000H,3FFFH]
VECTOR_HPINT=0008
VECTOR_LPINT=0018
VECTOR_RESET=0000H
}
;-------------------------------------------------------------------------------------------

[PIC18F452,PIC18F252]=

{
[PROGRAM MEMORY]=
STACKLEVEL=32
PAGECOUNT=1
PAGESIZE=8000H

VECTOR_HPINT=0008
VECTOR_LPINT=0018
VECTOR_RESET=0000H
}

{
[DATA MEMORY]=
BANKCOUNT=16
BANKSIZE=100H
BANK(0)=[000H,0FFH]
BANK(1)=[100H,1FFH]
BANK(2)=[200H,2FFH]
BANK(3)=[300H,3FFH]
BANK(4)=[400H,4FFH]
BANK(5)=[500H,5FFH]
SPR=[0F80H_0FFFH]
}
;##############
;-------------------------------------------------------------------------------------------
[PIC18F442,PIC18F242]=
{

[DATA MEMORY]=
BANKCOUNT=16
BANKSIZE=100H
BANK(0)=[000H,0FFH]
BANK(1)=[100H,1FFH]
BANK(2)=[200H,2FFH]
SPR=[0F80H,0FFFH]
}

;##############
;-------------------------------------------------------------------------------------------

[PIC16C63A,PIC16C65B,PIC16C73B,PIC16C74B,PIC16C73A,PIC16C74A]=

{
[CONFIG]=

}

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=2
PAGESIZE=0800H

VECTOR_RESET=0000H
VECTOR_INT=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=2
BANKSIZE=0X080
BANK(0)=[20H,7FH]
BANK(1)=[A0H,FFH]
}

;##############
;-------------------------------------------------------------------------------------------
[PIC16C61]=
{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=1
PAGESIZE=0X0400
VECTOR_RESET=0000H
VECTOR_INT=0004H
}
;-------------------------------------------------------------------------------------------
[PIC16C62,PIC16C62A,PIC16CR62,PIC16C64,PIC16C64A,PIC16CR64]=

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=1
PAGESIZE=0X0800
VECTOR_RESET=0000H
VECTOR_INT=0004H
}
;-------------------------------------------------------------------------------------------
[PIC16C63,PIC16CR63,PIC16C65,PIC16C65A,PIC16CR65]=

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=2
PAGESIZE=0X0800
VECTOR_RESET=0000H
VECTOR_INT=0004H
}

;-------------------------------------------------------------------------------------------
[PIC16C66,PIC16C67]=

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=4
PAGESIZE=0X0800
VECTOR_RESET=0000H
VECTOR_INT=0004H
}
;-------------------------------------------------------------------------------------------

[PIC16C61]=
{
[DATA MEMORY]=
BANKCOUNT=2
BANKSIZE=0X080
BANK(0)=[00CH,02FH]
SPR=[00H_0BH],[0=INDF,01H=TMR0,02H=PCL,03H=STATUS,04H=FSR,_>>
    05H=PORTA,06H=PORTB,0AH=PCLATH,0BH=INTCON]

}
;-------------------------------------------------------------------------------------------

[PIC16C62,PIC16C62A,PIC16CR62,PIC16C64,PIC16C64A,PIC16CR64]=
{
[DATA MEMORY]=
BANKCOUNT=2
BANKSIZE=0X080
BANK(0)=[020H,07FH]
BANK(1)=[0A0H,0BFH]

}
;-------------------------------------------------------------------------------------------

[PIC16C63,PIC16CR63,PIC16C65,PIC16C65A,PIC16CR65]=
{
[DATA MEMORY]=
BANKCOUNT=2
BANKSIZE=0X080
BANK(0)=[020H,07FH]
BANK(1)=[0A0H,0FFH]

}
[PIC16C66,PIC16C67]=
{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[020H,07FH]
BANK(1)=[0A0H,0EFH]
BANK(3)=[0120H,016FH]
BANK(2)=[01A0H,01EFH]
}



;##############
;-------------------------------------------------------------------------------------------
[PIC16F72]=
{
[CONFIG]=
}

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=1
PAGESIZE=0800H

VECTOR_RESET=0000H
VECTOR_INT=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[020H,07FH]
BANK(1)=[0A0H,0BFH]
}

;-------------------------------------------------------------------------------------------
[PIC16F73,PIC16F74]=

{
[CONFIG]=

}

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=2
PAGESIZE=0800H

VECTOR_RESET=0000H
VECTOR_INT=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[020H,07FH]
BANK(1)=[0A0H,0FFH]
}
;-------------------------------------------------------------------------------------------
[PIC16F76,PIC16F77]=

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=4
PAGESIZE=0800H

VECTOR_RESET=0000H
VECTOR_INT=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X080
BANK(0)=[020H,07FH]
BANK(1)=[0A0H,0EFH]
BANK(2)=[110H,016FH]
BANK(3)=[190H,01EFH]
}
;-------------------------------------------------------------------------------------------
[PIC16F630,PIC16F676]=

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=1
PAGESIZE=0400H

VECTOR_RESET=0000H
VECTOR_INT=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=2
BANKSIZE=0X080
BANK(0)=[020H,05FH]
}

;-------------------------------------------------------------------------------------------
[PIC16C505]=

{
[PROGRAM MEMORY]=
STACKLEVEL=2
PAGECOUNT=1
PAGESIZE=0400H
VECTOR_RESET=0000H
}

{
[DATA MEMORY]=
BANKCOUNT=4
BANKSIZE=0X020
BANK(0)=[010H,01FH]
BANK(1)=[030H,03FH]
BANK(2)=[050H,05FH]
BANK(3)=[070H,07FH]
}

;##############
;-------------------------------------------------------------------------------------------
[PIC12F629,PIC12F675]=

{
[PROGRAM MEMORY]=
STACKLEVEL=8
PAGECOUNT=1
PAGESIZE=0400H
VECTOR_RESET=0000H
INTVECTOR=0004H
}

{
[DATA MEMORY]=
BANKCOUNT=2
BANKSIZE=0X080
BANK(0)=[020H,05FH]
BANK(1)=[0A0H,0DFH]
}
;##############
;-------------------------------------------------------------------------------------------
[PIC17C752,PIC17C762]=

{
[PROGRAM MEMORY]=
STACKLEVEL=16
PAGECOUNT=1
PAGESIZE=2000H
VECTOR_RESET=0000H
VECTOR_INT=0004H
VECTOR_TIMER0=0010
VECTOR_T0CKI=0018
VECTOR_PERIPHERAL=0020
}
{
[DATA MEMORY]=
BANKCOUNT=16
BANKSIZE=0X0FF
BANK(0)=[0020H,00FFH]
BANK(1)=[0120H,01FFH]
BANK(1)=[0220H,02FFH]

}
;-------------------------------------------------------------------------------------------

[PIC17C756A,PIC17C766]=

{
[PROGRAM MEMORY]=
STACKLEVEL=16
PAGECOUNT=1
PAGESIZE=4000H
VECTOR_RESET=0000H
VECTOR_INT=0004H
VECTOR_TIMER0=0010
VECTOR_T0CKI=0018
VECTOR_PERIPHERAL=0020

}

{
[DATA MEMORY]=
BANKCOUNT=16
BANKSIZE=0X0FF
BANK(0)=[0020H,00FFH]
BANK(1)=[0120H,01FFH]
BANK(2)=[0220H,02FFH]
BANK(3)=[0320H,03FFH]
}

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    5152

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    ELAN
[DEFAULT]=
    [EM78P153S]

[EM78P153S]=
{
[PROGRAM MEMORY]=
STACKLEVEL=5
PAGECOUNT=1
PAGESIZE=3FFH
VECTOR_RESET=0000H
VECTOR_INT=0008H

}

{
[DATA MEMORY]=
BANKCOUNT=1
BANKSIZE=30H
}

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;--------------------------------------------------------------------------------------------
[CHIPGROUP]=
    MOTOROLA

;-------------------------------------------------------------------------------------------
[ENDBANKPAGE]

使用特权

评论回复
40
栏杆| | 2008-5-14 23:17 | 只看该作者

开发编译器?!

天,和龙芯联系一下吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则