- 博客(113)
- 资源 (4)
- 收藏
- 关注
转载 51_堆栈问题.
Keil C是非常优秀的C51编译器,可能是最好的C51编译器,提供各种优化模式,对变量的优化和地址安排做得非常好。这是用C语言写代码的好处之一,如果用汇编写,得费一大番功夫给各个变量安排内存物理地址,还得时刻记住哪些地址的内存单元是已经分配了,新增加的变量就不能占用那些已经分配了的单元,以免产生内存交叠冲突和溢出。我一直非常信赖Keil C51的编译结果,在我的印象里,它对内存的分配是完美的,只要代码用它编译时没有报告任何warning和error,代码运行时不可能内存冲突或溢出的现象。 但,今天
2010-11-24 10:53:00
1041
转载 c语言库函数大全--资料收集
Turbo C 2.0 函数中文说明大全分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符
2010-09-30 09:21:00
488
转载 认识多任务、多进程、单线程、多线程
<br />要认识多线程就要从操作系统的原理说起。 <br /> 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情。比如你在copy东西的时候不能rename文件名。为了提高系统的利用效率,采用批处理来批量执行任务。<br /> 现在的操作系统都是多任务操作系统,每个运行的任务就是操作系统所做的一件事情,比如你在听歌的同时还在用MSN和好友聊天。听歌和聊天就是两个任务,这个两个任务是“同时”进行的。一个任务一般对应一个进程,也可能包含好几个进程。比如运行的M
2010-09-17 13:27:00
735
转载 灌电流和拉电流的概念!!!
<br />看来很多网友都搞不清灌电流和拉电流的概念,下面就此解释一下,希望看过本文后不再就此困扰。<br /><br />一个重要的前提:灌电流和拉电流是针对端口而言的。<br /><br />名词解释——灌:注入、填充,由外向内、由虚而实。渴了,来一大杯鲜榨橙汁,一饮而尽,饱了,这叫“灌”。<br /><br /> 灌电流(sink current) ,对一个端口而言,如果电流方向是向其内部流动的则是“灌电流”,比如一个IO通过一个电阻和一个LED连接至VCC,当该IO输
2010-09-10 13:59:00
3775
3
原创 运放相关!
<br /><br />1:运放的输入偏置电流: 为了使运放输入级放大器工作在线性区, 所必须输入的一个直流电流, 在双极晶体管输入的运放, 偏置电流就是输入管的基极电流, 在 MOS 管输入的运放是指栅极漏电流.<br />输入失调电流: 与输入失调电压一样, 都是描述运放差分输入的对称性的. 理想的差分输入应该是完全对称的, 但由于设计和工艺过程的偏差, 正负两个输入端的特性不会完全相同. 这两个失调参数的定义是, 当输出为 0 时两个输入端的输入电压差 (失调电压) 和输入电流-即偏置电流的差 (失调
2010-09-10 10:33:00
515
原创 ADC的相关问题!
<br /> AD转换器的主要技术指标 <br />1)分辩率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2^n的比值。分辩率又称精度,通常以数字信号的位数来表示。 <br />2)转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。采样时间则是另外一
2010-09-10 10:18:00
383
转载 vc 插件!!!
<br />1.Visual Assist(强烈推荐)<br /> http://www.wholetomato.com/<br /> VA从5.0一直到现在的VAX,功能越来越强大,除了以前版本中的自动识别各种关键字,系统函数,成员变量,自动给出输入提示,自动更正大小写错误,自动标示错误等等以外,最新的版本中还在WorkSpace窗口中加入一个VA View,可以更方便的查找工程中的文件、类和变量。vc6 的专家系统很差,2003还马马虎虎,用这个插件可以对第三方库分析,获得动态输入提示,自
2010-09-06 10:04:00
274
转载 有关单链表的操作!
<br /><br />单链表类型描述<br />typedef char DataType; //假设结点的数据域类型为字符<br />typedef struct node{ //结点类型定义<br /> DataType data; //结点的数据域<br /> struct node *next;//结点的指针域<br />}ListNode;<br />typedef ListNode *LinkList;<br />ListNode *p;<br />LinkList head;<br
2010-09-06 10:03:00
379
转载 c语言库函数大全!!!
<br />分类函数,所在函数库为ctype.h<br />int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0<br />int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')<br /> 返回非0值,否则返回0<br />int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0<br />int is
2010-09-05 20:26:00
598
转载 itoa atoi 字符串和数字的转换!
<br />C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子:<br /><br /># include <stdio.h><br /># include <stdlib.h><br /><br />void main (void)<br />{<br />int num = 100;<br />char str[25];<br />itoa(num, str, 10);<br />printf("The numb
2010-09-03 09:56:00
1024
转载 计算机内为什么用补码来表示负数.cpu内没有减法器?
<br />补码是计算机内方便加法运算的编码。注意,为了方便运算计算机采用补码存储数据。<br /><br /><br /><br />例如100(10进制)<br /><br />100/16=6余4<br /><br />6/16=0余6<br /><br />所以100的16进制数是64H<br /><br />以8位二进制来说64H=01100100B<br /><br />正数的补码和原码相同。所以100的补码还是01100100<br /><br />另假设还有个数是-109<br /><br
2010-09-02 13:52:00
1020
转载 也许你不知道的宏定义!!!
<br />也许你也不知道~呵呵,最后我还是找到了相关的资料,解读了这个define,还顺便认识了另外两个不常用的define<br /><br />#define Conn(x,y) x##y<br />#define ToChar(x) #@x<br />#define ToString(x) #x<br /><br />x##y表示什么?表示x连接y,举例说:<br />int n = Conn(123,456); 结果就是n=123456;<br />char* str = Conn("asdf
2010-09-02 13:32:00
369
转载 单片机C语言实现循环移位!
<br /> 大家知道,大家用MCU写程序的时候,只有移位的语句,没有循环移位的语句。那么如何实现循环移位呢,详见下述:<br /> 循环移位区别于一般移位的是移位时没有数位的丢失。循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在系统程序中时有使用,在一些控制程序中用得也不少。 设有数据说明:<br /> a=01111011,循环左移2位 正确结果: 11101101<br /> 过程:<br /> b=a>>(8-2) 用来得到
2010-09-02 13:09:00
2844
1
原创 Printf()输出格式控制
<br /><br />1.转换说明符<br /> %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)<br /> %c 字符<br /> %d 有符号十进制整数<br /> %f 浮点数(包括float和doulbe)<br /> %e(%E) 浮点数指数输出[e-(E-)记数法]<br /> %g(%G) 浮点数不显无意义的零"0"<
2010-09-01 16:43:00
315
原创 运放的失调电流与失调电压
<br />如果运放两个输入端上的电压均为0V,则输出端电压也应该等于0V。但事实上,输出端总有一些电压,该电压称为失调电压VOS。如果将输出端的失调电压除以电路的噪声增益,得到结果称为输入失调电压或输入参考失调电压。这个特性在数据表中通常以VOS给出。VOS被等效成一个与运放反相输入端串联的电压源。必须对放大器的两个输入端施加差分电压,以产生0V输出。 <br /><br />VOS随着温度的变化而改变,这种现象称为漂移,漂移的大小随时间而变化。漂移的温度系数TCVOS通常会在数据表中给出,但一些运放数据
2010-08-30 15:47:00
1748
原创 向量中断 非向量中断 !
<br /> 向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了在判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单。向量者,矢量也,即指方向,门路。<br /> 向量中断------由硬件提供中断服务程序入口地址;<br /> 非向量中断------由软件件提供中断服务程序入口地址 <br /> 非向量中断发生后,VIC中的vecaddr中会存放一个默认中断服务程序的地址,这个程序是被所有的非向量中断公用的,
2010-08-29 13:09:00
321
原创 关于 ++i 和 i++ 效率的讨论!!
第一种说法: 在内建数据类型,这两者的效率是一样的,差别不大. 如果是用户自定义的数据类型时,他们的开销就相差很多了.因为在++i时,可以返回对象的引用.i++时,必须返回对象的值,所以导致在打对象的时候产生较大的开销.如果是自定义的类型(不是内建类型)的时候,应该使用++i的方式. 第二种说法: ++i 不用生成临时变量而 i++要生成临时变量 第三种说法: 只有在必要时才使用后置操作符.++i ,因为前置操作需要做的工作更少,只需要加1后返回加1后的结果即可。i+
2010-08-27 14:59:00
343
原创 位段的示例!
C语言: C中的位段的使用01/*02 DATE : 2010.6.2403 关于C中的位端igned或者int04*/05#include 0607typedefstruct_A08{09 unsigneda:4;//位段成员的类型仅能够为unsigned或者int10 unsigned b:4;11 unsignedc:2;12 unsignedd:6;13 unsignedE:1;14
2010-08-27 11:21:00
381
1
转载 Visual C++中error spawning cl.exe错误的两种解决方法.注意第二种!
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的 “Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的 选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的, “CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录/VC98/Bin”下面, 你可以到相应的路径下找到这个应用程序。 因此问题可以按照以下方法解决:方法一:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)” —>“
2010-08-27 10:50:00
415
转载 utraledit-32 编译程序.
<br />在visual c++下,每编写一个简单的小程序,就得生成一大串中间文件,另人十分的不爽。下面提供一个新的编写c/c++程序的方法:<br />(1),下载utraledit-32编辑器,推荐v11.<br />(2),在utraledit-32中,分别点击菜单:高级-工具配置,出现一个dialog,用来设置用户自定义的菜单项。我们的想法是,设置一个编译菜单和运行菜单项,分别用来编译在utraledit-32编写的c/c++源文件。这样,在utraledit-32中编写好程序后,点击这两个菜单,
2010-08-27 10:49:00
589
原创 使用ultraedit和cl编译器打造简易c/c++开发环境
<br />在visual c++下,每编写一个简单的小程序,就得生成一大串中间文件,另人十分的不爽。下面提供一个新的编写c/c++程序的方法:<br />(1),下载utraledit-32编辑器,推荐v11.<br />(2),在utraledit-32中,分别点击菜单:高级-工具配置,出现一个dialog,用来设置用户自定义的菜单项。我们的想法是,设置一个编译菜单和运行菜单项,分别用来编译在utraledit-32编写的c/c++源文件。这样,在utraledit-32中编写好程序后,点击这两个菜单,
2010-08-27 10:14:00
352
原创 回调函数的写法!
在adc.h中这样写:typedef void(*ADC0_FUNC)(void); //将指针函数声明为一个类型extern ADC0_FUNC adc0_set_func(ADC0_FUNC func); //中断设定函数的声明在adc.c中这样写://定义一个routine函数,他将利用adc0_set_func()函数将自己指向用户定义的中断函数 ADC0_FUNC adc0_routine; //设定adc0 的中断函数ADC0_F
2010-08-26 11:19:00
1297
原创 回调函数的写法!
在adc.h中这样写:typedef void(*ADC0_FUNC)(void); //将指针函数声明为一个类型extern ADC0_FUNC adc0_set_func(ADC0_FUNC func); //中断函数的设定在adc.c中这样写://定义一个routine函数,他将利用adc0_set_func()函数将自己指向用户定义的中断函数 ADC0_FUNC adc0_routine; //设定adc0 的中断函数ADC0_FUN
2010-08-26 11:10:00
490
原创 积分电路和微分电路!!!
积分电路:1.延迟、定时、时钟2.低通滤波3.改变相角(减)微分电路:1.提取脉冲前沿2.高通滤波3.改变相角(加) 积分电路和微分电路是对信号求积分与求微分的电路了它最简单的构成是一个运算放大器,一个电阻R和一个二极管C二极管位置和电阻互换一下就是积分电路积分电路和微分电路是对信号求积分与求微分的电路了它最简单的构成是一个运算放大器,一个电阻R和一个二极管C二极管位置和电阻互换一下就是积分电路
2010-08-06 10:09:00
1686
原创 关于“虚短”“虚断”的讨论!
图一运放的同向端接地=0V,反向端和同向端虚短,所以也是0V,反向输入端输入电阻很高,虚断,几乎没有电流注入和流出,那么R1和R2相当于是串联的,流过一个串联电路中的每一只组件的电流是相同的,即流过R1的电流和流过R2的电流是相同的。流过R1的电流I1 = (Vi - V-)/R1 ……a 流过R2的电流I2 = (V- - Vout)/R2 ……b V- = V+ = 0 ……c I1 = I2 ……d 求解上面的初中代数方程得Vout = (-R2/R1)*Vi 这就是传说中的反向放大器的
2010-08-05 15:15:00
449
原创 电荷泵总结!!!
介绍功率MOS管的驱动时,提到一个电荷泵,用来提供高于VCC的电压。这在马达驱动器,开关电源驱动芯片经常用到。而且很多情况下,跨接电容需要单独选择。这时需要了解一些基本的内容。1,原理 电荷泵的基本原理是,通过电容对电荷的积累效应而产生高压,使电流由低电势流向高电势。(参考资料1) 最简单的电荷泵:跨接电容A端通过二极管接Vcc,另一端B端接振幅Vin的PWM方波。当B点电位为0时,A点电位为Vcc;当B点电位上升至Vin时,因为电容两端电压不变,此时A点电位上升为Vcc+Vin。(参考资料2)
2010-07-30 16:12:00
6495
1
转载 LDO和DC-DC器件的区别
<br /> <br />DCDC的意思是直流变(到)直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器,包括LDO。但是一般的说法是把直流变(到)直流由开关方式实现的器件叫DCDC。 <br /> LDO 是低压降的意思,这有一段说明:低压降(LDO)线性稳压器的成本低,噪音低,静态电流小,这些是它的突出优点。它需要的外接元件也很少,通常只需要一两 个旁路电容。新的LDO线性稳压器可达到以下指标:输出噪声30μV,PSRR为60dB,静态电流6μA,电压降只有100mV。LDO线
2010-07-30 15:49:00
296
原创 负电压的产生方案!!!
<br />负电压产生方案 说明<br /><br /><br />使用电荷泵产生负电压 电路简单,性价比高<br />使用LDO 产生负电压 效率低,使用器件多<br />使用DC-DC 产生负电压 电路复杂<br />使用电源模块产生负电压 电路简单、稳定性高、体积大<br />
2010-07-30 15:47:00
982
原创 为什么增益下降3dB的频率点就是功率下降的一半呢?
<br />一:<br />对于功率,取10logX <br /><br />而对于电压,取20logX。<br /><br /><br />-3db点,对于半功率,就是-10log0.5,<br /><br />如果换算成电压,电压就是0.707倍,算成db就是-20log0.707≈-3dB<br /> <br />二:<br /> <br /> dB 是功率增益的单位,表示一个相对值。当计A的功率比B大或小多少时, 用10*lg(a/b)表示。如A的功率比B的大一倍,那么10*lg2=3d
2010-07-30 14:33:00
9812
原创 如何制作串口线!!!
<br />RS-232接口又称之为RS-232口、串口、异步口或COM(通信)口。"RS-232"是其最明确的名称。 在计算机世界中,大量的接口是使用串口进行数据连接的,连接的硬体就是RS-232九芯电缆。要制作RS-232串口线首先要了解RS-232串口的引脚说明。RS-232串口分为9针串口(俗称:公头)和9孔串口(俗称:母头)。各自的引脚说明: <br />1.RS-232端口(DB9母头/孔型)引脚定义:(因为计算机后面的串口多为公头,所以此母头可以直接插入计算机的COM口进行连接) <br />
2010-07-30 11:20:00
6711
3
原创 LDO是low dropout regulator !!!
<br /> LDO是low dropout regulator,意为低压差线性稳压器,是相对于传统的线性稳压器来说的。传统的线性稳压器,如78xx系列的芯片都要求输入电压要比输出电压高出2v~3V以上,否则就不能正常工作。但是在一些情况下,这样的条件显然是太苛刻了,如5v转3.3v,输入与输出的压差只有1.7v,显然是不满足条件的。针对这种情况,才有了LDO类的电源转换芯片。<br /> LDO是低压降的意思,这有一段说明:低压降(LDO)线性稳压器的成本低,噪音低,静态电流小,
2010-07-30 09:47:00
858
转载 VSPD 串口调试工具!!
<br />以前没接触过串口,一直都以为串口很复杂。最近在做一个新项目,用单片机控制GSM模块。单片机和GSM模块接口就是串口。调试完后觉得串口其实很简单。“不过如此”。这可能是工程师做完一个项目后的共同心态吧。下面详细介绍下如何用虚拟串口调试串口发送接收程序。<br />需要用到三个软件:KEIL,VSPD XP5(virtual serial ports driver xp5.1虚拟串口软件),串口调试助手。<br />1、首先在KEIL里编译写好的程序。<br />2、打开VSPD,界面如下图所示:<
2010-07-23 15:29:00
4260
1
转载 C/C++中变量及函数命名的讨论(转帖)
<br /> <br />一、命名法<br /> 在编程时为提高程序的可读性及易维护性,降低程序的维护、升级成本,在程序代码的书写时除了要注意格式外还要注意变量的命名,现在流行的有两种命名法,一种是流行于Window编程(主要是由于微软的影响)的匈牙利命名法。<br /> 据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。现在,大部分程序员不管自己使用 什么软件进行开发,或多或少都使
2010-07-13 13:08:00
1544
1
原创 履历和简历(CV vs Resume)有何不同!
CV is much lengthier than a resume and emphasize your credentials and education. They usually follow very narrow guidelines and are very detailed. Published works are cited and seminars prese
2010-05-23 08:36:00
480
原创 引文信件和地址的写法!
英文地址书写格式常见地址参考:***室/房 Room ******单元Unit ******村 *** Vallage***号楼/栋 *** Building***号 No.******公司 *** Com.或*** Crop或***LTD.CO***号宿舍 *** Dormitory***厂 *** Factory***楼/层 ***/F***酒楼/酒店 *** Hotel***住宅区/小区 *
2010-05-23 08:03:00
1382
原创 基本的电机控制原理!!!
许多应用都会用到功率低于300 W的小型微型电机,例如汽车、打印机、复印机、纸张处理机、工厂自动化、太空和军事载具、测试设备和机械人。整体而言,电机的产量约和其功率大小成反比,这表示小型微型电机的产量远超过大型微型电机。应用最广泛的小型微型电机包括直流电机、微型直流电机和步进电机。步进电机、直流电机和微型直流电机的主要区别在于它们的驱动方式。步进电机是以步阶方式分段移动,直流电机和微型直流电机
2010-05-12 10:56:00
804
原创 声音导引系统(B题)
声音导引系统(B题) 【本科组】一、任务设计并制作一声音导引系统,示意图如图1所示。 下载 (19.38 KB)11 小时前 图中,AB与AC垂直,Ox是AB的中垂线,Oy是AC的中垂线,W是Ox和Oy的交点。声音导引系统有一个可移动声源S,三个声音接收器A、B和C,声音接收器之间可以有线连接。声音接收器能利用可移动声
2010-05-11 10:28:00
621
原创 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响!!!
从 2.4 到 2.6,Linux 内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱动开发人员面临着将驱动从 2.4 移植到 2.6 内核,或是使驱动同时支持2.4 与 2.6 内核的任务。站在设备驱动开发人员的角度,驱动由一个或几个外部可加载内核模块组成,本文针对 2.6 内核里模块机制的改变对编写设备驱动程序的影响,从内核模块的编译、装载时的版本检查、初始化与退出、
2010-04-20 00:32:00
325
原创 模块Makefile !!!
模块Makefile 1.最基本的一个Makefile文件:# hello.o为你需要编译的源代码,若有多个源代码应使用方法二的方式obj-m:=hello.o#方法二obj-m:=module.omodule-objs:=file1.o file2.o将上面的内容保存为Makefile,在命令行输入“make -C /lib/modules/$(shell uname -r)/bui
2010-04-20 00:29:00
940
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人