㈠ 求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。