基本数据 功能说明 应用说明 注意事项 其它

基本数据

 

Question 1

Cost-Effective I/O MCU内容如何?

Answer

Cost-Effective I/O MCU提供0.5K及1K program ROM的OTP Type 及Mask Type各一对MCU,编号为HT48R05A-1/HT48C05、HT48R06A-1/HT48C06 总共4颗IC,规格功能请参考Holtek Data Sheet。


Question 2

Cost-Effective I/O MCU可否提供极小封装?

Answer

HT48R05A-1/HT48C05、HT48R06A-1/HT48C06除提供18-pin Standard DIP及SOP封装外,另外提供16-pin SSOP极小封装,方便客户小体积的产品应用,尺寸大小只有237mil x 193mil。


Question 3

Cost-Effective I/O MCU是否提供Dice form?

Answer

Holtek 同时提供OTP Type及Mask Type MCU的Dice form的量产服务,但使用OTP MCU Dice量产时,客户要特别注意打线及烧录的操作问题。


Question 4

Cost-Effective I/O MCU的工作频率为何?

Answer

在5V、3.3V及3个电池的应用,工作频率达Max. 8MHz (3.3V)。
在3V及2个电池的应用,工作频率达Max. 4MHz (2.2V)。


Question 5

Power On Reset时间为何?

Answer

在3V时,Power On Reset时间为45ms~180ms;5V时,Power On Reset的时间 35ms~140ms


Question 6

在Data Sheet的Reset电路,是否可适用各种应用状况?

Answer

Data Sheet所提供的Reset电路一般可适用各种应用状况,若在特殊情形,要参考当时环境及Noise,再设计适当Reset电路。 


Question 7

HT48R05A-1/HT48C05只有62条指令,通常Holtek的MCU有63条指令,请问缺少哪一条指令?

Answer

HT48R05A-1/HT48C05缺少TABRDL指令。

 


功能说明

 


Question 1

HT48R05A-1/HT48C05与HT48R06A-1/HT48C06 功能有何不同?

Answer

HT48R05A-1与HT48R06A-1功能特性甚至封装脚位都相同,除了下列二点不同:

  HT48R05A-1/HT48C05 HT48R06A-1/HT48C06
ROM  0.5Kx14 1Kx14
RAM 32x8 64x8

Question 2

Cost-Effective I/O MCU有何重要功能及特性?

Answer

操作电压范围 2.2V ~ 5.5V
工业温度规格 -40°C ~ +85°C
Low Voltage Reset功能
OTP / Mask Type MCU兼容
其它请参考 Holtek Data Sheet


Question 3

间接寻址如何使用?

Answer

首先将要读写之Data Memory的地址先存入地址指针缓存器 (MP),然后对IAR执行读写 (例如: MOV a, IAR),即可读到MP所指到的Data (MP的内容当地址)。间接寻址功能特别方便于数列 (array) 的处理,一般先将数列地址放入MP做运算后再读取所需的数列Data。


Question 4

查表指令如何使用,有何注意事项?

Answer

查表指令有二种,一种是TABRDC指令,此指令读取目前指令所在表数据,另一种为TABRDL指令,此指令固定读取最后一页表数据。要查表时首先必需将表的Low Address填入TBLP再执行查表指令,表的Low Byte Data将存入指令指定的内存;表的High Byte Data被存入TBLH中,要注意未满16-Bit之表Data高位被补0。


Question 5

可以在Interrupt Service Routine内执行Call吗?

Answer

因为HT48R05A-1/HT48C05和HT48R06A-1/HT48C06仅有2层Stack,很容易在进入Interrupt时Stack已经满了,如果此时再执行Call会造成Stack Over,而使得程序无法返回,所以强烈建议不要在Interrupt内执行Call。从程序观点,一般要求Interrupt要越短越好,所以也不适合在Interrupt内执行太长的Call。


Question 6

已经进入HALT Mode为何还有耗电?

Answer

MCU进入HALT会将系统OSC关闭,但WDT OSC (如果Option选WDT Enable) 仍在工作,而且全部I/O会保持HALT前状态,除了WDT OSC会耗一些电外,最要注意的是Input Port是否浮接或者Output Port是否仍有负载,这些I/O处理要非常小心,否则会耗大电流。


Question 7

PA已经Low为何没有唤醒MCU?

Answer

MCU的PA Port唤醒为瞬间下降缘触发,若在执行HALT之前PA已经Low,且在HALT期间一直维持在Low,因为没有下降缘动作,所以无法唤醒MCU。


Question 8

为何外部中断有下降缘,仍然没有唤醒MCU?

Answer

虽然MCU可由中断唤醒,但严格的说是要靠中断要求旗标 (Request Flag) EIF由0变1才能唤醒。若在MCU进入HALT之前EIF已经设定 (EIF=1),则再来之INT无法改变EIF的值,亦即是EIF不能由0变1,所以不能唤醒MCU。


Question 9

WDT Clock Source选择WDT OSC和选择 fSYS/4有何差别?

Answer

WDT Clock Source选择WDT OSC则在系统误入HALT时WDT Timer仍然继续工作,当WDT Time-out可以再启动系统。若选择 fSYS/4 则在误入HALT后,则一直沈睡下去无法Wake-up,但选择WDT OSC则需花一些代价 (消耗电流)。在另外一种情形,如果系统正常就有HALT功能,且在HALT时不希望被WDT叫醒,则此时WDT Source可选 fSYS/4。


Question 10

Prescaler + 8-Bit Timer之Prescaler可以Reset吗?

Answer

Prescaler在Power On Reset后,就一直不停的Run,没有任何指令可以Reset此Prescaler。


Question 11

8-Bit Timer/Counter之Timer Mode如何设定?

Answer

因Timer/Counter有3种模式,即Timer、Event Counter和Pulse Width等3种。
要执行Timer Mode要执行以下动作设定:

  1. 设定Timer/Counter为Timer Mode (TM1、TM0=10H)

  2. 依据Timer的长短选定Prescaler值 (PSC2~PSC0)

  3. 设定计数初始值 (TMR)

  4. 打开相对应中断致能旗标 (ETI和EMI)

  5. 设定 Timer ON (TMRC.4=1)

当Timer被打开后,Timer开始向上计数,若Timer OFF (TMRC.4=0),则Timer立即停止。下次Timer再ON,则从上次停留值继续往上数,直到满位溢出产生中断,同时Timer 重新加载初始值。


Question 12

8-Bit Timer/Counter之Event Counter Mode如何设定?

Answer

因Timer/Counter有3种模式,即Timer、Event Counter和Pulse Width等3种。要执行Event Counter Mode要执行以下动作:

  1. 设定Timer/Counter为Event Counter Mode (TM1、TM0=01H)

  2. 选择TE; TE=1则Count Falling Edge,TE=0则Count Rising Edge

  3. 设定计数初始值 (TMR)

  4. 打开相对应中断致能旗标 (ETI和EMI)

  5. 控制Timer ON (TMRC.4=1)


Question 13

8-Bit Timer/Counter之Pulse Width Mode如何设定?

Answer

因Timer/Counter有3种模式,即Timer、Event Counter和Pulse Width等3种。要执行Pulse Width Mode要执行以下动作:

  1. 设定Timer/Counter为Pulse Width Mode (TM1、TM0=11H)

  2. 选择TE; TE=1量High Pulse,TE=0量Low Pulse

  3. 依据Pulse长短需求选定Prescaler值 (PSC2~PSC0=n)

  4. 设定TMR计数初始值 (一般设定=0)

  5. 打开相对应中断致能旗标

  6. 打开Timer ON (TMRC.4)

执行完以上步骤,程序可抽空Check TON值,若TON=0表示Pulse Width量度完成,Timer的值 x 2 n+1即是Pulse时间的宽度。


Question 14

PFD和Buzzer Mode如何设定?

Answer

PFD功能同Buzzer功能。
要实现Buzzer Mode要执行以下设定:

  1. Configuration Option选择BZ Option Enable

  2. 依据所要频率选择Prescaler (PS2~PS0=n) 和TMR值 (fPFD = fSYS / (2n+1 x (256-TMR) x 2))

  3. 打开Timer ON (TMRC.4)

  4. 将PB.0和PB.1设成Output Mode即PBC.0、PBC.1=0

执行以上设定后,若PB.0=1则Buzzer ON,若PB.0=0则Buzzer OFF


Question 15

2颗电池 (2.2V~3.8V) 的工作电压操作可以使用LVR吗?

Answer

LVR的动作点在2.7V~3.3V之间,所以2.2V的工作电压不能选择LVR,若一定要侦测2.2V低压,可以外加Voltage Detector (HT70XX系列)。


Question 16

低电压Reset (LVR) 在HALT时,是否会耗电?

Answer

LVR在HALT时没有作用,所以没有耗电问题。


Question 17

Holtek MCU 之Stack 除了做CHIP reset之外,有无其它方法可以重设 stack pointer?

Answer

堆栈指针会受到中断与呼叫附程序与返回指令影响,除此之外,除了透过CHIP reset,并无其它方法可以重设(reset) Holtek MCU 的堆栈指针。


Question 18

当系统时钟选择RC振荡器时,应用电路上OSC1外接的电阻与电容有何功能?电容可以不加吗?

Answer

OSC1外加电阻是为了产生一bias以控制内部的RC充放电,电阻值决定RC震荡频率。外加电容建议为470pF,OSC1外加电容是为了避免和OSC2产生交越干扰,以便让OSC2输出一稳定1/4系统频率的频率。假如你不需要使用到OSC2输出的1/4系统频率的频率,那么电容器是可以省略的。


Question 19

如何使用MCU都有定时器自动重载功能?

Answer

如果希望在下一次定时器自动重载时,装载另一个初值的话,只需要给TMR赋新值就可以了。
如果希望定时器马上装载另一个初值,并开始计数的话,请做以下步骤:

  • 关闭允许计数位TMRC.4;

  • 给TMR赋新值;

  • 打开允许计数位TMRC.4。


Question 20

请问WDT之功能为何?

Answer

Watchdog Timer(WDT)主要用于监视MCU内部功能(software及hardware)之执行是否正常, 使用者必须适当设计software及运用clear WDT(CLR WDT, CLR WDT1, CLR WDT2)之指令, 使程序正常执行时, WDT不会overflow, 并且在当系统不正常执行时, WDT可以overflow造成WDT reset, WDT reset之效能, 主要由software设计所决定。


Question 21

写程序时,如欲在program memory建立Table,如何建于绝对地址,为何ORG不适用,有其它方法吗?

Answer

ORG expression : expression 是对于目前SECTION 起始地址的offset,并非绝对地址,可使用SECTION来建立Table于绝对地址,例如:

table .section at 300 'code' -即可将接下去之Table起始位置建立于绝对地址300。


Question 22

低电压Reset (LVR)打开时,当VDD电压低至多少时其RAM值变化,认为Power On 复位?

Answer

当VDD在0.9V至VLVR电压之间持续1ms以上时LVR执行系统复位,RAM的值不变化。
VDD低于0.9V时不敢保证RAM的值不变化。


Question 23

HT48R062在低电压Reset (LVR)状态时,系统是否还在振荡?

Answer

在低电压Reset (LVR)状态,系统还在起振,只有当VDD电压小于最小起振电压时,系统才停止振荡。


应用说明

 

Question 1

为什么HT48R05A-1/HT48C05与HT48R06A-1/HT48C06之MP Bit7写入0,但读出却是1?

Answer

HT48R05A-1/HT48C05 Data RAM从60H~7FH,HT48R06A-1/HT48C06 Data RAM从40H~7FH,因为两者之Data RAM皆不超过80H,故其MP仅有7个Bits (Bit0~Bit6)有效,亦即MP之Bit7写入无效且读到始终为1。虽然MP写入70H读到F0H;实质上是指向70H,所以其间接寻址读写是完全正确的。


Question 2

没有Push和POP指令;中断时数据要如何备份?

Answer

虽然没有Push和POP指令,程序员仍可指定专用记忆RAM BYTE (例如:db ACCStack; for ACC Storage) 储存中断时会被破坏的数据。首先将ACC存入专用内存,然后利用ACC依序将Status和其它数据搬移至各别之专用内存。在中断返回前,再反序将其它备份数据,Status和ACC回存,最后再执行RETI返回主程序。


Question 3

中断处理中可否允许相同的中断再进入?

Answer

理论上在进入中断时MCU会自动清除EMI旗标 (EMI=0),并禁止所有中断的再进入,若中断处理中用软件设定EMI旗标 (EMI=1),则在Stack有空之下,所有中断(含相同中断)皆可再进入。要允许相同的中断再进入,需特别注意备份数据的处理,应避免已备份之数据被再进入的中断所破坏。若不是非常紧急中断,一般不建议中断再中断。


Question 4

可以让外部中断不产生唤醒MCU吗?

Answer

在执行HALT之前先清除EMI再设定EIF=1,则外部中断就无法唤醒MCU。


Question 5

WDT选用WDT OSC时钟源时,看门狗如何计算?

Answer

WDT OSC的时钟周期在工作5V时约介于8 ms~33 ms,看门狗的溢出时间为,时钟周期 x 2 (WS2~WS0),例如:选WS2~WS0=7,则看门狗溢出时间将介于为8 ms x 27=1 sec 到33 ms x 27=4.2 sec。


Question 6

2个CLR WDT指令如何使用?

Answer

2个CLR WDT可以增加系统可靠性。若程序有2个主要的交替循环Loop;则可在1个Loop放CLR WDT1,在另1个Loop放CLR WDT2,一旦程序错误或受噪声干扰造成一直停留在某一个Loop时;WDT就会启动,发出WDT Time-out重新启动MCU。


Question 7

用HT48系列MCU可以实现LCD 的driver吗?

Answer

可以,但最多只能做到1/2 bias,I/O用 pull high 和pull low进行偏置,然后输出高,输入,输出低就可以有三种电压。


Question 8

使用外部RC振荡时,如何确定准确频率?

Answer

外部RC是接在单片机的OSC1端,OSC2端是悬空的。如果要测量准确的频率,则在OSC2端接上拉1K奥姆的电阻,使用示波器测量OSC2口,就可以测量到Fsys/4的准确频率。


Question 9

请问OTP dice 烧录流程为何?

Answer

  • Dice 打线在 COB 上。

  • 利用烧录器如 HT-Writer 等作OTP 烧录。

  • COB 功能测试。

  • 功能正常之 COB 将 Dice 封胶, 之后再焊上其它零件。


Question 10

如何使用外部晶振结合仿真器调试程序?

Answer

首先,在设置OPTION 的SYSFREQ时,Internal不要打勾。这样可以使用外部的晶振,外部晶振可以加在Interface Card上面的Y1处。同时也要检查JP4处的跳线,是RC振荡还是x'tal。这样就可以使用外部晶振结合仿真器调试程序。


Question 11

进省电模式时,应如何设置I/O状态,使功耗最小?No load是指什么状态?

Answer

不用的I/O可以设置为输入模式,但一定要选择上拉电阻,否则会因为"浮空"而耗电。也可以设置为输出模式,并输出"0"。

No load是指I/O不任何接外部电路,即MCU只接VDD, VSS, OSC1/OSC2, RES。


Question 12

3 pin 之resonator/crystal用于MCU之时基时, 电容之Vss pin可改接Vdd吗?

Answer

3pin之resonator/crystal 用于MCU之时基时,配合Layout方便, 电容之Vss pin亦可改接Vdd。


Question 13

如何用I/O口测温度值?

Answer

用I/O口测试温度只能用I/O充放电来测量,需要三个I/O,两个输出口,一个输入口,两输出口分别连接参考电阻R1,热敏电阻R2, R1和R2的另一端相连,并接入输入口和电容C1的一端,电容的另一端接地。 用输入口的门限电平判断充放电的结束否,R1是为修正R2的测量误差,其原理:ΔT1=R1C1 ΔT2=R2C1--> R2=ΔT2R1/ΔT1。


Question 14

如打算用定时中断把处在HALT下的CPU唤醒,遇到这样的问题: HOLTEK的资料上说: 暂停模式是通过"HALT"指令实现且造成如下结果:系统振荡器将被关闭 ,那么这是否说在HALT状态下,定时器也不可用?

Answer

HALT状态下,系统振荡器关闭,若定时器时钟来源为系统时钟,则定时器在HALT下停止;若以非系统时钟(如RTC)为时钟来源,则在HALT下,定时器仍然工作,溢出中断时唤醒MCU。


Question 15

在HT48X05A-1/HT48X06A-1的ROM存放表格内容时候,为什么有些数据查表后高字节内容不正确。例如0FFFFH,查表之后得到的数据是03FFFH。

Answer

对于HT48X05A-1/HT48X06A-1的ROM来说,每个WORD字只有14位,也就是另外的最高2位不能存放任何信息。如果整字读出来的话,最高2位默认为"0"。因此当在ROM里面写入0FFFFH时候,实际上最高两位并没有被写入,所以查表读出来的高两位为"0",即03FFFH。


Question 16

使用带有PA控制寄存器(PAC)的8位MCU作母体调试程序时,为什么向PA PIN脚的某一位写0再写1,在寄存器观察窗口中却看不到PA PIN脚这一位的值有所变化?

Answer

要向PA数据寄存器的某一位写入数据,必需先将PA的控制寄存器(PAC)的对应位清0,也就是将其设置为输出口时,才能有效的将数据写入数据寄存器(PA)中,反之,如果此位是输入状态则通过程序不能改变数据寄存器这一位的值。


Question 17

应用电路中采用Crystal振荡模式时,为何晶震旁要并联一电阻?

Answer

晶震旁并联电阻保证了在低于MCU正常工作电压的状态下,晶震被关闭。
当LVR ENABLE 时,此电阻是不需要的。 


注意事项

 


Question 1

8-Bit TMR值如何设定?

Answer

因为Cost-Effective I/O MCU之Timer (TMR) 为一8-Bit向上数之计数器(Counter),每当Counter数到255 (0FFH溢位0H) 时产生中断 (Interrupt),所以若要计数为N (N<256);则TMR值要设定成256-N。设定好后;启动TMR (TMRC.4),TMR即从设定值往上数到255 溢出到0(即256),故所得值即256-(256-N)=N。


Question 2

MCU Power On时,VDD的上升时间有何限制?

Answer

MCU Power On时为了使Reset可以完全成功,建议Power On VDD上升时间在20ms以内。当电池逐渐没电,电池内阻增大,造成VDD上升缓慢会影响Reset成功。


Question 3

在客户用到HT48系列MCU做家电控制,在什么情况下使用LVR功能, 在什么情况下不使用LVR功能?

Answer

根据具体情况分析。LVR的电压是否3.3V,一般情况下,在电池供电的情况下不使用LVR,在产品使用交流电源的场合,使用LVR功能。


Question 4

烧写OTP时,同一程序用HOLTEK的HandyWriter -F 和 河洛公司PRO-201(PRO-204,PRO-208)来烧写OTP时,为什么CheckSUM会不同?

Answer

因为CheckSUM 计算方式不同。


Question 5

我需要使用OTP的DIE生产,请问如何烧录?

Answer

HOLTEK的OTP烧录会使用到11根引脚,所以如果需要使用OTP的DIE生产,在画PCB时,需要预留出这11根引脚,关于引脚的详细定义请向相关的代理商索取。使用者需制作治具将11根引脚连接到烧录器的40 PIN的Textool上,之后就可以按照OTP封装片的烧录程序烧录。

需要注意的是,在PCB Layout的时候,使用到的这11根引脚在PCB上的走线不要过长,其中PA0~PA6做烧录使用避免连结到其它线路的输出,如无法避免则需串接1kohm电阻, 以免影响烧录;从PCB到烧录器的联机不要超过15cm,越短越好。


Question 6

我使用OTP DICE,但是发现烧录不良率较高,这是为什么呢?

Answer

首先,要排除打线不良的问题,一般来说打线不良是OTP DIE烧录不良的重要原因。如果你自己没有办法确定打线是否良好,可以通过技术支持的方式,将绑定完好没有封胶的样片寄到HOLTEK相关的技术服务部门分析。 


Question 7

我使用HT-Writer烧录OTP DICE,联机的时候出现"MCU:Cannot identify"信息会出现在信息窗口中,是打线不好?还是OTP有问题?

Answer

OTP的封装片在出厂前会有一些信息在里面,使用HT-Writer 烧录器时会显示于信息窗口中。如果OTP芯片中没有此等信息,那么烧录程序就会认为无法辨认此ID,会出现这么一个警告信息。而OTP DICE一般来说,出厂前是不会有这样的信息的,所以烧录器会不认识此颗IC。

如在Option菜单中将Check ID的选择去掉,这样在今后的烧录过程中,烧录程序就不会再去Check IC里面的ID信息;如果是脱机烧录模式的话,请将HT-Writer背面的DIP开关的DIP1拨为OFF,这样在脱机烧录的时候,就不会去Check IC里面的ID信息了。


Question 8

请问MCU的Reset 与Oscillator线路设计有无需注意事项?

Answer

请参阅 "应用范例" 网页,其中的 "HA0075S" 供使用者参考。


其它

 

Question 1

Cost-Effective I/O MCU的ESD及Latch-up能力如何?

Answer

Cost-Effective I/O MCU为适合在工业产品使用;在ESD和Latch-up特别加强。
在ESD方面;依据美国军方标准MIL-STD-883E 3015.7;采用人体放电模式测试;每一I/O脚皆超过正负5KV以上。

在Latch-up方面;依据JEDEC-NO.17标准,采用Current Mode方式测试,每一I/O脚皆超过正负100mA以上。


Question 2

没有用到的I/O Pin如何处理?

Answer

若不用之I/O Pin浮接时,会造成IC的耗电,最好的处理方式就是将不用的I/O Pin设定成Output Pin。如果要设成Input Pin则要选择Pull-high 电阻,如果不选用Pull-high电阻,则将Pin脚接地。


Question 3

当系统时钟选择RC振荡器时,频率误差为何?

Answer

当系统时钟选择RC振荡器时,由于制程的因素造成的每个批号频率误差为±20%。假如外加电阻之误差为±5%,那么总频率误差就是±25%。


Question 4

使用Assembly Directives之MACRO,可否节省Program memory之空间,对MCU之执行速度有何影响?

Answer

在Assemble后MACRO所属指令将填入Program space,故对Program memory之空间和MCU之执行速度没有影响,但其使的程序简化,容易维护。


Question 5

HT MCU具有LVR功能,它动作时,MCU的I/O、OSC等管脚处于何种状态?

Answer

当电压低于低电压复位电压时,此时LVR启动。

当最小工作电压<Vdd<低电压复位电压时,I/O口处于初始输入状态,OSC起振。

LVR的复位电压会因制程的不同有一定漂移,具体请参看相关的Datasheet的D.C.参数表格。


Question 6

LVR启动时和RES PIN 拉低有何区别?

Answer

区别在于:当低电压复位电压>Vdd>最小工作电压时,
若开启LVR,则OSC起振;
若让RES PIN 拉低,则OSC停振。


Question 7

请问要如何以C语言读取OTP WRITER烧入IC之序号?

Answer

在C语言中须以Inline assembly来读取OTP WRITER烧入IC之序号, 程序范例如下:

首先, 宣告一变量并指定 ram 地址
unsigned long series_num @0x80;

然后, 将 serial number 读入此 variable, 方法如下:

#asm
tblp equ [07h] ; define table address
mov a,20h
mov tblp,a  ; set table pointer to 20h (series number at 20h of last page)
tabrdl [80h]  ; load first byte of series number to series_num (0x80h);
inc tblp
tabrdl [81h]  ; second byte of series number
inc tblp
tabrdl [82h]  ; third byte of series number
inc tblp
tabrdl [83h]  ; fourth byte of series number
#endasm

Question 8

用HT46/HT47/HT48/HT49系列单片机的BZ/BZB功能时感觉声音不够响亮,该怎么办?

Answer

BZ/BZB的输出频率要与蜂鸣器的频率对应,每种蜂鸣器都有各自的中心频率,设置的频率要尽量靠近中心频率。如果蜂鸣器直接接在BZ,BZB两个管脚,那么这两个管脚对应的IO口都要设成输出。


Question 9

如果要进行I/O口远距离通讯等应用,I/O口是否需要外接保护器件?

Answer

I/O口采用斯密特输入,并且内部有对VDD和VSS的保护二极管,因此它的抗干扰能力比较强的,但是为了避免静电等强干扰源,建议在I/O口上串联一个电阻为好。


Question 10

当芯片内部的程序空间没有被写满时,如何处理空余的程序空间?

Answer

为了保证程序运行的可靠性,防止程序乱跑之后跳入未编程的ROM空间,建议将所有的空余程序空间全部写JMP 00H ,机器代码是2800H。这样一旦程序跑到空余程序空间,也会马上跳到程序开头执行,避免程序跑错。


Question 11

如何得知编译后总程序占多少空间?

Answer

可以打开.map文件来观看具体的ROM使用情况。.map文件和.prj文件在同一个目录下。如果找不到这个文件,请在编译程序前,打开HT-IDE3000中的菜单"选项-〉项目",在弹出的对话框中,选中"产生映射文件",然后再编译程序就会自动产出.map文件了。


Question 12

C语言编写的代码中,用include包含另一个档,为何用IDE3000编译时在被包含档的结尾处会提示出错?

Answer

当IDE3000导入用非IDE3000的文字编辑工具(如UltraEdit-32)所编写的程序时,如果代码的有效字符后面紧跟着EOF(档结束旗标)的话,在编译时档的结尾处就可能会提示出错。