我要在中断服务程序中改变端口状态,推出中断时还原,Keil c中如何保存p1、p0口状态?
回复(10) 2005-02-26 09:50 来自版块 - Keil C 使用
表情
cnwarror用 sfr 可以定义整个端口,如 sfr P0 =0x80; //假设PO对应寄存器的地址是0x80 那使用的时候就可以直接用 PO 来操作整个IO口了。 sbit就是定义IO口的一个位。如 sbit PO_0=0x80; sbit PO_1=0x81; ………… ...(2008-03-12 14:18)
天冰天降在51这种单片机的程序设计中,最好是设置中断标志字,表明进入过中断,而后在主服务程序中做相应的处理,进入相应的服务程序,这样的好处是节省堆栈占用,因为51系列单片机的内存太少了,容易产生溢出,堆栈溢出可是不可预测的,很难调试出来的。(2007-08-06 14:50)
mycpu看看REG51.H或者REGX51.H头文件是怎么定义的就明白了. Keil/c51/inc/下有各种微处理器的头文件,直接拿来看就行了。(2007-07-13 08:25)
xuyaosong楼上讲的很详细,谢谢,学习了(2007-06-18 15:32)
computer00楼上正解. 51的IO口比较特殊,它是准双向IO口. 只有读-修改-写指令才能读到输出寄存器的值,而直接读端口,则读到的是IO口电平值,如果你的外部电路能够改变IO口状态的话,那么实际上读回的值与你写入到端口的值是不一样的。当然,如果你确保你的外围硬件不会影响IO口的电平,那么可...(2007-03-28 21:35)
zmwk这种保存方法有问题, 比如实际上P1全1,但由于外部下拉电阻,保存时可能会读成0,再恢复时就不对了。 最好保存控制字,用控制字刷新端口。(2005-02-28 15:24)
crying_p详细一点,P0口如何表示?头文件中都是以位定义的啊? 看来你对KEIL还不是很熟悉,建议买本书看看,推荐一本C上手的比较快的单片机书:51系列单片机及C51程序设计,科学出版社出版,王建校,杨建国等编著,26元,这本书性价比还可以,适合新手上路,另外不知道你把什么头文件包含进...(2005-02-28 10:21)
lbcat 用 sfr 可以定义整个端口,如 sfr P0 =0x80; //假设PO对应寄存器的地址是0x80 那使用的时候就可以直接用 PO 来操作整个IO口了。 sbit就是定义IO口的一个位。如 sbit PO_0=0x80; sbit PO_1=...(2005-02-26 14:45)
lzl详细一点,P0口如何表示?头文件中都是以位定义的啊?(2005-02-26 11:30)
crying_p你可以在中断程序中设置两个unsigned char 的变量保存这两个断口的状态,出中断的时候还原就可以了呀 跟汇编差不多(2005-02-26 11:19)

返回顶部