博文
usb(2005-09-27 00:30:00)
摘要:USB的重要关键字:
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)
2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。
3、上行、下行:设备到主机为上行,主机到设备为下行
下面以一问一答的形式开始学习吧。
问题一:USB的传输线结构是如何的呢?
答案一:一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500MA(可以在编程中设置的,至于硬件的实现机制,就不要管它了)。
问题二:数据是如何在USB传输线里面传送的
答案二:数据在USB线里传送是由低位到高位发送的。
问题三:USB的编码方案?
答案三:USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反,输入1时就保持原值,为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入***作(即在数据流中每连续6个1后就插入一个0),从而强迫NRZI码发生变化。这个了解就行了,这些是由专门硬件处理的。
问题四:USB的数据格式是怎么样的呢?
答案四:和其他的一样,USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。
(一)域:是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型:
1、同步域(SYNC),八位,值固定为0000 0001,用于本地时钟与输入同步
2、标识域(PID),由四位标识符+四位标识符反码构成,表明包的类型和格式,这是一个很重要的部分,这里可以计算出,USB的标识码有16种,具体分类请看问题五。
3、地址域(ADDR):七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一......
单片机开发中应掌握的几个基本技巧(2005-09-27 00:29:00)
摘要:
在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着工程师。为帮助工程师解决单片机设计上的难题,《电子工程专辑》网站特邀Holtek香港分公司工程部处长邓宏杰先生担任《单片机应用编程技巧》专题讨论的嘉宾,与广大设计工程师交流单片机设计开发经验。现根据论坛中的讨论归纳出单片机开发中应掌握的几个基本技巧。
一、 如何提高C语言编程代码的效率
邓宏杰指出,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。他强调:“如果使用C编程时,要达到最高的效率,最好熟悉所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的时候,使用编译效率最高的语句。”
他指出,各家的C编译器都会有一定的差异,故编译效率也会有所不同,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。他说:“对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求你对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但由于不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。所以如果对这些特性不了解,那么调试起来问题就会很多,反而导致执行效率低于汇编语言。”
二、 如何减少程序中的bug?
对于如何减少程序的bug,邓宏杰给出了一些建议,他指出系统运行中应考虑的超范围管理参数有:1.物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理。2.资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。在程式设计中,对资源参数不允许超范围使用。3.应用参数。这些应用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限。4.过程参数。指系统运行中的有序变化的参数。
三、如何解决单片机的抗干扰性问题
邓宏杰指出:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够......
计算π(2005-09-24 14:27:00)
摘要:#include <stdlib.h> #include <stdio.h> long a=10000,b,c=2800,d,e,f[2801],g; main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); } 计算结果: 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342......
诸葛亮写给儿子的信(2005-09-24 14:21:00)
摘要:
诸葛亮字孔明,琅琊(今山东省沂南县)人,是中国三国时代著名的政治家及军事家,也是古代著名的智者。诸葛亮写给儿子的一封信,只用了短短八十六字,但是对于为学、做人有精简而且具体的忠告。 一千八百多年前的智能,在今天的科技时代,原来仍然有其参考价值。年青时听人说:「真正的智能,可以超越时空,历久常新。」初时不知所以,现在觉得所言甚 是。让我们一起向诸葛亮老师学习十堂课,在变局中安身立命,在逆境中找到力量: 诸葛亮给子书 夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及! *********************************************************>> 第一课:宁静的力量>> 「静以修身」、「非宁静无以致远」、「学须静也」。 诸葛亮忠告孩子宁静才能够修养身心,静思反省。不能够静下来,则不可以有效的计划未来,而且学习的首要条件,就是有宁静的环境。 现代人大多数终日忙碌,你是否应在忙乱中静下来,反思人生方向?>> 第二课:节俭的力量>> 「俭以养德」。 诸葛亮忠告孩子要节俭,以培养自己的德行。审慎理财,量入为出,不但可以摆脱负债的困扰,更可以过着纪律的简朴生活,不会成为物质的奴隶。在鼓励消费的文明社会,你有否想过节俭的好处呢?>> 第三课:计划的力量>> 「非澹泊无以明志」、「非宁静无以致远」。诸葛亮忠告孩子要计划人生,不要事事讲求名利,才能够了解自己的志向,要静 下来,才能够细心计划将来。面对未来,你有理想吗?你有使命感吗?你有自己的价值观吗?>>第四课:学习的力量「夫学须静也」、「才须学也」。 诸葛亮忠告孩子宁静的环境对学习大有帮助,当然配合专注的平静心境,就更加事半功倍。诸葛亮不是天才论的信徒,他相信才能是学习的结果。 你有否......
四个经典故事(2005-09-24 14:19:00)
摘要:1.误会: 早年在美国阿拉斯加地方,有一对年轻人结婚,婚后生育,他的太太因难产而死,遗下一孩子。 他忙生活,又忙于看家,因没有人帮忙看孩子,就训练一只狗,那狗聪明听话,能照顾小孩,咬着奶瓶喂奶给孩子喝,抚养孩子。 有一天,主人出门去了,叫它照顾孩子。 他到了别的乡村,因遇大雪,当日不能回来。第二天才赶回家,狗立即闻声出来迎接主人。他把房门开一看,到处是血,抬头一望,床上也是血,孩子不见了,狗在身边,满口也是血,主人发现这种情形,以为狗性发作,把孩子吃掉了,大怒之下,拿起刀来向着狗头一劈,把狗杀死了。 之后,忽然听到孩子的声音,又见他从床下爬了出来,于是抱起孩子;虽然身上有血,但并未受伤。 他很奇怪,不知究竟是怎么一回事,再看看狗身,腿上的肉没有了,旁边有一只狼,口里还咬着狗的肉;狗救了小主人,却被主人误杀了,这真是天下最令人惊奇的误会。 注:误会的事,是人往往在不了解、无理智、无耐心、缺少思考、未能多方体谅对方,反省自己,感情极为冲动的情况之下所发生。 误会一开始,即一直只想到对方的千错万错;因此,会使误会越陷越深,弄到不可收拾的地步,人对无知的动物小狗发生误会,尚且会有如此可怕严重的后果,这样人与人之间的误会,则其后果更是难以想象。 2.钉子: 有一个男孩有着很坏的脾气,于是他的父亲就给了他一袋钉子;并且告诉他,每当他发脾气的时候就钉一根钉子在后院的围篱上。 第一天,这个男孩钉下了37根钉子。慢慢地每天钉下的数量减少了。他发现控制自己的脾气要比钉下那些钉子来得容易些。 终于有一天这个男孩再也不会失去耐性乱发脾气,他告诉他的父亲这件事,父亲告诉他,现在开始每当他能控制自己的脾气的时候,就拔出一根钉子。 一天天地过去了,最后男孩告诉他的父亲,他终于把所有钉子都拔出来了。 父亲握着他的手来到后院说:你做得很好,我的好孩子。但是看看那些围篱上的洞,这些围篱将永远不能回复成从前。你生气的时候说的话将像这些钉子一样留下疤痕。如果你拿刀子捅别人一刀,不管你说了多少次对不起,那个伤口将永远存在。话语的伤痛就像真实的伤痛一样令人无法承受。 注:人与人之间常常因为一些彼此无法释怀的坚持,而造成永远的伤害。如果我们都能从自己做起,开始宽容地看待他人,相信你(你)一定能收到许多意想不到的结果……帮别人开启一扇窗,也就是让自己看到更完整的天空…… 3.且慢下......
8279可实现对键盘/显示的自动扫描(2005-09-15 12:38:00)
摘要:利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,并具有显示稳定、程序简单、不会出现误动作等特点。本系统中8279的状态/命令口地址位8701H;数据口地址位8700H。 示例程序运行将显示"8279 --",并等待按键输入,将键值显示在数码管上(只响应0-F按键)。
源代码:
Z8279 EQU 08701H ;8279 状态/命令口地址D8279 EQU 08700H ;8279 数据口地址LEDMOD EQU 10H ;右端输入 八位字符显示 ;外部译码键扫描方式,双键互锁LEDFEQ EQU 38H ;扫描速率LEDCLS EQU 0D1H ;清除LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址
ORG 0000H AJMP START ORG 0040HSTART:&nbs......
