锘??xml version="1.0" encoding="utf-8" standalone="yes"?> CRC鐨勫叏縐頒負Cyclic Redundancy
Check錛屼腑鏂囧悕縐頒負寰幆鍐椾綑鏍¢獙銆傚畠鏄竴綾婚噸瑕佺殑綰挎у垎緇勭爜錛岀紪鐮佸拰瑙g爜鏂規硶綆鍗曪紝媯閿欏拰綰犻敊鑳藉姏寮猴紝鍦ㄩ氫俊棰嗗煙騫挎硾鍦扮敤浜庡疄鐜板樊閿欐帶鍒躲傚疄闄呬笂錛岄櫎
鏁版嵁閫氫俊澶栵紝CRC鍦ㄥ叾瀹冨緢澶氶鍩熶篃鏄ぇ鏈夌敤姝︿箣鍦扮殑銆備緥濡傛垜浠杞洏涓婄殑鏂囦歡錛屼互鍙婅В鍘嬩竴涓猌IP鏂囦歡鏃訛紝鍋跺皵浼氱鍒?#8220;Bad
CRC”閿欒錛岀敱姝ゅ畠鍦ㄦ暟鎹瓨鍌ㄦ柟闈㈢殑搴旂敤鍙暐瑙佷竴鏂戙?/p>
宸敊鎺у埗鐞嗚鏄湪浠f暟鐞嗚鍩虹涓婂緩绔嬭搗鏉ョ殑銆傝繖閲屾垜浠潃鐪間簬浠嬬粛CRC鐨勭畻娉曚笌瀹炵幇錛屽鍘熺悊鍙兘鎹庡甫璇存槑涓涓嬨傝嫢闇瑕佽繘涓姝ヤ簡瑙g嚎鎬х爜銆佸垎緇勭爜銆佸驚鐜爜銆佺籂閿欑紪鐮佺瓑鏂歸潰鐨勫師鐞嗭紝鍙互闃呰鏈夊叧璧勬枡銆?/p>
鍒╃敤CRC榪涜媯閿欑殑榪囩▼鍙畝鍗曟弿榪頒負錛氬湪鍙戦佺鏍規嵁瑕佷紶閫佺殑k浣嶄簩榪涘埗鐮佸簭鍒楋紝浠ヤ竴瀹氱殑瑙勫垯浜х敓涓涓牎楠岀敤鐨剅浣嶇洃鐫?
鐮?CRC鐮?錛岄檮鍦ㄥ師濮嬩俊鎭悗杈癸紝鏋勬垚涓涓柊鐨勪簩榪涘埗鐮佸簭鍒楁暟鍏眐+r浣嶏紝鐒跺悗鍙戦佸嚭鍘匯傚湪鎺ユ敹绔紝鏍規嵁淇℃伅鐮佸拰CRC鐮佷箣闂存墍閬靛驚鐨勮鍒欒繘琛屾楠岋紝浠?
紜畾浼犻佷腑鏄惁鍑洪敊銆傝繖涓鍒欙紝鍦ㄥ樊閿欐帶鍒剁悊璁轟腑縐頒負“鐢熸垚澶氶」寮?#8221;銆?/p>
1 浠f暟瀛︾殑涓鑸х畻娉?/strong> 鍦ㄤ唬鏁扮紪鐮佺悊璁轟腑錛屽皢涓涓爜緇勮〃紺轟負涓涓欏瑰紡錛岀爜緇勪腑鍚勭爜鍏冨綋浣滃欏瑰紡鐨勭郴鏁般備緥濡?1100101 琛ㄧず涓?br>1·x6+1·x5+0·x4+0·x3+1·x2+0·x+1錛屽嵆 x6+x5+x2+1銆?/p>
璁劇紪鐮佸墠鐨勫師濮嬩俊鎭欏瑰紡涓篜(x)錛孭(x)鐨勬渶楂樺箓嬈″姞1絳変簬k錛涚敓鎴愬欏瑰紡涓篏(x)錛孏(x)鐨勬渶楂樺箓嬈$瓑浜巖錛汣RC澶氶」寮忎負R(x)錛涚紪鐮佸悗鐨勫甫CRC鐨勪俊鎭欏瑰紡涓篢(x)銆?/p>
鍙戦佹柟緙栫爜鏂規硶錛氬皢P(x)涔樹互xr(鍗沖搴旂殑浜岃繘鍒剁爜搴忓垪宸︾Щr浣?錛屽啀闄や互G(x)錛屾墍寰椾綑寮忓嵆涓篟(x)銆傜敤鍏紡琛ㄧず涓?br>T(x)=xrP(x)+R(x) 鎺ユ敹鏂硅В鐮佹柟娉曪細灝員(x)闄や互G(x)錛屽鏋滀綑鏁頒負0錛屽垯璇存槑浼犺緭涓棤閿欒鍙戠敓錛屽惁鍒欒鏄庝紶杈撴湁璇?/p>
涓句緥鏉ヨ錛岃淇℃伅鐮佷負1100錛岀敓鎴愬欏瑰紡涓?011錛屽嵆P(x)=x3+x2錛孏(x)=x3+x+1錛岃綆桟RC鐨勮繃紼嬩負 鍗?R(x)=x銆傛敞鎰忓埌G(x)鏈楂樺箓嬈=3錛屽緱鍑篊RC涓?10銆?/p>
濡傛灉鐢ㄧ珫寮忛櫎娉曪紝璁$畻榪囩▼涓?/p>
鍥犳錛孴(x)=(x6+x5)+(x)=x6+x5+x, 鍗?1100000+010=1100010 濡傛灉浼犺緭鏃犺錛?/p>
鏃犱綑寮忋傚洖澶寸湅涓涓嬩笂闈㈢殑绔栧紡闄ゆ硶錛屽鏋滆闄ゆ暟鏄?100010錛屾樉鐒跺湪鍟嗙涓変釜1鏃訛紝灝辮兘闄ゅ敖銆?/p>
涓婅堪鎺ㄧ畻榪囩▼錛屾湁鍔╀簬鎴戜滑鐞嗚ВCRC鐨勬蹇點備絾鐩存帴緙栫▼鏉ュ疄鐜頒笂闈㈢殑綆楁硶錛屼笉浠呯箒鐞愶紝鏁堢巼涔熶笉楂樸傚疄闄呬笂鍦ㄥ伐紼嬩腑涓嶄細鐩存帴榪欐牱鍘昏綆楀拰楠岃瘉CRC銆?/p>
涓嬭〃涓垪鍑轟簡涓浜涜浜庢爣鍑嗙殑CRC璧勬枡錛?/p>
鍚嶇О 鐢熸垚澶氶」寮?nbsp; 綆璁板紡* 搴旂敤涓句緥 CRC-4 x4+x+1 ITU G.704 CRC-12 x12+x11+x3+x+1 CRC-16 x16+x12+x2+1 1005 IBM SDLC CRC-ITU** x16+x12+x5+1 1021 ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS CRC-32 x32+x26+x23+...+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 SCTP 鐢–RC16-CCITT鐨勭敓鎴愬欏瑰紡0x1021錛屽叾C浠g爜(鏈枃鎵鏈変唬鐮佸亣瀹氱郴緇熶負32浣嶏紝涓旈兘鍦╒C6涓?br>緙栬瘧閫氳繃)濡備笅錛?/font> unsigned short do_crc(unsigned char *message, unsigned int len) 鏄劇劧錛屾瘡嬈″唴寰幆鐨勮涓哄彇鍐充簬瀵勫瓨鍣ㄩ浣嶃傜敱浜庡紓鎴栬繍綆楁弧瓚充氦鎹㈢巼鍜岀粨鍚堝緥錛屼互鍙婁笌0寮?br>鎴栨棤褰卞搷錛屾秷鎭彲浠ヤ笉縐誨叆瀵勫瓨鍣紝鑰屽湪姣忔鍐呭驚鐜殑鏃跺欙紝瀵勫瓨鍣ㄩ浣嶅啀涓庡搴旂殑娑堟伅浣?br>寮傛垨銆傛敼榪涚殑浠g爜濡備笅錛?/font> unsigned short do_crc(unsigned char *message, unsigned int len) 浠ヤ笂鐨勮璁轟腑錛屾秷鎭殑姣忎釜瀛楄妭閮芥槸鍏堜紶杈揗SB錛孋RC16-CCITT鏍囧噯鍗存槸鎸夌収鍏堜紶杈揕SB錛屾秷鎭?br>鍙崇Щ榪涘瘎瀛樺櫒鏉ヨ綆楃殑銆傚彧闇灝嗕唬鐮佹敼鎴愬垽鏂瘎瀛樺櫒鐨凩SB錛屽皢0x1021鎸変綅棰犲掑悗(0x8408)涓?br>瀵勫瓨鍣ㄥ紓鎴栧嵆鍙紝濡備笅鎵紺猴細 unsigned short do_crc(unsigned char *message, unsigned int len) 璇ョ畻娉曚嬌鐢ㄤ簡涓ゅ眰寰幆錛屽娑堟伅閫愪綅榪涜澶勭悊錛岃繖鏍鋒晥鐜囨槸寰堜綆鐨勩備負浜嗘彁楂樻椂闂存晥鐜囷紝閫?br>甯哥殑鎬濇兂鏄互絀洪棿鎹㈡椂闂淬傝冭檻鍒板唴寰幆鍙笌褰撳墠鐨勬秷鎭瓧鑺傚拰crc_reg鐨勪綆瀛楄妭鏈夊叧錛屽璇?br>綆楁硶鍋氫互涓嬬瓑鏁堣漿鎹細 unsigned short do_crc(unsigned char *message, unsigned int len) 鐜板湪鍐呭驚鐜彧涓巌ndex鐩稿叧浜嗭紝鍙互浜嬪厛浠ユ暟緇勫艦寮忕敓鎴愪竴涓〃crc16_ccitt_table錛屼嬌寰?br>to_xor = crc16_ccitt_table[index]錛屼簬鏄彲浠ョ畝鍖栦負錛?/font> unsigned short do_crc(unsigned char *message, unsigned int len) crc16_ccitt_table閫氳繃浠ヤ笅浠g爜鐢熸垚錛?/font> int main() printf("unsigned short crc16_ccitt_table[256] =\n{"); 鐢熸垚鐨勮〃濡備笅錛?/font> unsigned short crc16_ccitt_table[256] = 榪欐牱瀵逛簬娑堟伅unsigned char message[len]錛屾牎楠岀爜涓猴細 鍦ㄤ竴浜涗紶杈撳崗璁腑錛屽彂閫佺騫朵笉鎸囧嚭娑堟伅闀垮害錛岃屾槸閲囩敤緇撴潫鏍囧織錛岃冭檻浠ヤ笅鍑犵宸敊錛?br> 1)鍦ㄦ秷鎭箣鍓嶏紝澧炲姞1涓垨澶氫釜0瀛楄妭錛?br> 2)娑堟伅浠?涓垨澶氫釜榪炵畫鐨?瀛楄妭寮濮嬶紝涓㈡帀1涓垨澶氫釜0錛?br> 3)鍦ㄦ秷鎭?鍖呮嫭鏍¢獙鐮?涔嬪悗錛屽鍔?涓垨澶氫釜0瀛楄妭錛? 鍦–RC16-CCITT鏍囧噯涓璻eg_init = 0xffff錛屼負浜嗚В鍐沖悗2涓棶棰橈紝鍦–RC16-CCITT鏍囧噯涓皢璁?br>綆楀嚭鐨勬牎楠岀爜涓?xffff榪涜寮傛垨錛屽嵆錛?br> unsigned short code = do_crc(0xffff, message, len); 鍦ㄤ覆琛岄氫俊涓?鏀跺彂鍙屾柟瀵瑰彂閫佹垨鎺ユ敹鐨勬暟鎹熺巼瑕佹湁涓瀹氱殑綰﹀畾錛屾垜浠氳繃杞歡瀵筂CS鈥?1涓茶鍙g紪紼嬪彲綰﹀畾鍥涚宸ヤ綔鏂瑰紡銆傚叾涓紝鏂瑰紡0鍜屾柟寮?鐨勬嘗鐗圭巼鏄浐瀹氱殑錛岃屾柟寮?鍜屾柟寮?鐨勬嘗鐗圭巼鏄彲鍙樼殑錛岀敱瀹氭椂鍣═1鐨勬孩鍑虹巼鍐沖畾銆?br>
涓茶鍙g殑鍥涚宸ヤ綔鏂瑰紡瀵瑰簲鐫涓夌娉㈢壒鐜囥傜敱浜庤緭浜虹殑縐諱綅鏃墮挓鐨勬潵婧愪笉鍚岋紝鎵浠ワ紝鍚勭鏂瑰紡鐨勬嘗鐗圭巼璁$畻鍏紡涔熶笉鍚屻? 鏂瑰紡0鐨勬嘗鐗圭巼錛漟osc錛?2 涓夈佹柟寮弆鍜屾柟寮?鐨勬嘗鐗圭巼 緋葷粺鏅舵尟棰戠巼閫変負11錛?592MHZ灝辨槸涓轟簡浣垮垵鍊間負鏁存暟錛屼粠鑰屼駭鐢熺簿紜殑娉㈢壒鐜囥?br>
濡傛灉涓茶閫氫俊閫夌敤寰堜綆鐨勬嘗鐗圭巼錛屽彲灝嗗畾鏃跺櫒Tl緗簬宸ヤ綔鏂瑰紡0鎴栧伐浣滄柟寮?錛屼絾鍦?br>
榪欑鎯呭喌涓嬶紝T1婧㈠嚭鏃訛紝闇鐢ㄤ腑鏂湇鍔$▼搴忛噸瑁呭垵鍊箋備腑鏂搷搴旀椂闂村拰鎵ц鎸囦護鏃墮棿浼氫嬌娉㈢壒鐜囦駭鐢熶竴瀹氱殑璇樊錛屽彲鐢ㄦ敼鍙樺垵鍊肩殑鍔炴硶鍔犱互璋冩暣銆?br>
琛?鈥?鍒楀嚭浜嗗悇縐嶅父鐢ㄧ殑娉㈢壒鐜囧強鍏跺垵鍊箋?/p>
涓嬮潰鏄湰浜轟嬌鐢?1鍗曠墖鏈虹殑涓鐐圭粡楠岋紝鍐欏嚭鏉ュ垎浜紝璇鋒壒璇勬寚姝c?br>
51鍗曠墖鏈虹殑澶栭儴涓柇鏈変袱縐嶈Е鍙戞柟寮忓彲閫夛細鐢靛鉤瑙﹀彂鍜岃竟娌胯Е鍙戙傞夋嫨鐢靛鉤瑙﹀彂鏃訛紝鍗曠墖鏈哄湪姣忎釜鏈哄櫒鍛ㄦ湡媯鏌ヤ腑鏂簮鍙g嚎錛屾嫻嬪埌浣庣數騫籌紝鍗崇疆浣嶄腑鏂姹傛爣蹇楋紝鍚?/span>CPU璇鋒眰涓柇銆傞夋嫨杈規部瑙﹀彂鏂瑰紡鏃訛紝鍗曠墖鏈哄湪涓婁竴涓満鍣ㄥ懆鏈熸嫻嬪埌涓柇婧愬彛綰夸負楂樼數騫籌紝涓嬩竴涓満鍣ㄥ懆鏈熸嫻嬪埌浣庣數騫籌紝鍗崇疆浣嶄腑鏂爣蹇楋紝璇鋒眰涓柇銆?/span> 榪欎釜鍘熺悊寰堝ソ鐞嗚В銆備絾搴旂敤鏃墮渶瑕佺壒鍒敞鎰忕殑鍑犵偣錛?/font> 1) 鐢靛鉤瑙﹀彂鏂瑰紡鏃訛紝涓柇鏍囧織瀵勫瓨鍣ㄤ笉閿佸瓨涓柇璇鋒眰淇″彿銆備篃灝辨槸璇達紝鍗曠墖鏈烘妸姣忎釜鏈哄櫒鍛ㄦ湡鐨?/span>S5P2閲囨牱鍒扮殑澶栭儴涓柇婧愬彛綰跨殑鐢靛鉤閫昏緫鐩存帴璧嬪煎埌涓柇鏍囧織瀵勫瓨鍣ㄣ傛爣蹇楀瘎瀛樺櫒瀵逛簬璇鋒眰淇″彿鏉ヨ鏄忔槑鐨勩傝繖鏍峰綋涓柇璇鋒眰琚樆濉炶屾病鏈夊緱鍒板強鏃跺搷搴旀椂錛屽皢琚涪澶便傛崲鍙ヨ瘽璇達紝瑕佷嬌鐢靛鉤瑙﹀彂鐨勪腑鏂CPU鍝嶅簲騫舵墽琛岋紝蹇呴』淇濊瘉澶栭儴涓柇婧愬彛綰跨殑浣庣數騫崇淮鎸佸埌涓柇琚墽琛屼負姝€?/span>鍥犳褰?/span>CPU姝e湪鎵ц鍚岀駭涓柇鎴栨洿楂樼駭涓柇鏈熼棿錛屼駭鐢熺殑澶栭儴涓柇婧愶紙浜х敓浣庣數騫籌級濡傛灉鍦ㄨ涓柇鎵ц瀹屾瘯涔嬪墠鎾ら攢錛堝彉涓洪珮鐢靛鉤錛変簡錛岄偅涔堝皢寰椾笉鍒板搷搴旓紝灝卞鍚屾病鍙戠敓涓鏍楓傚悓鏍鳳紝褰?/span>CPU鍦ㄦ墽琛屼笉鍙涓柇鐨勬寚浠わ紙濡?/span>RETI錛夋椂錛屼駭鐢熺殑鐢靛鉤瑙﹀彂涓柇濡傛灉鏃墮棿澶煭錛屼篃寰椾笉鍒版墽琛屻?/span> 2) 杈規部瑙﹀彂鏂瑰紡鏃訛紝涓柇鏍囧織瀵勫瓨鍣ㄩ攣瀛樹簡涓柇璇鋒眰銆備腑鏂彛綰夸笂涓涓粠楂樺埌浣庣殑璺沖彉灝嗚褰曞湪鏍囧織瀵勫瓨鍣ㄤ腑錛岀洿鍒?/span>CPU鍝嶅簲騫惰漿鍚戣涓柇鏈嶅姟紼嬪簭鏃訛紝鐢辯‖浠惰嚜鍔ㄦ竻闄ゃ傚洜姝ゅ綋CPU姝e湪鎵ц鍚岀駭涓柇錛堢敋鑷蟲槸澶栭儴涓柇鏈韓錛夋垨楂樼駭涓柇鏃訛紝浜х敓鐨勫閮ㄤ腑鏂紙璐熻煩鍙橈級鍚屾牱灝嗚璁板綍鍦ㄤ腑鏂爣蹇楀瘎瀛樺櫒涓傚湪璇ヤ腑鏂鍑哄悗錛屽皢琚搷搴旀墽琛屻傚鏋滀綘涓嶅笇鏈涜繖鏍鳳紝蹇呴』鍦ㄤ腑鏂鍑轟箣鍓嶏紝鎵嬪伐娓呴櫎澶栭儴涓柇鏍囧織銆?/span> 3) 涓柇鏍囧織鍙互鎵嬪伐娓呴櫎銆備竴涓腑鏂鏋滃湪娌℃湁寰楀埌鍝嶅簲涔嬪墠灝卞凡緇忚鎵嬪伐娓呴櫎錛屽垯璇ヤ腑鏂皢琚?/span>CPU蹇界暐銆傚氨濡傚悓娌℃湁鍙戠敓涓鏍楓?/span> 4) 閫夋嫨鐢靛鉤瑙﹀彂榪樻槸杈規部瑙﹀彂鏂瑰紡搴斾粠緋葷粺浣跨敤澶栭儴涓柇鐨勭洰鐨?/span>涓婂幓鑰冭檻錛岃屼笉鏄璁稿璧勬枡涓婅鐨勬牴鎹腑鏂簮淇″彿鐨勭壒鎬ф潵鍙栬垗銆傛瘮濡傦紝鏈夌殑涔︿笂璇達紙銆?/span>Keil C51浣跨敤鎶宸у強瀹炴垬銆嬶級錛屽氨鏈夌被浼肩殑瑙傜偣銆?/span>
#define __mycon__h__
#include <string.h>
//鏁版嵁鏍煎紡
//W 8
#define SUCCESS 1
#define ERROR 0
#define uchar unsigned char
#define uint unsinged int
#define BUF_LEN 30 //浼犲啿鍖哄ぇ灝?/span>
#define RECIEVED_MAX_DATA_LEN 16
#define SEND_MAX_DATA_LEN 25
#define END_NUM 4 //緇撴潫絎﹂暱搴?/span>
typedef void (*PTRFUN)(uchar*,uchar);
PTRFUN ptrFun;
uchar END_CODE[4]="#end";
uchar end_num=0;
uchar data_num=0; //鎺ュ彈鏁版嵁涓暟
uchar data_buf[BUF_LEN];//緙撳啿鍖哄ぇ灝?/span>
uchar data_addr=0; //鏁版嵁鍦╠ata_buf浣嶇疆
bit isComplete=0; //澶勭悊
typedef struct
{
char name[10]; //濮撳悕
int age; //騫撮緞
char sex[5]; //鎬у埆
}st;
st b;
//鍒濆鍖?/span>
void init_serialcomm(void)
{
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
// TI=1;
}
//*******鏁版嵁杞崲*********************
uchar decoderData(){
uchar state,i;
state=0;
i=2;
//-----------------------璁$畻鍦板潃-------------------------------
while(1){
if( (data_buf[i]>47)&&(data_buf[i]<58) ) // 鏄?#8216;0’-‘9’錛?/span>
state = (state*10)+(data_buf[i]-48); // 璁$畻
else if( data_buf[i]==' ' ) break; // 鏄┖鏍?璺沖嚭
else // 闈?0'-'9'鍜? '
{
return ERROR; // 榪斿洖閿欒
}
if( i>4 ) // 杈撳叆鏁板瓧榪囧ぇ
{
return ERROR;
}
i++;
}
data_buf[1]=state;//鏁版嵁涓暟
data_addr=++i;
return SUCCESS;
}
//***************************鎺ユ敹澶勭悊**************************************
void afterRecived(void)
{
if( decoderData()==ERROR ) return; // 閿欒錛岃繑鍥?/span>
if( data_buf[1]>RECIEVED_MAX_DATA_LEN ) // 鍐欏叆涓暟鍒ゆ柇
{
return; // 鏁版嵁涓暟澶錛岃繑鍥?/span>
}
ptrFun(&data_buf[data_addr],data_buf[1]);
}
//鍚戜覆鍙e彂閫佷竴涓瓧絎?/span>
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
//鍚戜覆鍙e彂閫佷竴涓瓧絎︿覆錛宻trlen涓鴻瀛楃涓查暱搴?/span>
void send_string_com(unsigned char *str,uchar len)
{
unsigned int k=0;
do
{
send_char_com(*(str + k));
k++;
} while(k < len);
}
void sendBefore(void* p){
char* m=(char*)p;
uchar len=sizeof(st);
send_string_com(m,len);
}
//涓插彛鎺ユ敹涓柇鍑芥暟
void serial () interrupt 4 using 3
{
unsigned char state;
if( RI==1 )
{
state = SBUF; // 緙撳瓨鎺ユ敹鍒扮殑鏁版嵁
RI = 0; // 鎺ユ敹鏍囧織娓呴浂
//---------------------媯嫻嬬粨鏉熷懡浠?end---------------------------
if( state==END_CODE[end_num] )
{
end_num++;
if( end_num==END_NUM )
{
end_num = 0;
isComplete = 1;
ES=0;
}
}
else end_num = 0;
//---------------------涓插彛鏁版嵁澶勭悊-------------------------------
if( data_num>SEND_MAX_DATA_LEN )
{
data_num = 0;
//ERROR 鎺ュ彈鏁版嵁榪囬暱
}
data_buf[data_num++] = state;
}
}
#endif
#include "51com.h"
#include "util.h"
unsigned char key_map[]={0,7,8,9,'/',4,5,6,'*',1,2,3,'-','c',0,'=','+'};
unsigned char tab[]={0xFE,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};
void process(uchar* p,len){
P1=tab[string_to_int(p,len)];
}
void main(void)
{
init_serialcomm(); //鍒濆鍖栦覆鍙?/span>
ptrFun=process;
b.age=10;
sendBefore(&b);
//send_string_com("b",1);
while(1)
{
if( isComplete==1 ) // 涓插彛鎺ユ敹鍒頒竴涓叉暟鎹?/span>
{
isComplete = 0; // 鏍囧織娓呴浂
if( data_buf[0]=='R' )afterRecived();
else if( data_buf[0]=='S' )send_string_com("b",1);
data_num = 0; // 閲嶆柊寮濮嬫帴鏀舵暟鎹?/span>
ES = 1; // 鍏佽涓插彛涓柇
}
}
}
]]>
寮曡█
銆 xrP(x) x3(x3+x2) x6+x5 x
-------- = ---------- = -------- = (x3+x2+x) + --------
G(x) x3+x+1 x3+x+1 x3+x+1 1110
-------
1011 /1100000 (1100宸︾Щ3浣?
1011
----
1110
1011
-----
1010
1011
-----
0010
0000
----
010 T(x) x6+x5+x
------ = --------- = x3+x2+x,
G(x) x3+x+1
* 鐢熸垚澶氶」寮忕殑鏈楂樺箓嬈¢」緋繪暟鏄浐瀹氱殑1錛屾晠鍦ㄧ畝璁板紡涓紝灝嗘渶楂樼殑1緇熶竴鍘繪帀浜嗭紝濡?4C11DB7瀹為檯涓婃槸104C11DB7銆?br> ** 鍓嶇ОCRC-CCITT銆侷TU鐨勫墠韜槸CCITT銆?/pre>
4.CRC綆楁硶鐨勫疄鐜?br>---------------
瑕佺敤紼嬪簭瀹炵幇CRC綆楁硶錛岃冭檻瀵圭2鑺傜殑闀塊櫎娉曞仛涓涓嬪彉鎹紝渚濈劧鏄疢 = 11100110錛孏 = 1011錛?br>鍏剁郴鏁皉涓?銆?br>
11001100 11100110000
------------- 1011
1011 )11100110000 -----------
1011....... 1010110000
----....... 1010110000
1010...... 1011
1011...... ===> -----------
----...... 001110000
1110... 1110000
1011... 1011
----... -----------
1010.. 101000
1011.. 101000
---- 1011
100 <---鏍¢獙鐮?nbsp; -----------
00100
100 <---鏍¢獙鐮?br>
紼嬪簭鍙互濡備笅瀹炵幇錛?br> 1)灝哅x^r鐨勫墠r浣嶆斁鍏ヤ竴涓暱搴︿負r鐨勫瘎瀛樺櫒錛?br> 2)濡傛灉瀵勫瓨鍣ㄧ殑棣栦綅涓?錛屽皢瀵勫瓨鍣ㄥ乏縐?浣?灝哅x^r鍓╀笅閮ㄥ垎鐨凪SB縐誨叆瀵勫瓨鍣ㄧ殑LSB)錛?br> 鍐嶄笌G鐨勫悗r浣嶅紓鎴栵紝鍚﹀垯浠呭皢瀵勫瓨鍣ㄥ乏縐?浣?灝哅x^r鍓╀笅閮ㄥ垎鐨凪SB縐誨叆瀵勫瓨鍣ㄧ殑LSB)錛?br> 3)閲嶅絎?姝ワ紝鐩村埌M鍏ㄩ儴Mx^r縐誨叆瀵勫瓨鍣紱
4)瀵勫瓨鍣ㄤ腑鐨勫煎垯涓烘牎楠岀爜銆?nbsp;
{
int i, j;
unsigned short crc_reg;
crc_reg = (message[0] << 8) + message[1];
for (i = 0; i < len; i++)
{
if (i < len - 2)
for (j = 0; j <= 7; j++)
{
if ((short)crc_reg < 0)
crc_reg = ((crc_reg << 1) + (message[i + 2] >> (7 - i))) ^ 0x1021;
else
crc_reg = (crc_reg << 1) + (message[i + 2] >> (7 - i));
}
else
for (j = 0; j <= 7; j++)
{
if ((short)crc_reg < 0)
crc_reg = (crc_reg << 1) ^ 0x1021;
else
crc_reg <<= 1;
}
}
return crc_reg;
}
{
int i, j;
unsigned short crc_reg = 0;
unsigned short current;
for (i = 0; i < len; i++)
{
current = message[i] << 8;
for (j = 0; j < 8; j++)
{
if ((short)(crc_reg ^ current) < 0)
crc_reg = (crc_reg << 1) ^ 0x1021;
else
crc_reg <<= 1;
current <<= 1;
}
}
return crc_reg;
}
{
int i, j;
unsigned short crc_reg = 0;
unsigned short current;
for (i = 0; i < len; i++)
{
current = message[i];
for (j = 0; j < 8; j++)
{
if ((crc_reg ^ current) & 0x0001)
crc_reg = (crc_reg >> 1) ^ 0x8408;
else
crc_reg >>= 1;
current >>= 1;
}
}
return crc_reg;
}
{
int i, j;
unsigned short crc_reg = 0;
unsigned char index;
unsigned short to_xor;
for (i = 0; i < len; i++)
{
index = (crc_reg ^ message[i]) & 0xff;
to_xor = index;
for (j = 0; j < 8; j++)
{
if (to_xor & 0x0001)
to_xor = (to_xor >> 1) ^ 0x8408;
else
to_xor >>= 1;
}
crc_reg = (crc_reg >> 8) ^ to_xor;
}
return crc_reg;
}
{
unsigned short crc_reg = 0;
while (len--)
crc_reg = (crc_reg >> 8) ^ crc16_ccitt_table[(crc_reg ^ *message++) & 0xff];
return crc_reg;
}
{
unsigned char index = 0;
unsigned short to_xor;
int i;
while (1)
{
if (!(index % 8))
printf("\n");
to_xor = index;
for (i = 0; i < 8; i++)
{
if (to_xor & 0x0001)
to_xor = (to_xor >> 1) ^ 0x8408;
else
to_xor >>= 1;
}
printf("0x%04x", to_xor);
if (index == 255)
{
printf("\n");
break;
}
else
{
printf(", ");
index++;
}
}
printf("};");
return 0;
}
{
0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
};
unsigned short code = do_crc(message, len);
騫朵笖鎸変互涓嬫柟寮忓彂閫佸嚭鍘伙細
message[len] = code & 0x00ff;
message[len + 1] = (code >> 8) & 0x00ff;
鎺ユ敹绔鏀跺埌鐨刲en + 2瀛楄妭鎵цdo_crc錛屽鏋滄病鏈夊樊閿欏彂鐢熷垯緇撴灉搴斾負0銆?/font>
4)娑堟伅(鍖呮嫭鏍¢獙鐮?浠?涓垨澶氫釜榪炵畫鐨?瀛楄妭緇撳熬錛屼涪鎺?涓垨澶氫釜0錛?
鏄劇劧錛岃繖鍑犵宸敊閮芥嫻嬩笉鍑烘潵錛屽叾鍘熷洜灝辨槸濡傛灉瀵勫瓨鍣ㄥ間負0錛屽鐞?娑堟伅瀛楄妭(鎴栦綅)錛屽瘎
瀛樺櫒鍊間笉鍙樸備負浜嗚В鍐沖墠2涓棶棰橈紝鍙渶瀵勫瓨鍣ㄧ殑鍒濆奸潪0鍗沖彲錛屽do_crc浣滀互涓嬫敼榪涳細
unsigned short do_crc(unsigned short reg_init, unsigned char *message, unsigned int len)
{
unsigned short crc_reg = reg_init;
while (len--)
crc_reg = (crc_reg >> 8) ^ crc16_ccitt_table[(crc_reg ^ *message++) & 0xff];
return crc_reg;
}
code ^= 0xffff;
message[len] = code & 0x00ff;
message[len + 1] = (code >> 8) & 0x00ff;
鏄劇劧錛岀幇鍦ㄦ帴鏀剁瀵規敹鍒扮殑鎵鏈夊瓧鑺傛墽琛宒o_crc錛屽鏋滄病鏈夊樊閿欏彂鐢熷垯緇撴灉搴斾負鏌愪竴甯稿?br>GOOD_CRC銆傚叾婊¤凍浠ヤ笅鍏崇郴錛?br> unsigned char p[]= {0xff, 0xff};
GOOD_CRC = do_crc(0, p, 2);
鍏剁粨鏋滀負GOOD_CRC = 0xf0b8銆?/font>
]]>
]]>
娉㈢壒鐜囪綆?/td>
涓銆佹柟寮?鐨勬嘗鐗圭巼
鏂瑰紡0鏃訛紝縐諱綅鏃墮挓鑴夊啿鐢?6(鍗崇6涓姸鎬佸懆鏈燂紝絎?2涓妭鎷?緇欏嚭錛屽嵆姣忎釜鏈哄櫒鍛ㄦ湡浜х敓涓涓Щ浣嶆椂閽燂紝鍙戦佹垨鎺ユ敹涓浣嶆暟鎹傛墍浠ワ紝娉㈢壒鐜囦負鎸崱棰戠巼鐨勫崄浜屽垎涔嬩竴錛屽茍涓嶅彈 PCON瀵勫瓨鍣ㄤ腑SMOD鐨勫獎鍝嶏紝鍗籌細
鏂瑰紡1鍜屾柟寮?鐨勭Щ浣嶆椂閽熻剦鍐茬敱瀹氭椂鍣═1鐨勬孩鍑虹巼鍐沖畾錛屾晠娉㈢壒瀹扮敱瀹氭椂鍣═1鐨?br>
婧㈠嚭鐜囦笌SMOD鍊煎悓鏃跺喅瀹氾紝鍗籌細
鏂瑰紡1鍜屾柟寮?鐨勬嘗鐗圭巼錛?SMOD/32·T1婧㈠嚭鐜?br>
鍏朵腑錛屾孩鍑虹巼鍙栧喅浜庤鏁伴熺巼鍜屽畾鏃跺櫒鐨勯緗箋傝鏁伴熺巼涓嶵MOD瀵勫瓨鍣ㄤ腑C錛廡鐨勭姸鎬佹湁鍏熾傚綋C錛廡錛?鏃訛紝璁℃暟閫熺巼錛漟osc錛?錛涘綋C錛廡錛?鏃訛紝璁℃暟閫熺巼鍙栧喅浜庡閮ㄨ緭鍏ユ椂閽熼鐜囥?br>
褰撳畾鏃跺櫒Tl浣滄嘗鐗圭巼鍙戠敓鍣ㄤ嬌鐢ㄦ椂錛岄氬父閫夌敤鍙嚜鍔ㄨ鍏ュ垵鍊兼ā寮?宸ヤ綔鏂瑰紡2)錛屽湪
宸ヤ綔鏂瑰紡2涓紝TLl浣滀負璁℃暟鐢紝鑰岃嚜鍔ㄨ鍏ョ殑鍒濆兼斁鍦═Hl涓紝璁捐鏁板垵鍊間負x錛屽垯姣忚繃“256涓x”涓満鍣ㄥ懆鏈燂紝瀹氭椂鍣═1灝變細浜х敓涓嬈℃孩鍑恒備負浜嗛伩鍏嶅洜婧㈠嚭鑰屽紩璧蜂腑鏂紝姝ゆ椂搴旂姝1涓柇銆傝繖鏃訛紝婧㈠嚭鍛ㄦ湡涓猴細

]]>
KEY=0x0f;
if((KEY&0x0f)!=0x0f)
return 1;
else return 0;
}
//綰垮弽杞硶 榪斿洖閿洏绱㈠紩
unsigned char KeyScan_XF(){
unsigned char r=0,c=0;
if(isKeyDown()){
delayms(20); //鍘繪姈鍔?/span>
if(isKeyDown()){
KEY=0x0f;
switch(KEY){
case 0x0e:c=0;break; //絎竴鍒?/span>
case 0x0d:c=1;break; //絎簩鍒?/span>
case 0x0b:c=2;break; //絎笁鍒?/span>
case 0x07:c=3;break; //絎洓鍒?/span>
default: break;
}
KEY=0xf0;//鐢靛鉤鍙嶅悜
switch(KEY){
case 0xe0:r=0;break; //絎竴琛?/span>
case 0xd0:r=1;break; //絎簩琛?/span>
case 0xb0:r=2;break; //絎笁琛?/span>
case 0x70:r=3;break; //絎洓琛?/span>
default: break;
}
while(!isKeyDown());// 鎸夐敭閲婃斁錛屽鐞嗛暱鎸?/span>
return r*4+c+1;
}
}
return 0;
}
//鏌ヨ娉?nbsp;榪斿洖閿洏绱㈠紩
unsigned char getRorC(){
KEY&=0x0F;
KEY|=0x70; //0111
if((KEY&0x0f)!=0x0f){
return 3;
}
KEY&=0x0f;
KEY|=0xB0; //1011
if((KEY&0x0f)!=0x0f){
return 2;
}
KEY&=0x0f;
KEY|=0xD0; //1101
if((KEY&0x0f)!=0x0f){
return 1;
}
KEY&=0x0f;
KEY|=0xE0; //1110
if((KEY&0x0f)!=0x0f){
return 0;
}
return -1;//impossible
}
unsigned char KeyScan_CS(){
unsigned char r=0,c=0;
if(isKeyDown()){
delayms(20); //鍘繪姈鍔?/span>
if(isKeyDown()){
switch(KEY){
case 0x0e:c=0;break;//絎竴鍒?/span>
case 0x0d:c=1;break;//絎簩鍒?/span>
case 0x0b:c=2;break;//絎笁鍒?/span>
case 0x07:c=3;break;//絎洓鍒?/span>
default:break;
}
r=getRorC();
return r*4+c+1;
}
}
KEY=0x0f;
return 0;
}
]]>
]]>
Flash ROM,瀵誨潃鑼冨洿000h-fffh=2^12=4k,瀛樻斁紼嬪簭浠g爜
RAM鍖?
00h-1fh,32涓瓧鑺?鍒?緇勫伐浣滃瘎瀛樺櫒錛屾瘡緇?涓瓧鑺?r0-r7,psw瀵勫瓨鍣≧S0,RS1 2浣嶆帶鍒朵嬌鐢ㄥ摢緇?
20h-2fh,16涓瓧鑺傞櫎浜嗕竴鑸琑AM鍔熻兘澶?鍙互瀵規瘡涓瓧鑺傝繘琛屼綅瀵誨潃,浠?0h鐨勭涓浣嶅埌2fh鐨勬渶鍚庝竴浣嶏紝鎬誨叡128浣?鏈夊浐瀹氱殑浣嶅湴鍧;
30h-7fh,80涓瓧鑺?鏅氱殑RAM鍖?br>80h-ffh,SPR鍖?鍏辯敤21涓壒孌婂瘎瀛樺櫒,姣忎釜瀵勫瓨鍣?浣?br>
瀵誨潃寮曡剼p0,p2,p0浣?浣嶏紝p2楂?浣?/span>
]]>
Proteus isis 鐨勫厓浠跺簱涓嫳瀵圭収
Proteus 鍏冧歡鍚嶇О瀵圭収1
鍏冧歡鍚嶇О 涓枃鍚?璇存槑
7407 椹卞姩闂?nbsp;
1N914 浜屾瀬綆?nbsp;
74Ls00 涓庨潪闂?nbsp;
74LS04 闈為棬
74LS08 涓庨棬
74LS390 TTL 鍙屽崄榪涘埗璁℃暟鍣?nbsp;
7SEG 4閽圔CD-LED 杈撳嚭浠?-9 瀵瑰簲浜?鏍圭嚎鐨凚CD鐮?
7SEG 3-8璇戠爜鍣ㄧ數璺疊CD-7SEG[size=+0]杞崲鐢佃礬
ALTERNATOR 浜ゆ祦鍙戠數鏈?nbsp;
AMMETER-MILLI mA瀹夊煿璁?nbsp;
AND 涓庨棬
BATTERY 鐢墊睜/鐢墊睜緇?nbsp;
BUS 鎬葷嚎
CAP 鐢靛
CAPACITOR 鐢靛鍣?nbsp;
CLOCK 鏃墮挓淇″彿婧?nbsp;
CRYSTAL 鏅舵尟
D-FLIPFLOP D瑙﹀彂鍣?nbsp;
FUSE 淇濋櫓涓?nbsp;
GROUND 鍦?nbsp;
LAMP 鐏?nbsp;
LED-RED 綰㈣壊鍙戝厜浜屾瀬綆?nbsp;
LM016L 2琛?6鍒楁恫鏅?鍙樉紺?琛?6鍒楄嫳鏂囧瓧絎︼紝鏈?浣嶆暟鎹葷嚎D0-D7錛孯S錛孯/W錛孍N涓変釜鎺у埗绔彛錛堝叡14綰匡級錛屽伐浣滅數鍘嬩負5V銆傛病鑳屽厜錛屽拰甯哥敤鐨?602B鍔熻兘鍜屽紩鑴氫竴鏍鳳紙闄や簡璋冭儗鍏夌殑浜屼釜綰胯剼錛?br>LOGIC ANALYSER 閫昏緫鍒嗘瀽鍣?nbsp;
LOGICPROBE 閫昏緫鎺㈤拡
LOGICPROBE[BIG] 閫昏緫鎺㈤拡 鐢ㄦ潵鏄劇ず榪炴帴浣嶇疆鐨勯昏緫鐘舵?
LOGICSTATE 閫昏緫鐘舵?鐢ㄩ紶鏍囩偣鍑?鍙敼鍙樿鏂規榪炴帴浣嶇疆鐨勯昏緫鐘舵?
LOGICTOGGLE 閫昏緫瑙﹀彂
MASTERSWITCH 鎸夐挳 鎵嬪姩闂悎,绔嬪嵆鑷姩鎵撳紑
MOTOR 椹揪
OR 鎴栭棬
POT-LIN 涓夊紩綰垮彲鍙樼數闃誨櫒
POWER 鐢墊簮
RES 鐢甸樆
RESISTOR 鐢甸樆鍣?nbsp;
SWITCH 鎸夐挳 鎵嬪姩鎸変竴涓嬩竴涓姸鎬?
SWITCH-SPDT 浜岄夐氫竴鎸夐挳
VOLTMETER 浼忕壒璁?nbsp;
VOLTMETER-MILLI mV浼忕壒璁?nbsp;
VTERM 涓茶鍙g粓绔?nbsp;
Electromechanical 鐢墊満
Inductors 鍙樺帇鍣?nbsp;
Laplace Primitives 鎷夋櫘鎷夋柉鍙樻崲
Memory Ics
Microprocessor Ics
Miscellaneous 鍚勭鍣ㄤ歡 AERIAL-澶╃嚎錛汚TAHDD錛汚TMEGA64錛汢ATTERY錛汣ELL錛汣RYSTAL-鏅舵尟錛汧USE錛汳ETER-浠〃錛?
Modelling Primitives 鍚勭浠跨湡鍣ㄤ歡 鏄吀鍨嬬殑鍩烘湰鍏冨櫒妯℃嫙錛屼笉琛ㄧず鍏蜂綋鍨嬪彿錛屽彧鐢ㄤ簬浠跨湡錛屾病鏈塒CB
Optoelectronics 鍚勭鍙戝厜鍣ㄤ歡 鍙戝厜浜屾瀬綆★紝LED錛屾恫鏅剁瓑絳?
PLDs & FPGAs
Resistors 鍚勭鐢甸樆
Simulator Primitives 甯哥敤鐨勫櫒浠?nbsp;
Speakers & Sounders
Switches & Relays 寮鍏籌紝緇х數鍣紝閿洏
Switching Devices 鏅墮槉綆?
Transistors 鏅朵綋綆★紙涓夋瀬綆★紝鍦烘晥搴旂錛?br>TTL 74 series
TTL 74ALS series
TTL 74AS series
TTL 74F series
TTL 74HC series
TTL 74HCT series
TTL 74LS series
TTL 74S series
Analog Ics 妯℃嫙鐢佃礬闆嗘垚鑺墖
Capacitors 鐢靛闆嗗悎
CMOS 4000 series
Connectors 鎺掑駭錛屾帓鎻?br>Data Converters ADC,DAC
Debugging Tools 璋冭瘯宸ュ叿
ECL 10000 Series
------------------------------------------------------------
PROTEUS鍏冧歡搴撳厓浠跺悕縐板強涓嫳瀵圭収
AND 涓庨棬
ANTENNA 澶╃嚎
BATTERY 鐩存祦鐢墊簮
BELL 閾?閽?
BVC 鍚岃醬鐢電紗鎺ユ彃浠?
BRIDEG 1 鏁存祦妗?浜屾瀬綆?
BRIDEG 2 鏁存祦妗?闆嗘垚鍧?
BUFFER 緙撳啿鍣?
BUZZER 铚傞福鍣?
CAP 鐢靛
CAPACITOR 鐢靛
CAPACITOR POL 鏈夋瀬鎬х數瀹?
CAPVAR 鍙皟鐢靛
CIRCUIT BREAKER 鐔旀柇涓?
COAX 鍚岃醬鐢電紗
CON 鎻掑彛
CRYSTAL 鏅朵綋鏁磋崱鍣?
DB 騫惰鎻掑彛
DIODE 浜屾瀬綆?
DIODE SCHOTTKY 紼沖帇浜屾瀬綆?
DIODE VARACTOR 鍙樺浜屾瀬綆?
DPY_3-SEG 3孌礚ED
DPY_7-SEG 7孌礚ED
DPY_7-SEG_DP 7孌礚ED(甯﹀皬鏁扮偣)
ELECTRO 鐢佃В鐢靛
FUSE 鐔旀柇鍣?
INDUCTOR 鐢墊劅
INDUCTOR IRON 甯﹂搧鑺數鎰?
INDUCTOR3 鍙皟鐢墊劅
JFET N N娌熼亾鍦烘晥搴旂
JFET P P娌熼亾鍦烘晥搴旂
LAMP 鐏場
LAMP NEDN 璧瘋緣鍣?
LED 鍙戝厜浜屾瀬綆?
METER 浠〃
MICROPHONE 楹﹀厠椋?
MOSFET MOS綆?
MOTOR AC 浜ゆ祦鐢墊満
MOTOR SERVO 浼烘湇鐢墊満
NAND 涓庨潪闂?
NOR 鎴栭潪闂?
NOT 闈為棬
NPN NPN涓夋瀬綆?
NPN-PHOTO 鎰熷厜涓夋瀬綆?
OPAMP 榪愭斁
OR 鎴栭棬
PHOTO 鎰熷厜浜屾瀬綆?
PNP 涓夋瀬綆?
NPN DAR NPN涓夋瀬綆?
PNP DAR PNP涓夋瀬綆?
POT 婊戠嚎鍙橀樆鍣?
PELAY-DPDT 鍙屽垁鍙屾幏緇х數鍣?
RES1.2 鐢甸樆
RES3.4 鍙彉鐢甸樆
RESISTOR BRIDGE ? 妗ュ紡鐢甸樆
RESPACK ? 鐢甸樆
SCR 鏅墮椄綆?
PLUG ? 鎻掑ご
PLUG AC FEMALE 涓夌浉浜ゆ祦鎻掑ご
SOCKET ? 鎻掑駭
SOURCE CURRENT 鐢墊祦婧?
SOURCE VOLTAGE 鐢靛帇婧?
SPEAKER 鎵0鍣?
SW ? 寮鍏?
SW-DPDY ? 鍙屽垁鍙屾幏寮鍏?
SW-SPST ? 鍗曞垁鍗曟幏寮鍏?
SW-PB 鎸夐挳
THERMISTOR 鐢電儹璋冭妭鍣?
TRANS1 鍙樺帇鍣?
TRANS2 鍙皟鍙樺帇鍣?
TRIAC ? 涓夌鍙屽悜鍙帶紜?
TRIODE ? 涓夋瀬鐪熺┖綆?
VARISTOR 鍙橀樆鍣?
ZENER ? 榻愮撼浜屾瀬綆?
DPY_7-SEG_DP 鏁扮爜綆?
SW-PB 寮鍏?nbsp;
----------------------------------------------------------------------
PROTEUS鍘熺悊鍥懼厓鍣ㄤ歡搴撹緇嗚鏄?
Device.lib 鍖呮嫭鐢甸樆銆佺數瀹廣佷簩鏋佺銆佷笁鏋佺鍜孭CB鐨勮繛鎺ュ櫒絎﹀彿
ACTIVE.LIB 鍖呮嫭铏氭嫙浠櫒鍜屾湁婧愬櫒浠?br>DIODE.LIB 鍖呮嫭浜屾瀬綆″拰鏁存祦妗?br>DISPLAY.LIB 鍖呮嫭LCD銆丩ED
BIPOLAR.LIB 鍖呮嫭涓夋瀬綆?br>FET.LIB 鍖呮嫭鍦烘晥搴旂
ASIMMDLS.LIB 鍖呮嫭妯℃嫙鍏冨櫒浠?br>VALVES .LIB 鍖呮嫭鐢靛瓙綆?br>ANALOG.LIB 鍖呮嫭鐢墊簮璋冭妭鍣ㄣ佽繍鏀懼拰鏁版嵁閲囨牱IC
CAPACITORS.LIB 鍖呮嫭鐢靛
COMS.LIB 鍖呮嫭 4000緋誨垪
ECL.LIB 鍖呮嫭ECL10000緋誨垪
MICRO.LIB 鍖呮嫭 閫氱敤寰鐞嗗櫒
OPAMP.LIB 鍖呮嫭 榪愮畻鏀懼ぇ鍣?br>RESISTORS.LIB 鍖呮嫭 鐢甸樆
FAIRCHLD .LIB 鍖呮嫭FAIRCHLD 鍗婂浣撳叕鍙哥殑鍒嗙珛鍣ㄤ歡
LINTEC.LIB 鍖呮嫭 LINTEC鍏徃鐨勮繍綆楁斁澶у櫒
NATDAC.LIB 鍖呮嫭 鍥藉鍗婂浣撳叕鍙哥殑鏁板瓧閲囨牱鍣ㄤ歡
NATOA.LIB 鍖呮嫭 鍥藉鍗婂浣撳叕鍙?鐨勮繍綆楁斁澶у櫒
TECOOR.LIB 鍖呮嫭TECOOR鍏徃鐨?SCR 鍜孴RIAC
TEXOAC.LIB 鍖呮嫭 寰峰窞浠櫒鍏徃鐨勮繍綆楁斁澶у櫒鍜屾瘮杈冨櫒
ZETEX .LIB 鍖呮嫭ZETEX 鍏徃鐨勫垎绔嬪櫒浠?
]]>
]]>
#include <intrins.h>
//鍒濆鍖?/span>
void init(){
//涓柇鍒濆鍖?br> //IE
EA=1;//涓柇鎬誨紑鍏?/span>
ET0=1;//瀹氭椂鍣?寮鍏?br>
//TCON
TF0=0;
TR0=1;
//TMOD
TMOD=0x01;//瀹氭椂鍣?浣跨敤,宸ヤ綔鏂瑰紡1
//鍒濆鍖栭緗?/span>
TH0=0x3C;//棰勫間負3c+b0=15536
TL0=0xB0;
//
P1=0x01;
}
void delay1s(){
#pragma asm
mov r5,#08h ;//1001.401ms
time1s_1: mov r6,#0f4h ;//125.173ms
time1s_2: mov r7,#0ffh ;//511us
djnz r7,$
djnz r6,time1s_2
djnz r5,time1s_1
#pragma endasm
}
void time0(void) interrupt 1 using 2{
delay1s();
#pragma asm
mov a,p1
rl a
mov p1,a
#pragma endasm
}
void main(void){
init();
while(1){};
}
鍒濆鍗曠墖鏈?璁頒笅瀛︿範璺▼
璺戠伅闂殑鏃墮棿闂撮殧涓嶆槸1s
鍐呴儴鍑芥暟 鎻忚堪
_crol_ 瀛楃寰幆宸︾Щ
_cror_ 瀛楃寰幆鍙崇Щ
_irol_ 鏁存暟寰幆宸︾Щ
_iror_ 鏁存暟寰幆鍙崇Щ
_lrol_ 闀挎暣鏁板驚鐜乏縐?br>_lror_ 闀挎暣鏁板驚鐜彸縐?br>_nop_ 絀烘搷浣?051 NOP 鎸囦護
_testbit_ 嫻嬭瘯騫舵竻闆朵綅8051 JBC 鎸囦護
]]>
COMPACT錛氭墍鏈夊彉閲忚瀹氫箟鍦ㄥ垎欏靛鍧鐨勭墖澶朮RAM涓紝姣忎竴欏電墖澶朮RAM鐨勯暱搴︿負256瀛楄妭銆傝繖鏃跺鍙橀噺鐨勮闂槸閫氳繃瀵勫瓨鍣ㄩ棿鎺ュ鍧錛圡OVX
@R0,MOVX
@R1錛夎繘琛岀殑錛屽彉閲忕殑浣?浣嶅湴鍧鐢盧0鍜孯1紜畾錛屽彉閲忕殑楂?浣嶅湴鍧鐢盤2鍙g‘瀹氥傞噰鐢ㄨ繖縐嶆ā寮忔椂錛屽繀欏婚傚綋鏀瑰彉閰嶇疆鏂囦歡STARTUP.A51涓殑鍙?
鏁幫細PDATASTART鍜孭DATALEN錛涘悓鏃惰繕蹇呴』瀵箄Vision2鐨?#8220;Options閫夐」/BL51 Locator
鏍囩欏?Pdata妗?#8221;涓敭鍏ュ悎閫傜殑鍦板潃鍙傛暟錛屼互紜繚P2鍙h兘杈撳嚭鎵闇瑕佺殑楂?浣嶅湴鍧銆傞噰鐢–OMPACT緙栬瘧妯″紡涓庡畾涔夊彉閲忔椂鎸囧畾pdata瀛樺偍鍣ㄧ被鍨?
鍏鋒湁鐩稿悓鏁堟灉銆?br>
LARGE錛氭墍鏈夊彉閲忚瀹氫箟鍦ㄧ墖澶朮RAM涓紙鏈澶у彲杈?4KB錛夛紝浣跨敤鏁版嵁鎸囬拡DPTR鏉ラ棿鎺ヨ闂彉閲忥紙MOVX
@DPTR錛夛紝榪欑緙栬瘧妯″紡瀵規暟鎹闂殑鏁堢巼鏈浣庯紝鑰屼笖灝嗗鍔犵▼搴忕殑浠g爜闀垮害銆傞噰鐢↙ARGE緙栬瘧妯″紡涓庡畾涔夊彉閲忔椂鎸囧畾xdata瀛樺偍鍣ㄧ被鍨嬪叿鏈夌浉鍚屾晥
鏋溿?#8221;
鎽樿嚜銆奒eil Cx51 V7.0鍗曠墖鏈洪珮綰ц璦緙栫▼涓巙Vision2搴旂敤瀹炶返銆?img src ="http://m.shnenglu.com/guojingjia2006/aggbug/121393.html" width = "1" height = "1" />
]]>