版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【實(shí)例1】使用累加器進(jìn)行簡(jiǎn)單加法運(yùn)算: MOV A,#02H ;A←2 ADD A,#06H ;A←A+06H【實(shí)例2】使用B寄存器進(jìn)行簡(jiǎn)單乘法運(yùn)算: MOV A,#02H ;A←2 MOV B,#06H ;B←6 MUL AB ;BA←A*B=6*2【實(shí)例3】通過(guò)設(shè)置RS1,RS0選擇工作寄存器區(qū)1:CLR ;←0 ;←1【實(shí)例4】使用數(shù)據(jù)指針DPTR訪問(wèn)外部數(shù)據(jù)數(shù)據(jù)存儲(chǔ)器:MOVDPTR,#data16 ;DPTR←data16 MOVX A,@DPTR ;A←((DPTR))MOVX @DPTR,A ;(DPTR)←A【實(shí)例5】使用程序計(jì)數(shù)器PC查表:MOVA,#data;A←data MOVC A,@A+DPTR ;PC←(PC)+1,A←((A)+(PC))【實(shí)例6】if語(yǔ)句實(shí)例:voidmain(){ inta,b,c,min; printf("\npleaseinputthreenumber:"); scanf("%d%d%d",&a,&b,&c); if(a<b&&a<c)printf("min=%d\n",a);elseif(b<a&&b<c)printf("min=%d\n",b); elseif(c<a&&c<c)printf("min=%d\n",c); elseprintf("Thereatleasttwonumbersareequal\n");}【實(shí)例7】switch-case語(yǔ)句實(shí)例:voidmain(){ intnum; printf("inputonenumber:"); scanf("%d",&num); switch(num) { case1:printf("num=%d\n",num);break; case2:printf("num=%d\n",num);break; case3:printf("num=%d\n",num);break; case4:printf("num=%d\n",num);break; default:printf("Thenumberisoutoftherange\n",num);}}【實(shí)例8】for語(yǔ)句實(shí)例:voidmain(){ for(inta=10;n>0;a--) printf("%d",a);}【實(shí)例9】while語(yǔ)句實(shí)例:voidmain(){ inti=0;while(i<=10)i++;}【實(shí)例10】do…while語(yǔ)句實(shí)例:voidmain(){ inti=0;do{ i++;}while(i<=10);}【實(shí)例11】語(yǔ)句形式調(diào)用實(shí)例:voidmain(){ inti=0;while(i<=10)i++;……Sum();/*函數(shù)調(diào)用*/}【實(shí)例12】表達(dá)式形式調(diào)用實(shí)例:voidmain(){ inta,b,i=0;while(i<=10)i++;……i=4*Sum(a,b);/*函數(shù)調(diào)用*/}【實(shí)例13】以函數(shù)的參數(shù)形式調(diào)用實(shí)例:voidmain(){ inta,b,c,i=0;while(i<=10)i++;……i=max(c,Sum(a,b));/*函數(shù)調(diào)用*/}【實(shí)例14】函數(shù)的聲明實(shí)例:voidmain(){ intmax(intx,inty);/*函數(shù)的聲明*/inta,b,c,i=0;while(i<=10)i++;……i=max(c,Sum(a,b));/*函數(shù)調(diào)用*/}【實(shí)例15】函數(shù)遞歸調(diào)用的簡(jiǎn)單實(shí)例:voidfun(){ inta=1,result,i;for(i=0;i<10;){i=a+I;result=fun();/*函數(shù)調(diào)用*/}returnresult;}【實(shí)例16】數(shù)組的實(shí)例:voidmain(){ charnum[3][3]={{'','#',''},{'#','','#'},{'','#',''}};/*定義多維數(shù)組*/inti=0,j=0;for(;i<3;i++){for(;j<3;j++)printf(“%c”,num[i][j]);printf(“/n”);}【實(shí)例17】指針的實(shí)例:voidmain(){ inta=3,*p;p=&a;/*將變量a的地址賦值給指針變量p*/printf(“%d,%d”,a,*p);/*輸出二者的數(shù)值進(jìn)行對(duì)比*/}【實(shí)例18】數(shù)組與指針實(shí)例:voidmain(){ inti=3,num[3]={1,2,3},*p;p=num;/*將數(shù)組num[]的地址賦值給指針變量p*/result=max(p,3);/*函數(shù)調(diào)用,計(jì)算數(shù)組的最大值*/}【實(shí)例19】P1口控制直流電動(dòng)機(jī)實(shí)例sfrp1=0x90;sbitp10=p1^0;sbitp11=p1^1;voidmain(){inti,m;intj=100;intk=20;//正快轉(zhuǎn)for(i=0;i<100;i++){P10=1;for(j=0;j<50;j++){m=0;}}P10=0;for(j=0;j<10;j++){m=0}//正慢轉(zhuǎn)for(i=0;i<100;i++){P10=1;for(j=0;j<10;j++){m=0}}p10=0;for(j=0;j<50;j++){m=0}//負(fù)快轉(zhuǎn)for(i=0;i<100;i++){p11=1;for(j=0;j<50;j++){m=0;}}p11=0;for(j=0;j<10;j++){m=0;}//負(fù)慢轉(zhuǎn)for(i=0;i<100;i++){p11=1;for(j=0;j<10;j++){m=0;}}p11=0for(j=0;j<50;j++){m=0;}}【實(shí)例20】用74LS165實(shí)現(xiàn)串口擴(kuò)展并行輸入口(1)函數(shù)聲明管腳定義//庫(kù)函數(shù)聲明,管腳定義#include<reg52.h>sbitLOAD=P1^7;//用P1^7控制SH/管腳(2)串口初始化函數(shù)UART_init()////函數(shù)名稱:UART_init()//功能說(shuō)明:串口初始化,設(shè)定串口工作在方式0//voidUART_init(void){SCON=0x10;//設(shè)串行口方式0,允許接收,啟動(dòng)接收過(guò)程ES=0;//禁止串口中斷}(3)數(shù)據(jù)接收函數(shù)PA()////函數(shù)名稱:PA()//輸入?yún)?shù):無(wú)//輸出參數(shù):返回由并口輸入的數(shù)據(jù)//功能說(shuō)明:接收八位串行數(shù)據(jù)//unsignedcharPA(void){unsignedcharPA_data;LOAD=0;//當(dāng)P1.7輸出低電平,74LS165將并行數(shù)據(jù)裝入寄存器//當(dāng)中LOAD=1;//當(dāng)P1.7輸出高電平,74LS165在時(shí)鐘信號(hào)下進(jìn)行移位UART_init();//74LS165工作在時(shí)鐘控制下的串行移位狀態(tài)while(RI==0);//循環(huán)等待RI=0;PA_data=SBUF;returnPA_data;//返回并行輸入的數(shù)據(jù)}(1)函數(shù)聲明管腳定義//庫(kù)函數(shù)聲明,管腳定義#include<reg52.h>sbita7=ACC^7;sbitsimuseri_CLK=P1^6;//用P1^6模擬串口時(shí)鐘sbitsimuseri_DATA=P1^5;//用P1^5模擬串口數(shù)據(jù)sbitdrive74165_LD=P1^7;//用P1^7控制SH/管腳(2)數(shù)據(jù)輸入函數(shù)in_simuseri()////函數(shù)名稱:in_simuseri()//輸入?yún)?shù):無(wú)//輸出參數(shù):data_buf//功能說(shuō)明:8位同位移位寄存器,將simuseri_DATA串行輸入的數(shù)據(jù)按從低位到//高位//保存到data_buf//unsignedcharin_simuseri(void){unsignedchari;unsignedchardata_buf;i=8;do{ACC=ACC>>1;for(;simuseri_CLK==0;);a7=simuseri_DATA;for(;simuseri_CLK==1;);}while(--i!=0);simuseri_CLK=0;data_buf=ACC;return(data_buf);}(3)數(shù)據(jù)輸出函數(shù)PAs()////函數(shù)名稱:PAs()//輸入?yún)?shù):無(wú)//輸出參數(shù):PAs_buf,返回并行輸入74LS165的數(shù)據(jù)//功能說(shuō)明:直接調(diào)用,即可讀取并行輸入74LS165的數(shù)據(jù),不需要考慮74LS165的//工作原理//unsignedcharPAs(void){unsignedcharPAs_buf;drive74165_LD=0;drive74165_LD=1;PAs_buf=in_simuseri();return(PAs_buf);}【實(shí)例21】用74LS164實(shí)現(xiàn)串口擴(kuò)展并行輸出口單片機(jī)串口驅(qū)動(dòng)74LS164的程序主要包括函數(shù)聲明管腳定義部分、串口初始化函數(shù)以及數(shù)據(jù)發(fā)送函數(shù)。(1)函數(shù)聲明管腳定義//庫(kù)函數(shù)聲明,管腳定義#include<reg52.h>sbitCLR=P1^7;//用P1^7控制CLR(2)串口初始化函數(shù)UART_init()////函數(shù)名稱:UART_init()//功能說(shuō)明:串口初始化,設(shè)定串口工作在方式0//voidUART_init(void){SCON=0x00;//沒(méi)串行口方式0,允許發(fā)送,啟動(dòng)發(fā)送過(guò)程ES=0;//禁止串口中斷}(3)數(shù)據(jù)發(fā)送函數(shù)PA_out()////函數(shù)名稱:PA_out()//輸入?yún)?shù):PA_data,需要從74LS164并行口輸出的數(shù)據(jù)//輸出參數(shù):無(wú)//功能說(shuō)明:發(fā)送八位串行數(shù)據(jù)至并口//voidPA_out(unsignedcharPA_data){CLR=0;//并口輸出清零CLR=1;//開(kāi)始串行移位UART_init();//74LS165工作在時(shí)鐘控制下的串行移位狀態(tài)while(TI==0);//循環(huán)等待TI=0;SBUF=PA_data;}單片機(jī)I/O端口驅(qū)動(dòng)74LS164主要包括函數(shù)聲明管腳定義部分、數(shù)據(jù)輸入函數(shù)以及數(shù)據(jù)輸出函數(shù)。(1)函數(shù)聲明管腳定義//庫(kù)函數(shù)聲明,管腳定義#include<reg52.h>sbitsimuseri_CLK=P1^6;//用P1^6模擬串口時(shí)鐘sbitsimuseri_DATA=P1^5;//用P1^5模擬串口數(shù)據(jù)sbitdrive74164_CLR=P1^7;//用P1^7控制CLRsbita0=ACC^0;(2)數(shù)據(jù)輸入函數(shù)out_simuseri()////函數(shù)名稱:out_simuseri//輸入?yún)?shù):data_buf//輸出參數(shù):無(wú)//功能說(shuō)明:8位同步移位寄存器,將data_buf的數(shù)據(jù)逐位輸出到simuseri_DATA//voidout_simuseri(chardata_buf){chari;i=8;ACC=data_buf;do{simuseri_CLK=0;simuseri_DATA=a0;simuseri_CLK=1;ACC=ACC>>1;}while(--i!=0);simuseri_CLK=0;}(3)數(shù)據(jù)輸出函數(shù)PA_out()////函數(shù)名稱:PA_out//輸入?yún)?shù):Pseri_out,需要輸出的8位數(shù)據(jù)//輸出參數(shù):無(wú)//功能說(shuō)明:將Pseri_out中的數(shù)據(jù)送到74165并行口A-G輸出//voidPA_out(charPseri_out){drive74164_CLR=0;//并口輸出清零drive74164_CLR=1;//開(kāi)始串行移位out_simuseri(Pseri_out);}【實(shí)例22】P0I/O擴(kuò)展并行輸入口I/O口對(duì)應(yīng)的地址為:1111111011111111B=FEFFHCPU操作指令為:#define244_addrxbyte[0XFEFF]unsignedcharI/O_DATA;I/O_DATA=244_addr;【實(shí)例23】P0I/O擴(kuò)展并行輸出口I/O端口對(duì)應(yīng)的地址為:1111110111111111B=FDFFHCPU操作指令為:#define273_addrxbyte[0XFDFF]unsignedcharI/O_DATA;244_addr=I/O_DATA;【實(shí)例24】用8243擴(kuò)展I/O端口#include<reg52.h>sbitContrBit0=P1^0;sbitContrBit1=P1^1;sbitContrBit2=P1^2;sbitContrBit3=P1^3;sbitPROG=P1^4;sbitCS=P1^5;chardriver8243(charsele_P,charsele_M,charout_data){charin_data=0;chardata_buf;PROG=1;//置PROG為高電平//開(kāi)始寫(xiě)控制字ContrBit0=0;elseContrBit0=1;ContrBit1=0;elseContrBit1=1;//以上兩位共同指定端口地址//寫(xiě)端口工作模式控制字ContrBit2=0;elseContrBit2=1;ContrBit3=0;elseContrBit3=1;//完成寫(xiě)控制字PROG=0;//在PROG上產(chǎn)生下降沿switch(sele_M&0x03)//判斷工作模式{case0:break;//sele_M=B00為輸入,不處理,等待上升沿case1:data_buf=out_data;break;//sele_M=B01為輸出,直接送數(shù)據(jù)case2:data_buf=out_data;break;//sele_M=B10為邏輯或,直接送數(shù)據(jù)case3:data_buf=out_data;break;//sele_M=B11為邏輯與,直接送數(shù)據(jù)}PROG=1;//產(chǎn)生上升沿if((sele_M&0x03)==0) //sele_M=B00為輸入,接收數(shù)據(jù)in_data=(data_buf&0x0F);return(in_data);//sele_M=B00,返回接收到的數(shù)據(jù)}//sele_M!=B00,返回0voidmain(void){charreceive_data;receive_data=driver8243(1,0,5);}【實(shí)例25】用8255A擴(kuò)展I/O口////函數(shù)名稱:rd_PA//輸入函數(shù):無(wú)//輸出參數(shù):PA_data,PA輸入的數(shù)據(jù)//功能說(shuō)明:驅(qū)動(dòng)PA實(shí)現(xiàn)輸入功能,讀入PA的并行數(shù)據(jù)//unsignedcharrd_PA(void) //讀PA管腳定義及函數(shù)聲明//函數(shù)聲明,管腳定義#include<reg52.h>#include<ABSACC.H>#definea8255_PAXBYTE[0x7F7C#definea8255_PBXBYTE[0x7F7D]//PB地址#definea8255_PCXBYTE[0x7F7E]//PC地址#definea8255_CONXBYTE[0x7F7FunsignedcharbdataIO_flags;//用于表示PA、PB、PC的當(dāng)前輸入輸出狀態(tài)//內(nèi)容不能被其他程序改寫(xiě)sbitIO_flagsA=IO_flags^0;//PA的當(dāng)前輸入輸出狀態(tài)sbitIO_flagsB=IO_flags^1;//PB的當(dāng)前輸入輸出狀態(tài)sbitIO_flagsC=IO_flags^2;//PC的當(dāng)前輸入輸出狀態(tài)unsignedcharconstcfg_table[8]={0x80,//10000000b,c=outb=outa=out0x90,//10010000b,c=outb=outa=in0x82,//10000010b,c=outb=ina=out0x92,//10010010b,c=outb=ina=in0x89,//10001001b,c=inb=outa=out0x99,//10011001b,c=inb=outa=in0x8B,//10001011b,c=inb=ina=out0x9B,//10011011b,c=inb=ina=in}unsignedcharrd_PA(void);//讀PAunsignedcharrd_PB(void);//讀PBunsignedcharrd_PC(void);//讀PCvoidwr_PA(unsignedcharPA_data);//寫(xiě)PAvoidwr_PB(unsignedcharPB_data);//寫(xiě)PBvoidwr_PC(unsignedcharPC_data);//寫(xiě)PCvoidset_PC(unsignedcharPC_num);//PC位操作,置位,PC_num為端口號(hào)0~7voidclr_PC(unsignedcharPC_num);//PC位操作,復(fù)位,PC_num為端口號(hào)0~7voidPABC_config(void);//寫(xiě)8255A控制字端口A、B、C讀寫(xiě)函數(shù){unsignedcharPA_data;ACC=IO_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作do{IO_flagsA=1;//置PA狀態(tài)標(biāo)志位為高--輸入IO_flags=ACC;PABC_config();//調(diào)用配置子程序,完成對(duì)8255的設(shè)置ACC=IO_flags;}while(IO_flagsA==0);//判斷狀態(tài)標(biāo)志位是否為高//控制字設(shè)置完成PA_data=a8255_PA;//把PA的數(shù)據(jù)讀到PA_datareturn(PA_data);//返回PA_data}////函數(shù)名稱:rd_PB//輸入函數(shù):無(wú)//輸出參數(shù):PB_data,PB輸入的數(shù)據(jù)//功能說(shuō)明:驅(qū)動(dòng)PB實(shí)現(xiàn)輸入功能,讀入PB的并行數(shù)據(jù)//unsignedcharrd_PB(void) //讀PB{unsignedcharPB_data;ACC=IO_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作do{IO_flagsB=1;//置PB狀態(tài)標(biāo)志位為高--輸入IO_flags=ACC;PABC_config();//調(diào)用配置子程序,完成對(duì)8255的設(shè)置}while(IO_flagsB==0);//判斷狀態(tài)標(biāo)志位是否為高//控制字設(shè)置完成PB_data=a8255_PB;//把PB的數(shù)據(jù)讀到PB_datareturn(PB_data);//返回PB_data}////函數(shù)名稱:rd_PC//輸入函數(shù):無(wú)//輸出參數(shù):PC_data,PC輸入的數(shù)據(jù)//功能說(shuō)明:驅(qū)動(dòng)PC實(shí)現(xiàn)輸入功能,讀入PC的并行數(shù)據(jù)//unsignedcharrd_PC(void) //讀PC{unsignedcharPC_data;ACC=IO_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作do{IO_flagsC=1;//置PC狀態(tài)標(biāo)志位為高--輸入IO_flags=ACC;PABC_config();//調(diào)用配置子程序,完成對(duì)8255的設(shè)置//ACC=IO_flags;}while(IO_flagsC==0);//判斷狀態(tài)標(biāo)志位是否為高//控制字設(shè)置完成PC_data=a8255_PC;//把PC的數(shù)據(jù)讀到PC_datareturn(PC_data);//返回PC_data}////函數(shù)名稱:wr_PA//輸入函數(shù):PA_data,送PA輸出的數(shù)據(jù)//輸出參數(shù):無(wú)//功能說(shuō)明:驅(qū)動(dòng)PA實(shí)現(xiàn)輸出功能,輸出數(shù)據(jù)到PA//voidwr_PA(unsignedcharPA_data) //寫(xiě)PA{ACC=IO_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作{IO_flagsA=0;//置PA狀態(tài)標(biāo)志位為低--輸出IO_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字PABC_config();//調(diào)用配置子程序,完成對(duì)8255的設(shè)置ACC=IO_flags;}while(IO_flagsA==1);//判斷狀態(tài)標(biāo)志位是否為高,//為高,設(shè)置未完成,需從新設(shè)置a8255_PA=PA_data;//將PA_data的內(nèi)容送到PA}////函數(shù)名稱:wr_PB//輸入函數(shù):PB_data,送PB輸出的數(shù)據(jù)//輸出參數(shù):無(wú)//功能說(shuō)明:驅(qū)動(dòng)PB實(shí)現(xiàn)輸出功能,輸出數(shù)據(jù)到PA//voidwr_PB(unsignedcharPB_data) //寫(xiě)PB{ACC=IO_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作{IO_flagsB=0;//置PB狀態(tài)標(biāo)志位為低--輸出IO_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字PABC_config();//調(diào)用配置子程序,完成對(duì)8255的設(shè)置ACC=IO_flags;}while(IO_flagsB==1);//判斷狀態(tài)標(biāo)志位是否為高,為高,設(shè)置未完成,//需從新設(shè)置a8255_PB=PB_data;//將PB_data的內(nèi)容送到PB}////函數(shù)名稱:wr_PC//輸入函數(shù):PC_data,送PC輸出的數(shù)據(jù)//輸出參數(shù):無(wú)//功能說(shuō)明:驅(qū)動(dòng)PC實(shí)現(xiàn)輸出功能,輸出數(shù)據(jù)到PC//voidwr_PC(unsignedcharPC_data) //寫(xiě)PC{ACC=IO_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作{IO_flagsC=0;//置PC狀態(tài)標(biāo)志位為低--輸出IO_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字PABC_config();//調(diào)用配置子程序,完成對(duì)8255的設(shè)置ACC=IO_flags;}while(IO_flagsC==1);//判斷狀態(tài)標(biāo)志位是否為高,//為高,設(shè)置未完成,需從新設(shè)置a8255_PC=PC_data;//將PC_data的內(nèi)容送到PC}端口C配置函數(shù)////函數(shù)名稱:set_PC//輸入函數(shù):PC_num,范圍0~7//輸出參數(shù):無(wú)//功能說(shuō)明:對(duì)PC進(jìn)行位操作,置PC(PC_num)為高//voidset_PC(unsignedcharPC_num){ACC=IO_flags;IO_flagsC=0;ACC=IO_flags;PC_num=PC_num<<1;PC_num=(PC_num|0x01);a8255_CON=PC_num;}////函數(shù)名稱:clr_PC//輸入函數(shù):PC_num,范圍0~7//輸出參數(shù):無(wú)//功能說(shuō)明:對(duì)PC進(jìn)行位操作,清PC(PC_num)為低//voidclr_PC(unsignedcharPC_num){ACC=IO_flags;IO_flagsC=1;ACC=IO_flags;PC_num=PC_num<<1;PC_num=(PC_num&0xFE);a8255_CON=PC_num;}寫(xiě)控制字函數(shù)////函數(shù)名稱:PABC_config//功能說(shuō)明:寫(xiě)8255A的控制字寄存器//voidPABC_config(void){a8255_CON=cfg_table[IO_flags];}【實(shí)例26】用8155擴(kuò)展I/O口相關(guān)函數(shù)聲明及管腳定義//函數(shù)聲明,管腳定義*/#include<reg52.h>#include<ABSACC.H>#definea8155_PAXBYTE[0x7E00]//控制字地址#definea8155_PBXBYTE[0x7E01]//PA地址#definea8155_PCXBYTE[0x7E02]//PB地址#definea8155_CONXBYTE[0x7E03]//PC地址#defineTimer_AXBYTE[0x7E04]//定時(shí)器寄存器A#defineTimer_BXBYTE[0x7E05]//定時(shí)器寄存器B#definemem_headXBYTE[0x7F00]//存儲(chǔ)器首地址unsignedcharbdataIO_flags;//用于表示PA、PB、PC的當(dāng)前輸入輸出狀態(tài)//內(nèi)容不能被其他程序改寫(xiě)sbitIO_flagA=IO_flags^0;//PA的當(dāng)前輸入輸出狀態(tài)sbitIO_flagB=IO_flags^1;//PB的當(dāng)前輸入輸出狀態(tài)sbitIO_flagC=IO_flags^2;//PC的當(dāng)前輸入輸出狀態(tài)sbitIO_flagC1=IO_flags^3;//PC的當(dāng)前輸入輸出狀態(tài)sbitInt_flagA=state_flags^4;//PA的當(dāng)前輸入輸出狀態(tài)sbitInt_flagB=state_flags^5;//PB的當(dāng)前輸入輸出狀態(tài)sbitTimer_flag1=state_flags^6;sbitTimer_flag2=state_flags^7;//Timer的狀態(tài)置位表示計(jì)數(shù)中unsignedcharrd_mem(unsignedcharmem_ad);//讀存儲(chǔ)器voidwr_mem(unsignedcharmem_ad,unsignedcharmem_data);//寫(xiě)存儲(chǔ)器charrd_PA(void);//讀PAcharrd_PB(void);//讀PBcharrd_PC(void);//讀PCvoidwr_PA(unsignedcharPA_data);//寫(xiě)PAvoidwr_PB(unsignedcharPB_data);//寫(xiě)PBvoidwr_PC(unsignedcharPC_data);//寫(xiě)PCvoidDint_PA(void);//關(guān)端口A中斷voidEint_PA(void);//開(kāi)端口A中斷voidDint_PB(void);//關(guān)端口B中斷voidEint_PB(void);//開(kāi)端口B中斷voidsetting_PC0int(void);voidsetting_PC4int(void);voidstart_timer(void);//開(kāi)始計(jì)數(shù)器計(jì)數(shù)voidstop_timer(void);//停止計(jì)數(shù)器計(jì)數(shù)voidsetting_zero_stop(void);//設(shè)定計(jì)數(shù)到零停止計(jì)數(shù)intrd_timer(void);//讀計(jì)數(shù)值voidsetting_timerout_mode(unsignedcharmode);//設(shè)定輸出模式讀寫(xiě)外RAM函數(shù)讀寫(xiě)外RAM函數(shù)對(duì)外部存儲(chǔ)器指定單元數(shù)據(jù)進(jìn)行讀寫(xiě),程序代碼如下:////函數(shù)名稱:rd_mem//輸入函數(shù):mem_ad,范圍0~255//輸出參數(shù):mem_data,存儲(chǔ)對(duì)應(yīng)數(shù)據(jù)//功能說(shuō)明:讀外部RAM,輸入相對(duì)地址,返回?cái)?shù)據(jù)//unsignedcharrd_mem(unsignedcharmem_ad)//讀存儲(chǔ)器{unsignedcharmem_data;unsignedintAD_mem;AD_mem=&mem_head;AD_mem=AD_mem+mem_ad;mem_data=XBYTE[AD_mem];return(mem_data);}////函數(shù)名稱:wr_mem//輸入函數(shù):mem_ad,mem_data相對(duì)地址和數(shù)據(jù)//輸出參數(shù):無(wú)//功能說(shuō)明:寫(xiě)數(shù)據(jù)到外部RAM,把數(shù)據(jù)寫(xiě)到相應(yīng)的地址//voidwr_mem(unsignedcharmem_ad,unsignedcharmem_data)//寫(xiě)存儲(chǔ)器{unsignedintAD_mem;AD_mem=&mem_head;AD_mem=AD_mem+mem_ad;XBYTE[AD_mem]=mem_data;}端口PA、端口PB以及端口PC的讀寫(xiě)設(shè)置函數(shù)端口PA、端口PB以及端口PC的讀寫(xiě)設(shè)置函數(shù)主要完成對(duì)8155端口的輸入輸出設(shè)置及數(shù)據(jù)讀寫(xiě),程序代碼如下:////函數(shù)名稱:rd_PA//輸入函數(shù):無(wú)//輸出參數(shù):PA_data//功能說(shuō)明:返回PA數(shù)據(jù)//charrd_PA(void)//讀PA{unsignedcharPA_data;ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作do{IO_flagA=0;//置PA狀態(tài)標(biāo)志位為低--輸入state_flags=ACC;a8155_CON=state_flags;//重寫(xiě)控制字,完成對(duì)8155的設(shè)置}while(IO_flagA==1);//判斷狀態(tài)標(biāo)志位是否為高//控制字設(shè)置完成PA_data=a8155_PA;//把PA的數(shù)據(jù)讀到PA_datareturn(PA_data);//返回PA_data}////讀PB、PC的函數(shù):rd_PB和rd_PC程序代碼與rd_PA類似,不再贅述////函數(shù)名稱:wr_PA//輸入函數(shù):PA_data//輸出參數(shù):無(wú)//功能說(shuō)明:把PA_data送到PA輸出//voidwr_PA(unsignedcharPA_data)//寫(xiě)PA{ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作{IO_flagA=1;//置PA狀態(tài)標(biāo)志位為高--輸出state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}while(IO_flagA==0);//判斷狀態(tài)標(biāo)志位是否為低//為低,設(shè)置未完成,需從新設(shè)置a8155_PA=PA_data;//將PA_data的內(nèi)容送到PA}////寫(xiě)PB、PC的函數(shù):wr_PB和wr_PC程序代碼與wr_PA類似,不再贅述//(4)端口PA、端口PB以及端口PC的中斷設(shè)置函數(shù)端口PA、端口PB以及端口PC的中斷設(shè)置函數(shù)完成各個(gè)端口的中斷開(kāi)啟和關(guān)斷,程序代碼如下://函數(shù)名稱:Eint_PA//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:PA中斷允許//voidEint_PA(void)//開(kāi)端口A中斷{ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Int_flagA=1;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}////函數(shù)名稱:Dint_PA//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:PA中斷禁止//voidDint_PA(void)//關(guān)端口A中斷{ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Int_flagA=0;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}////開(kāi)關(guān)PB中斷的函數(shù)Eint_PB、Dint_PB和Eint_PA、Dint_PA程序代碼類似,不再贅述//端口PC上下半口配置函數(shù):端口PC上下半口配置函數(shù)可實(shí)現(xiàn)端口PC上半口配置為PA狀態(tài)輸出和PC下半口配置為PB狀態(tài)輸出。程序代碼如下:////函數(shù)名稱:PC0_PAint//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:設(shè)置PC上半口為PA狀態(tài)輸出,PC0=INTRa,PC1=BFa,PC3=/STBb//voidPC0_PAint(void) //PC上半口為PA狀態(tài)輸出{//PC0=INTRa,PC1=BFa,PC3=ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Int_flagA=1;IO_flagC1=1;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}////函數(shù)名稱:PC4_PBint//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:設(shè)置PC下半口為PB狀態(tài)輸出,PC4=INTRb,PC5=BFb,PC6=//voidPC4_PBint(void) //PC下半口為PB狀態(tài)輸出{//PC0=INTRa,PC1=BFa,PC3=ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Int_flagA=1;IO_flagC1=1;IO_flagC=1;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}計(jì)數(shù)器設(shè)置函數(shù):計(jì)數(shù)器設(shè)置函數(shù)完成計(jì)數(shù)器的起停和讀寫(xiě)和輸出模式設(shè)置,具體程序代碼如下:////函數(shù)名稱:start_timer//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:開(kāi)始計(jì)數(shù)器計(jì)數(shù)//voidstart_timer(void)//開(kāi)始計(jì)數(shù)器計(jì)數(shù){ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Timer_flag1=1;Timer_flag2=1;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}////函數(shù)名稱:stop_timer//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:停止計(jì)數(shù)器計(jì)數(shù)//voidstop_timer(void)//停止計(jì)數(shù)器計(jì)數(shù){ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Timer_flag1=1;Timer_flag2=0;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}////函數(shù)名稱:size_zero_stop//輸入函數(shù):無(wú)//輸出參數(shù):無(wú)//功能說(shuō)明:設(shè)定計(jì)數(shù)到零停止計(jì)數(shù)//voidstop_timer(void)//停止計(jì)數(shù)器計(jì)數(shù){ACC=state_flags;//把狀態(tài)標(biāo)志字讀到ACC便于進(jìn)行位操作Timer_flag1=1;Timer_flag2=0;state_flags=ACC;//位操作完成,把ACC的內(nèi)容寫(xiě)回狀態(tài)標(biāo)志字a8155_CON=state_flags;//寫(xiě)控制字,完成對(duì)8155的設(shè)置}////函數(shù)名稱:rd_timer//輸入函數(shù):無(wú)//輸出參數(shù):time//功能說(shuō)明:讀計(jì)數(shù)值//intrd_timer(void)//讀計(jì)數(shù)值{inttime;chartimea;time=Timer_B;timea=Timer_A;time=time<<8;time=((time&timea)&0x3F);return(time);}////函數(shù)名稱:setting_timerout_mode//輸入函數(shù):mode,范圍0~3//輸出參數(shù):無(wú)//功能說(shuō)明:設(shè)定輸出模式//voidsetting_timerout_mode(unsignedcharmode)//設(shè)定輸出模式{Timer_B=(mode&0x03);//寫(xiě)控制字}【實(shí)例29】與AT24系列EEPROM接口及驅(qū)動(dòng)程序*========對(duì)2402的讀寫(xiě)函數(shù)=================*/#include<reg52.h>#defineDELAY_TIME60///*經(jīng)實(shí)驗(yàn),不要小于50!否則可能造成時(shí)序混亂*/#defineFALSE0#defineTRUE1sbitSCL=P1^2;//I2C信號(hào)線定義sbitSDA=P1^1;//I2C數(shù)據(jù)線定義/*======啟動(dòng)I2C總線的函數(shù),當(dāng)SCL為高電平時(shí)使SDA產(chǎn)生一個(gè)負(fù)跳變=====*/voiddelayus(unsignedintt){while(t!=0)t--;}voidI2C_Start(void){SDA=1;SCL=1;delayus(DELAY_TIME);SDA=0;delayus(DELAY_TIME);SCL=0;delayus(DELAY_TIME);}/*========終止I2C總線,當(dāng)SCL為高電平時(shí)使SDA產(chǎn)生一個(gè)正跳變=========*/voidI2C_Stop(void){SDA=0;SCL=1;delayus(DELAY_TIME);SDA=1;delayus(DELAY_TIME);SCL=0;delayus(DELAY_TIME);}/*=================發(fā)送0,在SCL為高電平時(shí)使SDA信號(hào)為低============*/voidSEND_0(void){SDA=0;SCL=1;delayus(DELAY_TIME);SCL=0;delayus(DELAY_TIME);}/*================發(fā)送1,在SCL為高電平時(shí)使SDA信號(hào)為高=============*/voidSEND_1(void){SDA=1;SCL=1;delayus(DELAY_TIME);SCL=0;delayus(DELAY_TIME);}/*=================發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)==============*/bitCheck_Acknowledge(void){charF0;SDA=1;SCL=1;delayus(DELAY_TIME/2);F0=SDA;delayus(DELAY_TIME/2);SCL=0;delayus(DELAY_TIME);if(F0==1)returnFALSE;returnTRUE;}/*============================向I2C總線寫(xiě)一個(gè)字節(jié)=================*/voidWriteI2CByte(charb){chari;for(i=0;i<8;i++)if((b<<i)&0x80)SEND_1();elseSEND_0();}/*=========================從I2C總線讀一個(gè)字節(jié)====================*/charReadI2CByte(void){charb=0,i,F0;for(i=0;i<8;i++){SDA=1;/*釋放總線*/SCL=1;/*接受數(shù)據(jù)*/delayus(10);F0=SDA;delayus(10);SCL=0;if(F0==1){b=b<<1;b=b|0x01;}elseb=b<<1;}returnb;}/*========================讀寫(xiě)24c02子函數(shù)=========================*//*=========================向2402寫(xiě)一個(gè)字節(jié)=======================*/voidWrite_One_Byte(charaddr,charthedata){bitacktemp=1;I2C_Start();/*總線開(kāi)始*/WriteI2CByte(0xa0);acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/WriteI2CByte(addr);/*向address首地址開(kāi)始寫(xiě)數(shù)據(jù)*/acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/WriteI2CByte(thedata);/*把thedata寫(xiě)進(jìn)去*/acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/I2C_Stop();/*總線停止*/}/*==========================向2402寫(xiě)一個(gè)數(shù)組======================*/voidWrite_A_Page(char*buffer,charm,charaddr){bitacktemp=1;inti;I2C_Start();WriteI2CByte(0xa0);acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/WriteI2CByte(addr);/*address*/acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/for(i=0;i<m;i++){WriteI2CByte(buffer[i]);if(!Check_Acknowledge()){I2C_Stop();}}I2C_Stop();}/*=========================從2402讀一個(gè)字節(jié)=======================*/charRead_One_Byte(charaddr){bitacktemp=1;charmydata;I2C_Start();/*啟動(dòng)I2C總線*/WriteI2CByte(0xa0);/*向I2C總線寫(xiě)一個(gè)字節(jié)*/acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/WriteI2CByte(addr);/*向I2C總線寫(xiě)一個(gè)字節(jié),addr是地址*/acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/I2C_Start();WriteI2CByte(0xa1);acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/mydata=ReadI2CByte();acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/returnmydata;I2C_Stop();/*停止I2C總線*/}/*==========================從2402讀一個(gè)數(shù)組======================*/voidRead_N_Bytes(char*buffer,charn,charaddr){bitacktemp=1;inti=0;I2C_Start();/*啟動(dòng)I2C總線*/WriteI2CByte(0xa0);acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/WriteI2CByte(addr);/*address*/acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/I2C_Start();WriteI2CByte(0xa1);acktemp=Check_Acknowledge();/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/for(i=0;i<n;i++){buffer[i]=ReadI2CByte();if(i!=n-1)SEND_0();/*發(fā)送應(yīng)答*/elseSEND_1();/*發(fā)送非應(yīng)答*/}I2C_Stop();/*停止I2C總線*/}【實(shí)例30】EEPROM(X5045)接口及驅(qū)動(dòng)程序/*==========================復(fù)位看門狗=================================*/voidRESWDI(void){CS=0;CS=1;}/*============================寫(xiě)使能鎖存================================*/voidWREN(void){SCK=0;CS=0;OUTByte(0x06);//發(fā)送06H寫(xiě)使能命令字SCK=0;CS=1;}/*=====================寫(xiě)使能復(fù)位(禁止寫(xiě))==============================*/voidWRDI(void){SCK=0;CS=0;OUTByte(0x04);//發(fā)送04H寫(xiě)禁止命令字SCK=0;CS=1;}/*=======================寫(xiě)狀態(tài)寄存器=================================*/voidWRSR(void){SCK=0;CS=0;OUTByte(0x01);//發(fā)送01H寫(xiě)寄存器命令字OUTByte(0x20);//發(fā)送寄存器值BL0,BL1為0沒(méi)寫(xiě)保護(hù),WD0=0WD1=1看門狗復(fù)位時(shí)間為200msSCK=0;CS=1;WIPCHK();//判斷是否寫(xiě)入}/*=======================讀狀態(tài)寄存器=================================*/unsignedcharRSDR(void){unsignedcharTemp;SCK=0;CS=0;OUTByte(0x05);//發(fā)送05H讀狀態(tài)寄存器命令字Temp=INPUTByte();//讀狀態(tài)寄存器值SCK=0;CS=1;returnTemp;}/*===============檢查WIP位,判斷是否寫(xiě)入完成=======================*/voidWIPCHK(void)//reentrant{unsignedcharTemp,TempCyc;for(TempCyc=0;TempCyc<50;TempCyc++){Temp=RSDR();//讀狀態(tài)寄存器if(Temp&0x01==0)TempCyc=50;}}/*=====================輸出一個(gè)字節(jié)==============================*/voidOUTByte(unsignedcharByte)//{unsignedcharTempCyc;for(TempCyc=0;TempCyc<8;TempCyc++){SCK=0;SI=Byte&0x80;Byte=Byte<<1;//右移SCK=1;}SI=0;//使SI處于確定的狀態(tài)}/*=====================輸入一個(gè)字節(jié)==============================*/unsignedcharINPUTByte(void){unsignedcharTemp=0,TempCyc;for(TempCyc=0;TempCyc<8;TempCyc++){Temp=Temp<<1;//右移SCK=0;if(SO)Temp=Temp|0x01;//SO為1,則最低位為1SCK=1;}returnTemp;}/*=====================讀ADD中的一個(gè)字節(jié)==============================*/unsignedcharReadByte(unsignedcharADD)//讀地址中的數(shù)據(jù)這里不做先導(dǎo)字處理,只能讀00-FFH{unsignedcharTemp;SCK=0;CS=0;OUTByte(0x3);//發(fā)送讀指令03H如要支持000-FFF則要把高位地址左移3位再為03H相或OUTByte(ADD);//發(fā)送低位地址Temp=INPUTByte();SCK=0;CS=1;returnTemp;}/*=====================寫(xiě)ADD中的一個(gè)字節(jié)==============================*/voidWriteByte(unsignedcharByte,ADD)//向地址寫(xiě)入數(shù)據(jù)這里同樣不做先導(dǎo)字處理,只能寫(xiě)00-FFH{SCK=0;CS=0;OUTByte(0x2);//發(fā)送寫(xiě)指令02H如要支持000-FFF則要把高位地址左移2位再為02H相或OUTByte(ADD);//發(fā)送低位地址OUTByte(Byte);//發(fā)送數(shù)據(jù)SCK=0;CS=1;WIPCHK();//判斷是否寫(xiě)入}【實(shí)例31】與鐵電存儲(chǔ)器接口及驅(qū)動(dòng)程序#defineFM18L08_CEB0x04#defineFM1808_WEB0x07#defineFM18L08_OEB0x02#defineP_LCM_CONOUTP1#defineP_ADDRESSLOW_OUTP0#defineP_ADDRESSHIGN_OUTP2while(1)//測(cè)試程序{ADDRESS2=0x01;ADDRESS1=0x00;for(i=0;i<14;i++){save_char(ADDRESS1,ADDRESS2,SAVE_DATA);}//寫(xiě)數(shù)據(jù)包_NOP();ADDRESS2=0x01;ADDRESS1=0x00;for(j=0;j<14;j++){DISP_NUM[0][j]=get_char(ADDRESS1,ADDRESS2);}//讀數(shù)據(jù)包_NOP();}//寫(xiě)數(shù)據(jù)程序voidsave_char(charaddress1,charaddress2,charwbyte){P_LCM_CONOUT|=FM18L08_CEB;//預(yù)充電P_LCM_CONOUT|=FM1808_WEB;//寫(xiě)操作P_ADDRESSLOW_OUT=address1;//低8位地址P_ADDRESSHIGH_OUT=address2;//高7位地址P_LCM_CONOUT&=~FM18L08_CEB;//地址鎖定//P_DATA_DIR=0XFF;//DATA—BUS口線改為輸出狀態(tài)P_DATA_OUT=wbyte;//給出數(shù)據(jù)內(nèi)容P_LCM_CONOUT|=FM18L08_CEB;//結(jié)束寫(xiě)操作//P_ADDRESSHIGH_OUT|=FM1808_WEB;//取消寫(xiě)狀態(tài)ADDRESS1++;//地址遞增if(ADDRESS1>0xff){ADDRESS1=0x00;ADDRESS2++;if(ADDRESS2>0x7f){ADDRESS2=0x00;}}//P_DATA_DIR=0XFF;//BUS口線為輸出狀態(tài)P_DATA_OUT=0XFF;//釋放BUS總線}//讀數(shù)據(jù)程序charget_char(charaddress1,charaddress2){charrbyte;P_LCM_CONOUT|=FM1808_WEB;//取消寫(xiě)狀態(tài)P_LCM_CONOUT|=FM18L08_CEB;//預(yù)充電P_ADDRESSLOW_OUT=address1;//低8位地址P_ADDRESSHIGH_OUT=address2;//高7位地址P_LCM_CONOUT&=~FM18L08_CEB;//地址鎖定P_LCM_CONOUT&=~FM18L08_OEB;//讀狀態(tài)P_DATA_DIR=0X00;//DATA—BUS口線改為輸入狀態(tài)rbyte=P_DATA_IN;//讀入數(shù)據(jù)內(nèi)容P_LCM_CONOUT|=FM18L08_CEB;//結(jié)束讀操作P_LCM_CONOUT|=FM18L08_OEB;//取消讀狀態(tài)ADDRESS1++;//地址遞增if(ADDRESS1>0xff){ADDRESS1=0x00;ADDRESS2++;if(ADDRESS2>0x7f){ADDRESS2=0x00;}}//P_DATA_DIR=0XFF;//BUS口線為輸出狀態(tài)P_DATA_OUT=0XFF;//釋放BUS總線returnrbyte;//返回?cái)?shù)據(jù)值}【實(shí)例32】與雙口RAM存儲(chǔ)器接口及應(yīng)用實(shí)例#defineADDR_7132XBYTE[0x100h];sbitbusy=p1^0;unsignedcharDAT;while(!busy)DAT=ADDR_7132;【實(shí)例33】與NANDFLASH(K9F5608)接口及驅(qū)動(dòng)程序sbitNF_RBP2^0;sbitNF_REP2^1;sbitNF_CEP2^2;sbitNF_CLEP2^3;sbitNF_ALEP2^4;sbitNF_WEP2^5;sbitNF_WPP2^6;unsignedcharReadByte(unsignedintblockadd,unsignedcharpageadd);unsignedcharReadSpare(unsignedintblockadd,unsignedcharpageadd);unsignedcharReadStatus(void);unsignedintReadID(void);voidBadBlockScan(void);voidCopyBack(unsignedintblockaddh_s,blockaddh_e);voidEraseBlock(unsignedintblockadd);voidNfAddre(unsignedintblockadd,unsignedcharpageadd);voidNfCommand(unsignedcharCom);voidReadPage(unsignedintblockadd,unsignedcharpageadd);voidReadPageS(unsignedintblockadd,unsignedcharselect,pageadd);voidWirteByte(unsignedintblockadd,unsignedcharpageadd,unsignedcharbuf);voidWirtePage(unsignedintblockadd,unsignedcharpageadd);voidWirtePageF(unsignedintblockadd);voidWirteSpare(unsignedintblockadd,unsignedcharpageadd,unsignedcharbuf);/*==================================================================*///參
數(shù):
unsignedcharCom//函數(shù)功能:
向K9F5608操作命令/*===================================================================*/voidNfCommand(unsignedcharCom){
NF_CLE=1;
NF_WE=0;
P1=Com;
_nop_();
NF_WE=1;
NF_CLE=0;
P1=0xff;}/*=================================================================*///參
數(shù):
unsignedintbolckadd
2nd3th的地址
(Row地址
unsignedcharpageadd
1st的地址
(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省城市技師學(xué)院2025年公開(kāi)招聘工作人員備考題庫(kù)帶答案詳解
- 廣東胥江文旅控股有限公司及下屬企業(yè)2026年公開(kāi)招聘工作人員備考題庫(kù)含答案詳解
- 廣州大學(xué)2026年第一次公開(kāi)招聘合同制A崗工作人員備考題庫(kù)及一套完整答案詳解
- 廣州市天河區(qū)盈溪幼兒園2025年12月公開(kāi)招聘編外教輔人員備考題庫(kù)及參考答案詳解
- 廣州市幼兒師范學(xué)校附屬幼兒園2026年1月公開(kāi)招聘編外聘用制專任教師備考題庫(kù)及一套參考答案詳解
- 廣州市白云區(qū)梓元崗中學(xué)2025英才招募令備考題庫(kù)及一套答案詳解
- 廣州花都城投廣電城市服務(wù)有限公司2025年公開(kāi)招聘項(xiàng)目用工人員備考題庫(kù)及1套完整答案詳解
- 廣西醫(yī)科大學(xué)附屬口腔醫(yī)院2026年度人才招聘35人備考題庫(kù)及參考答案詳解1套
- 廣西壯族自治區(qū)工業(yè)和備考題庫(kù)化廳直屬部分科研事業(yè)單位2025年度公開(kāi)招聘工作人員備考題庫(kù)及參考答案詳解一套
- 廣西科技商貿(mào)高級(jí)技工學(xué)校2026年春學(xué)期招聘編外教職工備考題庫(kù)帶答案詳解
- 上海市松江區(qū)2026屆初三一模物理試題(含答案)
- 小學(xué)六年級(jí)英語(yǔ)2026年上學(xué)期語(yǔ)法改錯(cuò)綜合真題
- 2026長(zhǎng)治日?qǐng)?bào)社工作人員招聘勞務(wù)派遣人員5人備考題庫(kù)完美版
- 護(hù)理核心制度內(nèi)容精要
- 光伏板清洗施工方案
- 閱讀理解體裁與命題方向(復(fù)習(xí)講義)-2026年春季高考英語(yǔ)(上海高考專用)
- 俱樂(lè)部轉(zhuǎn)讓合同模板(3篇)
- 指南抗菌藥物臨床應(yīng)用指導(dǎo)原則(2025版)
- 光伏系統(tǒng)的安裝工程監(jiān)理實(shí)施細(xì)則
- 教練員勞務(wù)合同范本
- 預(yù)防凍雨災(zāi)害課件
評(píng)論
0/150
提交評(píng)論