世纪芯反向技术研究中心自成立以来一直专注于 PCB抄板 与设计... [详细]
放进一个模块,再用指针来存取它们。比如,本来可用下面语句打印提示:
printf("PressStoStart");
printf("PerssQtoQuit");
若程序中有许多类似的语句,便可能存在较多重复串。要是对各子串都用指针访问,编译就会把其中重复的串(如Press,to等)合并,省下不少内存空间。即把上面语句改为:
printf("%s%s%s%s","Press","S","to","Start") ;
printf("%s%s%s%s","Perss","Q","to","Quit");
6。2 标准I/O函数的使用
用C语言编写嵌入式程序的过程与DOS下一样,只是要避免使用不能被固化到 ROM中的库函数。在DOS下,许多低级I/O函数(如putch,getch) 均通过DOS中断21与硬件接口,高级函数printf,scanf等也使用该中断。若希望在无ROMBIOS的系统上使用这些函数,应编写一个模仿 DOSINT21的函数,这样便能使用除磁盘I/O函之外的大多数标准I/O 函数,缩短程序开发时间,并保证较好的可移植性。当然,如果使用的是现成的嵌入式系统开发软件包,厂商将告知哪些函数可被固化进ROM,不必自己编写INT21函数。
编写嵌入式支持函数时要防止使用与DOS有关的库函数。比较起来,BC提供 的库比MSC的更独立于DOS。例如,MSC的printf函数要依赖几个低级 的DOS函数。所以在仿真INT21的控制台I/O函数时,建议用BC的 printf函数。
6。3 配置参数的保护
断电时,嵌入式系统应能保持那些用于系统恢复或外设配置的数据,可用电池供 电的RAM或EEPROM来存放它们。但在复位时,启动程序要把有初值的变量复 制进RAM,并对其余RAM区清0,结果会清除应保持的数据。为此,可把这类数据归入一个专门段,不包括在初始化和未初始化数据区中,不让启动程序修改它们。
|