博文
单片机主中断原理(2008-02-26 12:52:00)
摘要:有关中断的概念
什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。
仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了….等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。
第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。
第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。3、执行中断......
中断原理简介(2008-02-26 12:52:00)
摘要:摘要:本文主要介绍C语言中中断服务程序的编写、安装和使用。由于硬中断服务程序的编写涉及到硬件端口读写操作,使得用户直接和硬件打交道,在程序设计过程中要用到的数据(如硬件端口地址等)比较多,这就使程序员和计算机的硬件设备间缺少一种“缓冲”的作用,况且,用汇编语言来直接对硬件编程要方便得多。本文仅对软中断程序的编写作个介绍。
关键词:软中断、中断向量、中断向量表、TSR内存驻留、DOS重入、中断请求、段地址、偏移量、寄存器、BIOS、DOS、setvect ( )、getvect ( )、keep ( )、disable ( )、enable ( )、geninterrupt ( )、int86 ( )、interrupt
对于一般的C语言爱好者而言,就如何在C中使用中断例程这一问题应该已经非常熟悉,例如,我们可以通过int86 ( )函数调用13H号中断直接对磁盘物理扇区进行操作,也可以通过INT86 ( )函数调用33H号中断在屏幕上显示鼠标光标等。其实,13H号也好,33H号也好,它们只不过就是一些函数,这些函数的参数通过CPU的寄存器传递。中断号也只不过是间接地指向函数体的起始内存单元,说它是间接的,也就是说,函数的起始段地址和偏移量是由中断号通过一种方法算得的(具体如何操作,下面会作解释)。如此一来,程序员不必要用太多的时间去写操作硬件的程序了,只要在自己的程序中设置好参数,再调用BIOS或DOS提供的中断服务程序就可以了,大大减小了程序开发难度,缩短了程序开发周期。那么中断既然是函数,就可以由用户任意的调用、由用户任意地编写。
计算机内存的前1024个字节(偏移量00000H到003FFH)保存着256个中断向量,每个中断向量占4个字节,前两个字节保存着中断服务程序的入口地址偏移量,后两个字节保存着中断程序的入口段地址,使用时,只要将它们分别调入寄存器IP及CS中,就可以转入中断服务程序实现中断调用。每当中断发生时,CPU将中断号乘以4,在中断向量表中得到该中断向量地址,进而获得IP及CS值,从而转到中断服务程序的入口地址,调用中断。这就是中断服务程序通过中断号调用的基本过程。在计算机启动的时候,BIOS将基本的中断填入中断向量表,当DOS得到系统控制权后,它又要将......
中庸之道:诚与道德修养(2008-02-24 20:28:00)
摘要:《中庸》与《大学》一样,也是战国末期儒家的重要经典之一。《中庸》把《大学》中关于道德修养的“八条目”中“诚意”一条凸显出来,从而建构了一套以“诚”为价值核心的道德修养理论。
天道之诚与人道之诚
《中庸》用了很多篇幅讲天道之诚与人道之诚,然后又论证了它们之间的统一性问题。在《中庸》作者看来,诚是客观规律的反映,是事物发展规律的本质规定。天道之诚作为天理之本然,是人性的价值本源,人性本之于天道,因此,《中庸》又提出了“诚之者,人之道也”。这种以天道解释人性、道德起源的观点,可以说是对孟子“尽心椫詶知天”思想的继承和发展。由此我们也可以看出,《中庸》所谓的诚包含着两层含义:就其本体论意义而言,天道之诚喻指自然界生生不息的规律及自然万物存在的终极根源;就其道德意义而言,人道之诚表明一种人性之善。《中庸》赋予诚以本体论和道德论的双重含义,通过诚在天道与人道之间的关系把天、人联系到一起并在诚的基础上统一起来。从这一点上来讲,诚是天、人合一的关键点,没有诚,人们既无法认识和体察天之道,也无法认识和把握人之道。
《中庸》讲天道之诚不是目的,它最终要落实到社会,落实到人,落实到道德主体的实践上。《中庸》认为,修身是人生的出发点,要修身便要处理好五种人伦关系,同时还要具备知、仁、勇三种品行;要修身就要先做到诚身,那么,怎样才能做到诚身呢?《中庸》指出,诚身有道可循,这个道就是要做到善。可见,诚身的内涵就是一个善字,就是一个如何明善、如何行善的问题。《易传·系辞上》中所说的“继之者,善也,成之者,性也”说的就是这个意思。在有关诚的论述中,我们可以感受到由本体论意义上的诚推导引伸至伦理意义上道德主体对诚的运用。《中庸》按照天道之诚为人道之诚描绘出了一幅修养的路径:“自诚明,谓之性;自明诚,谓之教。诚则明矣;明则诚矣。”通过明诚的方式也就是教育、学习的方式具体地把诚运用到实际生活中,这就是最高境界诚之道人格化的体现,那种看起来不可捉摸的天道之诚通过为善、行善、择善的转化过程就可以实现诚。通过这种方式,主体的人道与本体的天道之间因明诚而融为一体,最终达到天人合一的理想境界。
诚在社会政治生活中的地位和作用
诚是修心尽性、与天地参的重要手段。至诚不但可以化物,而且可以育物,至诚发挥到最高阶段,就能达到尽人、物之性,就能实现赞天地之化育、与天地参的理想境界。诚还是成己、成人的必要条件。......
中庸之道(2008-02-24 20:26:00)
摘要:中庸之道的理论基础是天人合一。通常人们讲天人合一主要是从哲学上讲,大都从《孟子》的“尽其心者,知其性也;知其性,则知天矣”(《尽心》)讲起,而忽略中庸之道的天人合一,更忽视了天人合一的真实含义。天人合一的真实含义是合一于至诚、至善,达到“致中和,天地位焉,万物育焉”、“唯天下至诚,为能尽其性。能尽其性则能尽人之性;能尽人之性,则能尽物之性;能尽物之性,则可以赞天地之化育;可以赞天地之化育,则可以与天地参矣”的境界。“与天地参”是天人合一。这才是《中庸》天人合一的真实含义。因而《中庸》始于“天命之谓性,率性之谓道,修道之谓教”而终于“‘上天之载,无声无臭。’至矣”。这就是圣人所要达到的最高境界,这才是真正意义上的天人合一。天人合一的天是善良美好的天,天人合一的人是像善良美好的天那样善良美好的人,天人合一就是人们自觉修养所达到像美好善良的天一样造福于人类和自然理想境界。
中庸之道的天人合一表现在以下几个方面。
(1)天道与人道合一
天道就是诚,人道就是追求诚。这就是原天以启人,尽人以合天。也就是要求人道与天道相吻合。《中庸》说:“诚者,天之道也。诚之者,人之道也。诚者,不勉而中,不思而得,从容中道,圣人也。诚之者,择善而固执之者也。”
郑玄说:“言诚者天性也,诚之者,学而诚之者也。”孔颖达说:“此经明至诚之道,天之性也。则人当学其诚之性,是上天之疲乏不为而诚,不思而得,若天之性,有生杀信著四时,是天之道。诚之者人之道也者,言人能勉力学此至诚,是人之道也。不学则不得,故云人之道。诚者不勉而中,不思而得,从容中道,圣人也者,此复说上文诚者天之道也。唯圣人能然,谓不勉励而自中当于善,不思虑而自得于善,闲暇而自中乎道,以圣人性合于天道自然,故云圣人也。诚之者,择善而固执之者也,此复说上文诚之者,人之道也。谓由学而致此至诚,谓贤人也。言选择善事而坚固执之,行之不已,遂致至诚也。”
按照郑玄和孔颖达的解释,中庸之道的天道与人道合一为两种类型:一是圣人的天人合一,二是贤人的天人合一。圣人的天人合一是本能的天人合一。贤人的天人合一是通过学习而达到的天人合一。应该说,还有凡人的天人合一。《中庸》说:“或生而知之,或学而知之,或困而知之,及其知之,一也。或安而行之,或利而行之,或勉强而行之,及其成功,一也。”可......
艳照门事件(2008-02-24 16:19:00)
摘要:这是个真实的照片
肌肉男
是我下铺偷拍的 大2学习的搏击,开始锻炼。 前天这家伙突然给传了一张 哈哈。......
世界上速度最快的减肥方法(2008-02-23 17:29:00)
摘要:1、减3斤每天抹精油 通常每个部位大约只需5至10分钟,让肌肤略红即可。每天按摩下来一周可以瘦约3至5斤,1个月后就能感觉身体更紧实,3个月就有明显的效果。
2、减5斤每天喝红酒 红酒中所含丹宁能有效帮助消化,亦有抗氧化功能,可使体形不会随岁月流逝而臃肿走样。据说每天睡前饮一杯,可以轻松减去5斤肉。
3、减6斤每天只吃肉 台湾歌手蓝心湄曾透露,自己迅速减掉3公斤的秘密就是只吃肉。专家指出,吃肉减肥这样的另类减肥法虽然有效,但有损身体各方面机能。
4、减10斤每天只吃鸡蛋 鸡蛋黄中含有的卵磷脂是一种乳化剂,可使脂肪胆固醇乳化成极小颗粒,从血管排除后为机体所利用。它还可使血液中的高密度脂蛋白增高。
5、减12斤每天喝蜂蜜水 蜂蜜是天然营养品,它含可以燃烧人体能量的优质糖分和矿物质。在一日三餐中,只要加入一些蜂蜜,就可以避免脂肪在人体中积聚下来。......
婚姻如鞋,你脚上穿的是什么鞋? (2008-02-23 17:14:00)
摘要: 婚姻如鞋,你脚上穿的是什么鞋?男才女貌的婚姻是品牌鞋,看上去高贵、漂亮,感觉上舒服、大方,但它的价格昂贵,经不得泥泞,需要精心保养、时时珍惜。
青梅竹马的婚姻是布鞋,看上去朴素无华,穿起来经济,放起来了无牵挂,感觉上轻便快捷,可一旦登堂入室,总让人感觉不大入流。
患难与共的婚姻是旅游鞋,它看上去奇特,穿上去灵巧。其最大的特点是历经风雨泥泞也不会脱帮掉底,且只要穿上就总是和脚抱得紧紧的。因此,越是在坎坎坷坷的人生路上,越是显出其耐用合脚的特征。
浪漫型的婚姻是舞鞋,它轻便、灵活、雅致,但一离开平坦光滑的特定环境,就显得极难适应,也极不实用。
事业型的婚姻是跑鞋,它能和脚相互帮衬、共创辉煌,但一脱离事业的跑道,鞋和脚就很难相互适应。
老夫少妻的婚姻是松糕鞋,穿着它虽不能长途跋涉,但却显得颇特别。所以男人走先了一步,女人只能当寡妇?在性生活方面女人是永远没有高潮的,所以我说聪明的女人们应该明白这道理?如果一个男人大过你二十岁?不管他有多爱你还是他多有钱?还是把你拿当他手心里的宝?这都只是眼前的利益?如果他真的爱你?他会找理由离开你?因为他知道他很快就要死了?不能给你带来幸福?哈哈!我以前的他就是这么爱我的!所以他才离开了我!
老妻少夫的婚姻是大傻鞋,看上去滑稽、穿起来方便、脱下去容易。不过,穿上它只能在卧室里自我感觉,如果跑到街上显摆就难免会成为话柄。
开放型的婚姻是凉鞋,它有着极强的季节性,它能让人在情感升温的夏季,毫不犹豫地穿上它;又能让人在情感的季节变凉之后,很随意地就脱掉它。
红杏出墙的婚姻是拖鞋,它很好穿,又很方便,有很大的适应性,但致命的弱点是出不了大门、上不了正路、走不了多远。
被金钱收买的婚姻是小尺码的紧口绣花鞋,看上去挺美,但只有脚知道:感觉并不好受。
被强力逼迫的婚姻是大铁鞋,沉重得让人寸步难行,可要想脱掉它却要伤筋动骨、皮开肉绽、鲜血直流……
选择满意的婚姻如同选双满意的鞋子,重要的是鞋的尺码和脚的尺码相同,最好是什么样的脚穿什么样的鞋子。
舒适的鞋子养脚。但千万要记住:舒适的鞋子,不一定是最漂亮的鞋子。任何时候,我们都只能让鞋子来适应脚,而不能让脚去适应鞋子。鞋子舒服不舒服只有脚知道?而不是整天......
如何掌控MCU?(2008-02-22 22:32:00)
摘要:不管是MCU还是ARM及DSP等程序控制类,从玩了20余年的经验来看,
最关键的当数IO,定时及中断.
只要很好地应用此三板斧,MCU基本就算结业并可谋生了~~~
IO基本由2类代表作,即51的准双向和其他MCU/ARM/DSP的真双向.
准双向的特点是高电平的驱动能力较弱,但其优点是控制方便,不需设定输入输出方式.更难得的是它模拟串行时序非常完美,几乎可以和任何串行接口匹配.
真双向的特点是高电平的驱动能力较强,优点是方向控制明确,但在模拟时序方面显然不如前者.
特别注意的是在方向可以变化时,如果外部接口的拉电流或灌电流较大时,该IO做输出高电平时就有很大的危险性,故有时需要加电阻限流或二极管隔离.
有时在模拟时序时,想要输出高电平时,要"曲线救国",既设置为输入方式!!!并且外部加上拉电阻(内部当然更好,像AVR的IO就很有特点),这样就利用上拉电阻"输出"了高电平!!!注意,输出低电平是真的!!!
定时器应该是不可缺少的~~~它可以很方便控制的延迟和OS的构成.这里就不多说了...
中断是控制的精华,可能没什么工控程序能离得开中断了,可以想象没有中断的PIC12C508的定时器有多倒塌呀~~~
当然中断也不是万能的,至少它的响应是需要时间的.而且有时要中断比有中断不用更难为情~~~
如键盘中断,当键盘压下进入中断服务程序后只能反映可能发生了键盘的跳变事件,但并不代表真的压下键盘!!!难道要在键盘中断里调用20mS软件延时程序来进行键盘消抖吗???真倒塌了~~~
当然要学的还很多,但先掌握此三板斧是很有必要的.........
LPC213X硬件SPI接口LCD19232显示C++代码(2008-02-22 22:31:00)
摘要:/*--------------------------------------------------------------------
LPC213X硬件SPI接口LCD19232显示C++代码
HotPower@126.com
--------------------------------------------------------------------*/
//__inline
LcdObj::LcdObj(void)
{
LcdSpiInit();//SPI初始化
LcdInit();
}
//__inline
void LcdObj::LcdSpiInit(void)
{
/* 设置MOSI 和SCK 及SS 为输出,其他为输入 */
LCDPORT->IODIR |= (1 << LCDCS);
LCDPORT->IOCLR = (1 << LCDCS);
/*
LCDPORT->IODIR |= (1 << LCDSCK)| (1 << LCDSID);//设置输出方式
LCDPORT->IOSET = (1 << LCDSCK) | (1 << LCDSID);
*/
POWER->P_CONP |= (1 << PCSPI0);
PINSEL->PIN_SEL0 |= ((P0_4_SCK0 << P0_4_PINSEL) | (P0_6_MOSI0 << P0_6_PINSEL));
// SPI->SPI_SPCCR = 0x168; // 设置SPI时钟分频
SPI->SPI_SPCCR = 0x52; &nb......
PC213X之LCM1010 C++程序源代码(2008-02-22 22:31:00)
摘要:/*--------------------------------------------------------------------------
LPC213X之LCM1010 C++程序源代码
HotPower@126.com 2006.8.29
-------------------------------------------------------------------------------*/
#i nclude <LPC213XDEF.H>
#define WDI P0_11//
#define LCMDATA P0_6 //LCM1010数据端
#define LCMWR P0_7 //LCM1010写
#define LCMCS P0_8 //LCM1010片选
#define LedSegS1 0x20
#define LedSegS2 0x40
#define LedSegS3 0x80
#define LedSegS4 0x02
#define LedSegS5 0x04
#define LedSegS6 0x08
//HCBD GAEF
#define LedSegA 0x04
#define LedSegB 0x20
#define LedSegC 0x40
#define LedSegD 0x10
#define LedSegE 0x02
#define LedSegF 0x01
#define LedSegG 0x08
#define LedSegH 0x80
#define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF )
#define LedChar1 (......