用單片機(jī)的I/O口模擬I2C協(xié)議 I2C用IO模擬程序網(wǎng)上范例最多的就是51的程序了,這些范例的正確性無需懷疑.但是如果直接以它為藍(lán)本將它"AVR化",一不留神,就會有點(diǎn)問題了. 這要從I2C的硬件規(guī)范和AVR及51單片機(jī)的IO口說起.I2C要求SCL,SDA二線都有 線與 功能,即I2C驅(qū)動口應(yīng)該是 漏極開路 電路,其高電平的維持是靠上拉電阻來實(shí)現(xiàn)的, 而低電平則需要驅(qū)動口的強(qiáng)下拉能力. 51單片機(jī)IO口正好完全符合這個特性.寫起I2C驅(qū)動頗為得心應(yīng)手.但是AVR的IO口強(qiáng)大了,它輸出的高電平是實(shí)實(shí)在在的高電平,而不是靠什么上拉電阻來提供,只有10mA都不到的電流!于是如果直接使用 PORTB_Bit0 = 1這樣的操作,就不能滿足I2C的線與功能了,如果此時有別的設(shè)備要將SCL或者SDA拉低,那么結(jié)果就是二個IO口打架,誰贏誰輸不得而知,時間長了,多半是兩敗俱傷,芯片發(fā)熱吧. 當(dāng)然AVR的IO口自然有辦法滿足I2C的電氣特性要求,不就是不能輸出1么,那么用它的高阻狀態(tài)即可(DDRB_Bit0=0,PORTB_Bit0=0即可),要輸出0么(DDRB_Bit0=1,PORTB_Bit0=0).
上傳時間: 2016-07-19
上傳用戶:gxrui1991
Program main BIOS image | | /B - Program Boot Block | | /N - Program NVRAM | | /C - Destroy CMOS checksum | | /E - Program Embedded Controller Block | | /K - Program all non-critical blocks | | /Kn - Program n th non-critical block only(n=0-7) | | /Q - Silent execution | | /REBOOT - Reboot after programming | | /X - Don t Check ROM ID | | /S - Display current system s ROMID | | /Ln - Load CMOS defaults
標(biāo)簽: Program Destroy Block NVRAM
上傳時間: 2016-07-26
上傳用戶:wfl_yy
問題描述 設(shè)有n種不同面值的硬幣,各硬幣的面值存于數(shù)組T[1:n]中。現(xiàn)要用這些面值的硬幣來找錢,可以實(shí)用的各種面值的硬幣個數(shù)不限。當(dāng)只用硬幣面值T[1],T[2],…,T[i]時,可找出錢數(shù)j的最少硬幣個數(shù)記為C(i,j)。若只用這些硬幣面值,找不出錢數(shù)j時,記C(i,j)=∞。 編程任務(wù) 設(shè)計(jì)一個動態(tài)規(guī)劃算法,對1≤j≤L,計(jì)算出所有的C( n,j )。算法中只允許實(shí)用一個長度為L的數(shù)組。用L和n作為變量來表示算法的計(jì)算時間復(fù)雜性 數(shù)據(jù)輸入 由文件input.txt提供輸入數(shù)據(jù)。文件的第1行中有1個正整數(shù)n(n<=13),表示有n種硬幣可選。接下來的一行是每種硬幣的面值。由用戶輸入待找錢數(shù)j。 結(jié)果輸出 程序運(yùn)行結(jié)束時,將計(jì)算出的所需最少硬幣個數(shù)輸出到文件output.txt中。
標(biāo)簽:
上傳時間: 2016-07-28
上傳用戶:yangbo69
printf(" 請輸入%d個課程的代表值(<%d個字符):\n" ,(*G).vexnum,MAX_NAME) for(i=0 i<(*G).vexnum ++i) /* 構(gòu)造頂點(diǎn)向量 */ { scanf(" %s" ,(*G).vertices[i].data) (*G).vertices[i].firstarc=NULL } printf(" 請輸入%d個課程的學(xué)分值(<%d個字符):\n" ,(*G).vexnum,MAX_NAME) for(i=0 i<(*G).vexnum ++i) /* 構(gòu)造頂點(diǎn)向量 */ {scanf(" %s" ,(*G).verticestwo[i].data) } printf(&quo
標(biāo)簽: vexnum quot MAX_NAME printf
上傳時間: 2016-08-15
上傳用戶:Avoid98
已知記錄序列a[1..n] 中的關(guān)鍵字各不相同, 可按如下所述實(shí)現(xiàn)計(jì)數(shù)排序:另設(shè)數(shù)組c[1..n],對每 個記錄a[i], 統(tǒng)計(jì)序列中關(guān)鍵字比它小的記錄個數(shù)存 于c[i], 則c[i]=0的記錄必為關(guān)鍵字最小的記錄,然 后依c[i]值的大小對a中記錄進(jìn)行重新排列,試編寫算 法實(shí)現(xiàn)上述排序方法。
上傳時間: 2016-08-17
上傳用戶:ljt101007
給定含有n 個元素的多重集合S = {a1, a2,., an } ,1 ≤ ai ≤ n ,1 ≤ i ≤ n ,每個元素在S 中出現(xiàn)的次數(shù)稱為該元素的重?cái)?shù)。多重集S 中重?cái)?shù)大于n/2 的元素稱為主元素。例如,S={2,2,4,2,1,2,5,2,2,8}。多重集S 的主元素是2,其重?cái)?shù)為6。
上傳時間: 2016-08-20
上傳用戶:chongcongying
cskmeans 聚類算法的一種 1. 分裂法(partitioning methods):給定一個有N個元組或者紀(jì)錄的數(shù)據(jù)集,分裂法將構(gòu)造K個分組,每一個分組就代表一個聚類,K<N。而且這K個分組滿足下列條件:(1) 每一個分組至少包含一個數(shù)據(jù)紀(jì)錄;(2)每一個數(shù)據(jù)紀(jì)錄屬于且僅屬于一個分組(注意:這個要求在某些模糊聚類算法中可以放寬);對于給定的K,算法首先給出一個初始的分組方法,以后通過反復(fù)迭代的方法改變分組,使得每一次改進(jìn)之后的分組方案都較前一次好,而所謂好的標(biāo)準(zhǔn)就是:同一分組中的記錄越近越好,而不同分組中的紀(jì)錄越遠(yuǎn)越好。使用這個基本思想的算法有:K-MEANS算法、K-MEDOIDS算法、CLARANS算法;
標(biāo)簽: partitioning cskmeans methods 聚類算法
上傳時間: 2014-01-16
上傳用戶:songyue1991
二叉樹,堆排序模板,時間復(fù)雜度:為O(N*Log2(N))??臻g復(fù)雜度: 2*N-1(個結(jié)點(diǎn))
標(biāo)簽: 二叉樹
上傳時間: 2014-01-26
上傳用戶:hopy
魔法K線多頭線型(上輯)●一柱擎天,翻多起漲 翻多第一 招●一星二陽,中氣十足 翻多第二招●上升三法,三明夾心 翻多第三招●內(nèi)困三紅,翻多起漲 翻多第四招●三陽開泰,百花齊放 翻多第五招●三線反紅,趁勝追擊 翻多第六招●外側(cè)三紅,來日方長 翻多第七招
標(biāo)簽: 線型
上傳時間: 2014-01-19
上傳用戶:ANRAN
給定n 個登山機(jī)器人接力攀登的總高度m,及每個機(jī)器人連續(xù)攀登1 米,2 米,…,k米,所用的時間,編程計(jì)算最優(yōu)攀登方案。
標(biāo)簽: 機(jī)器人
上傳時間: 2016-08-27
上傳用戶:sevenbestfei
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1