㈠ 求51单片机同时控制两个步进电机的C程序
限于篇幅,程序省去 按键子程序 延时子程序 液晶初始化及相关程序、字符部分
#include<reg52.h>
#include<intrins.h>
#define mode 0x81 // 方式0,A口、B口输出,C口高4位输出,低4位输入
# include "stdio.h"
# include "string.h"
# include "math.h"
xdata unsigned char PA _at_ 0x7f00;
xdata unsigned char PB _at_ 0x7f01;
xdata unsigned char PC _at_ 0x7f02;
xdata unsigned char caas _at_ 0x7f03; //控制字
sbit P32=P3^2;
sbit P33=P3^3;
sbit P35=P3^5;
#define uchar unsigned char
#define uint unsigned int
unsigned char h,Pos ;
unsigned int R,NX,NY;
unsigned char key;
code unsigned char KeyTable[] = { // 键码定义
0x0f, 0x0b, 0x07, 0x03,
0x0e, 0x0a, 0x06, 0x02,
0x0d, 0x09, 0x05, 0x01,
0x0c, 0x08, 0x04, 0x00
};
code unsigned char LEDMAP[] = { // 八段管显示码
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
unsigned char Code_ ; // 字符代码寄存器
#define PD1 61 // 122/2 分成左右两半屏(122x32)
unsigned char Column;
unsigned char Page_ ; // 页地址寄存器 D1,DO:页地址
unsigned char Code_ ; // 字符代码寄存器
unsigned char Command; // 指令寄存器
unsigned char LCDData; // 数据寄存器
xdata unsigned char CWADD1 _at_ 0x1cff; // 写指令代码地址(E1)
xdata unsigned char DWADD1 _at_ 0x1eff; // 写显示数据地址(E1)
xdata unsigned char CRADD1 _at_ 0x1dff; // 读状态字地址(E1)
xdata unsigned char DRADD1 _at_ 0x1fff; // 读显示数据地址(E1)
xdata unsigned char CWADD2 _at_ 0x3cff; // 写指令代码地址(E2)
xdata unsigned char DWADD2 _at_ 0x3eff; // 写显示数进地址(E2)
xdata unsigned char CRADD2 _at_ 0x3dff; // 读状态字地址(E2)
xdata unsigned char DRADD2 _at_ 0x3fff; // 读显示数据地址(E2)
//----------------------液晶-----------------
// 清屏
// ************************ 中文显示程序 ***********************************/
/*************************直线 插 补***************************8*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=50;y>0;y--);
}
void zhengx()
{
PA=0x00;
delay(10);
PA=0x01;
delay(10);
}
void fux()
{
PA=0x02;
delay(10);
PA=0x03;
delay(10);
}
void zhengy()
{
PB=0x00;
delay(10);
PB=0x10;
delay(10);
}
void fuy()
{
PB=0x20;
delay(10);
PB=0x30;
delay(10);
}
void xian(int NX,int NY)
{int FM, NXY, XOY,ZF,z;
FM=0;
{if(NX>0)
if(NY>0)
XOY=1;
else
XOY=4;
else
if(NY>0)
XOY=2;
else
XOY=3;}
for(NXY= fabs(NX) + fabs(NY)-1;NXY>=0&&P32!=0&&P33!=0;NXY--)
{ {if(NX>0)
if(NY>0)
XOY=1;
else
XOY=4;
else
if(NY>0)
XOY=2;
else
XOY=3;}
for(NXY= fabs(NX) + fabs(NY)-1;NXY>=0;NXY--)
{ if(FM>=0)
{if(XOY==1||XOY==4)
{ZF=1;
zhengx();
}
else
{ZF=2;
fux();
}
FM=FM-fabs(NY);
}
else
{if(XOY==1||XOY==2)
{
ZF=3;
zhengy();
}
else
{ZF=4;
fuy();
}
FM=FM+fabs(NX);
}
}
for(z=0;z<200;z++)
{P35 = 0;
delay(10);
P35 = 1;
delay(10);
}
}
}
/*************************圆 弧 插 补***************************8*/
void yuanhu1( int X0,int Y0, int NX, int NY ,int RNS )
{
int NXY,BS,ZF,XM,YM,z;
int FM=0;
BS=fabs(NX-X0) + fabs(NY-Y0);
XM=fabs(X0);
YM=fabs(Y0);
for(NXY= fabs(NX-X0) + fabs(NY-Y0)-1;NXY>=0&&P32!=0&&P33!=0;NXY--)
{
if(RNS==1||RNS==3||RNS==6||RNS==8)
{
if(FM<0)
{
if(RNS==1||RNS==8)
{ZF=1;
zhengx();
}
else
{ZF=2;
fux();}
FM=FM+2*fabs(XM)+1;
XM=XM+1;
}
else
{
if(RNS==1||RNS==6)
{
ZF=3;
fuy();
}
else
{ZF=4;
zhengy();
}
FM=FM-2*fabs(YM)+1;
YM=YM-1;
}
}
else
if(FM>=0)
{
if(RNS==2||RNS==7)
{ZF=1;
zhengx();
}
else
{ZF=2;
fux();
}
FM=FM-2*fabs(XM)+1;
XM=XM-1;
}
else
{
if(RNS==2||RNS==5)
{ZF=3;
zhengy();}
else
{ZF=4;
fuy();}
FM=FM+2*fabs(YM)+1;
YM=YM+1;
}
}
if(P32==0||P33==0)
{
for(z=0;z<200;z++)
{P35 = 0;
delay(10);
P35 = 1;
delay(10);
}
}
}
int shu1 ()
{
int i=0,j=0,k=3;
while (1)
{
if(testkey())
{ delay(300);
delay1();
if(testkey())
{ j=getkey();
if(j!=14)
{i=i*10 + j;
k--;}
}}
if(k==0)
break;
}
return i;
}
int shu2 ()
{
int i=0,j=0,k=3;
while (1)
{
if(testkey())
{ delay(300);
delay1();
if(testkey())
{ j=getkey();
if(j!=14)
{i=i*10 + j;
k--;}
}}
if(k==0)
break;
}
return i;
}
void yuanhuchabu1()
{ int q=0;
delay(300);
R=shu1();
yj1();
q=R/100;
Page_ = 0x00;
Column = 0x35;
Code_ = q;
WriteCHN8x16();
q=R%100;
q=q/10;
Page_ = 0x00;
Column = 0x40;
Code_ = q;
WriteCHN8x16();
q=R%10;
Page_ = 0x00;
Column = 0x48;
Code_ = q;
WriteCHN8x16();
yuanhu1(R,0,0,R,5);
yuanhu1(0,R,-R,0,6);
yuanhu1(-R,0,0,-R,7);
yuanhu1(0,-R,R,0,8);
}
void yuanhuchabu2()
{ int q=0;
delay(300);
R=shu1();
yj1();
q=R/100;
Page_ = 0x00;
Column = 0x35;
Code_ = q;
WriteCHN8x16();
q=R%100;
q=q/10;
Page_ = 0x00;
Column = 0x40;
Code_ = q;
WriteCHN8x16();
q=R%10;
Page_ = 0x00;
Column = 0x48;
Code_ = q;
WriteCHN8x16();
yuanhu1(0,R,R,0,1);
yuanhu1(R,0,0,-R,4);
yuanhu1(0,-R,-R,0,3);
yuanhu1(-R,0,0,R,2);
}
void xianchabu()
{ int q1=0,q2=0;
delay(300);
NX=shu1();
delay(300);
NY=shu2();
yj2();
Page_ = 0x00;
Column = 0x25;
Code_ = 0x10;
WriteCHN8x16();
q1=NX/100;
Page_ = 0x00;
Column = 0x30;
Code_ = q1;
WriteCHN8x16();
q1=NX%100;
q1=q1/10;
Page_ = 0x00;
Column = 0x37;
Code_ = q1;
WriteCHN8x16();
q1=NX%10;
Page_ = 0x00;
Column = 0x40;
Code_ = q1;
WriteCHN8x16();
q2=NY/100;
Page_ = 0x00;
Column = 0x50;
Code_ =q1;
WriteCHN8x16();
q2=NY%100;
q2=q2/10;
Page_ = 0x00;
Column = 0x58;
Code_ = q2;
WriteCHN8x16();
q2=NY%10;
Page_ = 0x00;
Column = 0x60;
Code_ = q2;
WriteCHN8x16();
Page_ = 0x00;
Column = 0x72;
Code_ = 0x11;
WriteCHN8x16();
xian(NX,NY );
}
void main()
{ int q=0,q1=0,q2=0;
caas=mode;
PA=0X00;
PB=0X00;
PC=0x00;
R=0X00;
while(1)
{
if(testkey())
{
delay1();
if(testKey())
{ delay1();
if(getkey()==15)
{
delay(300);
yuanhuchabu1();
}
else if(getkey()==10)
{ delay(300);
yuanhuchabu2();
}
else if(getkey()==13)
{
xianchabu();
}
else if(getkey()==1)
{
zhengx();
}
else if(getkey()==2)
{
fux();
}
else if(getkey()==3)
{
zhengy();
} else if(getkey()==4)
{
fuy();
}
}
}
if(GetKey()==12)
{ break;}
}
}
㈡ 单片机的发展发展方向
转自:嵌入开发技术论坛
计算机系统的发展已明显地朝三个方向发展;这三个方向就是:巨型化,单片化,网络化。以解决复杂系统计算和高速数据处理的仍然是巨型机在起作用,故而,巨型机在目前在朝高速及处理能力的方向努力。单片机在出现时,Intel公司就给其单片机取名为嵌入式微控制器(embedded microcontroller)。单片机的最明显的优势,就是可以嵌入到各种仪器、设备中。这一点是巨型机和网络不可能做到的。
在本文,介绍单片机的最新技术进步,包括数字单片机的工艺及技术,模糊单片机的工艺及技术,单片机的可靠性技术,以及以单片机为核心的嵌入式系统。
数字单片机的技术发展
数字单片机的技术进步反映在内部结构、功率消耗、外部电压等级以及制造工艺上。在这几方面,较为典型地说明了数字单片机的水平。在目前,用户对单片机的需要越来越多,但是,要求也越来越高。下面分别就这四个方面说明单片机的技术进步状况。
1、 内部结构的进步
单片机在内部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,A/D转换器,D /A转换器,串行通信接口,Watchdog电路,LCD控制器等。
有的单片机为了构成控制网络或形成局部网,内部含有局部网络控制模块CAN。例如,Infineon公司的C 505C,C515C,C167CR,C167CS-32FM,81C90;Motorola公司的68HC08AZ 系列等。特别是在单片机C167CS-32FM中,内部还含有2个CAN。因此,这类单片机十分容易构成网络。特别是在控制,系统较为复杂时,构成一个控制网络十分有用。
为了能在变频控制中方便使用单片机,形成最具经济效益的嵌入式控制系统。有的单片机内部设置了专门用于变频控制的脉宽调制控制电路,这些单片机有Fujitsu公司的MB89850系列、MB89860系列;Motorola 公司的MC68HC08MR16、MR24等。在这些单片机中,脉宽调制电路有6个通道输出,可产生三相脉宽调制交流电压,并内部含死区控制等功能。
特别引人注目的是:现在有的单片机已采用所谓的三核(TrCore)结构。这是一种建立在系统级芯片(System on a chip)概念上的结构。这种单片机由三个核组成:一个是微控制器和DSP核,一个是数据和程序存储器核,最后一个是外围专用集成电路(ASIC)。这种单片机的最大特点在于把DSP和微控制器同时做在一个片上。虽然从结构定义上讲,DSP是单片机的一种类型,但其作用主要反映在高速计算和特殊处理如快速傅立叶变换等上面。把它和传统单片机结合集成大大提高了单片机的功能。这是目前单片机最大的进步之一。这种单片机最典型的有Infineon公司的TC10GP;Hitachi公司的SH7410,SH7612等。这些单片机都是高档单片机,MCU都是32位的,而DSP采用16或32位结构,工作频率一般在60MHz以上。
2、 功耗、封装及电源电压的进步
现在新的单片机的功耗越来越小,特别是很多单片机都设置了多种工作方式,这些工作方式包括等待,暂停,睡眠,空闲,节电等工作方式。Philips公司的单片机P87LPC762是一个很典型的例子,在空闲时,其功耗为1.5 mA,而在节电方式中,其功耗只有0.5mA。而在功耗上最令人惊叹的是TI公司的单片机MSP430系列,它是一个 16位的系列,有超低功耗工作方式。它的低功耗方式有LPM1、LPM3、LPM4三种。当电源为3V时,如果工作于 LMP1方式,即使外围电路处于活动,由于CPU不活动,振荡器处于1~4MHz,这时功耗只有50?A。在LPM3 时,振荡器处于32kHz,这时功耗只有1.3?A。在LPM4时,CPU、外围及振荡器32kHz都不活动,则功耗只有0.1?A。
现在单片机的封装水平已大大提高,随着贴片工艺的出现,单片机也大量采用了各种合符贴片工艺的封装方式出现,以大量减少体积。在这种形势中,Microchip公司推出的8引脚的单片机特别引人注目。这是PIC12CXXX系列。它含有0.5~2K程序存储器,25~128字节数据存储器,6个I/O端口以及一个定时器,有的还含4道A/D ,完全可以满足一些低档系统的应用。扩大电源电压范围以及在较低电压下仍然能工作是今天单片机发展的目标之一。目前,一般单片机都可以在3.3~5.5V的条件下工作。而一些厂家,则生产出可以在2.2~6V的条件下工作的单片机。这些单片机有Fujitsu公司的MB89191~89195,MB89121~125A,MB89130系列等,应该说该公司的F2MC-8L系列单片机绝大多数都满足2.2~6V的工作电压条件。而TI公司的MSP430X11X系列的工作电压也是低达2.2V的。
3、 工艺上的进步
现在的单片机基本上采用CMOS技术,但已经大多数采用了0.6?m以上的光刻工艺,有个别的公司,如Motorola公司则已采用0.35?m甚至是0.25?m技术。这些技术的进步大大地提高了单片机的内部密度和可靠性。
以单片机为核心的嵌入式系统
单片机的另外一个名称就是嵌入式微控制器,原因在于它可以嵌入到任何微型或小型仪器或设备中。目前,把单片机嵌入式系统和Internet连接已是一种趋势。但是,Internet一向是一种采用肥服务器,瘦用户机的技术。这种技术在互联上存储及访问大量数据是合适的,但对于控制嵌入式器件就成了"杀鸡用牛刀"了。要实现嵌入式设备和Int ernet连接,就需要把传统的Internet理论和嵌入式设备的实践都颠倒过来。为了使复杂的或简单的嵌入式设备,例如单片机控制的机床、单片机控制的门锁,能切实可行地和Internet连接,就要求专门为嵌入式微控制器设备设计网络服务器,使嵌入式设备可以和Internet相连,并通过标准网络浏览器进行过程控制。
目前,为了把单片机为核心的嵌入式系统和Internet相连,已有多家公司在进行这方面的较多研究。这方面较为典型的有emWare公司和TASKING公司。
EmWare公司提出嵌入式系统入网的方案--EMIT技术。这个技术包括三个主要部分:即emMicro, emGateway和网络浏览器。其中,emMicro是嵌入设备中的一个只占内存容量1K字节的极小的网络服务器; emGateway作为一个功能较强的用户或服务器,它用于实现对多个嵌入式设备的管理,还有标准的Internet 通信接入以及网络浏览器的支持。网络浏览器使用emObjicts进行显示和嵌入式设备之间的数据传输。
如果嵌入式设备的资源足够,则emMicro和emGateway可以同时装入嵌入式设备中,实现Inter net的直接接入。否则,将要求emGateway和网络浏览器相互配合。EmWare的EMIT软件技术使用标准的 Internet协议对8位和16位嵌入式设备进行管理,但比传统上的开销小得多。
目前,单片机应用中提出了一个新的问题:这就是如何使8位、16位单片机控制的产品,也即嵌入式产品或设备能实现和互联网互连?
TASKING公司目前正在为解决这个问题提供了途径。该公司已把emWare的EMIT软件包和有关的软件配套集成,形成一个集成开发环境,向用户提供开发方便。嵌入互联网联盟ETI(embed the Internet Consortium)正在紧密合作,共同开发嵌入式Internet的解决方案。在不久将会有成果公布。
单片机应用的可靠性技术发展
在单片机应用中,可靠性是首要因素为了扩大单片机的应用范围和领域,提高单片机自身的可靠性是一种有效方法。近年来,单片机的生产厂家在单片机设计上采用了各种提高可靠性的新技术,这些新技术表现在如下几点:
1、 EFT(Ellectrical Fast Transient)技术
EFT技术是一种抗干扰技术,它是指在振荡电路的正弦信号受到外界干扰时,其波形上会迭加各种毛刺信号,如果使用施密特电路对其整形,则毛刺会成为触发信号干扰正常的时钟,在交替使用施密特电路和RC滤波电路时,就可以消除这些毛否则令其作用失效,从而保证系统的时钟信号正常工作。这样,就提高了单片机工作的可靠性。Motorola公司的 MC68HC08系列单片机就采用了这种技术。
2、 低噪声布线技术及驱动技术
在传统的单片机中,电源及地线是在集成电路外壳的对称引脚上,一般是在左上、右下或右上、左下的两对对称点上。这样,就使电源噪声穿过整块芯片,对单片机的内部电路造成干扰。现在,很多单片机都把地和电源引脚安排在两条相邻的引脚上。这样,不仅降低了穿过整个芯片的电流,另外还在印制电路板上容易布置去耦电容,从而降低系统的噪声。
现在为了适应各种应用的需要,很多单片机的输出能力都有了很大提高,Motorola公司的单片机I/O口的灌拉电流可达8mA以上,而Microchip公司的单片机可达25mA。其它公司:AMD,Fujitsu,NEC ,Infineon,Hitachi,Ateml,Tosbiba等基本上可达8~20mA的水平。这些电流较大的驱动电路集成到芯片内部在工作时带来了各种噪声,为了减少这种影响,现在单片机采用多个小管子并联等效一个大管子的方法,并在每个小管子的输出端串上不同等效阻值的电阻,以降低di/dt,这也就是所谓"跳变沿软化技术",从而消除大电流瞬变时产生的噪声。
3、 采用低频时钟
高频外时钟是噪声源之一,不仅能对单片机应用系统产生干扰,还会对外界电路产生干扰,令电磁兼容性不能满足要求。对于要求可靠性较高的系统,低频外时钟有利于降低系统的噪声。在一些单片机中采用内部琐相环技术,则在外部时钟较低时,也能产生较高的内部总线速度,从而保证了速度又降低了噪声。Motorola公司的MC68HC08系列及其1 6/32位单片机就采用了这种技术以提高可靠性。
结束语
单片机在目前的发展形势下,表现出几大趋势:
·可靠性及应用越来越水平高和互联网连接已是一种明显的走向。
·所集成的部件越来越多;NS(美国国家半导体)公司的单片机已把语音、图象部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路,而不在于其功能了;如果从功能上讲它可以讲是万用机。原因是其内部已集成上各种应用电路。
·功耗越来越低和模拟电路结合越来越多。
随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。
※ 作 者: lovexuan 2000-10-30 9:47:20 ※
㈢ 学好单片机所须软件
keil c51
picc
mplab
http://bbs.studydz.com/index.php
167 单片机自学网 http://www.c51.cn/ 352390 8431 中 中 中 [email protected]
168 国际光电产业资讯 http://www.optoelectro.com/ 358281 0 中 差 差
169 仪器商城 http://www.17web.com/ 371085 0 好 差 差 [email protected]
170 电子制作应用网 http://www.dian-zi.com/ 374451 0 - - -
171 集成电路产业网 http://www.gotoic.com 379364 0 - - -
172 强力单片机技术项目交易网 http://www.qlmcu.com/ 381461 1221 中 差 中 [email protected]
173 中源单片机 http://www.zymcu.com/ 389497 0 中 差 中 [email protected]
174 电子设计资源网 http://www.mcuclub.net/ 395047 0 - - -
175 液晶俱乐部 http://www.lcd67890.com/ 395967 9547 - - -
176 键波硬件工作室 http://www.wavemcu.com/ 403052 0 - - - [email protected]
177 中国蓄电池网 http://www.51xdc.com/ 408689 0 - - - [email protected]
178 硬道理技术交流网 http://www.zlq.cn/ 413820 0 - - - [email protected]
179 中国单片机世界 http://www.mcuw.com/ 417215 9717 差 中 中 [email protected]
180 网上赛格 http://www.e-seg.net/ 422421 0 - - -
181 无线电爱好网 http://www.86x.net/ 427960 24855 中 差 差 [email protected]
182 c语言之家 http://www.cstudyhome.com/ 449139 82507 - - -
183 中国电子论坛 http://www.ecbbs.com/ 449247 31749 - - -
184 环球IC网 http://www.mostchip.com 456412 0 中 好 - [email protected]
185 方圆电子 http://www.hbfydz.com/ 464230 0 中 差 差 [email protected]
186 中国电子制作网 http://www.ele-diy.com/Index.html 464469 0 - - -
187 中国电子开发网 http://www.cedn.cn 470000 8000 好 好 好 [email protected]
188 环宇电子企业网 http://www.21its.net/ 474467 0 好 差 差 [email protected]
189 磁动力工作室 http://www.cdle.net/ 476552 14404 - - -
190 奥米网 http://www.cdle.net 476552 10882 中 中 差 [email protected]
191 中国电子设备网 http://www.epechina.net/ 484628 118 - - - [email protected]
192 一学网 http://www.onestudy.net/ 489180 0 - - - [email protected]
193 平凡单片机工作室 http://www.mcustudio.com/ 500169 6800 中 差 差
194 中国触摸屏网 http://www.51touch.com/ 506687 0 - - - [email protected]
195 中国电子信息创业网 http://www.cena.com.cn/ 509168 0 - - -
196 中国电子商会 http://www.cecc.org.cn/ 510221 0 - - -
197 液晶时代 http://www.lcdera.com/ 517978 0 - - -
198 中海园电子市场 http://www.chinazhy.com/ 521395 0 中 差 差 [email protected]
199 单片机技术与嵌入式系统 http://www.51c51.net/ 523690 0 中 差 差 [email protected]
200 link通讯技术网 http://www.linkkey.com/ 525485 0 - - - [email protected]
201 软硬件结合技术网 http://www.91tech.net/ 545188 16928 差 中 中 [email protected]
202 机器人天空 http://www.robotsky.com/ 552066 122 - - -
203 电子元器件采购网 http://www.ait.com.cn/ 564203 0 好 差 差 [email protected]
204 杭州电子&计算机工作室 http://www.hificat.com/ 565321 0 - - -
205 调频发烧 http://www.fmsky.net/ 570978 7053 中 差 差 [email protected]
206 中国单片机综合服务网 http://www.emcic.com/ 574892 0 差 差 差 [email protected]
207 无限电子制作网 http://www.wxdzz.com/ 579545 0 中 - - [email protected]
208 金聚宝电子 http://www.jinjubao.com/ 588789 0 中 差 中 [email protected]
209 电子商汇网 http://www.bizipoint.com/ 595059 0 好 差 差 [email protected]
210 中国手机研发网 http://www.1mp.cn/ 602810 17970 - - -
211 中国继电器网 http://www.wwb-st.com/ 603223 0 - - -
212 优龙电子 http://www.ucdragon.com/ 609672 7500 - - - [email protected]
213 飞扬科技 http://www.vip998.com/ 612067 3123 中 差 差 [email protected]
214 中国电子电工供求网 http://www.eleccc.com/ 626119 285 中 差 差
215 尼士单片机 http://www.nnssh.com 628140 0 中 中 差 [email protected]
216 多人行电子交易网 http://www.e-dowell.com/ 628942 0 好 差 差 [email protected]
217 学习单片机 http://www.zsglin.com/ 641002 0 - - -
218 中国IC在线 http://www.51ic-china.com/ 643894 0 - - -
219 中华电池网 http://www.batterycn.com/ 650680 0 - - - [email protected]
220 电子系统技术与设计 http://www.electronictechnology.com/est&d/index.ht 651359 0 - - -
221 搜电子网 http://www.sodz.com 657639 0 中 中 中 [email protected]
222 电子设计信息网 http://www.edires.net 659162 4000 中 好 好 [email protected]
223 材料器件资讯网 http://www.chinaime.com/ 663003 0 中 差 中 [email protected]
224 华方卓越 http://www.glorywork.com 668904 154 差 好 差
225 青青子木电子世界 http://www.zmmcu.com/ 680249 5947 中 - -
226 益海电子 http://www.00173.com/ 687434 0 - - -
227 ceea中国电子企业协会 http://www.ceea.org.cn/ 713714 0 - - -
228 PCB世界 http://www.pcbworld.net/ 721274 0 好 差 中 [email protected]
229 江苏电子网 http://www.jselec.cn 723659 0 中 中 差 [email protected]
230 深圳微控设计网 http://www.microcontrol.cn/ 738023 0 - - - [email protected]
231 电子世界杂志 http://www.eleworld.com/ 753312 18059 中 中 好 [email protected]
232 奇凯电子 http://www.gkec.com/ 760323 2410 - - -
233 中国单片机公共实验室 http://www.bol-system.com/ 765406 0 中 - - [email protected]
234 电子爱好者俱乐部 http://www.527dz.com/ 766296 598 - - - [email protected]
235 机器视觉在线 http://www.mvonline.com.cn/ 774899 1323 - - -
236 电子制作天地 http://www.dzdiy.com/ 785334 466 差 差 差 [email protected]
237 胖胖单片机 http://www.51dpj.com/ 790774 589 - - - [email protected]
238 大中华工控网 http://www.echina-ipc.com/ 797902 0 中 差 差 [email protected]
239 bios007编程器之家 http://www.bios007.com/ 805037 8626 - - -
240 当当电子制作室 http://www.dangdangdz.com/ 834609 50 中 差 差 [email protected]
241 万利电子 http://www.manley.com.cn/ 845257 3304 中 中 中
242 小河电子技术网 http://www.xhdz8.com/ 851138 0 - - - [email protected]
243 中山单片机学习论坛 http://www.zsmcu.com/ 852464 0 - - - [email protected]
244 中国集成电路网 http://www.chinaicip.com/ 861423 0 差 差 差 [email protected]
245 光辉电子资源中心 http://www.ggdz.net/ 868428 16302 差 差 好 [email protected]
246 西特编程器 http://www.xeltek-cn.com/cn/ 870082 0 - - -
247 中华电子网 http://www.zhhic.com/ 873390 0 - - -
248 南京伟福 http://www.wave-cn.com/ 879804 0 好 差 差 [email protected]
249 单片机发烧友网 http://www.mcufans.com/ 885307 698 中 差 差
250 编程器制作网 http://www.89s51.com/ 886911 358 - - - [email protected]
251 电子之城 http://218.7.17.204/ 922202 0 中 差 好 [email protected]
252 半导体世界 http://www.semiworld.com.cn/ 927751 0 - - - [email protected]
253 中国电子质量协会 http://www.cqae.com/ 927935 0 - - -
254 ARM学习网 http://www.arm88.com/ 928555 105 - - -
255 爱思科技 http://www.nj-ices.com/ 932843 0 - - - [email protected]
256 台湾力浦 http://www.leap.com.tw/ 940472 0 好 差 差 [email protected]
257 电子爱好者家园 http://www.ee521.com/ 944433 14579 - - - [email protected]
258 中国通讯论坛 http://www.cntx.cn/ 956326 4961 - - -
259 21世纪新锐 http://www.21xr.com/ 957304 683 - - -
260 炜煌科技 http://www.whkj.com.cn/ 972607 0 好 差 差 [email protected]
261 家电在线 http://www.jdzx.com.cn/ 980493 0 - - -
262 西安达泰电子 http://www.dataie.com/ 981306 0 中 差 差 [email protected]
263 华信单片机 http://www.hx51.com/ 981306 1203 - - - [email protected]
264 全国大学生电子设计竞赛 http://www.nuedc.com.cn/ 986984 0 - - -
265 E乐电子资讯网 http://www.yddz.net/ 990027 0 好 差 好 [email protected]
266 EDA天地 http://www.hseda.com/ 1000310 0 - - - [email protected]
267 中国AV网 http://CN-AV.COM 1005694 3000 好 中 好
268 电子采购网 http://www.51dianzi.com/ 1010268 0 - - - [email protected]
269 Follow me Radio跟我学无线电 http://www.microearonline.com 1016035 0 - - -
270 单片机解密 http://jm8.cn 1016342 0 - - - [email protected]
271 时代飞翔电子 http://www.mcuok.net/index.asp 1016342 0 - - -
272 单片机解密中心时代飞翔 http://www.mcuok.net 1016342 3280 - - - [email protected]
273 迷失单片机世界 http://www.5imcu.zes.cn/ 1039680 20 - - 差
274 中国连接线网 http://www.ljx.cn/ 1050384 171 好 差 差 [email protected]
275 广东光谷 http://www.gdov.com.cn/ 1066726 0 中 差 差 [email protected]
276 单片机显示技术网 http://www.mcubbs.net/ 1126417 0 差 差 差 [email protected]
277 中国电子设计网 http://www.oecomm.com/ 1130816 0 - - -
278 白白网 http://www.szele.net/main.asp 1131162 9600 - - -
279 EDA开发技术网 http://www.eda.org.cn/ 1140320 496 - - - [email protected]
280 达柴纳工业自动化 http://www.daqchina.net/ 1145585 0 中 差 中 [email protected]
281 电子爱好者社区 http://www.mcuwork.com/ 1152762 0 差 差 差 [email protected]
282 恒坚电子 http://www.hejoin.com/ 1155216 3093 - - -
283 遥控网 http://www.rf315.com/ 1159649 0 - - -
284 网上电器之都 http://www.dqzd.com/ 1168411 429 中 差 差 [email protected]
285 电子在线 http://www.ourchip.com/ 1197739 0 中 差 差 [email protected]
286 晓奇工作室 http://www.xiao-qi.com 1249832 0 中 差 差 [email protected]
287 SMT商贸网 http://www.e-smt.net/ 1257406 11055 好 中 差 [email protected]
288 91电子网 http://91dz.com 1267521 0 - - -
289 电路驿站 http://www.edadesign.com.cn/ 1270791 0 - - - [email protected]
290 电子工程 http://www.eept.cn/ 1273915 11854 中 差 中 [email protected]
291 开发天地 http://www.mcusky.com/ 1276364 0 中 差 差 [email protected]
292 精华电子科技 http://ham.onair.cn/ 1280901 0 - - - [email protected]
293 单片机实验室 http://www.mcu-diy.com/ 1282538 216 中 差 差 [email protected]
294 单片机开发 http://www.fjbmcu.com/ 1285127 0 - - -
295 电子技术特攻队 http://www.2080725.com/ 1286714 0 - - -
296 CPUBBS http://www.cpubbs.com 1301360 2838 中 差 差 [email protected]
297 cpubbs论坛 http://www.cpubbs.com/ 1301360 4192 - - -
298 微迪软件 http://www.mdevsoft.com/ 1311506 2050 中 差 差 [email protected]
299 机器人制作 http://www.luojz.net/ 1322366 0 - - -
300 闲趣电子屋 http://www.elehouse.com/ 1327623 1652 中 差 差 [email protected]
301 bios大本营 http://www.biosdiy.net/ 1347823 33363 - - - http://www.biosdiy.net/index.asp
302 仙林电子 http://www.xlmcu.com/ 1353028 1411 中 差 中 [email protected]
303 龙图开发网 http://www.longtoo.com/ 1370849 0 好 差 差 [email protected]
304 矽创微电子 http://www.systron.sh.cn/ 1394722 0 - - -
305 单片机解密专家 http://www.chaoyangdz.com.cn/ 1431542 0 差 差 差 [email protected]
306 中原电子 http://www.ccelec.com/ 1460225 444 - 差 差 [email protected]
307 单片机 http://www.cxqmcu.com/ 1509922 0 - - -
308 电阻在线 http://www.chinaresistor.com/ 1513814 200 - - - [email protected]
309 IC商贸网 http://www.ic-b2b.com/ 1523569 0 好 差 差 [email protected]
310 北京光明电子公司 http://www.guangming.com.cn/ 1571909 66 中 差 差 [email protected]
311 广州托普 http://www.ty51.com/ 1588357 0 好 差 差
312 单片机与嵌入式系统应用 http://www.dpj.com.cn/ 1601381 0 好 差 好 [email protected]
313 时保信息中心 http://www.cboatcenter.com/default.asp 1605481 0 - - -
314 古龙电子 http://www.glele.net/Index.html 1606892 0 - - - [email protected]/[email protected]
315 智才电子 http://www.zc118.com/ 1608397 361 中 差 差 [email protected]
316 浩惠电子技术 http://www.hheet.com 1657948 2850 差 差 差
317 通讯电源技术 http://www.tptpower.com/ 1665336 0 - - -
318 仪器仪表与单片机应用 http://www.yymcu.com/ 1665336 0 中 差 差 [email protected]
319 亿道电子 http://www.emdoor.com/ 1676180 0 - - -
320 嵌入式联盟 http://www.51emb.com/ 1677870 11165 - - -
321 ic在线网 http://www.e-ic.cn/ 1694115 0 - - -
322 广州市光学光电子行业协会 http://www.gzoema.org/ 1716993 0 中 差 差 [email protected]
323 我就要单片机 http://www.591mcu.com/ 1726401 0 - - - [email protected]
324 LCD在线 http://www.lcdinline.com/ 1757237 8283 中 差 差 [email protected]
325 曹曹时尚电子 http://www.caocao.cn/ 1766204 120 中 差 差 [email protected]
326 海阔无线 http://www.hkwx.com/ 1797831 0 中 - 差 [email protected]
327 天行工作室 http://www.51usb.com/ 1808543 0 - - -
328 中国程序员网 http://cnprogrammer.net/ 1817518 0 - - - wggsoshotmail.com
329 应用电子网 http://www.yydzw.com/ 1832806 0 - - -
330 电子项目博览网 http://www.51project.com.cn/ 1846828 0 - - -
331 卧龙电子技术网 http://www.wellong.net/ 1872546 160 - - - [email protected]
332 微电子通讯技术网 http://www.52arm.com/ 1884126 2306 中 差 差 [email protected]
333 单片机与电子制作 http://www.wenqi-yckj.com/ 1890036 0 - - - [email protected]
334 连接线在线 http://www.ljxzx.com/ 1970183 0 - - - [email protected]
335 成都开发网 http://www.cdkfw.com 1984626 10636 中 好 中 [email protected]
336 单片机开发网 http://www.mcudevelop.com/ 1991549 0 - - -
337 电子园 http://www.k6271.com/ 2068629 0 中 差 差 [email protected]
338 最便宜的arm开发板 http://www.abcarm.com/ 2070184 0 - - -
339 北京单片机开发网 http://www.bjmcu.com/ 2076576 0 - - -
340 比拉鱼单片机 http://www.bilayu.com/ 2147350 0 - - - [email protected]
341 宋荣个人教学资讯 http://www.teachersong.com/ 2164303 0 差 差 中 [email protected]
342 傲阳电子 http://www.aydz.com/ 2183068 0 - - -
343 电子开发者 http://www.52eda.com 2204182 0 好 好 中 52eda@sohu,com
344 自由开发ARV http://www.foravr.net/ 2279087 0 - - - [email protected]
345 炜煌电子 http://www.whmcu.com/ 2291432 0 - - - [email protected]
346 清风单片机 http://www.qfmcu.com/ 2344364 2300 中 - - [email protected]
347 中国ic市场技术网 http://www.zjic.com.cn/ 2428655 0 - - - [email protected]
348 无忧集成电路网 http://www.51ic.net/ 2486185 0 - - - [email protected]
349 纬通达电子世界 http://www.weitongda.com/ 2537313 0 - - - [email protected]
350 冰点工作室 http://www.5ibd.com/ 2585461 5674 - - -
351 精艺电子 http://www.jingyis.com/ 2647028 0 中 差 差 [email protected]
352 电子超市 http://www.dz-shop.com/ 2648443 0 差 差 差 [email protected]
353 电子制作网站 http://www.165v.net/ 2672582 0 - - -
354 英雷科电子 http://www.elc-mcu.com/ 2700599 0 - - - [email protected]
355 磊娜电子 http://www.xlndz.com/ 2761743 25 差 差 差 [email protected]
356 网上中发 http://www.zfew.com/ 2792087 1202 - - - [email protected]
357 中国电子技术信息网 http://www.cetinet.com 2881143 0 - - -
358 电子工程师之家 http://www.eehome.net.cn 2887561 3127 差 好 好 [email protected]
359 半导体技术 http://www.semiait.com/ 3028744 0 - - - [email protected]
360 飞翔电子技术 http://www.mcuok.com/ 3036641 535 差 差 差 [email protected]
361 USB之家 http://www.usbfans.com 3062141 0 - - -
362 华邦技术 http://www.51nt.cn/ 3096932 639 - - - [email protected]
363 MODEM http://www.modem.com.cn/ 3127926 0 - - - [email protected]
364 51新手交易网 http://www.newmcu.com/ 3138413 1348 差 中 差
365 楚浩单片机工作室 http://www.mcudiy.com/ 3311330 268 中 差 差 [email protected]
366 电子制造china http://www.emchinamag.com/Cstmf/BCsy/index.asp 3379231 0 - - -
367 电子狂 http://www.51dzk.com/ 3458607 919 - - -
368 单片机网 http://www.danpianji.com/ 3484529 0 - - -
369 锦美电子 http://www.jmnic.com/ 3498850 0 - - - E-mail:[email protected]
370 中茂电子 http://www.chroma.com.cn/ 3568952 0 中 差 差 [email protected]
371 顶点电子网 http://www.acmedz.com/vip/ 3568980 0 - - -
372 世纪开发网 http://www.21hf.com/ 3607143 1763 中 差 差 [email protected]
373 河南郑州单片机开发工作室 http://www.emcs51.com/ 3626141 0 - - - [email protected]
374 利舒技术实验室 http://www.ls-labs.com/ 3761867 1812 - - -
375 硬件工程师之家 http://www.3721it.com/ 3783749 0 - - -
376 单片机王国 http://www.21mcu.com/ 3793873 1982 中 差 差 [email protected]
377 电子设计在线 http://www.dzsj.net/ 3840509 0 - - - 028-85236998
378 我要委托设计网 http://www.51odm.com/ 3862191 37 - - - [email protected]
379 贴片IC商务网 http://www.smdic.com/ 3913580 0 中 差 差 [email protected]
380 着名电子邮购网 http://www.zhuming.net/ 3959656 0 - - - [email protected]
381 eda爱好者 http://www.edafans.com/ 3974246 0 - - -
382 传感器大全 http://www.lamshine.com/ 4061844 0 - - - [email protected]
383 吉林家电维修网 http://www.yxjdwx.com/ 4073648 0 中 差 差 [email protected]
384 比高科技 http://www.bitcode.com.cn/ 4098850 0 中 差 差 [email protected]
385 中国维修联盟 http://www.1025.com.cn/ 4227299 182 - - -
386 电子开放实验室 http://www.open-lab.net/ 4582695 0 差 差 差 [email protected]
387 上海吉芯电子设计室 http://www.hyctron.com/ 4906109 0 - - - [email protected]
388 800IC http://www.800ic.com/ 4998807 0 好 差 差 [email protected]
389 单片机TCP/IP协议 http://www.mcuweb.com/ 5001996 1331 中 差 差 [email protected]
390 布衣电子 http://buyi.123jz.com/ 5132076 0 - - -
391 嵌入式modem http://www.farseeing-cn.com/ 5222174 0 - - - [email protected]
392 芳元电子工作室 http://www.fangyuandianzi.com 5288717 0 好 差 -
393 EDA俱乐部 http://www.edaclub.net/ 5494204 2608 差 差 差 [email protected]
394 pcba电路板资讯网 http://www.pcba.org.cn/ 5507302 0 - - -
395 龙珠科技 http://www.hsav.com/ 5723141 0 - - -
396 中国电子DIY http://www.prcdiy.com 5748057 39 中 差 差 [email protected]
397 温州电子开发实验室 http://www.7i8i.com/ 5914377 39 中 差 差 [email protected]
398 信祺电子 http://www.xinqi.cn/ 5936599 0 - - -
399 瑞芯科技 http://www.richic.com/ 5963163 221 - - - [email protected]
400 晶龙电子工作室 http://www.dragonchip.net/ 5988909 0 中 差 差 [email protected]
401 通用单片机 http://www.tydpj.com/ 6032678 0 - - -
402 中国语声电子网 http://www.maolin.com.cn/ 6137251 0 中 差 差 [email protected]
403 星光电子网 http://www.51arm.cn/ 6178484 0 - - -
404 电子材料信息网 http://www.ce998.com/ 6203250 0 - - -
405 得盛电子网 http://www.ds-ic.com 6219225 0 好 中 - [email protected]
406 单片机之家 http://www.mcu-home.com/ 6275137 0 - - - [email protected]
407 温州电子开发实验室 http://www.rf315.net 11258850- - - xdx771@@163.net
㈣ 51单片机加速传感器抬手中断
外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。
其中EA是总开关,如果它等于0,则所有中断都不允许。ES-串行口中断允许ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE能是EAX
即8CH,当然,我们也能用位操作指令
SETB EA
SETB ET1SETB EX1
来实现它。
3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH外中断1:0013H定时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写:
ORG 0000HLJMP START
ORG 0030H
START:。
这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。
开机时,每个中断都处于低优先级,我们能用指令对优先级进行设置。看表2中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,对应的中断就是高优先级,不然就是低优先级。
XX
X
PS
PT1
PX1
PT0
PX0
例:设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。IP的首3位没用,可任意取值,设为000,后面根据要求写就能了XX
因此,最终,IP的值就是06H。例:在上例中,如果5个中断请求同时发生,求中断响应的次序。响应次序为:定时器0->外中断1->外中断0->实时器1->串行中断。
MCS-51的中断响应过程:
1、中断响应的条件:讲到这儿,我们依然对于计算机响应中断感到神奇,我们人能响应外界的事件,是因为我们有多种“传感器“――眼、耳能接受不一样的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。。。。很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应:
CPU正在处理一个同级或更高级别的中断请求。
现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。
当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才能响应中断。
2、中断响应过程CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将对应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如0003-000B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就能把中断程序跳转到任何地方了吗?一个完整的主程序看起来应该是这样的:
ORG 0000HLJMP START
ORG 0003H
LJMP INT0 ;转外中断0ORG 000BH
RETI ;没有用定时器0中断,在此放一条RETI,万一 “不小心“产生了中断,也不会有太大的后果。。
中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。注意:CPU所做的保护工作是很有限的,只保护了一个地址,而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等,在中断程序中又要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。
中断系统的控制寄存器:
中断系统有两个控制寄存器IE和IP,它们分别用来设定各个中断源的打开/关闭和中断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。
1.中断允许寄存器--IE
IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。
IE用来打开或关断各中断源的中断请求,基本格式如下图二所示:
EA:全局中断允许位。EA=0,关闭全部中断;EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。
×:无效位。
ES:串行I/O中断允许位。ES=1,打开串行I/O中断;ES=0,关闭串行I/O中断。
ETl;定时器/计数器1中断允许位。ETl=1,打开T1中断;ETl=O,关闭T1中断。
EXl:外部中断l中断允许位。EXl=1,打开INT1;EXl=0,关闭INT1。
ET0:定时器/计数器0中断允许位。ET0=1,打开T0中断;ET0=0,关闭TO中断。
EXO:外部中断0中断允许位。Ex0=1,打开INT0;EX0=0,关闭INT0.
中断优先寄存器--IP:
IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH,IP用来设定各个中断源属于两级中断中的哪一级,IP的基本格式如下图三所示:
×:无效位。
PS:串行I/O中断优先级控制位。PS=1,高优先级;PS=0,低优先级。
PTl:定时器/计数器1中断优先级控制位。PTl=1,高优先级;PTl=0,低优先级。
Pxl:外部中断1中断优先级控制位。Pxl=1,高优先级;PXl=O,低优先级。
PT0:定时器/计数器o中断优先级控制位。PT0=1,高优先级;PTO=0,低优先级。
Px0:外部中断0中断优先级控制位。Px0=1,高优先级;Px0=0,伤优先级。
在MCS-51单片机系列中,高级中断能够打断低级中断以形成中断嵌套;同级中断之间,或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,则CPU按如下顺序确定响应的先后顺序:
INT0一T0---INT1一T1一RI/T1.
中断的响应过程
若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且①当前正在执行的那条指令已被执行完
1、当前末响应同级或高级中断
2、不是在操作IE,IP中断控制寄存器或执行REH指令则单片机响应此中断。
在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。中断得到响应后,自动清除中断请求标志(对串行I/O端口的中断标志,要用软件清除),将断点即程序计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装入PC,使程序转入到相应的中断服务程序中去执行。
各个中断源在程序存储器中的中断入口地址如下:
中断源 入口地址
INT0(外部中断0) 0003H
TF0(TO中断) 000BH
INT1(外部中断1) 0013H
TFl(T1中断) 001BH
RI/TI(串行口中断) 0023H
由于各个中断入口地址相隔甚近,不便于存放各个较长的中断服务程序,故通常在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入到安排在那儿的中断服务程序。以T1中断为例,其过程下如图四所示。
由于5个中断源各有其中断请求标志0,TF0,IEl,TFl以及RI/TI,在中断源满足中断请求的条件下,各标志自动置1,以向CPU请求中断。如果某一中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件人为清除,中断请求的状态就将一直保持,直到CPU响应了中断为止,对串行口中断而言,这一过程与其它4个中断的不同之处在于;即使CPU响应了中断,其中断标志RI/TI也不会自动清零,必须在中断服务程序中设置清除RI/TI的指令后,才会再一次地提出中断请求。
CPU的现场保护和恢复必须由被响应的相应中断服务程序去完成,当执行RETI中断返回指令后,断点值自动从栈顶2字节弹出,并装入PC寄存器,使CPU继续执行被打断了的程序。
下面给出一个应用定时器中断的实例。
现要求编制一段程序,使P1.0端口线上输出周期为2ms的方波脉冲。设单片机晶振频率
Fosc=6MHZ.
1、方法:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。
2、定时初值:机器周期MC=12/fosc=2us。所以定时lms所需的机器周期个数为500D,亦即0lF4H。设T0为工作方式1(16位方式),则定时初值是(01F4H)求补=FEOCH
串行端口的控制寄存器:
串行端口共有2个控制寄存器SCON和PCON,用以设置串行端口的工作方式、接收/发送的运行状态、接收/发送数据的特征、波特率的大小,以及作为运行的中断标志等。
①串行口控制寄存器SCON
SCON的字节地址是98H,位地址(由低位到高位)分别是98H一9FH。SCON的格式如图五所示。
SMo,SMl:
串行口工作方式控制位。
00--方式0;01--方式1;
10--方式2;11--方式3。
SM2:
仅用于方式2和方式3的多机通讯控制位
发送机SM2=1(要求程控设置)。
当为方式2或方式3时:
接收机 SM2=1时,若RB8=1,可引起串行接收中断;若RB8=0,不
引起串行接收中断。SM2=0时,若RB8=1,可引起串行接收中断;若
RB8=0,亦可引起串行接收中断。
REN:
串行接收允许位。
0--禁止接收;1--允许接收。
TB8:
在方式2,3中,TB8是发送机要发送的第9位数据。
RB8:
在方式2,3中,RB8是接收机接收到的第9位数据,该数据正好来自发
送机的TB8。
TI:
发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平,
发送完一帧数据后,由硬件自动置1。如要再发送,必须用软件再清零。
RI:
接收中断标志位。接收前,必须用软件清零,接收过程中RI保持零电平,接收完一帧数据后,由片内硬件自动置1。如要再接收,必须用软件再清零。
电源控制寄存器PCON
PCON的字节地址为87H,无位地址,PCON的格式如图六所示。需指出的是,对80C31单片机而言,PCON还有几位有效控制位。
SMOD:波特率加倍位。在计算串行方式1,2,3的波特率时;0---不加倍;1---加倍。
串行中断的应用特点:
8031单片机的串行I/O端口是一个中断源,有两个中断标志RI和TI,RI用于接收,TI用于发送。
串行端口无论在何种工作方式下,发送/接收前都必须对TI/RI清零。当一帧数据发送/接收完后,TI/RI自动置1,如要再发送/接收,必须先用软件将其清除。
在串行中断被打开的条件下,对方式0和方式1来说,一帧数据发送/接收完后,除置位TI/RI外,还会引起串行中断请求,并执行串行中侧目务程序。但对方式2和方式3的接收机而言,还要视SM2和RB8的状态,才可确定RI是否被置位以及串行中断的开放:
SM2 RB8 接收机中断标志与中断状态
0 1 激活RI,引起中断
1 0 不激活RI,不引起中断
1 1 激活RI,引起中断
单片机正是利用方式2,3的这一特点,实现多机间的通信。串行端口的常用应用方法见相关章节。
波特率的确定:
对方式0来说,波特率已固定成fosc/12,随着外部晶振的频率不同,波特率亦不相同。常用的fosc有12MHz和6MHz,所以波特率相应为1000×103和500×103位/s。在此方式下,数据将自动地按固定的波特率发送/接收,完全不用设置。
对方式2而言,波特率的计算式为2SMOD·fosc/64。当SMOD=0时,波特率为fm/64;当SMOD=1时,波特率为fosc/32。在此方式下,程控设置SMOD位的状态后,波特率就确定了,不需要再作其它设置。
对方式1和方式3来说,波特率的计算式为2SMOD/32×T1溢出率,根据SMOD状态位的不同,波特率有Tl/32溢出率和T1/16溢出率两种。由于T1溢出率的设置是方便的,因而波特率的选择将十分灵活。
前已叙及,定时器Tl有4种工作方式,为了得到其溢出率,而又不必进入中断服务程序,往往使T1设置在工作方式2的运行状态,也就是8位自动加入时间常数的方式。由于在这种方式下,T1的溢出率(次/秒)计算式可表达成:
下面一段主程序和中断服务程序,是利用串行方式l从数据00H开始连续不断增大地串行发送一片数据的程序例。设单片机晶振的频率为6MHZ,波特率为1200位/秒。
㈤ 飞凌fm8pc71a单片机外部引脚低电平唤醒 但总是初始化寄存器 怎么办
你用电平变化中断吧,可以SLEEP,电平变化唤醒,当IO发生中断后,PC指针会指向中断入口,而不会进入000H。