相信學ARM的童鞋大多數都是先學過51的,你如果用Keil這樣的編譯環境的話,也許你會發現之前學校51的Keil開發環境無法兼容ARM,或者你在做項目,同時要用到Keil開發51單片機和ARM單片機,這個時候就開始無奈了,發現裝了keil C或ADK 里面都只有51或者ARM一種單片機核可供選。難道要我們分別安裝這兩個軟件?答案是不可取的,經過了解,KEIL公司是被ARM公司收購了,自從是一家人以后,它們總該相處得好點吧,至少兼容問題總不能自家人排斥自家人,那就太不夠意思了,呵呵。
這幾天因為公司的破電腦只有 10G的C盤空間被我裝軟件以及桌面上放的各種文件給填滿了,所以打算把一些軟件移到其它盤,刪除了KEIL軟件以后,發現之前可以同時編譯51和ARM 的keil夭折了,所以自己研究了一下,把它的過程記錄下來留著以后可作參考。具體方法如下:
第一步到http://www.zg4o1577.cn/ 下載并安裝Keil C:
直接找開Keil C一直下一步,中間填下SN碼,這個在破解的KEIL C軟件里面都會有的。安裝完成后的環境如下:

第二步把上圖Tools文件用文本的方式打開并復制里面的內容保存起來,內容如下:
這幾天因為公司的破電腦只有 10G的C盤空間被我裝軟件以及桌面上放的各種文件給填滿了,所以打算把一些軟件移到其它盤,刪除了KEIL軟件以后,發現之前可以同時編譯51和ARM 的keil夭折了,所以自己研究了一下,把它的過程記錄下來留著以后可作參考。具體方法如下:
第一步到http://www.zg4o1577.cn/ 下載并安裝Keil C:
直接找開Keil C一直下一步,中間填下SN碼,這個在破解的KEIL C軟件里面都會有的。安裝完成后的環境如下:

第二步把上圖Tools文件用文本的方式打開并復制里面的內容保存起來,內容如下:
[C51]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C51.PDF("C51 User's Guide")
BOOK3=HLP\C51LIB.CHM("C51 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\TR51.CHM("RTX51 Tiny User's Guide")
BOOK6=HLP\DBG51.CHM("uVision2 Debug Commands")
BOOK7=ISD51\ISD51.HTM("ISD51 In System Debugger")
BOOK8=HLP\FlashMon.CHM("Flash Monitor")
BOOK9=MON390\MON390.HTM("MON390: Dallas Contiguous Mode Monitor")
TDRV0=BIN\MON51.DLL ("Keil Monitor-51 Driver")
TDRV1=BIN\ISD51.DLL ("Keil ISD51 In-System Debugger")
TDRV2=BIN\MON390.DLL ("MON390: Dallas Contiguous Mode")
TDRV3=BIN\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
Version=V7.0
PATH="D:\Keil\C51"
SN=K1DZP-5IUSH-A01UE
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C51.PDF("C51 User's Guide")
BOOK3=HLP\C51LIB.CHM("C51 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\TR51.CHM("RTX51 Tiny User's Guide")
BOOK6=HLP\DBG51.CHM("uVision2 Debug Commands")
BOOK7=ISD51\ISD51.HTM("ISD51 In System Debugger")
BOOK8=HLP\FlashMon.CHM("Flash Monitor")
BOOK9=MON390\MON390.HTM("MON390: Dallas Contiguous Mode Monitor")
TDRV0=BIN\MON51.DLL ("Keil Monitor-51 Driver")
TDRV1=BIN\ISD51.DLL ("Keil ISD51 In-System Debugger")
TDRV2=BIN\MON390.DLL ("MON390: Dallas Contiguous Mode")
TDRV3=BIN\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
Version=V7.0
PATH="D:\Keil\C51"
SN=K1DZP-5IUSH-A01UE
我用的軟件兼容性還是蠻好的,里面有C251,,,C51的聲明段,因為我只要用到51和ARM兼容,所以我只把C51的代碼復制下來就行了。
第三步安裝ADK,這里要注意ADK的版本要比KEIL C的版本高一個等級,只有這樣才能兼容,如果不這樣的話,可能調試功能部分會有問題。比如KEIL與proteus進行調試時會出現調試不了的問題。
安裝ADK同上,直接下一步,有提示要SN號的時候在軟件里面找了復制,粘貼就行了。安裝路徑跟KEIL C的路徑一樣就行了,我在網上看有人說不能同一個路徑,其實同個路徑好點,省了過會要復制兩次代碼,而且還不用搞兩個電路在電腦,又麻煩又不方便。安裝后的效果如下:
接著打開TOOLS文件,把上面的代碼復制,粘貼上去。
[UV2]
BOOK0=UV3\RELEASE_NOTES.HTM("uVision Release Notes")
BOOK1=
ARMUSE=0
rem ARMUSE= 0:=Cygnus/GNU, 1:=ARM-ADS, 2:=Keil (future)
Version=V2.2
ORGANIZATION="LN"
NAME="admin Michael", "DSD"
EMAIL="LUSSBY"
ARMSEL=1
[C166]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS166.PDF("uVision2 Getting Started")
BOOK2=HLP\C166.PDF("C166 User's Guide")
BOOK3=HLP\C166LIB.CHM("C166 Library Functions",C)
BOOK4=HLP\EC166.CHM("EC166 Embedded C++")
BOOK5=HLP\A166.PDF("A166 & Utilities User's Guide")
BOOK6=HLP\DBG166.CHM("uVision2 Debug Commands")
BOOK7=HLP\OCDS.CHM("OCDS Debugging")
TDRV0=MONITOR\MON166.DLL ("Keil Monitor-166 Driver")
TDRV1=OCDS\CBC166.DLL ("OCDS Driver for C16xU/H/UTAH")
TDRV2=OCDS\OCDSXC.DLL ("OCDS Driver for XC16x")
RTOS1=RTXTINY.DLL ("RTX-166 Tiny")
RTOS2=RTXFULL.DLL ("RTX-166 Full")
Version=V4.2
[C51]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C51.PDF("C51 User's Guide")
BOOK3=HLP\C51LIB.CHM("C51 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\TR51.CHM("RTX51 Tiny User's Guide")
BOOK6=HLP\DBG51.CHM("uVision2 Debug Commands")
BOOK7=ISD51\ISD51.HTM("ISD51 In System Debugger")
BOOK8=HLP\FlashMon.CHM("Flash Monitor")
BOOK9=MON390\MON390.HTM("MON390: Dallas Contiguous Mode Monitor")
TDRV0=BIN\MON51.DLL ("Keil Monitor-51 Driver")
TDRV1=BIN\ISD51.DLL ("Keil ISD51 In-System Debugger")
TDRV2=BIN\MON390.DLL ("MON390: Dallas Contiguous Mode")
TDRV3=BIN\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
Version=V7.0
PATH="D:\Keil\C51"
SN=K1DZP-5IUSH-A01UE
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C51.PDF("C51 User's Guide")
BOOK3=HLP\C51LIB.CHM("C51 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\TR51.CHM("RTX51 Tiny User's Guide")
BOOK6=HLP\DBG51.CHM("uVision2 Debug Commands")
BOOK7=ISD51\ISD51.HTM("ISD51 In System Debugger")
BOOK8=HLP\FlashMon.CHM("Flash Monitor")
BOOK9=MON390\MON390.HTM("MON390: Dallas Contiguous Mode Monitor")
TDRV0=BIN\MON51.DLL ("Keil Monitor-51 Driver")
TDRV1=BIN\ISD51.DLL ("Keil ISD51 In-System Debugger")
TDRV2=BIN\MON390.DLL ("MON390: Dallas Contiguous Mode")
TDRV3=BIN\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
Version=V7.0
PATH="D:\Keil\C51"
SN=K1DZP-5IUSH-A01UE
[C251]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C251.PDF("C251 User's Guide")
BOOK3=HLP\C251LIB.CHM("C251 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\DBG251.CHM("uVision2 Debug Commands")
TDRV0=BIN\MON251.DLL ("Keil Monitor-251 Driver")
Version=V3.5
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C251.PDF("C251 User's Guide")
BOOK3=HLP\C251LIB.CHM("C251 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\DBG251.CHM("uVision2 Debug Commands")
TDRV0=BIN\MON251.DLL ("Keil Monitor-251 Driver")
Version=V3.5
[ARM]
PATH="D:\Keil\ARM"
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK2=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
BOOK4="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\gcc\gcc.pdf" ("GNU C Compiler",GEN)
TDRV0=ULINK\ARM7.DLL("ULINK ARM7 Debugger")
Version=3.80a
PATH1="C:\Program Files\CodeSourcery\Sourcery G++ Lite\"
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8) # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8) # Drivers for Cortex-M devices
BOOK5="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\as.pdf" ("GNU Assembler",GEN)
BOOK6="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\ld.pdf" ("GNU Linker",GEN)
BOOK7="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\binutils.pdf" ("GNU Binary Utilities",GEN)
TDRV1=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV2=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV3=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV4=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV5=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV6=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV7=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV8=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV9=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
PATH="D:\Keil\ARM"
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK2=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
BOOK4="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\gcc\gcc.pdf" ("GNU C Compiler",GEN)
TDRV0=ULINK\ARM7.DLL("ULINK ARM7 Debugger")
Version=3.80a
PATH1="C:\Program Files\CodeSourcery\Sourcery G++ Lite\"
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8) # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8) # Drivers for Cortex-M devices
BOOK5="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\as.pdf" ("GNU Assembler",GEN)
BOOK6="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\ld.pdf" ("GNU Linker",GEN)
BOOK7="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\binutils.pdf" ("GNU Binary Utilities",GEN)
TDRV1=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV2=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV3=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV4=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV5=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV6=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV7=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV8=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV9=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
[ARMADS]
PATH="D:\Keil\ARM"
PATH1="BIN40"
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK2=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
BOOK4=
BOOK5=
TDRV0=ULINK\ARM7.DLL("ULINK ARM7 Debugger")
Version=V0.1
PATH="D:\Keil\ARM"
PATH1="BIN40"
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK2=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
BOOK4=
BOOK5=
TDRV0=ULINK\ARM7.DLL("ULINK ARM7 Debugger")
Version=V0.1
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8) # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8) # Drivers for Cortex-M devices
TDRV1=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV2=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV3=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV4=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV5=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV6=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV7=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV8=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV9=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
RTOS0=Dummy.DLL("Dummy")
RTOS1=ARTXARM.DLL ("RTX Kernel")
[KARM]
PATH="D:\Keil\ARM"
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8) # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8) # Drivers for Cortex-M devices
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK2=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
TDRV0=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV1=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV2=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV3=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV4=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV5=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV6=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV7=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV8=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
RTOS0=Dummy.DLL("Dummy")
RTOS1=ARTXARM.DLL ("RTX Kernel")
此時可以發現,當我們打開KEIL的時候,里面有了ARM的頭文件,也有51的頭文件了,^-^ .
接下來先別高興,還有一個步驟

要做,那就是分別給ARM和51注冊庫了。具體是打開安裝好的KEIL,在FILE->license Managetment
點PK51 prof.Develpors Kit,復制 CID。接著打開ADK軟件里面的注冊機,如下

粘貼到CID里面,,TARGET選擇51,如果是注冊ARM就選擇ARM,然后點GENERATE,會在上面橫條那生成一串注冊碼,復制,粘貼到上圖LicenseManagetment的New License IdCODE,并點后期ADD LIC即可。
因為注冊ARM跟Keil C51的注冊一樣,就不累贅了。注冊完成后效果如下:

可以看到51和ARM都已經注冊完成,時間可以使用的時候是到2020年的六月和九月。 至此我們的KEIL軟件可以兼容51和ARM單片機了。