單片機知識點_第1頁
單片機知識點_第2頁
單片機知識點_第3頁
單片機知識點_第4頁
單片機知識點_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機知識點1單片機知識點周冰微處理器:是小型計算機或微型計算機的控制和處理部分。又稱中央處理單元CPU,CentralProcessingUnit,。Microcomputer,簡稱微機,是具有完整運算及控制功能的計算機。包括:微處理器(CPU)、微型計算機,存儲器、接口適配器,輸入輸出接口電路,、輸入/輸出,I/O,設備。Single-ChipMicrocomputer,是將微處理器、一定容量RAM和ROM以及I/O口、定單片機SCM,時器等電路集成在一塊芯片上,構成單片微型計算機。也稱為微控制器MCU(MicroControllerUnit)【微處理器、RAM、ROM、I/O口、定時器】預備知識數(shù)字電路中只有兩種電平,高和低,本課程中,定義單片機為TTL電平,高+5V低0VRS232電平,計算機的串口高-12V低+12V所以計算機與單片機之間通訊時需要加電平轉換芯片max232,實驗板上左下角,。MCS-51單片機硬件結構及引腳1、MCS-51單片機的內部結構MCS-51單片機的組成,CPU(進行運算、控制)、RAM(數(shù)據(jù)存儲器)、ROM(程序存儲器,、I/O口(串口、并口,、內部總線和中斷系統(tǒng)等。組成框圖如右,總線,BUS,是計算機各部件之間傳送信息的公共通道。微機中有內部總線和外部總線兩類。內部總線是CPU內部之間的連線。外部總線是指CPU與其它部件之間的連線。外部總線有三種:數(shù)據(jù)總線DB,DataBus,,地址總線AB,AddressBus,和控制總線CBControlBus,。CPU,由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器,RAM,用以存放可以讀寫的數(shù)據(jù),如運算的中間結果、最終結果以及欲顯示的數(shù)據(jù),ROM,用以存放程序、一些原始數(shù)據(jù)和表格,12單片機知識點周冰I/O口,四個8位并行I/O口,既可用作輸入,也可用作輸出,T/C,兩個定時/記數(shù)器,既可以工作在定時模式,也可以工作在記數(shù)模式,單片機引腳的功能:8051單片機有40個引腳,分為端口線、電源線和控制線三類。,電源線1GND,接地引腳。VCC,正電源引腳。接,5V電源。2,端口線P0,P3口,4×8=32條。1,P0口,P0.0,P0.7,,8位雙向三態(tài)I/O口,可作為外部擴展時的數(shù)據(jù)總線/低8位地址總線的分時復用口。又可作為通用I/O口,每個引腳可驅動8個TTL負載。對EPROM型芯片,如8751,進行編程和校驗時,P0口用于輸入/輸出數(shù)據(jù)。,2,P1口,P1.0,P1.7,8位準雙向I/O口,內部具有上拉電阻,可作為通用I/O口。每個引腳可驅動4個TTL負載。,3,P2口,P2.0,P2.7,8位準雙向I/O口,內部具有上拉電阻,可作為外部擴展時的高8位地址總線。又可作為通用I/O口,每個引腳可驅動4個TTL負載。對EPROM型芯片,如8751,進行編程和校驗時,用來接收高8位地址。,4,P3口,P3.0,P3.7,8位準雙向I/O口,內部具有上拉電阻。它是雙功能復用口,作為通用I/O口時,功能與P1口相23單片機知識點周冰同,常用第二功能。每個引腳可驅動4個TTL負載。作為第二功能使用時,各位的作用如下頁表所示。P3第二功能各引腳功能定義,RXD串行口輸入P3.1,TXD串行口輸出P3.2,INT0外部中斷0輸入P3.0,P3.3,INT1外部中斷1輸入P3.4,T0定時器0外部輸入P3.5,T1定時器1外部輸入WR外部寫控制P3.7,RD外部讀控制P3.6,2,時鐘引腳,1,XTAL1,19腳,,如果采用外接晶體振蕩器時,此引腳應接地。,2,XTAL2,18腳,,接外部晶體的另一端。3,控制線提供控制信號,有的引腳還具有復用功能。(1)RST/VPD(9腳),復位與備用電源。(2)ALE/PROG*,30腳,,第一功能ALE為地址鎖存允許,可驅動8個LS型TTL負載。PROG*為本引腳的第二功能。為編程脈沖輸入端。(3)PSEN*,29腳,,讀外部程序存儲器的選通信號??梢则寗?個LS型TTL負載。(4)EA*/VPP(EnableAddress/VoltagePulseofPrograming,31腳)EA*為內外程序存儲器選擇控制端。EA*=1,訪問片內程序存儲器,但在PC,程序計數(shù)器,值超過0FFFH,對于8051、8751,時,即超出片內程序存儲器的4K字節(jié)地址范圍時,將自動轉向執(zhí)行外部程序存儲器內的程序。EA*=0,單片機則只訪問外部程序存儲器。VPP為本引腳的第二功能。對89S52,加在VPP腳的編程電壓為+12V或+5V。單片機主要掌握以下幾點最小系統(tǒng)能夠運行起來的必要條件。1.電源2.晶振3.復位電路34單片機知識點周冰對單片機任意IO口的隨意操作1.輸出控制電平高低2.輸入檢測電平高低。定時器,重點掌握最常用的方式2中斷,外部中斷、定時器中斷、串口中斷串口通信,單片機之間、單片機與計算機基本數(shù)據(jù)類型sfr:特殊功能寄存器聲明sfr16:sfr的16位數(shù)據(jù)聲明sbit:特殊功能位聲明bit:位變量聲明例,sfrSCON=0X98;sfr16T2=0xCC;sbitOV=PSW^2;常用有:reg51.hreg52.h,定義特殊功能寄存器和位寄存器,,math.h,定義常用數(shù)學運算,,voidmain()隔2000ms閃爍{程序,一,點亮第一個發(fā)光unsignedinti;#include<reg52.h>while(1)#defineuintunsignedint二極管{#defineucharunsignedchar#include<reg52.h>i=50000;sbitled1=P1^0;voidmain()led1=0;voiddelay(uintz)//延時{while(i--);P1=0xfe;i=50000;函數(shù)while(1);led1=1;}while(i--);{}uintx,y;程序,二,讓第一個發(fā)光二}for(x=z;x>0;x--)for(y=110;y>0;y--);極管閃爍程序,三,}#include<reg52.h>voidmain()//第一個發(fā)光二極管以間sbitled1=P1^0;{45單片機知識點周冰while(1)uchara;uchara,i;a=0xfe;while(1){while(1){led1=0;{a=0xfe;delay(2000);P1=a;for(i=0;i<8;i++)led1=1;beep=0;{delay(2000);delay(500);P1=a;}beep=0;}P1=0xff;delay(50);beep=1;beep=1;程序,四,delay(500);delay(50);a=_crol_(a,1);a=_crol_(a,1);//8個發(fā)光管由上至下間隔}}}a=0x7f;1s流動for(i=0;i<8;i++)程序,五,{//每個管亮500ms,滅P1=a;beep=0;500ms,亮時蜂鳴器響//8個發(fā)光管來回流動delay(50);beep=1;//滅時關掉蜂鳴器,一直重//每個管亮100ms,流動時delay(50);a=_cror_(a,1);復下去讓蜂鳴器發(fā)聲}#include<reg52.h>#include<reg52.h>}#include<intrins.h>#include<intrins.h>}#defineuintunsignedint#defineuintunsignedint#defineucharunsignedchar#defineucharunsignedcharsbitbeep=P2^3;sbitbeep=P2^3;voiddelay(uintz)voiddelay(uintz){{uintx,y;uintx,y;for(x=z;x>0;x--)for(x=z;x>0;x--)for(y=110;y>0;y--);for(y=110;y>0;y--);}}voidmain()voidmain(){{運算器對操作數(shù)進行算術、邏輯運算和位操作。1,算術邏輯運算單元ALU2,累加器A3.寄存器B4.程序狀態(tài)寄存器PSW控制器1,程序計數(shù)器PC,ProgramCounter,2,指令寄存器IR、指令譯碼器及控制邏輯電路存儲器空間可劃分為5類,1.程序存儲器2.內部數(shù)據(jù)存儲器3.特殊功能寄存器,SFR-SpecialFunctionRegister,4.位地址空間56單片機知識點周冰5.數(shù)據(jù)寄存器程序存儲器ROM存放應用程序和表格之類的固定常數(shù)。分為片內和片外兩部分,AT89S528K的可編程Flash存儲器,地址0000H-1FFFH,外部擴展到64KB,由EA*引腳上所接的電平確定。程序存儲器中的0000H地址是系統(tǒng)程序的啟動地址,單片機復位后PC的內容為0000H6個單元具有特殊用途表2-16種中斷源的中斷入口地址中斷標志位外中斷0,INT0*)0003HIE0定時器0(T0)中斷000BHTF0外中斷1,INT1*)0013HIE1定時器1(T1)中斷001BHTF1串行口中斷0023HTI(發(fā)送)/RI,接收,定時器2(T2)中斷002BHTF2,T2溢出,/EXF2(T2EX)特殊功能寄存器(SFR)CPU對各種功能部件的控制采用特殊功能寄存器集中控制方式,共32個。1,程序計數(shù)器PC,ProgramCounter,存放下一條要執(zhí)行的指令在程序存儲器中的地址?;竟ぷ鞣绞接幸韵聨追N,,1,程序計數(shù)器自動加1,2,執(zhí)行有條件或無條件轉移指令時,程序計數(shù)器將被置入新的數(shù)值,從而使程序的流向發(fā)生變化。,3,在執(zhí)行調用子程序調用或中斷調用,完成下列操作,?PC的現(xiàn)行值保護?將子程序的入口地址或中斷向量的地址送入PC。2累加器A使用最頻繁的寄存器,也可寫為Acc。A的作用,,1,是ALU單元的輸入之一,又是運算結果的存放單元。,2,數(shù)據(jù)傳送大多都通過累加器A。A的進位標志Cy。67單片機知識點周冰3.寄存器B為執(zhí)行乘法和除法操作設置的。在不執(zhí)行乘、除的情況下,可當作一個普通寄存器來使用。,程序狀態(tài)字寄存器PSW4,1,Cy,PSW.7,進位標志位2,Ac(PSW.6)輔助進位標志位,,3,F0,PSW.5,標志位由用戶使用的一個狀態(tài)標志位。,4,RS1、RS0,PSW.4、PSW.3,,4組工作寄存器區(qū)選擇控制位1和位0。所選的4組寄存器RS1RS0000區(qū),內部RAM地址00H,07H,011區(qū),內部RAM地址08H,0FH,102區(qū),內部RAM地址10H,17H,113區(qū),內部RAM地址18H,1FH,,5,OV,PSW.2,溢出標志位指示運算是否產(chǎn)生溢出。,6,PSW.1位:保留位,未用,7,P(PSW.0)奇偶標志位P=1,A中“1”的個數(shù)為奇數(shù)P=0,A中“1”的個數(shù)為偶數(shù)5.I/O端口P0,P3P0,P3分別為I/O端口P0,P3的鎖存器。可按字節(jié)尋址也可按位尋址。6.串行數(shù)據(jù)緩沖器SBUF存放欲發(fā)送或已接收的數(shù)據(jù),一個字節(jié)地址,由兩個獨立的寄存器組成,一個是發(fā)送緩沖器,另一個是接收緩沖器。7.定時器/計數(shù)器3個16位定時器/計數(shù)器T0,T1和T2,各由兩個獨立的8位寄存器組成,TH0、TL0、TH1、TL1、TH2、TL2,只能字節(jié)尋址。并行I/O端口78單片機知識點周冰4個雙向的8位并行I/O端口(Port),記作P0,P3屬于特殊功能寄存器,還可位尋址。1、P0端口P0口傳送地址或數(shù)據(jù)時,CPU發(fā)出控制信號為高電平,打開上面的與門,使多路轉接開關MUX打向上邊,使內部地址/數(shù)據(jù)線與下面的場效應管處于反相接通狀態(tài)。這時的輸出驅動電路由于上下兩個FET處于反相,形成推拉式電路結構。P0口作通用的I/O口使用時,CPU發(fā)來的“控制”信號為低電平,上拉場效應管截止,多路轉接開關MUX打向下邊,與D鎖存器的Q*端接通。P0口作通用的I/O口使用:,1,作輸出口使用來自CPU的“寫入”脈沖加在D鎖存器的CP端,內部總線上的數(shù)據(jù)寫入D鎖存器,并向端口引腳P0.x輸出。注意,由于輸出電路是漏極開路,因為這時上拉場效應管截止,,必須外接上拉電阻才能有高電平輸出。,2,作輸入口使用應區(qū)分“讀引腳”和“讀端口”,或稱“讀鎖存器”,?!白x引腳”信號把下方緩沖器打開,引腳上的狀態(tài)經(jīng)緩沖器讀入內部總線,“讀鎖存器”信號打開上面的緩沖器把鎖存器Q端的狀態(tài)讀入內部總線。2、P1端口字節(jié)地址90H,位地址90H,97H。P1口只作為通用的I/O口使用,在電路結構上與P0口有兩點區(qū)別,,1,因為P1口只傳送數(shù)據(jù),不再需要多路轉接開關MUX。,2,由于P1口用來傳送數(shù)據(jù),因此輸出電路中有上拉電阻,這樣電路的輸出不是三態(tài)的,所以P1口是準雙向口。因此,,1,P1口作為輸出口使用時,外電路無需再接上拉電阻。,2,P1口作為輸入口使用時,應先向其鎖存器先寫入“1”,使輸出驅動電路的FET截止。3、P2端口字節(jié)地址為A0H,位地址A0H,A7H。89單片機知識點周冰4、P3端口P3口的字節(jié)地址為B0H,位地址為B0H,B7H表2-2P3口的第二功能定義第二功能口引腳P3.0RXD,串行輸入口,P3.1TXD,串行輸出口,P3.2INT0*,外部中斷0,P3.3INT1*,外部中斷1,P3.4T0,定時器0外部計數(shù)輸入,P3.5T1,定時器1外部計數(shù)輸入,P3.6WR*,外部數(shù)據(jù)存儲器寫選通,P3.7RD*,外部數(shù)據(jù)存儲器讀選通,例3.2.1編寫程序使第一個數(shù)碼管顯示8while(1);//程序停止到這里},part2.1_.1cP59,例3.2.2讓實驗板上6個數(shù)碼管同時點亮,依次顯#include<reg52.h>//52系列單片機頭文件示0到F,時間間隔為0.5ms,循環(huán)下去。,part2.1_2.csbitdula=P2^6;//申明U1鎖存器的鎖存端P61,sbitwela=P2^7;//申明U2鎖存器的鎖存端#include<reg52.h>//52系列單片機頭文件voidmain(){#defineucharunsignedchar#defineuintunsignedintwela=1;//打開U2鎖存器sbitdula=P2^6;//申明U1鎖存器的鎖存端P0=0xFE;//送入位選信號sbitwela=P2^7;//申明U2鎖存器的鎖存端wela=0;//關閉U2鎖存器ucharnum;uncharcodetable[]={dula=1;//打開U1鎖存器0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};P0=0x7F;//送入段選信號voiddelayms(uint);voidmain()dula=0;//關閉U2鎖存器910單片機知識點周冰sbitkey2=P3^5;{wela=1;//打開U2鎖存端sbitkey3=P3^6;sbitkey4=P3^7;P0=0xco;//送入位選信號sbitdula=P2^6;//申明U1鎖存器的鎖存端wela=0;//關閉U2鎖存端sbitwela=P2^7;//申明U2鎖存器的鎖存端while(1)ucharcodetable[]={{for(num=0;num<16;num++)//16個數(shù)循0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};環(huán)顯示voiddelayms(uint);ucharnumt0,num;{dula=1;//打開U1鎖存端voiddisplay(ucharnumdis)//顯示子函數(shù)P0=table[num];//送入段選信號{ucharshi,ge;//分離兩個分別要顯示的數(shù)dula=0;//關閉U1鎖存端shi=numdis/10;延時0.5秒delay(500);//ge=numdis%10;}dula=1;}P0=table[shi];//送十位段選數(shù)據(jù)}voiddelayms(uintxms)dula=0;{P0=0xff;//送位選數(shù)據(jù)前關閉所有顯uinti,j;for(i=xms;i>0;i--)//i=xms即延時約xms毫秒示,防止打開位選鎖存時for(j=110;j>0;j--);wela=1;//原來段選數(shù)據(jù)通過位選鎖存}例4.1.1用數(shù)碼管前兩位顯示一個十進制數(shù),變化器造成混亂范圍為00~59,開始時顯示00,每按下S2鍵一次,P0=0xfe;//送位選數(shù)據(jù)wela=0;數(shù)值加1,每按下S3鍵一次,數(shù)值減1,每按下delayms(5);//延時S4鍵一次,數(shù)值歸零,按下S5鍵一次,利用定時dula=1;器功能使數(shù)值開始自動每秒加1,再次按下S5鍵,P0=table[ge];//送個位段選數(shù)據(jù)dula=0;數(shù)值停止加1,保持顯示原數(shù)。,part2.2_1.cP82,P0=0xff;wela=1;#include<reg52.h>/52系列單片機頭文件P0=0xfd;#defineucharunsignedcharwela=0;#defineuintunsignedintdelayms(5);sbitkey1=P3^4;}1011單片機知識點周冰voiddelayms(uintxms)}{uinti,j;}if(key3==0)for(i=xms;i>0;i--)//i=xms即延時約xms毫秒{for(j=110;j>0;j--);delayms(10);}if(key3==0)voidinit()//初始化函數(shù){num=0;//清0{while(!key3);}TMOD=0x01;//設置定時器0為工作方式}1(00000001)if(key4==0){TH0=(65536-45872)/256;//裝初值50ms一次中delayms(10);if(key4==0)斷{TL0=(65536-45872)%256;while(!key4);EA=1;//開總中斷TR0=~TR0;//啟動或停止定時器0}ET0=1;//開定時器0中斷}}}voidkeyscan()voidmain(){{if(key1==0)init();//初始化函數(shù){delayms(10);if(key1==0)while(1){{keyscan();num++;display(num);}if(num==60)//當?shù)?0時重新歸0}num=0;voidT0_time()interrupt1{while(!key1);//等待按鍵釋放TH0=(65536-45872)/256;//重裝初值}}TL0=(65536-45872)%256;if(key2==0)numt0++;{if(numt0==20)//如果到了20次,說明1delayms(10);if(key2==0)秒時間到{if(num==0)//當?shù)?時重新歸60{numt0=0;//然后把num清0重新再num=60;計20次num--;while(!key2);num++;1112單片機知識點周冰if(num==60)switch(temp)num=0;{case0xee:}key=0;}break;case0xde:例4.2.1實驗班上電時,數(shù)碼管不顯示,順序按下key=1;break;矩陣鍵盤后,數(shù)碼管上依次顯示0~F,六個數(shù)碼管case0xbe:key=2;同時靜態(tài)顯示即可。,part2.2_2.cP87,break;case0x7e:#include<reg52.h>//52系列單片機頭文件key=3;#defineucharunsignedcharbreak;#defineuintunsignedint}while(temp!=0xf0)sbitdula=P2^6;//申明U1鎖存器的鎖存端{temp=P3;申明U2鎖存器的鎖存端sbitwela=P2^7;//temp=temp&0xf0;ucharcodetable[]={}0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,display(key);0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};}voiddelayms(uintxms)}{P3=0xfd;uinti,j;temp=P3;temp=temp&0xf0;for(i=xms;i>0;i--)//i=xms即延時約xms毫秒if(temp!=0xf0)for(j=110;j>0;j--);{}delayms(10);voiddisplay(ucharnum)temp=P3;temp=temp&0xf0;{P0=table[num];//顯示函數(shù)只送段選數(shù)據(jù)if(temp!=0xf0)dula=1;{dula=0;temp=P3;}switch(temp)voidmatrixkeyscan(){{case0xed:uchartemp,key;key=4;P3=0xfe;break;temp=P3;case0xdd:temp=temp&0xf0;key=5;if(temp!=0xf0)break;{delayms(10);case0xbd:temp=P3;key=6;temp=temp&0xf0;break;if(temp!=0xf0)case0x7d:{temp=P3;key=7;1213單片機知識點周冰break;temp=temp&0xf0;}if(temp!=0xf0)while(temp!=0xf0){{delayms(10);temp=P3;temp=P3;temp=temp&0xf0;temp=temp&0xf0;}if(temp!=0xf0)display(key);{temp=P3;}switch(temp)}{P3=0xfb;case0xe7:temp=P3;key=12;temp=temp&0xf0;break;if(temp!=0xf0)case0xd7:{key=13;delayms(10);break;temp=P3;case0xb7:temp=temp&0xf0;key=14;if(temp!=0xf0)break;{case0x77:temp=P3;key=15;switch(temp)break;{}case0xeb:while(temp!=0xf0)key=8;{temp=P3;break;temp=temp&0xf0;case0xdb:}key=9;display(key);break;}case0xbb:}key=10;}break;voidmain()case0x7b:{key=11;P0=0;//關閉所有數(shù)碼管段選break;}dula=1;while(temp!=0xf0)dula=0;{P0=0xc0;//位選中所有數(shù)碼管temp=P3;temp=temp&0xf0;wela=1;}wela=0;display(key);while(1)}{}matrixkeyscan();//不停調用鍵盤掃描程序P3=0xf7;temp=P3;}1314單片機知識點周冰}示,防止打開位選鎖存時例5.3.1用單片機控制ADC0804進行數(shù)模轉換,wela=1;//原來段選數(shù)據(jù)通過位選鎖存當擰動實驗板上A/D旁邊的電位時,在數(shù)碼管的器造成混亂前三位以十進制方式顯示出A/D轉換后的數(shù)字量P0=0x7e;//送位選數(shù)據(jù),8位A/D轉換后數(shù)值在0~255變化,。,part2.3_1.cwela=0;delayms(5);//延時P107,dula=1;#include<reg52.h>//52系列單片機頭文件P0=table[shi];#include<intrins.h>dula=0;#defineucharunsignedcharP0=0xff;#defineuintunsignedintwela=1;P0=0x7d;sbitdula=P2^6;//申明U1鎖存器的鎖存端wela=0;delayms(5);sbitwela=P2^7;//申明U2鎖存器的鎖存端dula=1;P0=table[ge];sbitadwr=P3^6;//定義AD的WR端口dula=0;P0=0xff;sbitadrd=P3^7;//定義AD的RD端口wela=1;ucharcodetable[]={P0=0x7b;0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,wela=0;0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};delayms(5);voiddelayms(uintxms)}{voidmain()//主程序uinti,j;{uchara,A1,A2,A3,adval;for(i=xms;i>0;i--)//i=xms即延時約xms毫秒wela=1;for(j=110;j>0;j--);P0=0x7f;//置CSAD為0,選通}voiddisplay(ucharbai,ucharshi,ucharge)//顯示子ADCS以后不必再管ADCSwela=0;函數(shù)while(1){{dula=1;adwr=1;_nop_();P0=table[bai];//送段選數(shù)據(jù)adwr=0;//啟動AD轉換dula=0;_nop_();P0=0xff;//送位選數(shù)據(jù)前關閉所有顯adwr=1;1415單片機知識點周冰for(a=10;a>0;a--)//TX-1C實驗板AD工作4種工作方式(方式0-方式3)。頻率較低,所以啟動轉換后要多留點時間用來轉換T0和T1的控制與狀態(tài)寄存器{//這里把顯示部分放這里的原因也是為TMOD,選擇定時器/計數(shù)器T0、T1的工作模式和了延長轉換時間工作方式。display(A1,A2,A3);T1的啟動和停止計數(shù),同時包TCON,控制T0、}P1=0xff;//讀取P1口之前先給其寫全1含了T0、T1的狀態(tài)。adrd=1;//選通ADCS_nop_();adrd=0;//AD讀使能_nop_();adval=P1;//AD數(shù)據(jù)讀取賦給P1口adrd=1;單片機復位時,兩個寄存器的所有位都被清0。A1=adval/100;//分出百,十,和個位【1】工作模式寄存器TMODA2=adval%100/10;A3=adval%10;}}AT89S52的定時器/計數(shù)器8位分為兩組,高4位控制T1,低4位控制T0。軟件和硬件定/延時方式,硬件定/延時是通過單片1,GATE——門控位機內部硬件定時器/計數(shù)器,優(yōu)點,不占用CPU時0,以TRX,X=0,1,來啟動定時器/計數(shù)器運行。間。3個可編程的定時器/計數(shù)器T0、T1、T2。1,用外中斷引腳(INT0*或INT1*)上的高電平和定時器/計數(shù)器基本原理定時器/計數(shù)器核心,16位的加1計數(shù)器。由2個TRX來啟動定時器/計數(shù)器運行。8位計數(shù)器,TH、TL,組成。,2,M1、M0——工作方式選擇位兩種工作模式,M1M0工作方式,1,計數(shù)器工作模式00方式0,13位定時器/計數(shù)器。,2,定時器工作模式01方式1,16位定時器/計數(shù)器。1516單片機知識點周冰10方式2,8位常數(shù)自動重新裝載為P3.4、P3.5引腳上的外部輸入脈沖,當引腳上11方式3,僅適用于T0,T0分成兩個8發(fā)生負跳變時,計數(shù)器加1。位計數(shù)器,T1停止計數(shù)。GATE位,決定定時器/計數(shù)器的運行取決于TRX(3)C/T*——計數(shù)器模式和定時器模式選擇位一個條件還是TRX和INTX*引腳兩個條件。,定時器模式。1,0,A點是否計數(shù),僅取決于TRX的狀態(tài)。0,1,計數(shù)器模式。,2,1,B點電位由INTX*的輸入電平和TRX的【2】定時器/計數(shù)器控制寄存器TCON狀態(tài)這兩個條件來確定。是否計數(shù)是由TRX和INTX*二個條件來控制的。低4位與外部中斷有關,外部中斷0,外部中斷1。高4位的功能如下,定時時間(1)TF1、TF0——計數(shù)溢出標志位計數(shù)初值(2)TR1、TR0——計數(shù)運行控制位1,啟動定時器/計數(shù)器工作2方式1M1、M0=01,16位的計數(shù)器。0,停止定時器/計數(shù)器工作13T0和T1的4種工作方式(2X)12,,t,1方式0fosctf,13oscX2,,M1、M0為00,定時器/計數(shù)器的框圖,12定時時間計數(shù)初值為13位的計數(shù)器,C/T*位決定工作模式,16(2X)12,,3方式2t,0,開關打在上面,為定時器工作模式,fosc計數(shù)滿后自動裝入計數(shù)初值。1,開關打在下面,為計數(shù)器工作模式,計數(shù)脈沖tf,16oscX2,,M1、M0=10,等效框圖如下,121617單片機知識點周冰TF1,同時占用定時器T1的中斷請求源TF1。各引腳與T0的邏輯關系如圖所示,TLX作為常數(shù)緩沖器,當TLX計數(shù)溢出時,在置“1”溢出標志TFX的同時,還自動的將THX中的初值送至TLX,使TLX從初值開始重新計數(shù)。定時器/計數(shù)器的方式2工作過程下圖所示,T0工作在方式3下,T1的各種工作方式(X=0,1)。2T0處于方式3時,T1可定為方式0、方式1省去用戶軟件中重裝初值的和方式2程序,精確的定時。,用來作為串行口的波特率發(fā)生器,或不4方式3需要中斷的場合。增加一個附加的8位定時器,1,T1工作在方式0/計數(shù)器,從而具有3個定時器/計數(shù)器。只適用于定時器/計數(shù)器T0。T1不能工作在,2,T1工作在方式1方式3,T1方式3時相當于TR1=0,停止計數(shù)。1,工作方式3下的T0T0分為兩個獨立的8位計數(shù)器:TL0和TH0。,3,T1工作在方式2TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0,而TH0被固定為一個8位定時器,不能作外部計數(shù)模式,,并使用定時器T1的狀態(tài)控制位TR1和1718單片機知識點周冰率。AT89S52的中斷系統(tǒng)AT89S52中斷系統(tǒng)的結構實時測控,單片機能及時地響應和處理單片機有8個中斷請求源,兩個中斷優(yōu)先級,可兩級嵌套。中斷系統(tǒng)結構示意圖如下圖所示。外部事件或內部事件所提出的中斷請求。中斷的概念CPU正在執(zhí)行程序時,單片機外部或內部發(fā)生的某一事件,請求CPU迅速去處理。CPU暫時中止當前的工作,轉到中斷服務處理程序處理所發(fā)生的事件。處理完該事件后,再回到原來被中止的地方,繼續(xù)原來的工作,這稱為中斷。CPU處理事件的中斷請求源過程,稱為CPU的中斷響應過程。八個中斷請求源,P50表2-21,,對事件的整個處理過程,稱為中斷處理,或中,1,INT0*—外部中斷請求0,由引腳INT0*輸入,斷服務,。中斷請求標志為IE0。,2,INT1*—外部中斷請求1,由引腳INT1*輸入,中斷請求標志為IE1。,3,定時器/計數(shù)器T0溢出中斷請求,中斷請求標志為TF0。,4,定時器/計數(shù)器T1溢出中斷請求,中斷請求能夠實現(xiàn)中斷處理功能的部件稱為中斷系統(tǒng),標志為TF1。產(chǎn)生中斷的請求源稱為中斷請求源。,5,串行口中斷請求,中斷請求標志為TI或RI。中斷源向CPU提出的處理請求,稱為中斷請,6,定時器/計數(shù)器T2溢出中斷請求,中斷請求求(或中斷申請)。標志TF2。定時器/計數(shù)器T2捕獲中斷請求,中中斷方式優(yōu)點,大大地提高了CPU的工作效1819單片機知識點周冰斷請求標志EXF2?!?”TF0,向CPU申請中斷,CPU響應TF0中斷時,TCON為定時器/計數(shù)器的控制寄存器,字節(jié)地址清“0”TF0,TF0也可由軟件清0。6,TF1—T1的溢出中斷請求標志位,功能和TF0為88H。包含,,,T0和T1的溢出中斷請求標志位TF1和TF0類似。,1,外部中斷請求標志位IE1與IE0。格式如下,2TR1、TR02個位與中斷無關。當MCS-51復位后,TCON被清0,則CPU關所示,中斷,所有中斷請求被禁止。外部中斷的觸發(fā)方式選擇各標志位的功能,兩種觸發(fā)方式,電平觸發(fā)方式和跳沿觸發(fā)方式。,1,IT0—選擇外部中斷請求0為跳沿觸發(fā)方式還、電平觸發(fā)方式1CPU在每個機器周期采樣到的外部中斷輸入線的是電平觸發(fā)方式,IT0=0,為電平觸發(fā)方式。電平。在中斷服務程序返回之前,外部中斷請求輸IT0=1,為跳沿觸發(fā)方式。入必須無效,即變?yōu)楦唠娖?,否則CPU返回主程可由軟件置“1”或清“0”。序后會再次響應中斷。,2,IE0—外部中斷請求0的中斷請求標志位。適于外中斷以低電平輸入且中斷服務程序能清除IE0=0,無中斷請求。外部中斷請求,即外部中斷輸入電平又變?yōu)楦唠奍E0=1,外部中斷0有中斷請求。當CPU響應平,的情況。該中斷,轉向中斷服務程序時,由硬件清“0”IE0。2、跳沿觸發(fā)方式,3,IT1—外部中斷請求1為跳沿觸發(fā)方式還是電連續(xù)兩次采樣,一個機器周期采樣到外部中斷輸入平觸發(fā)方式,意義與IT0類似。為高,下一個機器周期采樣為低,則置“1”中斷請,4,IE1—外部中斷請求1的中斷請求標志位,意求標志,直到CPU響應此中斷時,該標志才清0。義與IE0類似。這樣不會丟失中斷,但輸入的負脈沖寬度至少保持,5,TF0—T0溢出中斷請求標志位。1個機器周期。T0計數(shù)后,當最高位產(chǎn)生溢出時,由硬件置SCON為串行口控制寄存器,字節(jié)地址為98H。1920單片機知識點周冰串行口的發(fā)送中斷和接收中斷的中斷請求標志TIIE中各位的功能如下,和RI,格式如下,,1,EA,中斷允許總控制位,CPU屏蔽所有的中斷請求(CPU關中斷),01,CPU開放所有中斷(CPU開中斷)。2,ES,串行口中斷允許位各標志位的功能,,,1,TI—發(fā)送中斷請求標志位。串口每發(fā)送完一0,禁止串行口中斷,幀串行數(shù)據(jù)后,硬件自動置“1”TI。必須在中斷服1,允許串行口中斷。務程序中用軟件對TI標志清“0”。,3,ET1,定時器/計數(shù)器T1的溢出中斷允許位,RI—接收中斷請求標志位。串口接收完一個,20,禁止T1溢出中斷,數(shù)據(jù)幀,硬件自動置“1”RI標志。必須在中斷服務1,允許T1溢出中斷。程序中用軟件對RI標志清“0”。,4,EX1,外部中斷1中斷允許位中斷控制0,禁止外部中斷1中斷,1中斷允許寄存器IE1,允許外部中斷1中斷。CPU對中斷源的開放或屏蔽,由片內的中斷允,5,ET0,定時器/計數(shù)器T0的溢出中斷允許位許寄存器IE控制。字節(jié)地址為A8H,可位尋址。0,禁止T0溢出中斷,格式如下,1,允許T0溢出中斷。,6,EX0,外部中斷0中斷允許位。IE對中斷的開放和關閉為兩級控制0,禁止外部中斷0中斷,總的開關中斷控制位EA,IE.7位,:1,允許外部中斷0中斷。EA=0,所有中斷請求被屏蔽。2中斷優(yōu)先級寄存器IPEA=1,CPU開放中斷,但五個中斷源的中斷請兩個中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。如下圖示。求是否允許,還要由IE中對應的5個中斷請求允許控制位的狀態(tài)來決定。2021單片機知識點周冰0,低優(yōu)先級中斷。,4,PT0——定時器T0中斷優(yōu)先級控制位一個正在執(zhí)行的低優(yōu)先級中斷程序能被高優(yōu)先級1,高優(yōu)先級中斷,0,低優(yōu)先級中斷。的中斷源所中斷,但不能被另一個低優(yōu)先級的中斷,5,PX0——外部中斷0中斷優(yōu)先級控制位源所中斷。若CPU正在執(zhí)行高優(yōu)先級的中斷,則不能被任何中斷源所中斷。1,高優(yōu)先級中斷,可歸納為下面兩條基本規(guī)則,0,低優(yōu)先級中斷。,1,低優(yōu)先級可被高優(yōu)先級中斷,反之則不能。在同時收到幾個同一優(yōu)先級的中斷請求時,,同級中斷不會被它的同級中斷源所中斷。中斷級別,2中斷源某一中斷源被設置為高優(yōu)先級中斷,則不能被任何外部中斷0最高其它的中斷源的中斷請求所中斷。T0溢出中斷中斷優(yōu)先級寄存器IP,其字節(jié)地址為B8H。外部中斷1T1溢出中斷串行口中斷最低響應中斷請求的條件IP各個位的含義,一個中斷請求被響應,需滿足以下必要條件,,1,PS——串行口中斷優(yōu)先級控制位,1,IE寄存器中的中斷總允許位EA=1。1,高優(yōu)先級中斷,,2,該中斷源發(fā)出中斷請求,即該中斷源對應的0,低優(yōu)先級中斷。中斷請求標志為“1”。,2,PT1——定時器T1中斷優(yōu)先級控制位,3,該中斷源的中斷允許位=1,即該中斷沒有被1,高優(yōu)先級中斷,屏蔽。0,低優(yōu)先級中斷。,4,無同級或更高級中斷正在被服務。,3,PX1——外部中斷1中斷優(yōu)先級控制位1,高優(yōu)先級中斷,中斷響應是有條件的,遇到下列三種情況之一時,2122單片機知識點周冰中斷響應被封鎖,11.0592MHZ。,1,CPU正在處理同級的或更高優(yōu)先級的中斷。,2,狀態(tài)周期:每個狀態(tài)周期為時鐘周期的22,所查詢的機器周期不是所當前正在執(zhí)行指令,是振蕩周期經(jīng)二分頻后得到的。,倍的最后一個機器周期。只有在當前指令執(zhí)行完畢,3,機器周期:一個機器周期包含6個狀態(tài)周期后,才能進行中斷響應。12個時鐘周期。在一個機器周期S1~S6,也就是,3,正在執(zhí)行的指令是RETI或是訪問IE或IP內,CPU可以完成一個獨立的操作。的指令。需要再去執(zhí)行完一條指令,才能響應新的,4,指令周期:它是指CPU完成一條操作所需的中斷請求。全部時間。每條指令執(zhí)行時間都是有一個或幾個機器周期組成。MCS-51系統(tǒng)中,有單周期指令、如果存在上述三種情況之一,CPU將丟棄中斷查詢結果,不能對中斷進行響應。雙周期指令和四周期指令?!客獠恐袛嗟捻憫獣r間接著再執(zhí)行一條指令,按最長指令,乘法指令MUL外部中斷的最短的響應時間為3個機器周期:和除法指令DIV,來算,也只有4個機器周期。加,1,中斷請求標志位查詢占1個機器周期。上硬件子程序調用指令LCALL的執(zhí)行,需要2個,2,子程序調用指令LCALL轉到相應的中斷服機器周期。所以,外部中斷響應最長時間為8個機務程序入口,需2個機器周期。器周期。外部中斷響應的最長時間為8個機器周期,如果已在處理同級或更高級中斷,響應時間無法計發(fā)生在CPU進行中斷標志查詢時,剛好是開始算。執(zhí)行RETI或是訪問IE或IP的指令,則需把當前在一個單一中斷的系統(tǒng)里,單片機對外部中斷請求指令執(zhí)行完再繼續(xù)執(zhí)行一條指令后,才能響應中的響應的時間總是在3,8個機器周期之間。斷,最長需2個機器周期。寫程序首先來了解程序的格式,,1,振蕩周期:也稱時鐘周期,是指為單片機提供void函數(shù)名()interruptm[usingn]時鐘脈沖信號的振蕩源的周期,TX實驗板上為{}2223單片機知識點周冰關鍵字interruptm[usingn]表示這是一個中T1,001BH3斷函數(shù)串口,0023H4m為中斷源的編號,有五個中斷源,取值為中斷向量,中斷入口地址,=中斷號x8+30,1,2,3,4,中斷編號會告訴編譯器中斷程序的入口前面m意思很清楚,不同的m值表示這個函地址,執(zhí)行該程序時,這個地址會傳個程序計數(shù)器數(shù)是針對不同的中斷源,比如m為1是表示它是PC,于是CPU開始從這里一條一條的執(zhí)行程序指定時器0的中斷函數(shù),令。如voidtime0,,interrupt1{}n為單片機工作寄存器組,又稱通用寄存器那么后面的usingn又是什么意思呢,在正組,編號,共四組,取值為0,1,2,3在執(zhí)行一個特定任務時,有更緊急的事情需要中斷號中斷源CPU來處理,涉及到中斷優(yōu)先權。高優(yōu)先權中斷0外部中斷0低優(yōu)先權正在處理的程序,所以最好給每個優(yōu)先程1定時器0序分配不同的寄存器組。2外部中斷1CPU正在處理某個事件,突然另外一個事件3定時器1中斷需要處理,于是進入中斷后,而你不想將現(xiàn)在執(zhí)行4串行口中斷的程序的各寄存器狀態(tài)入棧,那么可以把這個中斷這5個中斷源的中斷入口地址為,,在上一篇程序放入另一個寄存器組,如切換到1組,然后退文章中講到的ROM前43個存儲單元就是他們,出中斷時,再切回到0組,原來的程序在0組,。這40個地址用來存放中斷處理程序的地址單元,為了更好的了解這里意思,你可以看看工作寄存器每一個類中斷的存儲單元只有8B,顯然不是中斷組的作用是什么。處理的程序,而是存放著中斷處理程序的真正地下面的注意事項轉自網(wǎng)絡上其他朋友的文章址,INT0,0003H0,整理下,重復的去掉了,寫的非常好,,T0,000BH1,1,中斷函數(shù)不能進行參數(shù)傳遞INT1,0013H22324單片機知識點周冰,2,中斷函數(shù)沒有返回值做有很多好處。首先系統(tǒng)對中斷的反應面更寬了,,3,在任何情況下都不能直接調用中斷函數(shù)有些系統(tǒng)如果丟失中斷或對中斷反應太慢將產(chǎn)生4,中斷函數(shù)使用浮點運算要保存浮點寄存,十分嚴重的后果,這時有充足的時間等待中斷是十器的狀態(tài)。分重要的。其次它可使中斷服務程序的結構簡單,,5,如果在中斷函數(shù)中調用了其它函數(shù),則不容易出錯。中斷程序中放入的東西越多,他們之被調用函數(shù)所使用的寄存器必須與中斷函數(shù)相同,間越容易起沖突。簡化中斷服務程序意味著軟件中被調函數(shù)最好設置為可重入的。將有更多的代碼段,但可把這些都放入主程序中。,6,C51編譯器對中斷函數(shù)編譯時會自動在中斷服務程序的設計對系統(tǒng)的成敗有至關重要的程序開始和結束處加上相應的內容,具體如下,在作用,要仔細考慮各中斷之間的關系和每個中斷執(zhí)程序開始處對ACC、B、DPH、DPL和PSW入棧,行的時間,特別要注意那些對同一個數(shù)據(jù)進行操作結束時出棧。中斷函數(shù)未加usingn修飾符的,開的ISR.例#include<reg52.h>始時還要將R0~R1入棧,結束時出棧。如中斷函sbitm=P2^0;sbitb=P2^6;數(shù)加usingn修飾符,則在開始將PSW入棧后還要sbity=P2^7;unsignedcharcount;修改PSW中的工作寄存器組選擇位。voidmain(){TMOD=0x01;,7,C51編譯器從絕對地址8m+3處產(chǎn)生一TH0=(65536-50000)/256;TL0=(65536-50000)%256;個中斷向量,其中m為中斷號,也即interrupt后TR0=1;ET0=1;面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的EA=1;count=0;絕對跳轉。while(1){},8,中斷函數(shù)最好寫在文件的尾部,并且禁}voidtimer()interrupt1止使用extern存儲類型說明。防止其它程序調用。{count++;if(count>40)count=0;,9,在設計中斷時,要注意的是哪些功能應if(count<=20){m=0;b=1;y=0;該放在中斷程序中,哪些功能應該放在主程序中。}else{一般來說中斷服務程序應該做最少量的工作,這樣m=1;b=0;y=1;2425單片機知識點周冰}傳輸,但兩個方向的數(shù)據(jù)傳輸不能同時進行。TH0=(65536-50000)/256;TL0=(65536-50000)%256;(3)全雙工,可同時進行數(shù)據(jù)收/發(fā)的工作方式。}串行通信CS-51的串行口全雙工的異步通訊串行口數(shù)據(jù)通信,計算機之間以及計算機與其他設備4種工作方式,波特率由片內定時器/計數(shù)器之間的信息交換。兩種方式,串行通信和并行通信。,串行通信,數(shù)據(jù)的各位按一定的順序逐位分控制。,1時傳送。優(yōu)點,只需要一對數(shù)據(jù)線,成本低,適合每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。遠距離通信。除用于串行通訊,還可用來擴展并行I/O口。(2)并行通信,數(shù)據(jù)的各位同時傳送。優(yōu)點,速度1串行口的結構快。缺點,數(shù)據(jù)有多少就要多少根數(shù)據(jù)線,成本高,串行口內部結構如下圖,兩個物理上獨立地接抗干擾能力降低。收和發(fā)送緩沖器,可同時收、發(fā)數(shù)據(jù)。1串行通信的通信方式兩個緩沖器共用一個特殊功能寄存器字節(jié)地(1)同步通信址,SBUF,99H,。基本特征是,發(fā)送和接收時鐘保持嚴格同步。控制寄存器共兩個,特殊功能寄存器SCON信息開始時加同步字符,沒有信息時填空字符。和PCON。分為,面向字符型和面向位型,串行口控制寄存器SCON面向字符型有單同步、雙同步和外同步。字節(jié)地址98H,可位尋址,格式如圖所示。(2)異步通信幀格式數(shù)據(jù)組成,起始位、數(shù)據(jù)位、奇偶校驗位和停止位。2串行通信的傳輸方式,1,SM0、SM1——串行口4種工作方式的選擇單工、半雙工、全雙工三種位(1)單工,數(shù)據(jù)只能單方向傳輸。SM0SM1方式功能說明(2)半雙工,通信雙方能交替地進行雙向數(shù)據(jù)000同步移位寄存器方式,用于擴展I/O口,2526單片機知識點周冰0118位異步收發(fā),波特率可變,由定時器控制,作為奇偶校驗位使用,也可作為地址幀或數(shù)據(jù)幀的1029位異步收發(fā),波特率為fosc/64或fosc/32標志。1139位異步收發(fā),波特率可變,由定時器控制,=1為地址幀,=0為數(shù)據(jù)幀,2,SM2——多機通信控制位,5,RB8——接收到的第9位數(shù)據(jù)方式2和3時,RB8存放接收到的第9位數(shù)據(jù)。用于方式2或方式3中。當串行口以方式2或方式3接收時,在方式1,如果SM2=0,RB8是接收到的停止位。如果SM2=1,只有當接收到的第9位數(shù)據(jù),RB8,在方式0,不使用RB8。為“1”時,才將接收到的前8位數(shù)據(jù)送入SBUF,,6,TI——發(fā)送中斷標志位并置“1”RI,產(chǎn)生中斷請求,當接收到的第9位數(shù)方式0時,串行發(fā)送第8位數(shù)據(jù)結束時由硬件置據(jù),RB8,為“0”時,則將接收到的前8位數(shù)據(jù)丟“1”,棄。其它工作方式,串行口發(fā)送停止位的開始時置“1”。如果SM2=0,則不論第9位數(shù)據(jù)是“1”還是“0”,TI=1,表示一幀數(shù)據(jù)發(fā)送結束,可供軟件查詢,也都將前8位數(shù)據(jù)送入SBUF中,并置“1”RI,產(chǎn)生可申請中斷。CPU響應中斷后,在中斷服務程序中中斷請求。向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟在方式1時,如果SM2=1,則只有收到停止位件清0。時才會激活RI。,7,RI——接收中斷標志位在方式0時,SM2必須為0。方式0時,接收完第8位數(shù)據(jù)時,RI由硬件置1。,3,REN——允許串行接收位其它工作方式,串行接收到停止位時,該位置“1”。由軟件置“1”或清“0”。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求REN=1允許串行口接收數(shù)據(jù)。CPU從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供REN=0禁止串行口接收數(shù)據(jù)。軟件查詢。RI必須由軟件清“0”。,4,TB8——發(fā)送的第9位數(shù)據(jù),特殊功能寄存器PCON方式2和3時,TB8是要發(fā)送的第9位數(shù)據(jù),可字節(jié)地址為87H,沒有位尋址功能。2627單片機知識點周冰方式0接收時,REN為串行口允許接收控制位。REN=0,禁止接收。SMOD,波特率選擇位。例如,方式1的波特率的計算公式為,2SMOD/32,×定時器T1的溢方式1波特率=,出率當SMOD=1時,要比SMOD=0時的波特率加倍,REN=1,允許接收。當CPU向串行口的SCON也稱SMOD寄存器寫入控制字,置為方式0,并置“1”REN位,位為波特率倍增位。同時RI=0,時,產(chǎn)生一個正脈沖,串行口即開始串行口的4種工作方式接收數(shù)據(jù)。引腳RXD為數(shù)據(jù)輸入端,TXD為移位,方式0脈沖信號輸出端,接收器也以fosc/12的固定波特同步移位寄存器輸入輸出方式,常用于外接移位率采樣RXD引腳的數(shù)據(jù)信息,當接收到8位數(shù)據(jù)寄存器,以擴展并行I/O口。時置“1”中斷標志RI。表示一幀數(shù)據(jù)接收完畢,可8位數(shù)據(jù)為一幀,不設起始位和停止位,先發(fā)送或進行下一幀數(shù)據(jù)的接收。時序如下圖,接收最低位。波特率固定為fosc/12。幀格式如下,1,方式0發(fā)送當CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時,產(chǎn)生一個正脈沖,串行口即把SBUF方式0下,SCON中的TB8、RB8位沒有用到,發(fā)中的8位數(shù)據(jù)以fosc/12的固定波特率從RXD引送或接收完8位數(shù)據(jù)由硬件置“1”TI或RI中斷標腳串行輸出,低位在先,TXD引腳輸出同步移位脈志位,CPU響應中斷。TI或RI標志位須由用戶軟沖,發(fā)送完8位數(shù)據(jù)置“1”中斷標志位TI。時序如件清“0”,可采用如下指令,圖所示。CLRTI,TI位清“0”2,方式0接收CLRRI,RI位清“0”2728單片機知識點周冰方式0時,SM2位,多機通訊控制位,必須為0。“1”中斷標志位TI,然后失效。方式1發(fā)送數(shù)據(jù)的,方式1時序,如圖所示。SM0、SM1=01。用于數(shù)據(jù)的串行發(fā)送和接收。TXD腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。方式1收發(fā)一幀的數(shù)據(jù)為10位,1個起始位,0,,8個數(shù)據(jù)位,1個停止位,1,,先發(fā)送或接收最低2,方式1接收位。幀格式如圖所示。數(shù)據(jù)從RXD,P3.0,引腳輸入。當檢測到起始位的負跳變時,則開始接收。定時控制信號有波特率由下式確定,兩種,如圖所示,,一種是接收移位時鐘,RX時方式1波特率=,2SMOD/32,×定時器T1的溢鐘,,它的頻率和傳送的波特率相同。另一種是位出率檢測器采樣脈沖,它的頻率是RX時鐘的16倍。SMOD為PCON寄存器的最高位的值,0或1,。也就是在1位數(shù)據(jù)期間,有16個采樣脈沖,以波1,方式1發(fā)送特率的16倍的速率采樣RXD引腳狀態(tài),當采樣方式1輸出時,數(shù)據(jù)位由TXD端輸出,一到RXD端從1到0的跳變時就啟動檢測幀信息為10位,1位起始位0,8位數(shù)據(jù)位,先低位,和1位停止位1。當CPU執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。圖中TX時鐘的頻率就是發(fā)器,接收的值是3次連續(xù)采樣,以確認是否是真正送的波特率。發(fā)送開始時,內部發(fā)送控制信號變?yōu)榈钠鹗嘉?負跳變,的開始。有效。將起始位向TXD輸出,此后,每經(jīng)過一個當一幀數(shù)據(jù)接收完畢以后,必須同時滿足以下兩TX時鐘周期,便產(chǎn)生一個移位脈沖,并由TXD個條件,這次接收才真正有效。輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置?RI=0,即上一幀數(shù)據(jù)接收完成時,RI=1發(fā)出的2829單片機知識點周冰中斷請求已被響應,SBUF中的數(shù)據(jù)已被取走,說2,方式2接收明“接收SBUF”已空。SM0、SM1=10,且REN=1。數(shù)據(jù)由RXD端輸SM2=0或收到的停止位=1,方式1時,停止位?入,接收11位信息。當位檢測邏輯采樣到RXD已進入RB8,,則收到的數(shù)據(jù)裝入SBUF和RB8引腳從1到0的負跳變,并判斷起始位有效后,便,RB8裝入停止位,,且置“1”中斷標志RI。開始接收一幀信息。在接收器完第9位數(shù)據(jù)后,需若這兩個條件不同時滿足,收到的數(shù)據(jù)不能裝入滿足以下兩個條件,才能將接收到的數(shù)據(jù)送入SBUF,該幀數(shù)據(jù)將丟失。SBUF。,方式2,1,RI=0,意味著接收緩沖器為空。2,SM2=0或接收到的第9位數(shù)據(jù)位RB8=1時。9位異步通信接口。每幀數(shù)據(jù)均為11位,1位起,始位0,8位數(shù)據(jù)位,先低位,,1位可程控的第9當上述兩個條件滿足時,接收到的數(shù)據(jù)送入SBUF位數(shù)據(jù)和1位停止位。幀格式見下圖。,接收緩沖器,,第9位數(shù)據(jù)送入RB8,并置“1”RI。若不滿足這兩個條件,接收的信息將被丟棄。方式2的波特率由下式確定,串行口方式2接收數(shù)據(jù)的時序波形如圖所示。方式2波特率=,2SMOD/64,×fosc1,方式2發(fā)送發(fā)送前,先根據(jù)通訊協(xié)議由軟件設置TB8,例如,,方式3雙機通訊時的奇偶校驗位或多機通訊時的地址/數(shù)當SM0、SM1=11,串行口工作在方式3。方據(jù)的標志位,。式3為波特率可變的9位異步通訊方式,除波特率方式2發(fā)送數(shù)據(jù)波形如圖所示。外,方式3和方式2相同。方式3發(fā)送和接收數(shù)據(jù)的時序波形見方式2的圖。方式3的波特率由下式確定,方式3波特率=,2SMOD/32,×定時器T1的2930單片機知識點周冰溢出率多機通訊工作過程,多機通訊多個MCS-51單片機可利用串行口可進行多機,1,從機串行口編程為方式2或方式3接收,且通訊。要保證主機與所選擇的從機實現(xiàn)可靠地通置“1”SM2和REN位,使從機只處于多機通訊且接訊,必須保證串行口具有識別功能。收地址幀的狀態(tài)。,2,在主機先將從機地址,即準備接收數(shù)據(jù)的從串行口控制寄存器SCON中的SM2位就是滿足這一條件而設置的多機通訊控制位。原理是在串行機,發(fā)送給各從機,接著才傳送數(shù)據(jù)或命令,主機口以方式2,或方式3,接收時,若SM2=1,表示發(fā)出的地址信息的第9位為1,數(shù)據(jù),包括命令,置多機通訊功能位,這時出現(xiàn)兩種可能情況,信息的第9位為0。當主機向各從機發(fā)送地址時,1,接收到的第9位數(shù)據(jù)為1時,數(shù)據(jù)才裝各從機的串行口接收到的第9位信息RB8為1,,入SBUF,并置中斷標志RI=1向CPU發(fā)出中斷請且由于SM2=1,則置“1”中斷標志位RI,各從機8031求,,2,接收到的第9位數(shù)據(jù)為0時,則不產(chǎn)生中響應中斷,執(zhí)行中斷服務程序。在中斷服務子程序斷標志,信息將拋棄。中,判主機送來的地址是否和本機地址相符合,若若SM2=0,則接收的第9位數(shù)據(jù)不論是0還為本機地址,則該從機清“0”SM2位,準備接收主是1,都產(chǎn)生RI=1中斷標志,接收到的數(shù)據(jù)裝入機的數(shù)據(jù)或命令,若地址不相符,則保持SM2=1SBUF中。狀態(tài)。應用上述特性,便可實現(xiàn)MCS-51的多機通訊。3,接著主機發(fā)送數(shù)據(jù)幀,此時各從機串行口接收設多機系統(tǒng)中有一主機和3個8031從機,如下圖。到的RB8=0,只有與前面地址相符合的從機系統(tǒng)主機的RXD與所有從機的TXD端相連,TXD與,即已清“0”SM2位的從機,才能激活中斷標志所有從機的RXD端相連。從機的地址分別為00H、位RI,從而進入中斷服務程序,在中斷服務程序01H和02H。中接收主機的數(shù)據(jù),或命令,,其它的從機因SM2保持為1,又RB8=0不激活中斷標志RI,不能進入中斷,所接收的數(shù)據(jù)丟失不作處理,從而保證主3031單片機知識點周冰機和從機間通訊的正確性。MCS-51單片機擴展存儲器的設計波特率的制定方法概述方式0和方式2的波特率是固定的,方式1和方片內的資源如不滿足需要,需外擴存儲器和I/O功式3波特率可由定時器T1的溢出率來確定。能部件,系統(tǒng)擴展問題,內容主要有,波特率的定義定義,串行口每秒鐘發(fā)送,或接收,的位數(shù)稱為波(1)外部存儲器的擴展,外部存儲器又分為外部程特率。序存儲器和外部數(shù)據(jù)存儲器,對于定時器的不同工作方式,得到的波特率的范(2)I/O接口部件的擴展。圍不一樣,因為,計數(shù)位數(shù)的不同。系統(tǒng)擴展的首要問題:定時器T1產(chǎn)生波特率的計算構造系統(tǒng)總線,然后再往系統(tǒng)總線上“掛”存儲器,1,方式0,波特率固定為時鐘頻率fosc的1/12,芯片或I/O接口芯片,“掛”存儲器芯片就是存儲器且不受SMOD位的值的影響。若fosc=12MHz,波擴展,“掛”I/O接口芯片就是I/O擴展。特率為fosc/12即1Mb/s。MCS-51由于受引腳,2,方式2,波特率與SMOD位的值有關。數(shù)目的限制,數(shù)據(jù)線方式2波特率=,2SMOD/64,×fosc和低8位地址線復用若fosc=12MHz:SMOD=0波特率=187.5kb/s,。為了將它們分離出SMOD=1波特率=375kb/s來,需要外加地址鎖3,串行口工作在方式1或方式3時,常用定時器存器,從而構成與一T1作為波特率發(fā)生器,其波特率為,般CPU相類似的片外波特率=,2SMOD/32,×T1的溢出率三總線,見右圖。實際設定波特率時,T1常設置為方式2定時,自地址鎖存器一般采用74LS373,采用74LS373的動裝初值,這種方式不僅操作方便,也可避免因軟地址總線的擴展電路如下圖。件重裝初值而帶來的定時誤差。T1的溢出率=fosc/12*(256-X)3132單片機知識點周冰擇,“片選”和“單元選擇”。存儲器空間分配除考慮地址線連接外,還討論各存儲器芯片在整個存儲空間中所占據(jù)的地址范圍,常用的存儲器地址分配的方法有兩種,線性選1.以P0口作為低8位地址/數(shù)據(jù)總線。擇法,簡稱線選法,和地址譯碼法,簡稱譯碼法,。2,以P2口的口線作高位地址線。1.線選法3.控制信號線。直接利用系統(tǒng)的高位地址線作為存儲器芯*使用ALE信號作為低8位地址的鎖存控制信號。片,或I/O接口芯片,的片選信號。優(yōu)點,電路簡單,不需要地址譯碼器硬件,體*以PSEN*信號作為擴展程序存儲器的讀選通信積小,成本低。號。缺點,可尋址的器件數(shù)目受到限制,地址空間*以EA*信號作為內外程序存儲器的選擇控制信號。不連續(xù)。*由RD*和WR*信號作為擴展數(shù)據(jù)存儲器和I/O口例某一系統(tǒng),需要外擴8KB的EPROM,2的讀選通、寫選通信號。片2732,,4KB的RAM,2片6116,,這些芯片與盡管MCS-51有4個并行I/O口,共32條口線,MCS-51單片機地址分配有關的地址線連線,電路但由于系統(tǒng)擴展需要,真正作為數(shù)據(jù)I/O使用的,如下圖。就剩下P1口和P3口的部分口線。單片機系統(tǒng)的串行擴展技術優(yōu)點,串行接口器件體積小,與單片機接口時需要的I/O口線很少,僅需3-4根,,提高可靠性。缺點:串行接口器件速度較慢存儲器地址空間分配MCS-51發(fā)出的地址是用來選擇某個存儲器單元進行讀寫,要完成這種功能,必須進行兩種選2732:4KB程序存儲器,有12根地址線A0,3233單片機知識點周冰A11,分別與單片機的P0口及P2.0,P2.3口相連。出只有某一個固定的引腳輸出為低電平,其余的為2732,1,的片選端接A15,P2.7,,2732,2,的高電平。片選端接A14,P2.6,。當要選中某個芯片時,單片機P2口對應的片選信號引腳應為低電平,其它引腳一定要為高電平。74LS138譯碼器真值表6116:2KB數(shù)據(jù)存儲器,需要11根地址線作為輸入輸出G1G2A*G2B*CBAY7*Y6*Y5*Y4*Y3*Y2*Y1*Y0*單元的選擇,而剩下的P2口線,P2.4,P2.7,作為片選線。兩片程序存儲器的地址范圍,2732,1,的地址范圍,7000H,7FFFH;2732,2,的地址范圍:B000H,BFFFH;6116,1,的地址范圍,E800H,EFFFH;(2)74LS139,雙2-4譯碼器,引腳如下圖。6116,2,的地址范圍,D800H,DFFFH。線選法特點,簡單明了,不需另外增加硬件電路。只適于外擴芯片不多,規(guī)模不大的單片機系統(tǒng)。2.譯碼法下面以74LS138為例,介紹如何進行地址分配。最常用的譯碼器芯片,74LS138,3-8譯碼器,例要擴8片8KB的RAM6264,如何通過74LS13874LS139,雙2-4譯碼器,74LS154,4-16譯碼器,。把64KB空間分配給各個芯片,可根據(jù)設計任務的要求,產(chǎn)生片選信號。全譯碼,全部高位地址線都參加譯碼,部分譯碼,僅部分高位地址線參加譯碼。(1)74LS138,3,8譯碼器,當譯碼器的輸入為某一個固定編碼時,其輸采用的是全地址譯碼方式,單片機發(fā)地址碼時,每3334單片機知識點周冰次只能選中一個存儲單元。同類存儲器間不會產(chǎn)生一樣,為繪制印刷電路板時的布線提供了方便。程序存儲器的操作時序地址重疊的問題。1.訪問程序存儲器的控制信號外部地址鎖存器1,ALE常用的地址鎖存器芯片有:74LS373、8282、,,2,PSEN*74LS573等。,3,EA*1.鎖存器74LS373帶有三態(tài)門的8D鎖存器,其引腳其內部結構如下如果指令是從片外EPROM中讀取,ALE用圖。于低8位地址鎖存,PSEN*接外擴EPROM的OE*腳。P0口:分時低8位地址總線和數(shù)據(jù)總線,P2口:高8位地址線。2.操作時序2.鎖存器8282(1)應用系統(tǒng)中無片外RAM功能及內部結構與74LS373完全一樣,只是其引腳的排列與74LS373不同,8282的引腳如右圖。引腳的排列為繪制(2)應用系統(tǒng)中接有片外RAM印刷電路板時的布線提供了方便。3,鎖存器74LS573輸入的D端和輸出的Q端也是依次排在芯片的兩側,與鎖存器82823435單片機知識點周冰由圖(b)可看出,,1,將ALE用作定時脈沖輸出時,執(zhí)行一次MOVX指令就會丟失一個脈沖。,只有在執(zhí)行MOVX指令時的第二個機器周,2各片62128地址分配見下表。期期間,地址總線才由數(shù)據(jù)存儲器使用。各片62128地址分配程序存儲器EPROM的擴展P2.6P2.7譯碼輸出選中芯片地址范圍存儲容量采用只讀存儲器,非易失性。00YO*IC10000H-3FFFH16K,1,掩膜ROM01Y1*IC24000H-7FFFH16K10Y2*IC38000H-BFFFH16K在制造過程中編程。成本較高,因此只適合于大11Y3*IC4C000H-FFFFH16K綜合擴展的硬件接口電路批量生產(chǎn)。例采用線選法擴展2片8KB的RAM和2片8KB,2,可編程ROM,PROM,的EPROM。RAM選6264,EPROM選2764。擴用獨立的編程器寫入。但PROM只能寫入一次,展接口電路見下圖。且不能再修改。,1,各芯片地址空間分配,3,EPROM,2,控制信號及片選信號電信號編程,紫外線擦除的只讀存儲器芯片。,4,E2PROM,EEPROM,電信號編程,電信號擦除的ROM芯片。讀寫操作與RAM幾乎沒有什么差別,只是寫入的速度慢一些。但斷電后能夠保存信息。IC2和IC4占用地址空間為2000H,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論