修改Keil C程序代码字体为微软雅黑及Keil C光标定位不准的解决办法
C51-keil编译常见错误和警告处理
keil错误C51编译器识别错类型有三种1、致命错误:伪指令控制行有错,访问不存在的原文件或头文件等。
2、语法及语义错误:语法和语义错误都发生在原文件中。
有这类错误时,给出提示但不产生目标文件,错误超过一定数量才终止编译。
3、警告:警告出现并不影响目标文件的产生,但执行时有可能发生问题。
程序员应斟酌处理。
D.1 致命错误C_51 FATAL_ERRORACTION: <当前行为>LINE: <错误所在行>ERROR: <错误信息> terminated或C_51 FA TAL ERRORACTION: <当前行为>FILE: <错误所在文件>ERROR: <错误信息> terminatedC_51 TERMINATED C_51(1) ACTION 的有关信息*PARSING INVOKE-/#PRAGMA_LINE在对#pragma 指明的控制行作此法分析时出错。
*ALLOCATING MEMORY系统分配存储空间时出错。
编译较大程序需要512k空间。
*OPENING INPUT_FILE打开文件时,未找到或打不开源文件/头文件。
*CREATE LIST_FILE/OBJECT_FILE/WORK_FILE不能创建上述文件。
可能磁盘满或文件已存在而且写保护。
*PARSING SOURCE_FILE/ANALYZING DECLARATIONS分析源程序时发现外部引用名太多。
*GENERATING INTERMEDIATE CODE源代码被翻译成内部伪代码,错误可能来源于函数太大而超过内部极限。
*WRITING TO FILE在向文件(work,list,prelist或object file)写时发生错误。
(2)ERROR的有关信息*MEMORY SPACE EXHAUSTED所有可用系统空间耗尽。
至少需要512k 字节空间。
修改Keil C程序代码字体为微软雅黑及Keil C光标定位不准的解决办法
修改Keil C程序代码字体为微软雅黑及Keil C光标定位不准的解决办法修改keil C程序代码字体:常规设置:在keil C的菜单栏中,点击Edit,选择最下面的onfiguration...,进入之后点击Colors&Fonts标签,然后选中自己想要修改字体的项目,比如C 文件的程序代码,那么我们选择8051:Editor C Files,然后再在它的右边窗口选中Text,修改旁边的字体即可。
上面的常规设置人人都会,但是,这里面只有几个字体,如果我们不喜欢这些字体想把C语言程序代码和汇编语言程序代码的字体换成其他字体呢?例如微软雅黑,方法也是有的:进入keil C的安装目录,在UV3目录下面用记事本打开A51.ini(这是汇编语言代码的)和C51.ini(这是C语言代码的),将[Font]FaceName =XXXXSize =12Italic =0Bold =0中FaceName=XXXX后面的字体名字修改为自己系统里面已经安装存在的字体名字即可,例如修改为FaceName=微软雅黑。
当然,字体大小,斜体,加粗这些也是可以修改的,修改Size=12后面的数字就是字体大小,修改Italic=0为1就是变成斜体,修改Bold=0为1就是字体加粗。
更多东西可以自己揣摩A51.ini和C51.ini里面的代码。
重新打开keil C看看程序代码,是不是变成有雅黑字体了呢?雅黑字体看起来更舒服。
当然,还有,很多人会发现,keil C经常出现光标没法准确定位位置,这个对不准位置的问题也还是很好解决的,方法就是用记事本打开keil C安装目录下面的TOOLS.ini,在[UV2]ORGANIZATION="xhu"NAME="chuan", "huang"EMAIL="xhu"BOOK0=UV3\RELEASE_NOTES.HTM("uVision Release Notes",GEN)添加一行代码“ANSI=1”即可。
keilc语言编程常见错误分析
keilc语⾔编程常见错误分析1. Warning 280:’i’:unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决⽅法消除函数中i 变量的宣告及即定义的参数在程序中并未调⽤2 Warning 206:’Music3’:missing function-prototype说明Music3( )函数未作宣告或未作外部宣告所以⽆法给其他函数调⽤解决⽅法将叙述void Music3(void)写在程序的最前端作宣告如果是其他⽂件的函数则要写成extern void Music3(void),即作外部宣告3Error:318:can’t open file ‘beep.h’说明在编译C:\8051\MANN.C 程序过程中由于main.c ⽤了指令#i nclude “beep.h”,但却找不到所致解决⽅法编写⼀个beep.h 的包含档并存⼊到c:\8051 的⼯作⽬录中4 Error 237:’LedOn’:function already has a body说明LedOn( )函数名称重复定义即有两个以上⼀样的函数名称解决⽅法修正其中的⼀个函数名称使得函数名称都是独⽴的5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调⽤也会占⽤程序记忆体空间解决⽅法去掉DelayX1ms( )函数或利⽤条件编译#if …..#endif,可保留该函数并不编译6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H说明外部资料ROM 的0025H 重复定义地址解决⽅法外部资料ROM 的定义如下Pdata unsigned charXFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:’DelayX1ms’: missing function-prototype C:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototypeC:\8051\INPUT.C说明程序中有调⽤DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决⽅法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调⽤8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL SYMBOL:MUSIC3解决办法:1.是⽂件没有添加到⼯程⾥。
KEIL软件错误代码与错误信息
错误代码及错误信息错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Error in real constant 实型常量错误error 7: Error in integer constant 整型常量错误error 8: String constant exceeds line 字符串常量超过一行error 10: Unexpected end of file 文件非正常结束error 11: Line too long 行太长error 12: Type identifier expected 未定义的类型标识符error 13: Too many open files 打开文件太多error 14: Invalid file name 无效的文件名error 15: File not found 文件未找到error 16: Disk full 磁盘满error 17: Invalid compiler directive 无效的编译命令error 18: Too many files 文件太多error 19: Undefined type in pointer def 指针定义中未定义类型error 20: Variable identifier expected 缺变量标识符error 21: Error in type 类型错误error 22: Structure too large 结构类型太长error 23: Set base type out of range 集合基类型越界error 24: File components may not be files or objectsfile分量不能是文件或对象error 25: Invalid string length 无效的字符串长度error 26: Type mismatch 类型不匹配error 27:error 27:Invalid subrange base type 无效的子界基类型error 28:Lower bound greater than upper bound 下界超过上界error 29:Ordinal type expected 缺有序类型error 30:Integer constant expected 缺整型常量error 31:Constant expected 缺常量error 32:Integer or real constant expected 缺整型或实型常量error 33:Pointer Type identifier expected 缺指针类型标识符error 34:Invalid function result type 无效的函数结果类型error 35:Label identifier expected 缺标号标识符error 36:BEGIN expected 缺BEGINerror 37:END expected 缺ENDerror 38:Integer expression expected 缺整型表达式error 39:Ordinal expression expected 缺有序类型表达式error 40:Boolean expression expected 缺布尔表达式error 41:Operand types do not match 操作数类型不匹配error 42:Error in expression 表达式错误error 43:Illegal assignment 非法赋值error 44:Field identifier expected 缺域标识符error 45:Object file too large 目标文件太大error 46:Undefined external 未定义的外部过程与函数error 47:Invalid object file record 无效的OBJ文件格式error 48:Code segment too large 代码段太长error 49:Data segment too large 数据段太长error 50:DO expected 缺DOerror 51:Invalid PUBLIC definition 无效的PUBLIC定义error 52:Invalid EXTRN definition 无效的EXTRN定义error 53: Too many EXTRN definitions 太多的EXTRN定义error 54:OF expected 缺OFerror 55:INTERFACE expected 缺INTERFACEerror 56:Invalid relocatable reference 无效的可重定位引用error 57:THEN expected 缺THENerror 58:TO or DOWNTO expected 缺TO或DOWNTOerror 59:Undefined forward 提前引用未经定义的说明error 61:Invalid typecast 无效的类型转换error 62:Division by zero 被零除error 63:Invalid file type 无效的文件类型error 64:Cannot read or write variables of this type 不能读写此类型变量error 65:Pointer variable expected 缺指针类型变量error 66:String variable expected 缺字符串变量error 67:String expression expected 缺字符串表达式error 68:Circular unit reference 单元UNIT部件循环引用error 69:Unit name mismatch 单元名不匹配error 70:Unit version mismatch 单元版本不匹配error 71:Internal stack overflow 内部堆栈溢出error 72:Unit file format error 单元文件格式错误error 73:IMPLEMENTATION expected 缺IMPLEMENTATIONerror 74:Constant and case types do not match 常量和CASE类型不匹配error 75:Record or object variable expected 缺记录或对象变量error 76:Constant out of range 常量越界error 77:File variable expected 缺文件变量error 78:Pointer expression expected 缺指针表达式error 79:Integer or real expression expected 缺整型或实型表达式error 80:Label not within current block 标号不在当前块内error 81:Label already defined 标号已定义error 82:Undefined label in preceding statement part 在前面未定义标号error 83:Invalid @ argument 无效的@参数error 84:UNIT expected 缺UNITerror 85: ";" expected 缺";"error 86: ":" expected 缺":"error 87: "," expected 缺","error 88: "<" expected 缺"〔"error 89: ">" expected 缺""error 90: "=" expected 缺"="error 91: ":=" expected 缺":="error 92: "[" or "<." Expected 缺"["或"〔."error 93: "]" or ".>" expected 缺"]"或"."error 94: "." expected 缺"."error 95: ".." expected 缺".."error 96:Too many variables 变量太多error 97:Invalid FOR control variable 无效的FOR循环控制变量error 98:Integer variable expected 缺整型变量error 99:Files and procedure types are not allowed here 该处不允许文件和过程类型error 100:String length mismatch 字符串长度不匹配error 101:Invalid ordering of fields 无效域顺序error 102:String constant expected 缺字符串常量error 103:Integer or real variable expected 缺整型或实型变量error 104:Ordinal variable expected 缺有序类型变量error 105:INLINE error INLINE错误error 106:Character expression expected 缺字符表达式error 107:Too many relocation items 重定位项太多error 108:Overflow in arithmetic operation 算术运算溢出error 112:CASE constant out of range CASE常量越界error 113:Error in statement 表达式错误error 114:Cannot call an interrupt procedure 不能调用中断过程error 116:Must be in 8087 mode to compile this 必须在8087模式编译error 117:Target address not found 找不到目标地址error 118:Include files are not allowed here 该处不允许INCLUDE文件error 119:No inherited methods are accessible here 该处继承方法不可访问error 121:Invalid qualifier 无效的限定符error 122:Invalid variable reference 无效的变量引用error 123:Too many symbols 符号太多error 124:Statement part too large 语句体太长error 126:Files must be var parameters 文件必须是变量形参error 127:Too many conditional symbols 条件符号太多error 128:Misplaced conditional directive 条件指令错位error 129:ENDIF directive missing 缺ENDIF指令error 130:Error in initial conditional defines 初始条件定义错误error 131:Header does not match previous definition 和前面定义的过程或函数不匹配error 133:Cannot evaluate this expression 不能计算该表达式error 134:Expression incorrectly terminated 表达式错误结束error 135:Invalid format specifier 无效格式说明符error 136:Invalid indirect reference 无效的间接引用error 137:Structured variables are not allowed here 该处不允许结构变量error 138:Cannot evaluate without System unit 没有System单元不能计算error 139:Cannot access this symbol 不能存取符号error 140:Invalid floating point operation 无效的符号运算error 141:Cannot compile overlays to memory 不能编译覆盖模块至内存error 142:Pointer or procedural variable expected 缺指针或过程变量error 143:Invalid procedure or function reference 无效的过程或函数调用error 144:Cannot overlay this unit 不能覆盖该单元error 146:File access denied 不允许文件访问error 147:Object type expected 缺对象类型error 148:Local object types are not allowed 不允许局部对象类型error 149:VIRTUAL expected 缺VIRTUALerror 150: Method identifier expected 缺方法标识符error 151:Virtual constructors are not allowed 不允许虚构造函数error 152:Constructor identifier expected 缺构造函数标识符error 153:Destructor identifier expected 缺析构函数标识符error 154:Fail only allowed within constructors 只能在构造函数内使用Fail标准过程error 155:Invalid combination of opcode and operands 操作数与操作符无效组合error 156:Memory reference expected 缺内存引用指针error 157:Cannot add or subtract relocatable symbols 不能加减可重定位符号error 158:Invalid register combination 无效寄存器组合error 159:286/287 instructions are not enabled 未激活286/287指令error 160:Invalid symbol reference 无效符号指针error 161:Code generation error 代码生成错误error 162:ASM expected 缺ASMerror 166:Procedure or function identifier expected 缺过程或函数标识符error 167:Cannot export this symbol 不能输出该符号error 168:Duplicate export name 外部文件名重复error 169:Executable file header too large 可执行文件头太长error 170:Too many segments 段太多一、运行错误信息运行错误分为四类:1-99为DOS错误;100-149为I/O错误,发生I/O后,如果使用了编译开关{$I+},程序将终止执行,否则编译开关为{$I-},程序继续执行,并由IOResult函数返回错误信息; 150-199为严重错误,200-255为致命错误,致命错误将立即终止程序执行。
keil文字显示处理办法
1、keil 4中注释时,为什么不能打进汉字,都是方框?
方法:Edit -> Configuration,点击Colors & Fonts选项卡,在Window列表中选择Editor C Files,在右侧选择字体Courier,Use color in Comments 不能打钩.
显示效果如下:
1、操作前:
如果后面注释的黑线是方框,操作一样,但要适当改变字体(eg:宋体、新宋体都行)。
2、操作后显示效果:
2、改变关键字颜色:
方法:Edit -> Configuration->Colors & Fonts->Editor C Files->keyword->选择foreground为任意你想要的颜色(蓝色)。
显示效果如下:
3、当前操作行底纹颜色和选中文字颜色设置:(1)当前工作行底纹和选中其文字设置:
显示效果:
(2)当前选中文字颜色和底纹显示:
显示效果:
4、程序中空格显示为一点,如下图:
解决办法:
修改后显示效果:
5、没有程序行数框架显示,如下图:
操作方法:
操作后显示结果:
其它操作方式基本类似,均可进行相应操作,达到自己想要的结果。
以上均是个人操作经验,均已被验证可行后才分享给大家的,也愿大家相互补充,使其所有操作更加完整,使更多得人学好keil,更希望你们的分享。
ZJK 2012.11.03
QQ:459576729。
keil程序注释乱码的解决方法
keil程序注释乱码的解决方法Keil程序注释乱码可能是由于编码格式不一致或者软件版本不兼容等原因引起的。
如果不及时解决,会给程序员带来很大的困扰和时间浪费。
下面就为大家介绍一些解决方法,希望对大家有所帮助。
1. 确认编码格式注释乱码与编码格式有关,因此首先要确认程序源码和注释的编码格式是否一致。
如果不一致,就会导致注释乱码的问题。
一般情况下,程序员常用的编码格式是UTF-8或者ANSI,因此需要将注释的编码格式设置为与程序源码一致,才能避免乱码。
2. 修改软件设置有些情况下,程序员可能会遇到Keil版本不兼容的问题,导致注释乱码。
这时候可以考虑修改软件设置,使用其他兼容的版本。
具体方法是在Keil软件中打开“工具-选项”,找到“编辑器”,然后将“字符集”设置为程序源码所使用的编码格式,最后重新打开程序文件即可。
3. 调整字体如果程序源码和注释的编码格式已经一致,而且Keil软件版本也正确,但是注释还是显示乱码,那就需要考虑调整字体。
可能是因为当前字体不支持所使用的字符集,需要更换其他字体。
具体方法是在Keil软件中打开“工具-选项”,找到“编辑器”,然后在“字体”选项中选择支持当前编码格式的字体即可。
总结在Keil程序中遇到注释乱码问题是比较常见的情况,但是只要正确的解决方法,就能轻松应对。
需要注意的是,在编写程序的过程中,要始终保持编码格式的一致性,这样才能有效避免注释乱码的问题的发生。
同时,在软件设置和字体调整方面也要仔细处理,以保证注释能够正确的呈现出来。
希望这些方法能够帮助到大家,让大家在编程中更加得心应手。
KEIL中文显示问题和光标对不准和自定义关键字设为keil识别的关键字
KEIL中文显示问题,光标对不准这是因为在keil中对显示设置的问题,在默认的设置中EDIT->Configutation->Colors & Fonts->8051:Editor c Files中,
将Keyword和Identifier设置为加粗了的,加粗了之后了在显示中并不能同步移动光标,这就导致有光标对不起的情况,将里面所有的配置(图标中3所示)全部Style改为Normal就能解决这个问题了。
而且可以根据自己对颜色的喜欢在图标4所示中设定不同的颜色。
在KEIL中还可以自己定义Keywords,也在EDIT->Configutation->User Keywords,在方框中加入要添加的关键字
就可以了
列子中加的uchar(#define uchar unsigned char);这样就可以解决自己定义的关键字无颜色变化的问题。
C语言技术的调试技巧——快速定位与修复错误
C语言技术的调试技巧——快速定位与修复错误在编写C语言程序时,出现错误是难以避免的。
调试是程序开发过程中不可或缺的一环,它可以帮助开发人员定位和修复错误。
本文将介绍一些C语言技术的调试技巧,帮助读者快速定位和修复错误。
一、使用调试器调试器是程序开发中最常用的工具之一。
它可以让开发人员逐行执行代码,查看变量的值,跟踪程序的执行流程。
通过使用调试器,开发人员可以更容易地找到程序中的错误。
在C语言中,常用的调试器有GDB和LLDB。
使用调试器的第一步是在编译时添加调试信息。
在GCC编译器中,可以通过添加"-g"选项来生成调试信息。
例如,使用以下命令编译一个名为"example.c"的源文件:gcc -g example.c -o example编译完成后,可以使用调试器来执行程序。
在命令行中输入调试器的名称,后跟可执行文件的路径,即可启动调试器。
例如,使用GDB调试上述编译得到的可执行文件:gdb ./example调试器启动后,可以使用一系列命令来控制程序的执行。
常用的命令包括"run"(运行程序),"break"(设置断点),"next"(执行下一行代码),"print"(打印变量的值)等。
通过逐行执行代码,查看变量的值,可以更好地理解程序的执行过程,找到错误所在。
二、使用输出语句除了调试器,输出语句也是调试程序的常用方法之一。
通过在程序中插入输出语句,可以查看程序在运行时的状态,帮助开发人员定位错误。
在C语言中,可以使用printf函数来输出调试信息。
通过在程序中适当的位置插入printf语句,可以打印变量的值、程序的执行流程等信息。
例如,在以下代码中,我们可以使用printf语句来输出变量x的值:int x = 10;printf("x的值为:%d\n", x);通过查看输出结果,可以判断程序在运行时是否出现了错误。
C语言技术的调试技巧——快速定位与修复错误
C语言技术的调试技巧——快速定位与修复错误C语言作为一种强大且广泛应用的编程语言,常常会遇到各种各样的bug和错误。
对于程序员来说,调试是一个必不可少的技能。
本文将介绍一些C语言调试的技巧,帮助程序员们能够快速地定位和修复错误。
一、使用调试器使用调试器是调试C语言程序的最有效和常用的方法之一。
在大多数集成开发环境(IDE)中,都内置了调试器工具。
调试器可以让程序一步一步地执行,观察程序运行状态,检查变量的值和程序流程。
当程序出现错误时,可以通过调试器来查找错误的源头,并做出相应的修改。
常用的调试器有GDB(GNU调试器)和Visual Studio调试器。
二、输出调试信息在调试过程中,输出调试信息是一种非常有效的方法。
通过在程序中插入一些输出语句,可以观察程序运行到哪一步,并输出相关变量的值。
这些调试信息可以帮助程序员快速定位错误,并判断某些变量是否符合预期。
一般来说,可以使用printf函数来输出调试信息,但要注意在程序发布前删除或注释掉这些输出语句,以避免对程序性能造成负面影响。
三、利用断言断言(Assertion)是一种在程序中加入的检查语句,用于判断某个条件是否满足。
如果条件为真,程序将继续执行;如果条件为假,程序将中断执行并输出相应的错误信息。
在C语言中,可以使用assert宏来实现断言机制。
通过在关键位置添加断言语句,可以在程序运行时自动检查错误条件,提供即时的错误信息。
断言是一种非常有效的调试手段,在开发和测试阶段广泛应用。
四、逐步检查代码当程序出现错误时,逐步检查代码是一种常用的调试方法。
可以从程序的起点开始,逐行或逐块地检查代码,观察变量的变化和程序的执行流程。
通过逐步检查,可以发现代码中存在的逻辑错误、语法错误和数据错误,并及时进行修复。
这种方法特别适用于程序较小且结构清晰的情况下,但对于复杂的程序可能会比较耗时。
五、使用合适的数据结构选择合适的数据结构是提高程序可读性和可维护性的重要因素之一。
keil的光标与显示问题
keil的光标与显示问题一:光标问题Keil uv3 中会出现光标定位不准的问题,对程序员来说是个很大的困扰修改方法:打开Keil文件夹下的Tool.ini文件做如下修改NAME="User", "w"EMAIL="a"ANSI=1 <--在这个地方添加这条语句BOOK0="UV3\RELEASE_NOTES.HTM" ("uVision Release Notes",GEN)二:在中文操作系统上keil的IDE界面标题栏和about对话框上的uVision会显示成“礦ision”,看起来很不舒服,用下面的方法就可以和“礦ision”说拜拜了!1 用ultraedit打开uv3目录下的uv3.exe文件2 在edit->replace中的find what栏中输入“B5 56 69 73 69 6F 6E”,这是“礦ision”的ascii码串3 在edit->replace中的replace with栏中输入“75 56 69 73 69 6F 6E”,这是“uVision”的ascii码串4 点replace all5 保存推出,再打开uv3.exe看看吧三:汉字问题输入的汉字也总觉得看着不爽,查看后发现是设置问题,如下改变后,即美观:Edit->Configuration->Color&Fonts->8051:Editor Asm Files(汇编语言编辑器,相应的选择其他项便可设置其他)-Text->点击font后的按钮,选择中文字体(如仿宋)->ok,问题解决。
Keil C51汉字显示的bug问题
Keil C51汉字显示的bug问题(0xFD问题)Keil C51汉字显示的bug问题一、缘起这两天改进MCU的液晶显示方法,采用“即编即显”的思路,编写了一个可以直接显示字符串的程序。
如程序调用disstr("我是你老爸");液晶屏上就会显示“我是你老爸”。
二、问题但是,花了1天多时间辛辛苦苦改好的程序后,却发现有些汉字显示有问题。
比如:P1:在第一行显示“实时参数”,第二行显示“工作状态”,实际上“工作状态”却重复显示了,除了在正确的地方显示外,还在“实时参数”后显示了。
P2:"正"字后若有":",则都显示成乱码。
如果后面没有":",则"正"字可正确显示,但是后面却显示了后面的一行字。
P3:"过"字总显示乱码;三、求索通过调试发现,上述汉字显示不正常的时候,是因为在字库中找不到匹配的汉字。
可是,自建的字库中明明有这些汉字,而且"数","正"字在后面无字符的时候是显示正确的啊!问题找了好久,怀疑传参类型不对,汉字查找可能溢出等,反复修改,总是无法解决问题,而且从现象来思考,都不应该是这些问题。
今日灵光一现:为什么不在传递字符串后显示该字符串的变量值呢?经过详细研究,西文字符在传递时应该是ACSII值,一个字节,数值小于128;而汉字传递的是其机内码,分高低2个字节,2个字节都大于127,当然并小于256。
字符串传递参数值一显示,可不得了。
其惊人之处有:1."数","正","过"正确显示时其传参值为:0xca00,0xd500,0xb900;而其正确的机内码应该是:0xca fd,0xd5fd,0xb9fd。
看来其低位字节被无情忽视。
2."数","正","过"单独显示正确,但是后面带一个字符或汉字就显示乱码了。
解决keil不能设置字体和颜色的问题
很多朋友都在想,怎么让keil C51与ARM能够并存利用。
有安装经验的朋友都知道,安好C51后再安ARm,C51不能正常工作;安好ARM后再安C51,ARM不能正常工作.网上也有相关解决办法,不过不怎么样,要么不详细,要么就是复制粘贴。
不多说看图片:我想大家必然发现问题了,就是在c51的编译器等目录下面没有他的目标路径而arm有,所以他肯定会提示工具不匹配之类的问题。
解决方式很简单,按照ARM的样子也写个路径就OK了,第一:先安装C51(必需先安装C51,不能先安装ARM,不然会失败。
)第二:安装keil ARM(不能安装在同一个文件夹下)我当前安装的是mdk第三:打开keil c51和keil arm 两个文件夹,别离找到别离打开两个“”,将keil C51文件夹下的文件中[C51]段复制到keil ARM中文件的最后;将keil ARM文件夹下的文件中[ARM]段复制到keil C51中文件的最后:-->keil ARM[UV2]ORGANIZATION="小川电子工作室"NAME="小川电子工作室", "小川电子工作室"EMAIL=""ARMSEL=1BOOK0=UV4\("uVision Release Notes",GEN)[ARM]PATH="D:\Keil ARM\ARM\"VERSION=PATH1="C:\Program Files\arm-none-eabi-gcc-4_6\"TOOLPREFIX=arm-none-eabi-CPUDLL0=(TDRV0,TDRV5,TDRV6,TDRV10) # Drivers for ARM7/9 devices CPUDLL1=(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9,TDRV11,TDR V12,TDRV13) # Drivers for Cortex-M devicesCPUDLL2=(TDRV7) # Drivers for Cortex-R4 devicesBOOK0=HLP\("Release Notes",GEN)BOOK1=HLP\("Complete User's Guide Selection",C)BOOK2=HLP\("RL-ARM Release Notes",GEN)BOOK3=CMSIS\("CMSIS Documentation",GEN)TDRV0=BIN\("ULINK2/ME ARM Debugger")TDRV1=BIN\("ULINK2/ME Cortex Debugger")TDRV2=BIN\("RDI Interface Driver")TDRV3=BIN\("Altera Blaster Cortex Debugger")TDRV4=BIN\("Stellaris ICDI")TDRV5=Signum\("Signum Systems JTAGjet")TDRV6=Segger\("J-LINK / J-TRACE")TDRV7=Segger\("Cortex-M/R J-LINK/J-Trace")TDRV8=STLink\ ("ST-Link (Deprecated Version)")TDRV9=BIN\("ULINK Pro Cortex Debugger")TDRV10=BIN\("ULINK Pro ARM Debugger")TDRV11=NULink\("NULink Debugger")TDRV12=SiLabs\("SiLabs UDA Debugger")TDRV13=STLink\ ("ST-Link Debugger")DELDRVPKG0=ULINK\("ULINK Pro Driver ")LIC0=ZB48T-RRRXD-GJE6P-M4J11-65JI1-GHTPNBOOK4=Signum\Docs\("Signum Systems JTAGjet Driver Documentation",GEN) [ARMADS]PATH="D:\Keil ARM\ARM\"PATH1="BIN40\"CPUDLL0=(TDRV0,TDRV5,TDRV6,TDRV10) # Drivers for ARM7/9 devices CPUDLL1=(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9,TDRV11,TDR V12,TDRV13) # Drivers for Cortex-M devicesCPUDLL2=(TDRV7) # Drivers for Cortex-R4 devicesBOOK0=HLP\("Release Notes",GEN)BOOK1=HLP\("Complete User's Guide Selection",C)BOOK2=HLP\("RL-ARM Release Notes",GEN)BOOK3=CMSIS\("CMSIS Documentation",GEN)BOOK4=Signum\Docs\("Signum Systems JTAGjet Driver Documentation",GEN) TDRV0=BIN\("ULINK2/ME ARM Debugger")TDRV1=BIN\("ULINK2/ME Cortex Debugger")TDRV2=BIN\("RDI Interface Driver")TDRV3=BIN\("Altera Blaster Cortex Debugger")TDRV4=BIN\("Stellaris ICDI")TDRV5=Signum\("Signum Systems JTAGjet") TDRV6=Segger\("J-LINK / J-TRACE")TDRV7=Segger\("Cortex-M/R J-LINK/J-Trace") TDRV8=STLink\ ("ST-Link (Deprecated Version)") TDRV9=BIN\("ULINK Pro Cortex Debugger") TDRV10=BIN\("ULINK Pro ARM Debugger") TDRV11=NULink\("NULink Debugger")TDRV12=SiLabs\("SiLabs UDA Debugger")TDRV13=STLink\ ("ST-Link Debugger")RTOS0=("Dummy")RTOS1= ("RTX Kernel")DELDRVPKG0=ULINK\("ULINK Pro Driver ")[C51]PATH="D:\Keil C51\C51\"VERSION=BOOK0=HLP\("Release Notes",GEN)BOOK1=HLP\("Complete User's Guide Selection",C) TDRV0=BIN\ ("Keil Monitor-51 Driver")TDRV1=BIN\ ("Keil ISD51 In-System Debugger") TDRV2=BIN\ ("MON390: Dallas Contiguous Mode") TDRV3=BIN\ ("LPC900 EPM Emulator/Programmer") TDRV4=BIN\ ("ST-uPSD ULINK Driver")TDRV5=BIN\ ("Infineon XC800 ULINK Driver") TDRV6=BIN\ ("ADI Monitor Driver")TDRV7=BIN\ ("Infineon DAS Client for XC800") TDRV8=BIN\ ("NXP LPC95x ULINK Driver")RTOS0=("Dummy")RTOS1= ("RTX-51 Tiny")RTOS2= ("RTX-51 Full")LIC0=EXTEV-PIY1M-WN1AF-6K3HK-DRA7Y-FBXVW keil-->c51[UV2]ORGANIZATION="小川工作室"NAME="王川北", "111"EMAIL="111"BOOK0=UV4\("uVision Release Notes",GEN)[C51]PATH="D:\Keil C51\C51\"VERSION=BOOK0=HLP\("Release Notes",GEN)BOOK1=HLP\("Complete User's Guide Selection",C) TDRV0=BIN\ ("Keil Monitor-51 Driver")TDRV1=BIN\ ("Keil ISD51 In-System Debugger") TDRV2=BIN\ ("MON390: Dallas Contiguous Mode")TDRV3=BIN\ ("LPC900 EPM Emulator/Programmer")TDRV4=BIN\ ("ST-uPSD ULINK Driver")TDRV5=BIN\ ("Infineon XC800 ULINK Driver")TDRV6=BIN\ ("ADI Monitor Driver")TDRV7=BIN\ ("Infineon DAS Client for XC800")TDRV8=BIN\ ("NXP LPC95x ULINK Driver")RTOS0=("Dummy")RTOS1= ("RTX-51 Tiny")RTOS2= ("RTX-51 Full")LIC0=8V02Z-JIX83-09VG9-4M1JI-YKSD6-5KBQ3[ARM]PATH="D:\Keil ARM\ARM\"VERSION=PATH1="C:\Program Files\arm-none-eabi-gcc-4_6\"TOOLPREFIX=arm-none-eabi-CPUDLL0=(TDRV0,TDRV5,TDRV6,TDRV10) # Drivers for ARM7/9 devices CPUDLL1=(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9,TDRV11,TDR V12,TDRV13) # Drivers for Cortex-M devicesCPUDLL2=(TDRV7) # Drivers for Cortex-R4 devicesBOOK0=HLP\("Release Notes",GEN)BOOK1=HLP\("Complete User's Guide Selection",C)BOOK2=HLP\("RL-ARM Release Notes",GEN)BOOK3=CMSIS\("CMSIS Documentation",GEN)BOOK4=Signum\Docs\("Signum Systems JTAGjet Driver Documentation",GEN) TDRV0=BIN\("ULINK2/ME ARM Debugger")TDRV1=BIN\("ULINK2/ME Cortex Debugger")TDRV2=BIN\("RDI Interface Driver")TDRV3=BIN\("Altera Blaster Cortex Debugger")TDRV4=BIN\("Stellaris ICDI")TDRV5=Signum\("Signum Systems JTAGjet")TDRV6=Segger\("J-LINK / J-TRACE")TDRV7=Segger\("Cortex-M/R J-LINK/J-Trace")TDRV8=STLink\ ("ST-Link (Deprecated Version)")TDRV9=BIN\("ULINK Pro Cortex Debugger")TDRV10=BIN\("ULINK Pro ARM Debugger")TDRV11=NULink\("NULink Debugger")TDRV12=SiLabs\("SiLabs UDA Debugger")TDRV13=STLink\ ("ST-Link Debugger")DELDRVPKG0=ULINK\("ULINK Pro Driver ")LIC0=UJWBS-LNGB0-8FWIE-5N2GJ-UKXD9-NTBGM[ARMADS]PATH="D:\Keil ARM\ARM\"PATH1="BIN40\"CPUDLL0=(TDRV0,TDRV5,TDRV6,TDRV10) # Drivers for ARM7/9 devicesCPUDLL1=(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9,TDRV11,TDR V12,TDRV13) # Drivers for Cortex-M devicesCPUDLL2=(TDRV7) # Drivers for Cortex-R4 devicesBOOK0=HLP\("Release Notes",GEN)BOOK1=HLP\("Complete User's Guide Selection",C)BOOK2=HLP\("RL-ARM Release Notes",GEN)BOOK3=CMSIS\("CMSIS Documentation",GEN)BOOK4=Signum\Docs\("Signum Systems JTAGjet Driver Documentation",GEN) TDRV0=BIN\("ULINK2/ME ARM Debugger")TDRV1=BIN\("ULINK2/ME Cortex Debugger")TDRV2=BIN\("RDI Interface Driver")TDRV3=BIN\("Altera Blaster Cortex Debugger")TDRV4=BIN\("Stellaris ICDI")TDRV5=Signum\("Signum Systems JTAGjet")TDRV6=Segger\("J-LINK / J-TRACE")TDRV7=Segger\("Cortex-M/R J-LINK/J-Trace")TDRV8=STLink\ ("ST-Link (Deprecated Version)")TDRV9=BIN\("ULINK Pro Cortex Debugger")TDRV10=BIN\("ULINK Pro ARM Debugger")TDRV11=NULink\("NULink Debugger")TDRV12=SiLabs\("SiLabs UDA Debugger")TDRV13=STLink\ ("ST-Link Debugger")RTOS0=("Dummy")RTOS1= ("RTX Kernel")DELDRVPKG0=ULINK\("ULINK Pro Driver ")。
keil编译常见报错和解决方法
keil编译常见报错和解决方法Keil是一款常用的嵌入式开发工具,用于编写和调试嵌入式系统的程序。
在使用Keil编译时,我们常常会遇到一些报错信息。
本文将介绍一些常见的Keil编译报错及解决方法,帮助读者快速解决问题。
1. "Error: L6218E: Undefined symbol"错误这个错误通常是由于使用了未定义的变量或函数导致的。
解决方法是检查代码中使用的符号是否正确定义或是否包含了正确的头文件。
如果符号确实未定义,需要在代码中进行定义或者引入相关的头文件。
2. "Error: L6002U: Could not open file"错误这个错误表示编译器无法打开指定的文件。
解决方法是检查文件路径是否正确,文件是否存在,并且是否具有读取权限。
如果文件路径正确但是依然无法打开,可能是文件被其他程序占用或者权限设置不正确,需要解决这些问题后重新编译。
3. "Error: C2513: 'function' : no variable declared before '=' "错误这个错误表示在赋值语句中使用了未声明的变量。
解决方法是检查变量是否正确声明,并确保在赋值之前进行了声明。
如果变量确实未声明,需要在代码中添加相应的变量声明。
4. "Error: C2065: 'variable' : undeclared identifier"错误这个错误表示使用了未声明的变量。
解决方法是检查变量是否正确声明,并确保在使用之前进行了声明。
如果变量确实未声明,需要在代码中添加相应的变量声明。
5. "Error: C1083: Cannot open include file: 'header.h': No such file or directory"错误这个错误表示编译器无法找到指定的头文件。
C语言keil编译器提示错误的解决方法
C编译器错误与解决方法1. Warning 280:’i’:unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告2 Warning 206:’Music3’:missing function-prototype说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告3 Compling :C:\8051\MANN.CError:318:can’t open file ‘beep.h’说明在编译C:\8051\MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:\8051 的工作目录中4 Compling:C:\8051\LED.CError 237:’LedOn’:function already has a body说明LedOn( )函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H说明外部资料ROM 的0025H 重复定义地址解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:’DelayX1ms’: missing function-prototypeC:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\8051\INPUT.C说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOLSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)ADDRESS:0018H说明程序中有调用MUSIC 函数但未将该函数的含扩档C 加入到工程档Prj 作编译和连接 解决方法设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去9 ***ERROR 107:ADDESS SPACE OVERFLOWSPACE: DATASEGMENT: _DATA_GOUP_LENGTH: 0018H***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNALSYMBOL: VOLUMEMODULE: C:\8051\OSDM.OBJ (OSDM)ADDRESS: 4036H说明data 存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象解决方法将以data 型别定义的公共变量修改为idata 型别的定义说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享10.***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1CALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_SPI_SEND_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。
Keil中如何设置字体类型并修改关键字和注释颜色
Keil中如何设置字体类型并修改关键字和注释颜色Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。
在学习51单片机的时候大家肯定少不了要和Keil打交道,但对一些初学者而言,有些设置不太容易找得到,比如字体类型啊,关键字和注释的颜色等等。
这里呢,小编就来给大家一一介绍。
工具/原料
Keil μVision4(当然,其他版本也可以,只是操作上可能会有点区别)首先,认识一下代码在Keil中的显示情况:1
一般而言,关键字的颜色是明亮的淡蓝色,用/* */注释的部分是绿色,具体如下图:
设置字体类型、颜色等自定义风格1
点击工具栏上的【configuration】按钮(是一个扳手状的图标)
1.2
在出现的界面中选择【Colors&Fonts】标签页
2.3
选择【8051:Editor C Files】,在右边栏即可设置各种自定义风格。
具体如下面的图片演示:
3.4 设置完成后点击【OK】即可。
keil编译出错问题
【09.08.15】Keil中C语言与汇编语言混合编程需要注意的几个地方在keil C语言与汇编语言的混合编程中曾经遇到过的一些问题,写下来留作以后参考。
(本文写于09.08.15,在8.18日加入了第4点的内容)1、C语言中加入汇编语言模块的方法:例子:void func(){C语言代码……#pragma asmMOV R6,#23DELAY2: MOV R7,#191DELAY1: DJNZ R7,DELAY1DJNZ R6,DELAY2RET#pragma endasmC语言代码……}其中红色为C语言部分,绿色为嵌入的汇编语言部分。
汇编部分需要用#pragma asm和#pragma endasm 包起来2、Keil提示“asm/endasm”出错的解决方法如果只是像1中那样直接加入汇编代码的话,编译将会报错,错误如下:compiling sendata.c...sendata.c(81): error C272: 'asm/endasm' requires src-control to be activesendata.c(87): error C272: 'asm/endasm' requires src-control to be activeTarget not created解决方法如下:首先右键单击包含有汇编部分的c语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。
3、?C_START等相关警告的处理按照2中的方法处理完之后,再编译不会出现错误信息了,但是会出现如下的警告信息:linking...*** WARNING L1: UNRESOLVED EXTERNAL SYMBOLSYMBOL: ?C_STARTMODULE: STARTUP.obj (?C_STARTUP)*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL: ?C_STARTMODULE: STARTUP.obj (?C_STARTUP)ADDRESS: 000DH处理方法如下:在如上图所示的“Source Group 1”上点右键,在菜单中选择“Add Files to Group 'Source Group 1' ”找到你的KEIL安装目录,选择其中的“C51”目录下的“LIB”目录下的“C51S.LIB”文件,点击Add,然后Close 即可。
C语言调试技巧快速定位修复错误
C语言调试技巧快速定位修复错误关键信息项:1、调试工具的选择与使用名称:____________________________特点:____________________________适用场景:____________________________2、错误类型的分类与识别语法错误:____________________________逻辑错误:____________________________运行时错误:____________________________3、调试技巧与方法打印输出调试:____________________________断点调试:____________________________单步调试:____________________________4、常见错误案例分析案例描述:____________________________错误原因:____________________________修复方法:____________________________11 调试工具的选择与使用在 C 语言调试过程中,选择合适的调试工具至关重要。
以下是一些常见的调试工具及其特点和适用场景。
111 GDB(GNU Debugger)GDB 是一款功能强大的命令行调试工具,适用于在各种操作系统上进行 C 语言程序的调试。
它支持设置断点、查看变量值、单步执行等操作。
对于熟悉命令行操作的开发者来说,GDB 提供了高度的灵活性和精确的控制。
112 Visual Studio 调试器如果在 Windows 平台上使用 Visual Studio 开发 C 语言程序,其内置的调试器提供了图形化的界面,操作相对直观。
可以方便地查看调用堆栈、监视变量、条件断点等。
113 LLDB在 macOS 和 iOS 开发中,LLDB 是常用的调试工具,与 GDB 类似,提供了强大的命令行调试功能。
Keil C51详细设置
Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。
二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram 不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX @Ri,A 或MOVX A,@Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX @DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATINGNONE:不适用操作系统RTX51-TINY:使用TINY操作系统RTX-FULL:使用FULL操作系统Keil C51 提供了Tiny多任务操作系统,使用定时器0来做任务切换,效率很低,无实用价值。
KEIl操作中常见错误及更正
KEIl 入门操作中见错误:正确书写如下:当编译失败时,双击底栏的出错提示行,可定位到源程序错误所在行。
1.头文件错误如:#include <reg51> 或是#inclde <reg51.h>编译后错误提示:Rebuild target 'Target 1'compiling hello.c...hello.c(1): warning C318: can't open file 'reg51'hello.c(8): error C202: 'SCON': undefined identifierhello.c(9): error C202: 'TMOD': undefined identifierhello.c(10): error C202: 'TH1': undefined identifierhello.c(11): error C202: 'TL1': undefined identifierhello.c(12): error C202: 'TR1': undefined identifierhello.c(13): error C202: 'TI': undefined identifierTarget not created.说明:头文件语句错误,导致引用其中定义的硬件资源寄存器失败2.主函数书写有误(1)v io d main (void)编译后错误提示:hello.c(3): error C129: missing ';' before 'main'Target not created.(2)void m ian (void)creating hex file from "hello"..."hello" - 0 Error(s), 2 Warning(s).3.编译无误,无输出,看不到字符串,原因有条指令写作:T1 = 1;正确的是:TI = 1;4.注意中英文空格及标点符号while (1) ;;编译后提示:hello.c(16): error C100: unprintable character 0xA3 skipped说明:把上句中的中文分号去掉。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
修改Keil C程序代码字体为微软雅黑及Keil C光标定位不准的解决办法
修改keil C程序代码字体:
常规设置:在keil C的菜单栏中,点击Edit,选择最下面的onfiguration...,进入之后点击Colors&Fonts标签,然后选中自己想要修改字体的项目,比如C 文件的程序代码,那么我们选择8051:Editor C Files,然后再在它的右边窗口选中Text,修改旁边的字体即可。
上面的常规设置人人都会,但是,这里面只有几个字体,如果我们不喜欢这些字体想把C语言程序代码和汇编语言程序代码的字体换成其他字体呢?例如微软雅黑,方法也是有的:
进入keil C的安装目录,在UV3目录下面用记事本打开A51.ini(这是汇编语言代码的)和C51.ini(这是C语言代码的),将
[Font]
FaceName =XXXX
Size =12
Italic =0
Bold =0
中FaceName=XXXX后面的字体名字修改为自己系统里面已经安装存在的字体名字即可,例如修改为FaceName=微软雅黑。
当然,字体大小,斜体,加粗这些也是可以修改的,修改Size=12后面的数字就是字体大小,修改Italic=0为1就是变成斜体,修改Bold=0为1就是字体加粗。
更多东西可以自己揣摩
A51.ini和C51.ini里面的代码。
重新打开keil C看看程序代码,是不是变成有雅黑字体了呢?雅黑字体看起来更舒服。
当然,还有,很多人会发现,keil C经常出现光标没法准确定位位置,这个对不准位置的问题也还是很好解决的,方法就是用记事本打开keil C安装目录下面的TOOLS.ini,在
[UV2]
ORGANIZATION="xhu"
NAME="chuan", "huang"
EMAIL="xhu"
BOOK0=UV3\RELEASE_NOTES.HTM("uVision Release Notes",GEN)
添加一行代码“ANSI=1”即可。
修改后的代码如下:
[UV2]
ORGANIZATION="xhu"
NAME="chuan", "huang"
EMAIL="xhu"
ANSI=1
BOOK0=UV3\RELEASE_NOTES.HTM("uVision Release Notes",GEN) 然后重新运行keil C,看看光标是不是对准位置了呢。