tag 标签: uv2

相关博文
  • 热度 15
    2010-10-20 00:54
    2057 次阅读|
    3 个评论
    1、在UV2/UV3中,一个工程可以由多个模块(即*.c文件)组成,模块之间的变量与函数的调用与标准C语言类似。即变量必须是全局变量(公共变量),函数必须是全局函数。一般缺省规则是: (1)在任意模块中定义的函数均是全局函数,在其它模块调用前加上“extern  函数名”说明即可。 (2)在任意模块中所有函数实体之外定义的变量时全局变量,在其它模块引用之前加上“extern   类型 变量名”即可。 2、有些变量可能会随时改变,例如:在中断中赋值的变量,以及硬件修改的输入/输出寄存器等,在程序中使用这些变量时,最好加上“volatile”关键词,告诉C51编译器: (1)不要优化该变量,例如相连的两个相同的赋值语句,第二个不要优化掉,因其处于不同“时刻”赋值结果可能不一样。 (2)每次取该变量值时要从其实际地址的寄存器取,不要从内存的副本中取,因其值可能随时比改变了。 3、在C51中,每个变量增加“存储类型”约束,存储类型有:data,idata,bdata,pdata,xdata,code等没有显式定义存储类型的变量,缺省类型:small模式为data,compact模式为pdata,large模式为xdata。通常,对于51单片机,data空间为00~7F(128字节),其中还要扣除0~7寄存器区间,实际只有120字节可用,如果缺省类型的变量太多(特别是静态和全局变量),就会导致空间不够而出现如下错误: ERROR L107:ADDRESS SPACE OVERFLOW SPACE:DATA SEGMENT:_DATA_GROUP_ LENGTH:xxH(表示超出DATA空间字节数) 解决办法是:将大部分全局/静态变量(特别是数组)定义到xdata段中。 4、在UV2中,下述程序段能编译通过: unsigned char xdata *str; str="ABCDEF"; 但在UV3中编译会出现如下错误: waring C259: '=': pointer:different mspace 必须将其改为: str=(unsigned char xdata*)"ABCDEF"; 这说明UV3中变量赋值时,对其“存储类型”约束更严格,与C++类似。 5、在Keil C51 for Cypress EZ-USB中,可以使用下述数据类型:BYTE,WORD,DWORD,BOOL(类似VC6),但这不是C51定义的标准类型,而是EZ-USB FX2中重新定义的(详见“fx2.h”)。
相关资源
  • 所需E币: 0
    时间: 2021-4-24 21:28
    大小: 323.6KB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 5
    时间: 2019-12-26 00:20
    大小: 241.24KB
    上传者: rdg1993
    《uVision2调试命令中文版》KEILUV2软件仿真调试说明……