首页 > 应用 > 单片机应用
[导读]
msvr3打开(`-msvr4')或关闭(`-msvr3')和SystemV第四版(SVr4)相关的编译器扩展.效果如下:*输出哪种汇编语法(你可以使用`-mversion-03.00'选项单独选择).* `-msvr4'使C预处理器识别`#pra

msvr3
打开(`-msvr4')或关闭(`-msvr3')和SystemV第四版(SVr4)相关的编译器扩展.效果如下:
*
输出哪种汇编语法(你可以使用`-mversion-03.00'选项单独选择).
*

`-msvr4'使C预处理器识别`#pragmaweak'指令
*
`-msvr4'使GCC输出额外的声明指令(declarationdirective),用于SVr4.
除了SVr4配置,`-msvr3'是所有m88K配置的默认选项.


-mtrap-large-shift
-mhandle-large-shift
包含一些指令,用于检测大于31位的位移(bit-shift);根据相应的选项,对这样的位移发出自陷(trap)或执行?#23454;?#30340;处理代码.默认情况下,GCC?#28304;?#20301;移不做特别处理.

-muse-div-instruction
很早以前的88K型号没有(div)除法指令,因?#22235;?#35748;情况下GCC避免产生这条指令.而这个选项告诉GCC该指令是安全的.

-mversion-03.00
在DG/UX配置中存在两种风格的SVr4.这个选项修改-msvr4,选择hybrid-COFF或real-ELF风格.其他配置均忽略该选项.

-mwarn-passed-structs
如果某个函数把结构当做?#38382;?#25110;结果传递,GCC发出警告.随着C语言的发展,人们已经改变了传递结构的约定,它往往导致移植问题.默认情况下,GCC不会发出警告.

下面的选项用于IBMRS6000:

-MFP-in-toc

-mno-FP-in-toc
控制是否把浮点常量放到内容表(TOC)中,内容表存放所有的全局变量和函数地址.默认情况下,GCC把浮点常量放到这里;如果TOC溢出,`-mno-fp-in-toc'选项能够减少TOC的大小,这样就可以避免溢出.

下面的`-m'选项用于IBMRTPC:

-min-line-mul
对于整数乘法使用嵌入代码.这是默认选项.
-mcall-lib-mul
对于整数乘法使用lmul$$.
-mfull-fp-bLOCks
生成全尺寸浮点数据块,包括IBM建议的最少数量的活动空间(scratchsPACe).这是默认选项.
-mminimum-fp-blocks
不要在浮点数据块中包括额外的活动空间.这样就产生较小但是?#26376;?#30340;可执行程序,因为活动空间必须动态分配.
-mfp-arg-in-fpregs
采用不兼容IBM调用约定的调用序列,通过浮点寄存器传送浮点?#38382;?注意,如果指定了这个选项,varargs.h和stdargs.h将无法支持浮点单元.

-mfp-arg-in-gregs
使用正常的调用约定处理浮点?#38382;?这是默认选项.

-mhc-struct-return
通过内存返回大于一个字的结构,而不是通过寄存器.用于兼容MetaWareHighC(hc)编译器.使用`-fpcc-struct-return'选项可以兼容PortableC编译器(pcc).

-mnohc-struct-return
如果可以,通过寄存器返回某些大于一个字的结构.这是默认选项.如果打算兼容IBM提供的编译器,请使用`-fpcc-struct-return'或`-mhc-struct-return'选项.

下面的`-m'选项用于MIPS家族的计算机:

-mcpu=cpu-type
生成指令的时候,假设默认的机器类型是cpu-type.默认情况下的cpu-type是default,GCC将选取任何机型上都是最长周期时间的指令,这样才能使代码在所有的MIPS处理器上以合理的速度运行.cpu-type的其他选择是r2000,r3000,r4000,和 r6000.虽然选定某个cpu-type后,GCC将针对选定的芯片?#25165;?#23545;应的工作,但是如果不指定??-mips2或-mips3选项,编译器不会输出任何不符合MIPSISA(instructionsetarchitecture)一级的代码.

-mips2
输出MIPSISA二级指令(可能的扩展,如平方根指令).-mcpu=r4000或-mcpu=r6000选项必须和-mips2联用.

-mips3
输出MIPSISA三级指令(64位指令).-mcpu=r4000选项必须和-mips2联用.(译注:疑为-mips3)

-mint64
-mlong64
-mlonglong128
这些选项目前不起作用.

-mmips-as
产生用于MIPS汇编器的代码,同时使用mips-tfile添加普通的调试信息.对于大多数平台这是默认选项,除了OSF/1参?#35745;?#21488;,它使用 OSF/rose目标格式.如果打开了?#25105;?#20010;-ggdb,-gstabs,或-gstabs+选项开关,mips-tfile程序就把stab封装在 MIPSECOFF里面.

-mgas
产生用于GNU汇编器的代码.在OSF/1参?#35745;?#21488;上这是默认选项,它使用OSF/rose目标格式.

-mrnames
-mno-rnames
-mrnames开关选项告诉输出代码使用MIPS软件名称说明寄存器,而不是硬件名称(就是说,用a0代替$4).GNU汇编器不支持-mrnames选项,而MIPS汇编器则运行MIPSC预处理器处理源文件.-mno-rnames是默认选项.

-mgpopt
-mno-gpopt
-mgpopt开关选项要求在正文段中把所有的数据声明写到指令前面,使各种MIPS汇编器?#36828;?#31867;型全局或静态数据项(shortglobalorstatICdataitEMS)输出单字内存访?#35782;?#19981;是双字内存访问.当打开编译优化时,这是默认功能.


-mstats
-mno-stats
?#30475;?#22788;理完非嵌入函数(non-inlinefunction)后,-mstats开关选项使编译器向标?#21363;?#35823;文件输出一行关于程序的统计资料(保存的寄存器数目,堆栈大小,等等).

-mmEMCpy
-mno-mEMCpy
-mmemcpy开关选项使所有的块移动操作调用?#23454;?#30340;string函数(memcpy或bcopy),而不是生成嵌入代码.

-mmips-tfile
-mno-mips-tfile
当MIPS 汇编器生成mips-tfile文件(用于帮助调试)后,-mno-mips-tfile开关选项阻止编译器使用mips-tfile后期处理 (postprocess)目标文件.不运行mips-tfile就没有调试器关注的局部变量.另外,stage2和stage3目标文件将把临时文件名传递给汇编器,嵌在目标文件中,这意味着不比较目标文件是否相同.

-mSOFt-float
输出包含浮点库调用.警告:所需库不是GNUCC的一部分.一般?#36947;?#20351;用该机型本地C编译器的相应部件,但是不能直接用于交叉编译,你必须自己?#25165;?提供交叉编译适用的库函数.

-mhard-float
输出包含浮点指令.如果编译器没有被改动,这就是默认选项.

-mfp64
编译器认为状态字的FR置位(on),也就是说存在3264-bit浮点寄存器,而不是3232-bit浮点寄存器.同时必须打开-mcpu=r4000和-mips3开关.

-mfp32
认为存在3232-bit浮点寄存器.这是默认选项.

-mabicalls

-mno-abicalls
输出(或不输出).abicalls,.cpload,和.cprestore伪指令,某些SystemV.4版本用于位置无关代码.

-mhalf-pic
-mno-half-pic
-mhalf-pic开关选项要求把外部引用的?#21018;?#25918;到数据段,并?#20197;?#20837;内存,而不放到正文段.该选项目前不起作用.

-Gnum
?#30740;?#20110;等于num字节的全局或静态数据放到小的数据段或bss段,而不是普通的数据段或bss段.这样汇编器可以输出基于全?#31181;刚?gp或$28),的单字内存访?#25163;?#20196;而非普通的双?#31181;?#20196;.默认情况下,用MIPS汇编器时num是8,而GNU汇编器则为0.另外,-Gnum选项也被传递给汇编器和连接器.所有的模块必须在相同的-Gnum值下编译.

-nocpp
汇编用户汇编文件(带有`.s'后缀)时,告诉MIPS汇编器不要运行预处理器.

下面的`-m'选项用于Intel80386族计算机:-m486

-mno-486
控制是否生成对486优化的代码.

-msoft-float
输出包含浮点库调用.警告:所需库不是GNUCC的一部分.一般?#36947;?#20351;用该机型本地C编译器的相应部件,但是不能直接用于交叉编译,你必须自己?#25165;?提供交叉编译适用的库函数.
在函数把浮点返回值放在80387寄存器栈的机器上,即使设置了`-msoft-float'选项,也可能会发出一些浮点操作码.


-mno-fp-ret-in-387
不用FPU寄存器返回函数值.
通常函数调用约定把float和double的返回值放在FPU寄存器中,即使不存在FPU.这种作法的理念是操作?#20302;?#24212;该仿真出FPU.

而`-mno-fp-ret-in-387'选项使浮点?#20302;?#36807;普通的CPU寄存器返回.


下面的`-m'选项用于HPPA族计算机:

-mpa-risc-1-0
生成PA1.0处理器的目标码.
-mpa-risc-1-1
生成PA1.1处理器的目标码.

-mkernel
生成适用于内核的目标码.特别要避免add指令,它有一个?#38382;?#26159;DP寄存器;用adDIL代替add指令.这样可以避免HP-UX连接器的某个严重bug.

-mshared-libs
生成能够连接HP-UX共享库的目标码.该选项还没有实现全部功能,对PA目标默认为关闭.使用这个选项会导致编译器生成错误的目标码.

-mno-shared-libs
不生成连接HP-UX共享库的目标码.这是PA目标的默认选项.

-mlong-calls
生成的目标码?#24066;?#21516;一个源文件中的函数调用,调用点和被调函数的距离可以超过256K之远.不需要打开这个开关选项,除非连接器给出``branchoutofrangeerrors``这样的错误.

-mdisable-fpregs
防止任何情况下使用浮点寄存器.编译内核需要这个选项,内核切换浮点寄存器的执行环境速度非常缓慢.如果打开了这个开关选项同时试图浮点操作,编译将失败.

-mdisable-indexing
防止编译器使用索引地址模式(indexingaddressmode).这样在MACH上编译MIG生成的代码时,可以避免一些非常晦涩的问题.

-mtrailing-colon
在标?#23884;?#20041;(labeldefinition)的末尾添加一个冒号(用于ELF汇编器).

下面的`-m'选项用于Intel80960族计算机:

-mcpu-type
默认机器类型为cpu-type,使编译器产生对应的指令,地址模式和内存?#20113;?默认的cpu-type是kb;其他选择有ka,mc,ca,cf,sa,和sb.

-mnumerics
-msoft-float
-mnumerics开关选项指出处理器不支持浮点指令.-msoft-float开关选项指出不应该认为机器支持浮点操作.

-mleaf-procedures
-mno-leaf-procedures
企图(或防止)改变叶过程(leafprocedure),使其可被bal指令以及call指令调用.对于直接函数调用,如果bal指令能够被汇编器或连接器替换,这可以产生更有效的代码,但是其他情况下产生较低效的代码,例如通过函数?#21018;?#35843;用函数,或使用了不支持这种优化的连接器.

-mtail-call
-mno-tail-call
执行(或不执行)更多的尝试(除过编译器那些机器无关部分),优化进入?#31181;?#30340;尾递归(tail-recursive)调用.你可能不需要这个,因为检测什么地方无效没有全部完成.默认开关是-mno-tail-call.

-mcomplex-addr
-mno-complex-addr
认为(或不认为)在当前的i960设备上,值得使用复合地址模式(complexaddressingmode).复合地址模式可能不值得用到K系列,但是一定值得用在C系列.目前除了CB和CC处理器,其他处理器上-mcomplex-addr是默认选项.

-mcode-align
-mno-code-align
把目标码?#20113;?#21040;8字节边界上(或者不必),这样读取会快一些.目前只对C系?#24515;?#35748;打开.

-mic-compat
-mic2.0-compat
-mic3.0-compat
兼容iC960v2.0或v3.0.

-masm-compat
-mintel-asm
兼容iC960汇编器.

-mstrict-align
-mno-strict-align
不?#24066;?或?#24066;?边界不?#20113;?#30340;访问.

-mold-align
使结构?#20113;?structure-alignment)兼容Intel的gcc发行版本1.3(基于gcc1.37).目前这个选项有点问题,因为#pragmaalign1总是作同样的设定,而且无法关掉.

下面的`-m'选项用于DECAlpha设备:

-mno-soft-float
-msoft-float
使用(或不使用)硬件浮点指令进行浮点运算.打开-msoft-float时,将使用`libgcc1.c'中的函数执行浮点运算.除非它们?#29615;?#30495;浮点操作的例程替换,或者类似,它们被编译为调用仿真例程,这些例程将发出浮点操作.如果你为不带浮点操作的Alpha编译程序,你必须确保建立了这个库,以便不调用仿真例程.
注意,不带浮点操作的Alpha?#24808;?#27714;拥有浮点寄存器.


-mfp-reg
-mno-fp-regs
生成使用(或不使用)浮点寄存器群的目标代码.-mno-fp-regs包含有-msoft-float开关选项.如果不使用浮点寄存器,浮点操作数就象整数一样通过整数寄存器传送,浮点运算结果放到$0而不是$f0.这是非标准调用,因此任何带有浮点?#38382;?#25110;返回值的函数,如果被-mno-fp- regs开关编译过的目标码调用,它也必须用这个选项编译.
这个选项的典型用法是建立内核,内核不使用任何浮点寄存器,因此没必要保存和?#25351;?#36825;些寄存器.


下面附加的选项出现在SystemV第四版中,用于兼容这些?#20302;?#20013;的其他编译器:

-G
在SVr4?#20302;?#20013;,gcc出于兼容接受了`-G'选项(然后传递给连接器).可是我们建议使用`-symbolic'或`-shared'选项,而不在gcc命令行上出现连接选项.

-Qy
验证编译器用的工具的版本,输出到.ident汇编指令.

-Qn
制止输出端的.ident指令(默认选项).

-YP,dirs
对于`-l'指定的库文件,只搜索dirs.你可以在dirs中用冒号隔开各个目录项.

-Ym,dir
在dir目录中寻找M4预处理器.汇编器使用这个选项.


代码生成选项(CODEGENERATIONOPTION)
下面的选项和平台无关,用于控制目标码生成的接口约定.
大部分选项以`-f'开始.这些选项拥有确定和否定两种格式;`-ffoo'的否定格式是`-fno-foo'.后面的描述将只?#33455;?#20854;中的一个格式---非默认的格式.你可以通过添加或去掉`no-'推测出另一个格式.


-fnonnull-objects
假设通过引用(reference)取得的对象不为null(仅C++).
一般?#36947;?GNUC++对通过引用取得的对象作保守假设.例如,编译器一定会检查下似代码中的a不为null:

obj&a=g();a.f(2);

检查类似的引用需要额外的代码,然而对于很多程序是不必要的.如果你的程序不要求这种检查,你可以用`-fnonnull-objects'选项忽?#36816;?


-fpcc-struct-return
函数返回struct和union值时,采用和本地编译器相同的?#38382;?#32422;定.对于较小的结构,这种约定的效?#21183;?#20302;,而且很多机器上不能重入;它的优点是?#24066;鞧CC编译的目标码和PCC编译的目标码互相调用.

-freg-struct-return
一有可能就通过寄存器返回struct和union函数值.对于较小的结构,它比-fpcc-struct-return更有效率.
如果?#35753;?#26377;指定-fpcc-struct-return,也没有指定-freg-struct-return,GNUCC默认使用目标机的标准约定.如果没有标准约定,GNUCC默认采用-fpcc-struct-return.


-fshort-enums
给enum类型只分配它声明的值域?#27573;?#30340;字节数.就是说,enum类型等于大小足够的最小整数类型.

-fshort-double
使double类型的大小和float一样.

-fshared-data
要求编译结果的数据和非const变量是共享数据,而不是?#25509;?#25968;据.这种差别仅在某些操作?#20302;成?#38754;有意义,那里的共享数据在同一个程序的若干进程间共享,而?#25509;?#25968;据在每个进程内都有副件.

-fno-common
即使未初始化的全局变量也分配在目标文件的bss段,而不是把它们当做普通块(commonblock)建立.这样的结果是,如果在两个不同的编译结果中声明了同一个变量(没使用extern),连接它们时会产生错误.这个选项可能有用的唯一情况是,你希望确认程序能在其他?#20302;成显?#34892;,而其他?#20302;?#24635;是这么做.

-fno-ident
忽略`#ident'指令.

-fno-gnu-linker
不要把全局初始化部件(如C++的构造子和解构子)输出为GNU连接器使用的格式(在GNU连接器是标准方法的?#20302;成?.当你打算使用非GNU连接器的时候可以用这个选项,非GNU连接器也需要collect2程序确保?#20302;?#36830;接器放入构造子(constructor)和解构子(destructor). (GNUCC的发布包中包含有collect2程序.)对于必须使用collect2的?#20302;?编译器驱动程序gcc自动配置为这么做.

-finhibit-size-directive
不要输出.size汇编指令,或其他类似指令,当某个函数一分为二,两部分在内存中距离很远时会引起问题.当编译`crtstuff.c'时需要这个选项;其他情况下都不应该使用.

-fverbose-asm
输出汇编代码时放些额外的注释信息.这个选项仅用于确实需要阅读汇编输出的时候(可能调试编译器自己的时候).

-fvolatile
使编译器认为所有通过?#21018;?#35775;问的内存是易变内存(volatile).

-fvolatile-global
使编译器认为所有的外部和全局变量是易变内存.

-fpic
如果支持这种目标机,编译器就生成位置无关目标码.适用于共享库(sharedlibrary).

-fPIC
如果支持这种目标机,编译器就输出位置无关目标码.适用于动态连接(dynamiclinking),即使?#31181;?#38656;要大?#27573;?#36716;移.

-ffixed-reg
把名为reg的寄存器按固定寄存器看待(fixedregister);生成的目标码不应该引用它(除了或许用作栈?#21018;?帧?#21018;?或其他固定的角色).
reg必须是寄存器的名字.寄存器名字取决于机器,用机器描述宏文件的REGISTER_NAMES宏定义.

这个选项没有否定格式,因为它列出三路选择.


-fcall-used-reg
把名为reg的寄存器按可分配寄存器看待,不能在函数调用间使用.可以临时使用或当做变量使用,生存期不超过一个函数.这样编译的函数无需保存和?#25351;磖eg寄存器.
如果在可执行模块中,把这个选项说明的寄存器用作固定角色将会产生灾?#30740;?#32467;果,如栈?#21018;?#25110;帧?#21018;?

这个选项没有否定格式,因为它列出三路选择.


-fcall-saved-reg
把名为reg的寄存器按函数保护的可分配寄存器看待.可以临时使用或当做变量使用,它甚至能在函数间生存.这样编译的函数会保存和?#25351;?#20351;用中的reg寄存器.
如果在可执行模块中,把这个选项说明的寄存器用作固定角色将会产生灾?#30740;?#32467;果,如栈?#21018;?#25110;帧?#21018;?

另一种灾难是用这个选项说明的寄存器返回函数值.

这个选项没有否定格式,因为它列出三路选择.



PRAGMAS
GNUC++支持两条`#pragma'指令使同一个头文件有两个用途:对象类的接口定义,对象类完整的内容定义.

#pragmainterface
(仅对C++)在定义对象类的头文件中,使用这个指令可以节省大部分采用?#32654;?#30340;目标文件的大小.一般?#36947;?某些信息(内嵌成员函数的备份副件,调试信息,实?#20013;?#20989;数的内部表格等)的本地副件必须保存在包含类定义的各个目标文件中.使用这个pragma指令能够避免这样的复制.当编译中引用包含 `#pragmainterface'指令的头文件时,就不会产生这些辅助信息(除非输入的主文件使用了 `#pragmaimplementation'指令).作为替代,目标文件将包含可被连接时解析的引用(reference).

#pragmaimplementation
#pragmaimplementation"objects.h"
(仅对C++)如果要求从头文件产生完整的输出(并且全局可见),你应该在主输入文件中使用这条pragma.头文件中应该?#26469;?#20351;用 `#pragmainterface'指令.在implementation文件中将产生全部内嵌成员函数的备份,调试信息,实?#20013;?#20989;数的内部表格等.
如果`#pragmaimplementation'不带?#38382;?它指的是和源文件有相同基?#20037;?#30340;包含文件;例如, `allclass.cc'中,`#pragmaimplementation'等于 `#pragmaimplementationallclass.h'.如果某个implementation文件需要从多个头文件引入代码,就应该 使用这个字符串?#38382;?

不可能把一个头文件里面的内容分割到多个implementation文件中.



文件(FILE)
file.cC源文件
file.hC头文件(预处理文件)
file.i预处理后的C源文件
file.CC++源文件
file.ccC++源文件
file.cxxC++源文件
file.mObjective-C源文件
file.s汇编语言文件
file.o目标文件
a.out连接的输出文件
TMPDIR/cc*临时文件
LIBDIR/cpp预处理器
LIBDIR/cc1C编译器
LIBDIR/cc1plusC++编译器
LIBDIR/collect某些机器需要的连接器前端(frontend)程序
LIBDIR/libgcc.aGCC子例程(subroutine)库
/lib/crt[01n].o启动例程(start-up)
LIBDIR/ccrt0C++的附加启动例程
/lib/libc.a标准C库,另见intro(3)
/usr/include#include文件的标准目录
LIBDIR/include#include文件的标准gcc目录
LIBDIR/g++-include#include文件的附加g++目录



LIBDIR通常为/usr/local/lib/machine/version.
TMPDIR来自环境变量TMPDIR(如果存在,?#31508;?#20026;/usr/tmp,否则为/tmp).

另见(SEEALSO)
cpp(1),as(1),ld(1),gdb(1),adb(1),dbx(1),sdb(1).
info中`gcc',`cpp',`as',`ld',和`gdb'的条目.
UsingandPortingGNUCC (forversion2.0),RichardM.Stallman;TheCPreprocessor,RichardM.Stallman; DebuggingwithGDB:theGNUSource-LevelDebugger,RichardM.Stallman和 RolandH.Pesch;Usingas:theGNUAssembler,DeanElsner,JayFenlason& friends;ld:theGNUlinker,SteveChamberlain和RolandPesch.

BUGS
关于报告差错的指导请查阅GCC手册.

版权(COPYING)
Copyright1991,1992,1993FreeSoftwareFoundation,Inc.
Permissionisgrantedtomakeanddistributeverbatimcopiesofthismanualprovidedthecopyrightnoticeandthispermissionnoticearepreservedonallcopies.

Permissionisgrantedtocopyanddistributemodifiedversionsofthismanualundertheconditionsforverbatimcopying,providedthattheentireresultingderivedworkisdistributedunderthetermsofapermissionnoticeidenticaltothisone.

Permissionisgrantedtocopyanddistributetranslationsofthismanualintoanotherlanguage,undertheaboveconditionsformodifiedversions,exceptthatthispermissionnoticemaybeincludedintranslationsapprovedbytheFreeSoftwareFoundationinsteadofintheoriginalEnglish.

换一批

延伸阅读

[智能硬件] 大牛?#27493;鈉编译器,gcc c编译器超详解析

大牛?#27493;鈉编译器,gcc c编译器超详解析

不同c编译器通常配备不同的c编译器,但目前主流的c编译器分为三种,gcc便是三大出色c编译器之一。本文中,将为大家介绍这款c编译器的入门知识,以为大家的后期学习夯实基础。......

关键字:c编译器 gcc 库?#35272;?/a>

[智能硬件] 了解c编译器三剑客,gcc c编译器编译流程详解

了解c编译器三剑客,gcc c编译器编译流程详解

gcc是当前三大主流c编译器之一,对于这款c编译器,想必诸多人士均有使用体验。在本文中,将对gcc c编译器编译流程加以介绍,以帮助大家更好了解这款c编译器的工作流程。gcc是当前三大主流c编译器之一,对于这款c编译器,想必诸多人士均有使用......

关键字:c编译器 gcc 编译流程

[智能硬件] c编译器三剑客之一,秒杀gcc c编译器编译警告

c编译器三剑客之一,秒杀gcc c编译器编译警告

c编译器是程序运行的基础,一款好的c编译器具备优良?#38405;堋?#30446;前,GCC是三大主流c编译器之一。对于这款c编译器,可能大?#20063;?#38750;十分了解。本文中,将为大家介绍gcc常见的编译警告以及解决方法。如果你对这款c编译器比较?#34892;?#36259;,不妨继续往下看哦。......

关键字:c编译器 gcc 编译警告

[单片机应用] pic单片机也可以很简单,搞定pic单片机IO口操作

pic单片机也可以很简单,搞定pic单片机IO口操作

对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间?#33455;縫ic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文,希望大家认真研读,......

关键字:pic单片机 51单片机 AVR单片机

[智能硬件] c编译器救星,搞懂GCC c编译器

c编译器救星,搞懂GCC c编译器

对c编译器关注较多的朋友,都知道目前市场上主要流通3大c编译器。本文中,主要介绍GCC c编译器,?#27493;?#20869;容为该c编译器的入门必备知识。如果你对GCC的入门知识不够了解,那本文无疑是你的救星!!!......

关键字:c编译器 GCC 入门知识

[单片机应用] AVR 单片机实现 LED 灯?#20102;?

AVR 单片机实现 LED 灯?#20102;?

ATmega16 有 4 个 8 位的双向 I/O 端口 PA, PB, PC, PD, 他?#23884;?#22806;对应 32 个 I/O 引脚, 每一位都可以独立的用于逻辑信号的输入和输出. 在 5V 工作电压下, 输出高电平时, 每个引脚可输出达 20m......

关键字:AVR 单片机 LED 灯?#20102;?

[单片机应用] AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

1)那就是在之前的介绍中说过,在说一遍~~主机和从机的两个移位寄存器可以被认为是一个公开的16位环?#25105;?#20301;寄存器,当数据从主机移向从机时,同时从机饿数据也向相反的放向移向主机。这就意味着在一个以为周期内,主机......

关键字:AVR单片机 ATMEGA16 同步串行接口 SPI

我 要 评 论

网友评论

?#35753;?#25991;章

技术子站

更多

项目外包

更多

推荐博客

新时时彩