51單片機(jī)實(shí)驗(yàn)程序_第1頁(yè)
51單片機(jī)實(shí)驗(yàn)程序_第2頁(yè)
51單片機(jī)實(shí)驗(yàn)程序_第3頁(yè)
51單片機(jī)實(shí)驗(yàn)程序_第4頁(yè)
51單片機(jī)實(shí)驗(yàn)程序_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

//定義一個(gè)變量!-用查表方式編寫(xiě)y=x13+x23+x33。(x為0~9的整數(shù))謝謝閱讀#include<reg51.h>voidmain(){intcodea[10]={0,1,8,27,64,125,216,343,512,729};//將0~9對(duì)應(yīng)的每位數(shù)字的三次方的值存入code中,code為程序存儲(chǔ)器,當(dāng)所存的值在0~255或-128~+127之間的話就用char,而現(xiàn)在的值明顯超過(guò)這個(gè)范圍,用int較合適。int的范圍是0~65535或-32768~32767。謝謝閱讀inty,x1,x2,x3;//此處定義根據(jù)習(xí)慣,也可寫(xiě)成charx1,x2,x3但是變量y一定要用int來(lái)定義。精品文檔放心下載x1=2;x2=4;x3=9;//x1,x2,x3三個(gè)的值是自定的,只要是0~9當(dāng)中的數(shù)值皆可,也可重復(fù)。謝謝閱讀y=a[x1]+a[x2]+a[x3];while(1);//單片機(jī)的程序不能停,這步就相當(dāng)于無(wú)限循環(huán)的指令,循環(huán)的內(nèi)容為空白。精品文檔放心下載}//結(jié)果的查詢?cè)贙eilvision軟件內(nèi)部,在仿真界面點(diǎn)擊右下角(一般初始位置是右下角)的watch的框架內(nèi)雙擊“double-clickorF2toadd”文字輸入y后按回車,右側(cè)會(huì)顯示其16進(jìn)制數(shù)值如0x34,鼠標(biāo)右鍵該十六進(jìn)制,選擇第一行的decimal,可查看對(duì)應(yīng)的10進(jìn)制數(shù)。謝謝閱讀1、有10個(gè)8位二進(jìn)制數(shù)據(jù),要求對(duì)這些數(shù)據(jù)進(jìn)行奇偶校驗(yàn),凡是滿足偶校驗(yàn)的數(shù)據(jù)(1的個(gè)數(shù)為偶數(shù))都要存到內(nèi)RAM50H開(kāi)始的數(shù)據(jù)區(qū)中。試編寫(xiě)有關(guān)程序。感謝閱讀#include<reg51.h>voidmain(){inta[10]={0,1,5,20,24,54,64,88,101,105};//將所要處理的值存入RAM中,這些可以根據(jù)精品文檔放心下載個(gè)人隨意設(shè)定,但建議不要超過(guò)0~255的范圍。chari;char*q=0x50; //定義一個(gè)指針*q指向內(nèi)部0x50這個(gè)地址。精品文檔放心下載for(i=9;i>=0;i--)//9~0循環(huán),共十次,也可以用for(i=0;i<10;i++)精品文檔放心下載{ACC=a[i];//將a[i]的值賦給累加器ACC感謝閱讀if(P==0)//PSW0位上的奇偶校驗(yàn)位,如果累加器ACC內(nèi)數(shù)值1的個(gè)數(shù)為偶數(shù)那么感謝閱讀為0,若為奇數(shù),P為1。這里的P是大寫(xiě)的。{*q=a[i];q++;//每賦一個(gè)值,指針挪一個(gè)位置指向下一個(gè)。}}while(1);//同實(shí)驗(yàn)一,程序不能停。}!-3.有10個(gè)8位帶符號(hào)二進(jìn)制數(shù),請(qǐng)將10個(gè)數(shù)按從小到大的順序排列,并存到內(nèi)RAM50H開(kāi)始的單元中。感謝閱讀#include<reg51.h>voidmain(){chardataa[10]={-50,-36,0,-128,1,99,127,89,-89,40};//將所有值存入RAM中,因?yàn)橛胸?fù)數(shù),所以不能用unsignedchar。因?yàn)槭莄har所以假設(shè)的數(shù)值不要超過(guò)-128~+127之外謝謝閱讀定義指針指向0x50unsignedchar*q=0x50;//*qunsignedchari,j;chart; //定義三個(gè)變量,用于循環(huán)及換位。在換位時(shí)有賦值,所t以要用char不能用精品文檔放心下載unsignedchar。for(i=0;i<10;i++)for(j=0;j<10-i;j++)//冒泡法,具體可以參考C語(yǔ)言程序設(shè)計(jì)的書(shū)。精品文檔放心下載{if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}for(i=0;i<10;i++) //將已經(jīng)排好序的數(shù)組存入*q指向的地址。精品文檔放心下載{*q=a[i];q++;}while(1);}1、基本部分:(1)P1口做輸出口,接八只發(fā)光二極管,編寫(xiě)程序,使發(fā)光二極管循環(huán)點(diǎn)亮。感謝閱讀#include<reg51.h>voiddelay(unsignedcharx) //定義延遲函數(shù),用于后面LED燈亮的持續(xù)時(shí)間。謝謝閱讀{unsignedchari,j,k;do{for(i=10;i>0;i--)for(j=100;j>0;j--)for(k=249;k>0;k--);}!-while(--x);}main(){P1=0xfe;//11111110第一個(gè)燈亮while(1){delay(1);//延時(shí)500msP1=P1<<1|1;//P1左移一個(gè)位即11111101具體crol跟<<的區(qū)別與具體細(xì)節(jié)可聯(lián)系我與你講解謝謝閱讀if(P1==0XFF){P1=0XFE;}}}(2)P1.0、P1.1作輸入口接兩個(gè)撥動(dòng)開(kāi)關(guān),P1.2、P1.3作輸出口,接兩個(gè)發(fā)光二極管,編寫(xiě)程序讀取開(kāi)關(guān)狀態(tài),將此狀態(tài),在發(fā)光二極管上顯示出來(lái)。編程時(shí)應(yīng)注意P1.0、P1.1作為輸入口時(shí)應(yīng)先置1,才能正確讀入值。謝謝閱讀#include<reg51.h>sbitp1_0=P1^0;sbitp1_1=P1^1;sbitp1_2=P1^2;sbitp1_3=P1^3;//程序不能對(duì)單個(gè)引腳進(jìn)行編程,需要用sbit定義才可用。感謝閱讀main(){p1_0=1;p1_1=1;p1_2=1;p1_3=1;//前兩個(gè)引腳置一是為了讓其能獲取輸入信號(hào)后,兩個(gè)感謝閱讀引腳是賦初值,方便后面取反工作。while(1){if(!p1_0)//判斷P1.0的引腳是否有變化。感謝閱讀{p1_2=!p1_2; //如果P1.0引腳變化,P1.2引腳也跟隨變化。精品文檔放心下載}if(!p1_1)//判斷P1.1的引腳是否有變化。感謝閱讀{p1_3=!p1_3;//如果P1.1引腳變化,P1.3引腳也跟隨變化。感謝閱讀}}}!-2、擴(kuò)展部分:(1)利用P1口控制發(fā)光二極管LED燈按照下面方式工作:感謝閱讀LED燈從左到右依次點(diǎn)亮;LED燈從右到左依次點(diǎn)亮;按照以上步驟重復(fù)運(yùn)行,其中要求燈亮的時(shí)間為500ms。精品文檔放心下載#include<reg51.h>voiddelay(unsignedcharx)感謝閱讀{unsignedchari,j,k;do{for(i=10;i>0;i--)for(j=100;j>0;j--)for(k=249;k>0;k--);}while(--x);}main(){while(1) //無(wú)限循環(huán)里面的內(nèi)容{P1=0XFE;//右移完畢后賦初值,為左移做準(zhǔn)備delay(1);while(1){P1=P1<<1;//如果左移右移是單個(gè)燈移動(dòng)的話,那么這句改為L(zhǎng)ED=LED<<1|1;謝謝閱讀就可以了。delay(1);if(P1==0x00)//判斷左移是否完畢,完畢break跳出此次的whilebreak;精品文檔放心下載}P1=0x7f; //左移完畢后給P1賦初值,準(zhǔn)備右移精品文檔放心下載delay(1);while(1){P1=P1>>1;//如果左移右移是單個(gè)燈移動(dòng)的話,那么這句改為謝謝閱讀LED=LED>>1|0x80;就可以了。delay(1);if(P1==0x00)//判斷右移是否完畢,完畢后break跳出謝謝閱讀break;}}}!-(2)利用P1口控制發(fā)光二極管LED燈按照下面方式工作:a)從左到右奇數(shù)LED燈依次點(diǎn)亮;b)從右到左偶數(shù)LED燈依次點(diǎn)亮;精品文檔放心下載c)按照以上步驟重復(fù)運(yùn)行,其中要求燈亮的時(shí)間為500ms。謝謝閱讀#include<reg51.h>//此程序也可以用<<和>>來(lái)實(shí)現(xiàn),具體細(xì)節(jié)可以來(lái)問(wèn)我#include<intrins.h>//當(dāng)程序中有涉及到_crol_或者_(dá)nop_等庫(kù)函數(shù)時(shí),必須添謝謝閱讀加此頭文件。voiddelay(unsignedcharx)感謝閱讀{unsignedchari,j,k;do{for(i=10;i>0;i--)for(j=100;j>0;j--)for(k=249;k>0;k--);}while(--x);}main(){while(1)

//無(wú)限循環(huán)括號(hào)里的內(nèi)容{P1=0xfe;

//第一個(gè)燈亮,while(1){delay(1);P1=_crol_(P1,2); //P1左移兩個(gè)位置精品文檔放心下載if(P1==0xfe) //判斷左移結(jié)束break;}P1=0X7f;while(1){delay(1);P1=_cror_(P1,2); //P1右移兩個(gè)位置謝謝閱讀if(P1==0x7f) //判斷右移結(jié)束break;}}}#include<reg51.h>voiddelay(unsignedcharx)//延時(shí)函數(shù)500ms謝謝閱讀!-{unsignedchari,j,k;do{for(i=10;i>0;i--)for(j=100;j>0;j--)for(k=249;k>0;k--);}while(--x);}main(){while(1) //無(wú)限循環(huán)括號(hào)里的內(nèi)容{P1=0xfe;//賦值,為左移做準(zhǔn)備delay(1);while(1){P1=(P1<<1)|0x01;//P1左移一個(gè)位置,補(bǔ)位補(bǔ)的是1。此處不明白感謝閱讀可以找我。P1=P1<<1; //P1左移一個(gè)位置,補(bǔ)位補(bǔ)的是0。感謝閱讀delay(1);if(P1==0xaa)//左移結(jié)束,跳出循環(huán)break;}P1=0X7f; //P1賦值,為右移做準(zhǔn)備delay(1);while(1){P1=(P1>>1)|0x80; //P1右移一個(gè)位,補(bǔ)位補(bǔ)的是1,同樣的,不謝謝閱讀明白來(lái)找我P1=P1>>1; //P1右移一個(gè)位delay(1);if(P1==0x55) //判斷右移是否完畢,退出此次循環(huán)。感謝閱讀break;}}}!-本實(shí)驗(yàn)?zāi)M交通信號(hào)燈控制,一般情況下正常顯示,有急救車到達(dá)時(shí),兩個(gè)方向交通信號(hào)燈全紅,以便讓急救車通過(guò)。設(shè)急救車通過(guò)路口時(shí)間為5秒,急救車通過(guò)后,交通恢復(fù)正常,本實(shí)驗(yàn)用單次脈沖申請(qǐng)外部中斷,表示有急救車通過(guò)。謝謝閱讀#include<reg51.h>unsignedcharx,y,i,j,k; //設(shè)置感謝閱讀unsignedchard0,d1,d2,d3; //定義四個(gè)變量用于記錄中斷時(shí)的現(xiàn)場(chǎng),以便恢謝謝閱讀復(fù)現(xiàn)場(chǎng)。voiddelay(x)//延時(shí)函數(shù){do{for(i=10;i>0;i--)for(j=100;j>0;j--)for(k=249;k>0;k--);}while(--x);}zd()interrupt0//定義中斷函數(shù),無(wú)需聲明。interrupt0表示外部中斷0的中斷函數(shù)感謝閱讀{y=P1;d0=x;d1=i;d2=j;d3=k; //記錄中斷時(shí)P1的值,延時(shí)函數(shù)的x,i,j,k也要記錄。精品文檔放心下載P1=0xf6; //P1應(yīng)為東西紅南北紅,所以設(shè)為F6。謝謝閱讀delay(5);x=d0;i=d1;j=d2;k=d3;P1=y; //現(xiàn)場(chǎng)恢復(fù),包括延時(shí)函數(shù)中的x,i,j,k。精品文檔放心下載}main(){P1=0xf6; //P1設(shè)定初始狀態(tài),兩路皆為紅燈,此步驟可以忽略。感謝閱讀delay(1);EA=1; //開(kāi)總中斷EX0=1;//開(kāi)外部中斷0中斷。IT0=1;//設(shè)置外部中斷0為下降沿觸發(fā)有效方式。IT0=0為低電平有效while(1)//下列四種燈亮的狀態(tài)循環(huán)。謝謝閱讀{P1=0xf3;//東西綠,南北紅delay(10);!-P1=0xf5; //東西黃,南北紅delay(3);P1=0xde;//東西紅,南北綠delay(10);P1=0xee; //東西紅,南北黃delay(3);}}1、基本部分:用CPU內(nèi)部定時(shí)器中斷方式計(jì)時(shí),實(shí)現(xiàn)每一秒鐘輸出狀態(tài)發(fā)生一次反轉(zhuǎn).感謝閱讀#include<reg51.h>sbitp1_0=P1^0; //要使用單個(gè)引腳應(yīng)先定義感謝閱讀unsignedchari;voidmain(){TMOD=0X01;//t0工作在定時(shí)器,工作方式1精品文檔放心下載TL0=0XB0;TH0=0X3C;//設(shè)定定時(shí)器初值,初值的計(jì)算可查看書(shū)本P143,此處定時(shí)器定時(shí)時(shí)間為100ms精品文檔放心下載IE=0X82;//開(kāi)EA總中斷,開(kāi)t0中斷精品文檔放心下載TR0=1; //定時(shí)器工作開(kāi)關(guān)開(kāi)啟i=10; //設(shè)定i作為后面定時(shí)一秒的使用while(1);}t_0()interrupt1//T0定時(shí)/計(jì)數(shù)器的中斷精品文檔放心下載{i--; //進(jìn)入一次中斷,i的值減一if(i==0)//當(dāng)進(jìn)入10次中斷,即i=0的時(shí)候,定時(shí)時(shí)間為1S。精品文檔放心下載{i=10; //重新讓i=10,使得后面繼續(xù)定時(shí)1S。精品文檔放心下載p1_0=~p1_0; //P1.0取反。}TL0=0XB0;TH0=0X3C;//賦定時(shí)初值,定時(shí)器或計(jì)數(shù)器必要步驟,除工作方式2外。謝謝閱讀}!-2、擴(kuò)展部分:利用P1口控制發(fā)光二極管LED燈按照下面方式工作:精品文檔放心下載1)從左到右奇數(shù)LED燈依次點(diǎn)亮;2)從右到左偶數(shù)LED燈依次點(diǎn)亮;3)按照以上步驟重復(fù)運(yùn)行,其中要求燈亮的時(shí)間為500ms,由定時(shí)器T1實(shí)現(xiàn)。精品文檔放心下載#include<reg51.h>#include<intrins.h>unsignedchari,j,k;voidmain(){TMOD=0X10;//設(shè)定T1工作在定時(shí)器T1,方式1。同時(shí)也會(huì)設(shè)定T0工作在定時(shí)器T0,方式0,但是我們后面沒(méi)有interrupt1的子函數(shù),所以T0沒(méi)發(fā)揮作用。感謝閱讀IE=0X88; //開(kāi)總中斷,開(kāi)T1中斷TL1=0XB0;TH1=0X3C;//定時(shí)器初值,時(shí)間為100msTR1=1; //開(kāi)定時(shí)器T1的開(kāi)關(guān)i=5;j=0;k=0; //用三個(gè)變量來(lái)判斷時(shí)長(zhǎng),循環(huán)階段。P1=0xfe;//賦P1初值,第一個(gè)燈亮while(1);//等待定時(shí)工作完成}t_1()interrupt3//T1的中斷子函數(shù)感謝閱讀{i--; //進(jìn)入一次,i就減1TL1=0xB0;TH1=0x3C;//每次進(jìn)入中斷定時(shí)器的初值就為0,所以需要重裝if(i==0)//500ms后謝謝閱讀{i=5; //讓i=5,繼續(xù)定時(shí)500ms。j++; //j一開(kāi)始為0,j加一if(j==4)//如果j等于4,代表P1口左移了四次謝謝閱讀{j=0;k=!k;//k取反,用于后面左移右移的執(zhí)行}if(k==0) //P1口左移{if(P1==0xfd)//左移到頭了,要右移需要把燈亮的位置變化下謝謝閱讀{P1=0xbf;}P1=_crol_(P1,2);}!-if(k!=0)//P1口右移{if(P1==0xbf)//右移到頭了,要右移需要把燈亮的位置變化下精品文檔放心下載{P1=0xfd;}P1=_cror_(P1,2);}}}#include<reg51.h>unsignedchari,j;voidmain(){i=5;j=0;P1=0xfe;//只亮第一個(gè)燈TMOD=0X10;//設(shè)置T1的工作方式為1,定時(shí)器工作謝謝閱讀IE=0X88; //中斷EA開(kāi),ET1開(kāi)TL1=0XB0;TH1=0X3C;//初值設(shè)定為100msTR1=1; //開(kāi)啟工作開(kāi)關(guān)while(1); //等待定時(shí)工作完成}t_1()interrupt3 //T1中斷子函數(shù)感謝閱讀{i--;TL1=0XB0;TH1=0X3C; //賦初值if(i==0)//時(shí)間為500ms{i=5;j++; //利用j來(lái)判斷左移或右移是否結(jié)束if(j<4){P1=P1<<1|0x01;P1=P1<<1|0x01;//P1口左移兩位,且補(bǔ)位是補(bǔ)1。也可以用P1=P1<<2|0X03感謝閱讀代替}if(j==4)//左移結(jié)束,賦P1值準(zhǔn)備右移{P1=0x7f;}!-if(j>4) //右移階段{P1=P1>>1|0X80;P1=P1>>1|0X80;//P1口右移兩位,且補(bǔ)位是補(bǔ)1。也可以用P1=P1>>2|0XC0謝謝閱讀代替}if(j==8)//右移結(jié)束,賦P1值準(zhǔn)備左移{P1=0xfe;j=0; //最后還要將J恢復(fù)為0以便下次循環(huán)。精品文檔放心下載}}}1、基本部分:8031內(nèi)部定時(shí)計(jì)數(shù)器T0,按計(jì)數(shù)器模式和方式1工作,對(duì)P3.4(T0)引腳進(jìn)行計(jì)數(shù)。謝謝閱讀將其數(shù)值按二進(jìn)制數(shù)在P1口驅(qū)動(dòng)LED燈上顯示出來(lái)。感謝閱讀#include<reg51.h>voidmain(){TMOD=0X05;//T0工作方式1,計(jì)數(shù)器工作精品文檔放心下載TL0=0X00;TH0=0Xff;//初值設(shè)置方法可以參考P143頁(yè)感謝閱讀IE=0X82;//中斷EA=1,ET0中斷開(kāi)啟精品文檔放心下載TR0=1; //開(kāi)啟中斷開(kāi)關(guān)while(1){P1=~TL0;//計(jì)數(shù)器的值存在TL0里面。每加一個(gè)值,所得的值就是以八位二進(jìn)制形式存在TL0里面的。感謝閱讀}}t_0()interrupt1//T0的計(jì)數(shù)器中斷精品文檔放心下載{TL0=0X00;TH0=0Xff;}2、擴(kuò)展部分:利用T0作為定時(shí)器,T1作為計(jì)數(shù)器,將試驗(yàn)箱上的脈沖信號(hào)源接到T1引腳,測(cè)量出脈沖信號(hào)源的頻率。謝謝閱讀#include<reg51.h>unsignedchari,a;voidmain(){!-a=0;i=10;TMOD=0X51;//設(shè)置T0為工作方式1,定時(shí)器工作。T1為工作方式1,計(jì)數(shù)器工作感謝閱讀EA=1;ET0=1;ET1=0;//這里也可以設(shè)置為IE=0x82。關(guān)閉了T1的中斷感謝閱讀TL0=0XB0;TH0=0X3C;//時(shí)間設(shè)定為100msTL1=0X00;TH1=0X00;//計(jì)數(shù)器開(kāi)啟最大范圍計(jì)數(shù)TR0=1;TR1=1; //皆開(kāi)啟開(kāi)關(guān)while(1)//等待計(jì)數(shù)定時(shí)工作完成{if(TF1==1)//查詢溢出標(biāo)志位。{a++; //溢出一次a的值加1TF1=0; //將溢出標(biāo)志位清零TH1=0x00;TL1=0X00;//重新裝上計(jì)數(shù)器初值}}}t_0()interrupt1//定時(shí)器T0的中斷子程序感謝閱讀{TL0=0XB0;TH0=0X3C;//賦初值i--;if(i==0){i=10;P1=TL1;//將低位記錄的次數(shù)賦給P1顯示出來(lái)。謝謝閱讀P2=TH1;//將高位記錄的次數(shù)賦給P2顯示出來(lái),即一秒內(nèi)的計(jì)數(shù)次數(shù),即為頻感謝閱讀率。TR0=0;TR1=0;//頻率讀出后關(guān)閉T0和T1}}//一般情況下,所測(cè)頻率不能超過(guò)500kHz,否則此程序結(jié)果有錯(cuò)。程序頻率計(jì)算為:謝謝閱讀P1和P2的讀數(shù)轉(zhuǎn)為十進(jìn)制數(shù)字,加上(a*65536)得出頻率總和。謝謝閱讀1、基本部分:利用74ls165讀入撥盤(pán)開(kāi)關(guān)的狀態(tài),利用單片機(jī)串行口將狀態(tài)讀入并通過(guò)P1口輸出到LED,從而實(shí)現(xiàn)撥盤(pán)開(kāi)關(guān)對(duì)LED燈的控制。精品文檔放心下載#include<reg51.h>!-sbitP1_6=P1^6;//實(shí)驗(yàn)箱內(nèi)部已經(jīng)將P1.6引腳與165的S/L引腳相連,也把P3.6與165的CLK引腳相連感謝閱讀void main(){SM0=0;SM1=0;REN=1; //串行口工作方式0,也可用SCON=0x10感謝閱讀EA=1;ES=1; //開(kāi)總中斷和串行口中斷while(1);}I_0()interrupt4 //串行口中斷子程序精品文檔放心下載{P1_6=0; //讓74LS165將按鍵的狀態(tài)讀入感謝閱讀P1_6=1; //讓74LS165將讀入的8位按鍵碼用串行方式輸出,從低位到高位;謝謝閱讀P2=SBUF;//將SBUF緩沖器里的數(shù)據(jù)讀給P2謝謝閱讀RI=0;//RI要由軟件置0}2、擴(kuò)展部分:利用74ls165讀入撥盤(pán)開(kāi)關(guān)的狀態(tài),利用單片機(jī)P3口將狀態(tài)讀入并通過(guò)P1口輸出到LED,從而實(shí)現(xiàn)撥盤(pán)開(kāi)關(guān)對(duì)LED燈的控制。感謝閱讀#include<reg51.h>sbitp1_6=P1^6;//與165的內(nèi)部S/L相連感謝閱讀sbitp3_6=P3^6;//與165的內(nèi)部CLK相連精品文檔放心下載sbitp1_7=P1^7;//P1.7短路帽扣上時(shí),P1.7與165的QH相連感謝閱讀unsignedchari,x;main(){while(1){p1_6=0;//數(shù)據(jù)移入165芯片p1_6=1;//數(shù)據(jù)從165芯片輸出x=p1_7; //防止第一位丟失for(i=0;i<7;i++){p3_6=0;p3_6=1; //內(nèi)部制造一個(gè)上升沿,從而達(dá)到數(shù)據(jù)傳輸,一個(gè)上升沿一個(gè)數(shù)據(jù)。精品文檔放心下載x=x<<1|p1_7;//每次左移一個(gè)位,空出來(lái)的位補(bǔ)P1_7的值謝謝閱讀}P2=x;//將移位完的X賦給P2,那么P2上顯示的就是按鍵的二進(jìn)制狀態(tài)謝謝閱讀}!-}1、基本部分:利用單片機(jī)串行口,實(shí)現(xiàn)兩個(gè)實(shí)驗(yàn)臺(tái)之間的串行通訊。其中一個(gè)實(shí)驗(yàn)臺(tái)作為發(fā)送方,另一側(cè)為接收方。利用發(fā)送方的撥盤(pán)控制接收方的LED。精品文檔放心下載甲方:#include<reg51.h>voidmain(){SM0=0;SM1=1;SM2=0;//設(shè)定串行口工作方式1,單對(duì)單通信,可用SCON=0X40代替精品文檔放心下載EA=0;ES=0;ET1=0; //關(guān)串行口中斷,關(guān)總中斷,關(guān)定時(shí)/計(jì)數(shù)器T1中斷謝謝閱讀PCON=0; //設(shè)置SMOD=0,波特率不加倍謝謝閱讀TMOD=0X20;//設(shè)置定時(shí)/計(jì)數(shù)器T1為工作方式2,定時(shí)器工作感謝閱讀TH1=0XFE;TL1=0XFE;//賦初值,此處賦值與定時(shí)或計(jì)數(shù)賦初值不同,此處初值用于波特率,可參考P168感謝閱讀TR1=1;//開(kāi)定時(shí)器T1while(1){SBUF=P2;//把P2口接收到的值賦給發(fā)送SBUF,準(zhǔn)備發(fā)送while(TI==0);//等待發(fā)送完畢謝謝閱讀TI=0; //將發(fā)送標(biāo)志位TI置0,此步一定要軟件操作精品文檔放心下載}}乙方:#include<reg51.h>voidmain(){SM0=0;SM1=1;SM2=0;REN=1; //串行口工作方式1,單對(duì)單通信,可用SCON=0x50代替謝謝閱讀EA=0;ET1=0;!-ES=0;//關(guān)所有中

溫馨提示

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

評(píng)論

0/150

提交評(píng)論