keil 51 使用C语言的中断向量.doc

keil 51 使用C语言的中断向量.doc

ID:61506894

大小:26.50 KB

页数:6页

时间:2021-02-08

keil 51 使用C语言的中断向量.doc_第1页
keil 51 使用C语言的中断向量.doc_第2页
keil 51 使用C语言的中断向量.doc_第3页
keil 51 使用C语言的中断向量.doc_第4页
keil 51 使用C语言的中断向量.doc_第5页
资源描述:

《keil 51 使用C语言的中断向量.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、keil51使用C语言的中断向量.txt丶︶ ̄喜欢的歌,静静的听,喜欢的人,远远的看我笑了当初你不挺傲的吗现在您这是又玩哪出呢?中断源的矢量位置中断源Keil中断编号矢量地址最高优先级60x0033外部中断000x0003定时器0溢出10x000B外部中断120x0013定时器1溢出30x001B串口40x0023定时器2溢出50x002BDMA70x003B硬件断点80x0043JTAG90x004B软件断点100x0053监视定时器120x0063C语言在8051单片机上的扩展(interrupt、using关键字的用法

2、)(2008-06-2614:12:36)转载标签:interruptusingc语言itC语言在8051单片机上的扩展(interrupt、using关键字的用法)直接访问寄存器和端口定义sfrP00x80sfrP10x81sfrADCON;0xDEsbitEA0x9F操作ADCON=0x08;P1=0xFF;io_status=P0;EA=1;在使用了interrupt1关键字之后,会自动生成中断向量在ISR中不能与其他"后台循环代码"(thebackgroundloopcode)共享局部变量因为连接器会复用在RAM中这

3、些变量的位置,所以它们会有不同的意义,这取决于当前使用的不同的函数复用变量对RAM有限的51来将很重要。所以,这些函数希望按照一定的顺序执行而不被中断。timer0_int()interrupt1using2{unsignedchartemp1;unsignedchartemp2;executableCstatements;}"interrupt"声明表示向量生成在(8*n+3),这里,n就是interrupt参数后的那个数字这里,在08H的代码区域生成LJMPtimer0_int这样一条指令"using"tellsthec

4、ompilertoswitchregisterbanksonentrytoaninterruptroutine.This"context"switchisthefastestwayofprovidingafreshregisterbankforaninterruptroutine'slocaldataandistobepreferredtostackingregistersforverytime-criticalroutines.Notethatinterruptsofthesameprioritycansharearegi

5、sterbank,sincethereisnoriskthattheywillinterrupteachother.'using'告诉编译器在进入中断处理器去切换寄存器的bank。这个"contet"切换是为中断处理程序的局部变量提供一个新鲜的寄存器bank最快的方式。对时序要求严格的程序,是首选的stack寄存器(保存寄存器到stack)方式。注意:同样优先级别的中断可以共享寄存器bank,因为他们每次将中断没有危险IfaUSING1isaddedtothetimer1interruptfunctionprototype,

6、thepushingofregistersisreplacedbyasimpleMOVtoPSWtoswitchregisterbanks.Unfortunately,whiletheinterruptentryisspeededup,thedirectregisteraddressingusedonentrytosys_interpfails.ThisisbecauseC51hasnotyetbeentoldthattheregisterbankhasbeenchanged.Ifnoworkingregistersareu

7、sedandnootherfunctioniscalled,theoptimizereliminiatestehcodetoswitchregisterbanks.如果在timer1的中断函数原型中使用USING1,寄存器的pushing将被MOVtoPSW切换寄存器bank所替换。不幸的是,当一个中断入口被加速时。用在入口的直接寄存器寻址将失败。这是因为C51没有告诉寄存器bank已经改变。如果不工作的寄存器将被使用,如果没有其他函数被调用,优化器.....Logically,withaninterruptroutine,

8、parameterscannotbepassedtoitorreturned.Whentheinterruptoccurs,compiler-insertedcodeisrunwhichpushestheaccumulator,B,DPTRandthePSW(programstatuswo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。