freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機c語言學(xué)習(xí)心得(參考版)

2024-11-15 23:55本頁面
  

【正文】 。P1=(char*)p2。在賦值時需進行強制類型轉(zhuǎn)換: Char *p1。return(ps)。} int strlen(char *s){ char *p=s。int strlen(char *s)。/**結(jié)果值存儲到數(shù)據(jù)緩沖器*/ XBYTE[ADC]=I。/*讀取A/D轉(zhuǎn)換結(jié)果*/ i。/*等待8個通道轉(zhuǎn)換完畢*/ } void int1()interrupt2 { unsigned char tmp。/ *開中斷*/ XBYTE[ADC]=I。ex1=1。void main(){ I=8。/*啟動下一個模擬輸入通道A/D轉(zhuǎn)換*/ } 除了用指針變量來實現(xiàn)對內(nèi)存地址的直接操作外,c51編譯器還提供一組宏,該宏定義文件為:“”,利用它可十分方便地實現(xiàn)對任何內(nèi)存空間的直接操作,改寫上面的程序: include include /*包含絕對地址操作預(yù)定義頭文件*/ define ADC 0x00f0。/*數(shù)據(jù)緩沖區(qū)地址加1*/ i—。/*讀取A/D轉(zhuǎn)換結(jié)果*/ *ADCdata=temp。/*等待8個通道A/D轉(zhuǎn)換完*/ } void int1()interrupt 2 { unsigned char tmp。/*開中斷*/ *ADC=I。EX1=1。I=8。void main(){ ADC=0x00f0。/*定義ADC0809端口指針*/ unsigned int xdata *ADCdata。讀取A/D轉(zhuǎn)換結(jié)果并存到外部RAM中。程序定義了兩個指針變量* ADC和* ADCdata,分別指向ADC0809端口地址(00F0H)和外部RAM單元地址(1000H~1007H)由*ADC=I送入通道數(shù),啟動ADC0809進行A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)束時產(chǎn)生INT1中斷。ADC0809具有8個模擬量輸入通道,采用中斷方式,在中斷函數(shù)中讀取8個通道的A/D轉(zhuǎn)換值,分別存儲在外部RAM的1000H~1007H單元。因此為指針選擇存貯器的方法可以省掉,以這些指針的長度可為1個字節(jié)(idata *,data *,pdata *)或2個這節(jié)(code *,xdata *)。然后。至于排序算法可參考上一篇文章,有一個經(jīng)典的程序。主要來自于隨機干擾,下面就各種干擾的方法給出簡單的去除方法:白噪聲:最重要的統(tǒng)計特性為平均值為0,可采取每路數(shù)據(jù)采集幾次求平均的方法;隨機干擾:該點明顯高于或低于附近正常采樣值,故采取中值濾波法,即對被測信號連續(xù)采樣M次,進行大小排序,取大小居中的1/3個采樣值進行算術(shù)平均;電源干擾:特點是有固定周期,故可采用定時采樣求平均的方法。}單片機C語言之六_____________________________________________________________________________________ 軟件法去干擾:工程上我們在采集數(shù)據(jù)時一般要求精度達到5%%,大于這個值將認為無效。average(pot_1,2)。Ifloat pot_1[2]={,}。float aver,sum=array[0]。float array[ ]。這時為了在被調(diào)函數(shù)中處理數(shù)組元素的需要,應(yīng)另外設(shè)置一個參數(shù)來傳遞數(shù)組元素的個數(shù)。如果希望行參數(shù)組能得到實參數(shù)組的全部元素,則應(yīng)使兩個數(shù)組的長度一致。而且在兩個函數(shù)中定義的數(shù)組類型必須一致,如果類型不一致將導(dǎo)致編譯出錯。將實際參數(shù)數(shù)組首地址傳遞給被調(diào)函數(shù)中的形式參數(shù)數(shù)組,這樣一來兩個數(shù)組就占有同一段內(nèi)存單元。一個數(shù)組數(shù)組名表示該數(shù)組的首地址。/*指定large模式*/ int large_te(int I,int k)/*未指定,按默認的large模式處理*/ { return(mtest(I,k)+2)。} main(){ ?? }三、函數(shù)的參數(shù)和局部變量的存儲器模式: 三種存儲器模式:small,pact, small:內(nèi)部ram pact, large:外部RAM 函數(shù)類型 函數(shù)名(形式參數(shù)表)[存儲器模式] 例:pragma large /*默認存儲器模式為large*/ extern int calc(char I,int b)small。e)temp*=m。for(。{ register int temp。(見下)變量 全局變量(global): 外部變量靜態(tài)變量(static): 寄存器變量例: include int_power(m,e)int m。寄存器變量(register):速度最快。內(nèi)部變量 靜態(tài)變量(static):static int a=5。} /* 注意:如果中斷函數(shù)中用到浮點運算,必須保存浮點寄存器的狀態(tài)。TR0=1。EA=1。TH0=(1000/256)。P1_0=0。TL0=(1000%256)。void timer0(void)interrupt 1 using 1{ P1_0=!P1_0。取地址七》強制類型轉(zhuǎn)換:(類型)=表達式(char *)0xb000 八》sizeof 取數(shù)據(jù)類型、變量以及表達式的字節(jié)數(shù)的運算符; 九》continue:中斷語句:結(jié)束本次循環(huán)。/*將i,j定義為整型*/ 四》位運算符:━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━━━┳━━━━━━ ~ ┃ amp。/*將P0口的口地址定義為80H,*/ 二》數(shù)據(jù)存貯類型━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━ 數(shù)據(jù)存貯類型 ┃ 與存貯空間的對應(yīng)關(guān)系━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━ data ┃ 直接尋址片內(nèi)數(shù)據(jù)存貯區(qū),訪速度快 bdata ┃ 可位尋址片內(nèi)數(shù)據(jù)存貯區(qū),允許位與字節(jié)混合訪問 idata ┃ 間接尋址片內(nèi)數(shù)據(jù)存貯區(qū),可訪問片內(nèi)全部RAM地址空間pdata ┃ 分頁尋址片外數(shù)據(jù)存貯區(qū)(256字節(jié))由MOVX R0訪問 xdata ┃ 片外數(shù)據(jù)存貯區(qū)(64K),由MOVX DPTR訪問 code ┃ 代碼存貯區(qū)(64K),由MOVC DPTR訪問━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━ 變量的存貯類型定義: char data var /*字符變量var被定義為data存貯類型,C51編譯器將把該變量定位在51單片機片內(nèi)數(shù)據(jù)區(qū)存貯區(qū)中*/ bit bdata flag /*位變量flag被定義為bdata存貯類型,C51編譯器將把該變量定位在51單片機片內(nèi)數(shù)據(jù)區(qū)存貯區(qū)(RAM)中的位尋址區(qū):20H2FH*/三》typedef:重新定義數(shù)據(jù)類型typedef 已有數(shù)據(jù)類型 新的數(shù)據(jù)類型 typedef int word。myv!=1)/*假定其值必為0或1*/ error myv must be 1 or 0/*出錯時顯示*/ endifpragma:用于在程序中向編譯器傳送各種編譯控制命令 pragma 編譯命令序列/*例: c51 debug cod large可用:*/pragma DB CD LA pragma disable /*禁止中斷*/單片機C語言之二_____________________________________________________________________________________ 一》數(shù)據(jù)類型:char int long 1:unsinged 0~255 0~65535 0~4294967295 2:signed128~12732768~327672147483648~2147483647 指針:* 3字節(jié) 位標量: sbit 特殊功能寄存器:sfr 16位特殊功能寄存器:sfr16 占2個內(nèi)存單元,0~65535 可尋址位:sbit利用他可訪問51單片機的內(nèi)部RAM中的可尋址位或特殊功能寄存器中的可尋址位 sfr P0=0x80。*/ /*如對8051在6MHZ與12MHZ下有*/ ifdef cpu==8051 define FREQ 6 /*程序段*/ else define FREQ 12/*程序段*/ endif /*這樣下面的原程序不用做任何修改便可以使用于兩種時鐘頻率的單片機系統(tǒng)*/ 四》其他:error:捕捉不可預(yù)料的編譯條件if(myv!=0amp。/*則area=12*10=120*/ 二》文件包含:include 或include “文件名” /*在C中用雙引用形式更保險,在C51中常用物是尖括弧形式*/ 三》條件編譯:/*一般源程序中的所有程序行都參加編譯,但有時希望對其中一部分內(nèi)容只在滿足一定條件下才進行編譯,也就是對一部分內(nèi)容指定編譯的條件。y=10。當然單片機和外部其他的芯片還有很多,比如數(shù)字溫度傳感器DS18B20,實時時鐘芯片DS1302,還有比如訪問AT24CXX的EEPROM存儲器等,更多的電路,還要靠大家在平時的學(xué)習(xí)過程當中,慢慢掌握。時隔13個月之久再來繼續(xù)寫這些東西,沒有以前的激情和熱情,所以就草草了事結(jié)尾,希望大家不要在背地里罵我哦,^_^。其實51也就那么簡單,真的很希望大家看完這篇文字以后,很自信的說,51單片機也已經(jīng)入門。//...add your other code }當然在實際過程當中,并不是如此簡單簡潔的,還希望大家能夠舉一反三哦...^_^。//...add your other code here.} old_value = new_value。!old_value)//識別按鍵。if(new_value amp。//定義按鍵的I/Ovoid P_key(void){ char new_value,old_value。//...add your other code here }Delay函數(shù)具體延時多長時間,就要看你設(shè)定的T0定時器中斷和Delaytime的乘積,比如你的定時器中斷為50MS,Delaytime為20的話,那么50MS*20=1S。//等在這里,直到Delaytime為0。EX1: unsigned char Delaytime。解決方法大致有如下2種:,在中斷里查詢延時的標志位。再看Delay函數(shù),完全讓CPU執(zhí)行(;空語句),所以在做大的產(chǎn)品或者代碼時,這個是非常耗費單片機內(nèi)部資源的。為什么?我的按鍵不是可以正常工作嗎?請看這里: if(P1_0 == 0){Delay(10)。case 2: P2_1 = 0xfd。//等待鍵松開}}switch(b){case 1: P2_0 = 0xFE。if(b == N)//N為鍵的功能數(shù)目{b = 0。while(1){if(P1_0 == 0){Delay(10)。return(key_val(row|col))。col = colamp。col = P1amp。0xF0。0xF0。P1 = 0xF0。Delayt(50)。0xf0)==0xf0)P0=tab[key]。}k=(kP1=k。break。break。break。break。0xf0。for(j=0。while(1){if(pkey()==1){P1=0xfe。}elsereturn 0。if(P1!=0xf0)return 1。i/******************************************************************************/ bit pkey(void)//判斷鍵的否被按下,通過返回值確定 {P1=0xf0。for(t=0。代碼如下://鍵盤掃描法程序//用數(shù)碼管顯示相應(yīng)的鍵值//--unsigned char code tab[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1