本公司保留对产品在可靠性,功能和设计方面的改进作进一步说明的权利.
说明文档的更改,恕不另行通知.
IDE使用说明Version1.
002018年11月磐芯电子有限公司MASSESELECTRONICCo.
,Ltd.
仿真器使用说明-2-修正记录版本日期描述Ver1.
002018-11-12仿真器版本更新仿真器使用说明-3-目录目录.
31概述.
52界面说明.
62.
1软件界面说明62.
2硬件界面说明72.
1.
1MTP型号的芯片.
72.
1.
2OTP型号的芯片83操作说明.
93.
1MTP的操作说明.
93.
1.
1与电脑连接.
93.
1.
2与仿真芯片连接.
93.
1.
3仿真操作.
103.
1.
4烧录操作.
143.
1.
5固件升级.
143.
2OTP的操作说明173.
2.
1仿真器的连接.
173.
2.
2仿真操作.
183.
2.
3烧录操作.
183.
2.
4固件升级.
194汇编的介绍.
204.
1文件结构.
204.
2表达式.
204.
3数据格式.
214.
4预编译.
214.
5条件编译.
224.
6头文件.
224.
7宏定义.
224.
8当前地址(234.
9CBLOCK.
234.
10DW244.
11EQU.
244.
12填充(FILL)245C编译的说明.
255.
1简介.
255.
1.
1系统需求.
255.
1.
2建立新工程.
256C编译的语法与使用.
266.
1标准C语法.
26仿真器使用说明-4-6.
1.
1批注.
266.
1.
2数据型态.
266.
2扩充语法.
266.
2.
1保留字.
266.
2.
2中断(interrupt)276.
2.
3寄存器位址定义.
276.
2.
4寄存器位定义.
276.
2.
5内嵌汇编语言(lnlineassembly)286.
2.
6指针属性.
286.
3系统标头档.
296.
4开发流程.
296.
5高级使用.
306.
5.
1强制指定内存地址.
306.
6使用建议.
316.
7常见问题.
31仿真器使用说明-5-1概述磐芯电子仿真器是磐芯电子有限公司为其自主设计的内嵌Memory的产品进行应用仿真而设计.
仿真工具包括两部分:软件环境(IDE)和硬件部分(ICE).
主要功能如下:对符合磐芯电子语法解析规则的源文件进行编译.
对磐芯电子的芯片进行仿真.
对磐芯电子的芯片进行样片烧录.
注意:使用时请对应最新的软硬件版本仿真器使用说明-6-2界面说明2.
1软件界面说明IDE软件包为免安装软件包,拷贝到电脑上即可使用.
(注:请确认软件包放置目录路径、源文件名及新建项目名中不包含""(空格)、"("、")"或其他特殊字符及全角字符,如软件无法使用或编译错误,请将目录路径、源文件名及新建项目名修改为只使用英文字母及数字后再使用.
)寄存器窗口文件窗口菜单及快捷按键项目窗口输出窗口存储器窗口仿真器使用说明-7-2.
2硬件界面说明2.
1.
1MTP型号的芯片注意:使用的硬件版本为V2.
x.
USB接口VDDSDASCKVPPGND硬件版本仿真器使用说明-8-2.
1.
2OTP型号的芯片注意:使用的硬件版本为V5.
x.
此仿真器由两个硬件组合而成,上面的小板为副板,下面的是主板,因此这种OTP型号的仿真器的硬件版本是跟随下面的主板的.
硬件版本仿真器使用说明-9-3操作说明3.
1MTP的操作说明3.
1.
1与电脑连接仿真器可直接插在电脑的USB端口,无需安装驱动.
3.
1.
2与仿真芯片连接将仿真接口的5个插针按信号名称与芯片对应引脚一一相连.
下图为以M8P634为例所示的连接方式:仿真器使用说明-10-3.
1.
3仿真操作Step1:执行IDE_HID.
exe,打开ZC-IDE软件界面Step2:项目-新建项目输入项目名称,完成项目建立.
Step3:配置-选择芯片(选择仿真芯片型号)仿真器使用说明-11-Step4:配置-芯片配置字(选择芯片配置字)Step5:添加程序文件右键点击Sourcefiles,仿真器使用说明-12-弹出添加文件窗口,选择需要的程序文件.
Step6:点击下载(Download)按钮,软件会自动进行编译,然后将程序装载入仿真芯片.
仿真器使用说明-13-Step7:然后可以进行程序的连续运行,单步运行或运行至断点暂停等仿真.
仿真器使用说明-14-3.
1.
4烧录操作1)将仿真接口的5个插针按信号名称与芯片对应引脚一一相连,连接方式与仿真模式相同.
2)设好配置字,将程序进行编译后,点击写(ProgramIC)按钮,程序即可写入芯片.
3)其他相关按钮功能验:校验,检查烧录数据是否正确空:查空,检查芯片是否空片擦:擦除,将芯片内原有程序全部擦除3.
1.
5固件升级1)将仿真器与电脑连接好2)执行IDE_HID.
exe,打开ZC-IDE软件界面3)选择帮助-固件升级仿真器使用说明-15-4)在弹出的窗口中点击Load按钮,选择升级用的固件文件5)确认升级固件仿真器使用说明-16-6)等待升级完成仿真器使用说明-17-3.
2OTP的操作说明3.
2.
1仿真器的连接仿真器可直接插在电脑的USB端口,无需安装驱动,即可与对应的芯片链接.
下图为以M8R62为例所示的连接方式:用短接块连接好后就可以使用短接块连接仿真器使用说明-18-3.
2.
2仿真操作与MTP的操作相同3.
2.
3烧录操作1)在40pin芯片座的左右两边,各有3组3x20的插针,每组插针的左边一列和右边一列对应板上标示的信号,中间一列对应芯片座的左边或右边的20脚信号,根据不同芯片烧录脚所在位置,将对应脚与所需烧录信号用跳线横向相连.
下图为以M8R62为例所示的跳线放置方式:仿真器使用说明-19-2)设好配置字,将程序进行编译后,点击写(ProgramIC)按钮,程序即可写入芯片.
3)其他相关按钮功能验:校验,检查烧录数据是否正确空:查空,检查芯片是否空片擦:擦除,将芯片内原有程序全部擦除3.
2.
4固件升级OTP的固件升级与MTP的相同,注意好使用不同的固件就行.
仿真器使用说明-20-4汇编的介绍4.
1文件结构源文件由多行组成,每一行可以由标号(必须从第一列开始)、操作符(不可以从第一列开始)及注释(分号后)组成.
标号可以包含字符A-z、数字0-9及下划线"_",但不可以以数字开头,标号可以跟1个冒号":".
源文件中除注释内容以外,不可以使用全角字符.
例:;空行LAB1;标号LAB_2MOVIA0x00;标号及一个参数的指令LOOP:INCR0x20,R;标号及两个参数指令CLRA;无参数指令MOVAR0x20;一个参数的指令GOTOLOOP;一个参数指令JBTS1STATUS,Z;两个参数指令4.
2表达式编译器支持的C运算符列表:运算符说明运算符说明||逻辑或+加&&逻辑与-减&位与*乘|位或/除^位异或%取余大于HIGH取次高位Bit15-BIT8>右移!
逻辑反~位取反例:MOVIAHIGH(LAB1);//取LAB1的次高位MOVIALOWLAB1;//取LAB1的低8位MOVIAX+Y;//X+Y的值赋给ACC仿真器使用说明-21-4.
3数据格式下表提供了指定数据格式的几种方式数字格式基本符号示例二进制B'[0-1]'B'1010'[0-1]b1010b8进制O'[0-7]'O'25'[0-7]o25o10进制D'[0-9]'D'21'[0-9]'d21d.
[0-9].
21[0-9]2116进制H'[0-F]'H'15'0x[0-F]0x15[0-F]h15h4.
4预编译#definexy所有x在编译的时候被替换成y直到遇到#undefinex例:#definex0x20MOVIAx等同于MOVIA0x20仿真器使用说明-22-4.
5条件编译IFDEF或#IFDEFELSE或#ELSEENDIF或#ENDIF例:#ifdefaMOVIA0x55#elseMOVIA0xAA#endif如上,若a通过#definea定义,则编译MOVIA0x55否则编译MOVIA0xAA4.
6头文件可以用INCLUDExxx.
inc或#INCLUDExxx.
inc指定头文件,若当前工程目录无xxx.
inc文件,编译器将在缺省目录(工具包的INCLUDE目录)中寻找该文件.
4.
7宏定义宏定义格式:SLRmacroxBCLRSTATUS,CRLRx,RBCLRSTATUS,CRLRx,Rendm宏的调用:SLR0x20;0x20寄存器左移2位,用0补齐仿真器使用说明-23-4.
8当前地址($)$符号定义为当前地址,使用方法如下:$:当前地址$+1:当前地址+1$-2:当前地址-2LOOPGOTOLOOP等同于GOTO$LOOPJZR0x20,RGOTOLOOP等同于JZR0x20,RGOTO$-14.
9CBLOCK使用方法如下:CBLOCK[][:][][:]ENDC使用示例:CBLOCK0x20AB:2CENDC如上等同于:AEQU0x20BEQU0x21CEQU0x23仿真器使用说明-24-4.
10DW定义数据,使用方法如下:DW[,]示例:DW0x55aa,0xaa554.
11EQU变量定义,使用方法如下:EQU示例:XEQU0x20变量名必须从第一列开始4.
12填充(FILL)填充数据,使用方法如下:EQU,示例:FILL0x55aa,10;从当前地址填充10个0x55aa仿真器使用说明-25-5C编译的说明5.
1简介MC_8为针对磐芯电子的M8/M6系列的MCUIC而提供的C语言编译程序(Compiler).
它被上层开发工具软件IDE_HID所调用以编译C程序,并结合ZCASM组译器(Assembler)进一步组译及连接目的档来产生.
hex文件,然后.
hex文件可下载到板子或烧录到MTP/OTPIC.
5.
1.
1系统需求以下列出使用MC_8的系统需求.
Pentium1.
3GHz或更高级处理器,Win7、Win8、Win10操作系统.
至少2GSDRAM.
至少2G硬盘空间.
5.
1.
2建立新的工程项目与汇编的操作相同,值得注意的是在保存类型栏内,选择IDEProject(c)(*.
prj).
仿真器使用说明-26-6C编译的语法与使用MC_8支持标准的ANSIC99语法,并且针对MC_8系列IC新增了一些特殊语法.
6.
1标准C语法MC_8支持标准的ANSIC99语法,有关详细语言定义请参考:StandardISO/IEC9899.
6.
1.
1批注批注支持两种格式,以双斜线起头的单行批注,以及/*起头,至*/结尾的多行批注.
范例://singlelinecomment/*Multilinecomment*/6.
1.
2数据型态以下表格列出MC_8所使用的基本数据型态及允许的数据范围.
型态长度范围char1byte0~255unsignedchar1byte-128~127short2byte-32768~32767unsignedshort2byte0~65535(0xFFFF)int2byte-32768~32767unsignedint2byte0~65535(0xFFFF)long4byte-2147483648~2147483647unsignedlong4byte0~4294967295(0xFFFFFFFF)6.
2扩充语法6.
2.
1保留字以下列出所有保留字,用户定义的符号不可和保留字相同.
autodogotosizeofvoidbreakdoubleifstaticvolatilecaseelseintstructwhilecharenumlongswitchinlineconstexlemreturntypedefrestrictcontinuefloatshortuniondefaultforsignedunsigned仿真器使用说明-27-6.
2.
2中断(interrupt)中断服务程序在MC_8系列中,地址为0x08.
在C语言中必须增加属性至函数定义,__interrupt{}代表硬件中断服务程序.
编译程序会将此段程序安排在指定的地址,中断必须在地址0x08.
编译程序在进入函数前需用户手动保留当前系统状态,例如ACC寄存器、FSR寄存器,然后在离开中断服务程序时用户要手动还原状态.
范例:voidint_isr(void)__interrupt{__asm;push__endasm;TC0IF=0;IOA1=1;IOA1=0;__asm;pop__endasm;}6.
2.
3寄存器位址定义所有支持MC_8IC的特殊寄存器都已经被定义在程序文件夹的include目录下,档名为IC名称.
建议用户直接使用该标头档,不须自行定义特殊寄存器.
6.
2.
4寄存器位定义范例:typedefunion{struct{unsignedcharTC0IF:1;unsignedcharTC1IF:1;unsignedcharTC2IF:1;unsignedcharTC2GIF:1;unsignedcharTXIF:1;unsignedcharRXIF:1;unsignedcharADIF:1;unsignedcharI2CIF:1;};仿真器使用说明-28-}__INTF0bits_t;externvolatile__INTF0bits_t__at(INTF0_ADDR)INTF0bits;#defineTC0IFINTF0bits.
TC0IF/*bit0*/#defineTC1IFINTF0bits.
TC1IF/*bit1*/#defineTC2IFINTF0bits.
TC2IF/*bit2*/#defineTC2GIFINTF0bits.
TC2GIF/*bit3*/#defineTXIFINTF0bits.
TXIF/*bit4*/#defineRXIFINTF0bits.
RXIF/*bit5*/#defineADIFINTF0bits.
ADIF/*bit6*/#defineI2CIFINTF0bits.
I2CIF/*bit7*/6.
2.
5内嵌汇编语言(lnlineassembly)在C语言之中可以内嵌汇编语言,使用__asm或__asm("")关键词即可插入任意的汇编语言程序,其中__asm可插入多条语句,__asm("")可插入单条语句.
下面的程序片段示范了内嵌汇编语言的写法.
插入多条语句__asm;push__endasm;TC0IF=0;IOA1=1;IOA1=0;__asm;pop__endasm;插入单条语句:__asm__("nop");;6.
2.
6指针属性__code和__date用于指定指标存放于ROM或RAM.
一般的指标占用3bytes,其中2bytes存放地址,1byte存放指针型态以区分指针指向的位置是ROM或是RAM.
当编译程序掌握足够信息能判断指针型态时,可以省略指针型态的1byte.
例如以下范例程序中的data为存放在ROM的数据,ptr1及ptr2都是指向data的指标.
然而ptr1有加上__code属性,编译程序可以确定此指标只会指向ROM的数据,编译程序实际产生的机械码ptr1占用2bytes,而ptr2占用3bytes.
使用指标时,若明确知道此指标只会指向ROM或RAM,尽量事先指定__code或__data属性,以节省RAM使用量,亦可产生较为精简的指令.
仿真器使用说明-29-conststaticchardata[]={0,1,2,3};__codeconstchar*ptr1;constchar*ptr2;voidmain(void){unsignedchari;ptr1=data;ptr2=data;for(i=0;i内存地址一般C语言的变量并不会指定内存地址,而MCU程序开发偶尔会有指定地址的需求.
MC_8有提供特殊语法共用户指定变量存放地址,在变量型态之前__at(addr)即可,addr为指定的地址.
范例:__at(0x32)unsignedcharR0;使用此功能时必须注意,不应该宣告变量在SFR区段,如果想要存取SFR,请使用所选IC对应的头文件的预定义.
因为项目建立的过程中,会连结MC_8内建的静态函式库(staticlibrary),函式库已经预先宣告并占用所有的SFR.
若用户尝试重新定义SFR,将会造成项目建立失败.
如果想要重新命名SFR,请使用#define预处理指令.
范例:#defineBUTTON1PORTBbits.
PB0……if(BUTTON1==0){……}范例:File:main.
c#include"my_var.
h"__at(0x32)unsignedcharR0;//instanceofvariablevoidmain(void){R0=10;//useexternalvariable}File:my_var.
h#ifdefMY_VAR_H#defineMY_VAR_HExtern__at(0x32)unsignedcharR0;#endif提示:如果编译时报错multiplesectionsusingaddress0x23,有可能是地址已经被占用了,建议更换地址.
仿真器使用说明-31-6.
6使用建议以下提出一些开发C语言项目的建议.
尽量使用无符号(unsigned)变量,在部分的运算不用判断正负号会比较快.
表达式之中不要交互使用常数与变量,将常数集中才能有效的优化.
例如1+a+2就是不好的写法,1跟2无法在编译时期计算.
建议写成a+1+2,如此一来1+2可在编译时期计算,执行期间只需要计算a+3即可.
使用if(INTF0bits.
TC0IF)取代if(INTF0bits.
TC0IF==1),可以得到较为精简的程序.
如果确定使用全局变量之前都有设定初值,可以指定MC_8不要帮您做清0的动作以减少耗用ROM.
不要将程序拆分为过多的.
c文件.
这会影响优化,增加RAM的使用量.
因为编译程序没办法假设两个函数不会同时执行,只能分配独立的内存给彼此.
尽量搭配使用同时期推出的ZCASM.
因为MC_8产生的文件会交给ZCASM继续下一个步骤,若两者版本差距过大,或者会有不兼容的情形.
例如MC_8可能产生了旧版ZCASM不支持的指令.
若已知指标只会指向ROM或RAM,宣告时使用指针属性__data及__code告知编译程序.
6.
7常见问题Q:我注意到在IDE_HID的include文件的.
h文件中,例如m8p634.
h这类各种IC的寄存器定义档,为何修改其中的寄存器名称后编译总是失败A:寄存器的名称不仅定义于.
h在静态链接函数库也必须存在相同的定义.
静态链接函数库位于MC_8安装目录的lib文件下,文件名称为.
lib.
静态链接函数库为二进制文件,无法由用户自行修改.
修改标头档将造成链接时无法在函数库中找到相符的寄存器定义.
官方网站:点击访问亚洲云官网618活动方案:618特价活动(6.18-6.30)全站首月活动月底结束!地区:浙江高防BGPCPU:至强铂金8270主频7 默频3.61 睿频4.0核心:8核(最高支持64核)内存:8G(最高支持128G)DDR4 3200硬盘:40G系统盘+80G数据盘带宽:上行:20Mbps/下行:1000Mbps防御:100G(可加至300G)防火墙:提供自助 天机盾+金盾 管...
RepriseHosting是成立于2012年的国外主机商,提供独立服务器租用和VPS主机等产品,数据中心在美国西雅图和拉斯维加斯机房。商家提供的独立服务器以较低的价格为主,目前针对西雅图机房部分独立服务器提供的优惠仍然有效,除了价格折扣外,还免费升级内存和带宽,商家支持使用支付宝或者PayPal、信用卡等付款方式。配置一 $27.97/月CPU:Intel Xeon L5640内存:16GB(原...
农历春节将至,腾讯云开启了热门爆款云产品首单特惠秒杀活动,上海/北京/广州1核2G云服务器首年仅38元起,上架了新的首单优惠活动,每天三场秒杀,长期有效,其中轻量应用服务器2G内存5M带宽仅需年费38元起,其他产品比如CDN流量包、短信包、MySQL、直播流量包、标准存储等等产品也参与活动,腾讯云官网已注册且完成实名认证的国内站用户均可参与。活动页面:https://cloud.tencent.c...