The MC68HC05K0 is a low cost, low pin countsingle chip microcomputer with 504 bytes of userROM and 32 bytes of RAM. The MC68HC05K0 isa member of the 68HC05K series of devices whichare available in 16-pin DIL or SOIC packages.It uses the same CPU as the other devices in the68HC05 family and has the same instructions andregisters. Additionally, the device has a 15-stagemulti-function timer and 10 general purposebi-directional I/0 lines. A mask option is availablefor software programmable pull-downs on all ofthe I/O pins and four of the pins are capable ofgenerating interrupts.The device is ideally suited for remote-controlkeyboard applications because the pull-downs andthe interrupt drivers on the port pins allowkeyboards to be built without any externalcomponents except the keys themselves. There isno need for external pull-up or pull-down resistors,or diodes for wired-OR interrupts, as these featuresare already designed into the device.
標(biāo)簽: Infra-red Remote Cont 05K
上傳時(shí)間: 2014-01-24
上傳用戶:zl5712176
//芯片資料請(qǐng)到www.elecfans.com查找 //DS1820 C51 子程序//這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時(shí)的時(shí)間//sbit DQ =P2^1;//根據(jù)實(shí)際情況定義端口 typedef unsigned char byte;typedef unsigned int word; //延時(shí)void delay(word useconds){ for(;useconds>0;useconds--);} //復(fù)位byte ow_reset(void){ byte presence; DQ = 0; //pull DQ line low delay(29); // leave it low for 480us DQ = 1; // allow line to return high delay(3); // wait for presence presence = DQ; // get presence signal delay(25); // wait for end of timeslot return(presence); // presence signal returned} // 0=presence, 1 = no part //從 1-wire 總線上讀取一個(gè)字節(jié)byte read_byte(void){ byte i; byte value = 0; for (i=8;i>0;i--) { value>>=1; DQ = 0; // pull DQ low to start timeslot DQ = 1; // then return high delay(1); //for (i=0; i<3; i++); if(DQ)value|=0x80; delay(6); // wait for rest of timeslot } return(value);} //向 1-WIRE 總線上寫一個(gè)字節(jié)void write_byte(char val){ byte i; for (i=8; i>0; i--) // writes byte, one bit at a time { DQ = 0; // pull DQ low to start timeslot DQ = val&0x01; delay(5); // hold value for remainder of timeslot DQ = 1; val=val/2; } delay(5);} //讀取溫度char Read_Temperature(void){ union{ byte c[2]; int x; }temp; ow_reset(); write_byte(0xCC); // Skip ROM write_byte(0xBE); // Read Scratch Pad temp.c[1]=read_byte(); temp.c[0]=read_byte(); ow_reset(); write_byte(0xCC); //Skip ROM write_byte(0x44); // Start Conversion return temp.x/2;}
上傳時(shí)間: 2013-11-03
上傳用戶:hongmo
8051單片機(jī)教程:一臺(tái)能夠工作的計(jì)算機(jī)要有這樣幾個(gè)部份構(gòu)成:CPU(進(jìn)行運(yùn)算、控制)、RAM(數(shù)據(jù)存儲(chǔ))、ROM(程序存儲(chǔ))、輸入/輸出設(shè)備(例如:串行口、并行輸出口等)。在個(gè)人計(jì)算機(jī)上這些部份被分成若干塊芯片,安裝一個(gè)稱之為主板的印刷線路板上。而在單片機(jī)中,這些部份,全部被做到一塊集成電路芯片中了,所以就稱為單片(單芯片)機(jī),而且有一些單片機(jī)中除了上述部份外,還集成了其它部份如A/D,D/A等。 PC中的CPU一塊就要賣幾千塊錢,這么多東西做在一起,還不得買個(gè)天價(jià)!再說(shuō)這塊芯片也得非常大了。 不,價(jià)格并不高,從幾元人民幣到幾十元人民幣,體積也不大,一般用40腳封裝,當(dāng)然功能多一些單片機(jī)也有引腳比較多的,如68引腳,功能少的只有10多個(gè)或20多個(gè)引腳,有的甚至只8只引腳。為什么會(huì)這樣呢? 功能有強(qiáng)弱,打個(gè)比方,市場(chǎng)上面有的組合音響一套才賣幾百塊錢,可是有的一臺(tái)功放機(jī)就要賣好幾千。另外這種芯片的生產(chǎn)量很大,技術(shù)也很成熟,51系列的單片機(jī)已經(jīng)做了十幾年,所以價(jià)格就低了。 既然如此,單片機(jī)的功能肯定不強(qiáng),干嗎要學(xué)它呢? 話不能這樣說(shuō),實(shí)際工作中并不是任何需要計(jì)算機(jī)的場(chǎng)合都要求計(jì)算機(jī)有很高的性能,一個(gè)控制電冰箱溫度的計(jì)算機(jī)難道要用PIII?應(yīng)用的關(guān)鍵是看是否夠用,是否有很好的性能價(jià)格比。所以8051出來(lái)十多年,依然沒(méi)有被淘汰,還在不斷的發(fā)展中。 2、MCS51單片機(jī)和8051、8031、89C51等的關(guān)系我們平常老是講8051,又有什么8031,現(xiàn)在又有89C51,它們之間究竟是什么關(guān)系? MCS51是指由美國(guó)INTEL公司(對(duì)了,就是大名鼎鼎的INTEL)生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來(lái)的,所以人們習(xí)慣于用8051來(lái)稱呼MCS51系列單片機(jī),而8031是前些年在我國(guó)最流行的單片機(jī),所以很多場(chǎng)合會(huì)看到8031的名稱。INTEL公司將MCS51的核心技術(shù)授權(quán)給了很多其它公司,所以有很多公司在做以8051為核心的單片機(jī),當(dāng)然,功能或多或少有些改變,以滿足不同的需求,其中89C51就是這幾年在我國(guó)非常流行的單片機(jī),它是由美國(guó)ATMEL公司開發(fā)生產(chǎn)的。以后我們將用89C51來(lái)完成一系列的實(shí)驗(yàn)。
上傳時(shí)間: 2013-11-17
上傳用戶:crazyer
用C51寫的普通拼音輸入法源程序代碼:原作使用了一個(gè)二維數(shù)組用以查表,我認(rèn)為這樣比較的浪費(fèi)空間,而且每個(gè)字表的索引地址要手工輸入,效率不高。所以我用結(jié)構(gòu)體將其改寫了一下。就是大家現(xiàn)在看到的這個(gè)。 因?yàn)榇a比較的大,共有6,000多漢字,這樣就得要12,000 byte來(lái)存放GB內(nèi)碼,所以也是沒(méi)辦法的.編譯結(jié)果約為3000h,因?yàn)榇蟛糠质撬饕恚a優(yōu)化幾乎無(wú)效。 在Keil C里仿真芯片選用的是華邦的W77E58,它有32k ROM, 256B on-chip RAM, 1K on-chip SRAM (用DPTR1指針尋址,相當(dāng)于有1K的片上xdata)。條件有限,沒(méi)有上片試驗(yàn),仿真而已。 打算將其移植到AVR上,但CodeAVRC與IAR EC++在結(jié)構(gòu)體、指針的定義使用上似乎與C51不太一樣,現(xiàn)在還未搞定。還希望在這方面有經(jīng)驗(yàn)的網(wǎng)友能給予指導(dǎo)。 #include<stdio.h> char * py_ime(char *); void main(void){ while(1) { char input_string[]="yI"; xdata char chinese_string[255]; sprintf(chinese_string,"%s",py_ime(input_string)); }}
上傳時(shí)間: 2013-10-30
上傳用戶:cainaifa
單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過(guò)匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51 單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil 軟件是目前最流行開發(fā)MCS-51 系列單片機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil 即可看出。Keil 提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil 軟件需要Pentium 或以上的CPU,16MB或更多RAM、20M 以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51 系列單片機(jī)的愛好者來(lái)說(shuō)是十分必要的,如果你使用C 語(yǔ)言編程,那么Keil 幾乎就是你的不二之選(目前在國(guó)內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用C 語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。我們將通過(guò)一些實(shí)例來(lái)學(xué)習(xí)Keil 軟件的使用,在這一部份我們將學(xué)習(xí)如何輸入源程序,建立工程、對(duì)工程進(jìn)行詳細(xì)的設(shè)置,以及如何將源程序變?yōu)槟繕?biāo)代碼。圖1 所示電路圖使用89C51 單片機(jī)作為主芯片,這種單片機(jī)性屬于MCS-51 系列,其內(nèi)部有4K 的FLASH ROM,可以反復(fù)擦寫,非常適于做實(shí)驗(yàn)。89C51 的P1 引腳上接8 個(gè)發(fā)光二極管,P3.2~P3.4 引腳上接4 個(gè)按鈕開關(guān),我們的第一個(gè)任務(wù)是讓接在P1 引腳上的發(fā)光二極管依次循環(huán)點(diǎn)亮。 一、Keil 工程的建立首先啟動(dòng)Keil 軟件的集成開發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊uVision 的圖標(biāo)以啟動(dòng)該軟件。UVison啟動(dòng)后,程序窗口的左邊有一個(gè)工程管理窗口,該窗口有3 個(gè)標(biāo)簽,分別是Files、Regs、和Books,這三個(gè)標(biāo)簽頁(yè)分別顯示當(dāng)前項(xiàng)目的文件結(jié)構(gòu)、CPU 的寄存器及部份特殊功能寄存器的值(調(diào)試時(shí)才出現(xiàn))和所選CPU 的附加說(shuō)明文件,如果是第一次啟動(dòng)Keil,那么這三個(gè)標(biāo)簽頁(yè)全是空的。
上傳時(shí)間: 2013-12-26
上傳用戶:liulinshan2010
在偉福集成環(huán)境下使用PICC.講述在偉福集成環(huán)境如可設(shè)置PICC, 簡(jiǎn)單的調(diào)試步驟. 更詳細(xì)的說(shuō)明請(qǐng)參閱偉福仿真器使用手冊(cè).關(guān)于如何在MPLAB 下使用PICC C 語(yǔ)言, 請(qǐng)參閱Microchip 相應(yīng)的手冊(cè). 2-1 安裝PICC將CD-ROM 裝入光驅(qū), 自動(dòng)運(yùn)行程序?qū)⒆詣?dòng)啟動(dòng), 如果你已禁止自動(dòng)運(yùn)行功能, 可以直接運(yùn)行: cd_drive:\compiler\install.exe安裝程序?qū)⒅笇?dǎo)你完成PICC 的安裝.2-2 設(shè)置偉福集成環(huán)境在偉福集成環(huán)境中, 將編譯器路徑指向PICC 所在目錄將C命令行設(shè)置為: -16F877 –G –O –Zg -c將連接命令行設(shè)置為: -16F877 –G –O -Zg其中: -16F877 為芯片型號(hào)–G –O -c 為源程序調(diào)試設(shè)置項(xiàng), 不可修改–Zg 為打開優(yōu)化你可以在命令行中加入其它控制項(xiàng)2-3 調(diào)試C語(yǔ)言在WAVE\SAMPLES 目錄下有一個(gè)PIC C 語(yǔ)言的例子程序: PIC_C.PRJ.1. 打開PIC_C 項(xiàng)目.2. 編譯該項(xiàng)目(F9)3. 用F7,F8 單步調(diào)試?yán)映绦颍? 打開觀察窗口觀察變量
標(biāo)簽: PICC 集成環(huán)境
上傳時(shí)間: 2013-10-16
上傳用戶:lili123
晶振:12M TEMPER_L EQU 36H TEMPER_H EQU 35H TEMPER_NUM EQU 60H FLAG1 BIT 00H DQ BIT P3.3AAA:MOV SP,#70H LCALL GET_TEMPER LCALL TEMPER_COV LJMP AAA NOP ;------------------讀出轉(zhuǎn)換后的溫度值 GET_TEMPER: SETB DQ ; 定時(shí)入口 BCD:LCALL INIT_1820 JB FLAG1,S22 LJMP BCD ; 若DS18B20不存在則返回S22:LCALL DELAY1 MOV A,#0CCH ; 跳過(guò)ROM匹配------0CC LCALL WRITE_1820 MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_1820 NOP LCALL DELAY LCALL DELAY CBA:LCALL INIT_1820 JB FLAG1,ABC LJMP CBA ABC:LCALL DELAY1 MOV A,#0CCH ; 跳過(guò)ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 發(fā)出讀溫度命令 LCALL WRITE_1820 LCALL READ_18200 ;READ_1820 RET ;------------------讀DS18B20的程序,從DS18B20中讀出一個(gè)字節(jié)的數(shù)據(jù) READ_1820: MOV R2,#8 RE1: CLR C
上傳時(shí)間: 2013-10-09
上傳用戶:heart_2007
6.1 存儲(chǔ)器概述1、存儲(chǔ)器定義 在微機(jī)系統(tǒng)中凡能存儲(chǔ)程序和數(shù)據(jù)的部件統(tǒng)稱為存儲(chǔ)器。2、存儲(chǔ)器分類 微機(jī)系統(tǒng)中的存儲(chǔ)器分為內(nèi)存和外存兩類。3、內(nèi)存儲(chǔ)器的組成 微機(jī)系統(tǒng)中的存儲(chǔ)器由半導(dǎo)體存儲(chǔ)器芯片組成。 單片機(jī)內(nèi)部有存儲(chǔ)器,當(dāng)單片機(jī)內(nèi)部的存儲(chǔ)器不夠用時(shí),可以外擴(kuò)存儲(chǔ)器。外擴(kuò)的存儲(chǔ)器就是由半導(dǎo)體存儲(chǔ)器芯片組成的。 當(dāng)用半導(dǎo)體存儲(chǔ)器芯片組成內(nèi)存時(shí)必須滿足個(gè)要求:①每個(gè)存儲(chǔ)單元一定要有8個(gè)位。②存儲(chǔ)單元的個(gè)數(shù)滿足系統(tǒng)要求。注意:內(nèi)存的容量是指它所含存儲(chǔ)單元的個(gè)數(shù)(每個(gè)存儲(chǔ)單元一定要有8個(gè)位,可以存儲(chǔ)8位二進(jìn)制信息)。6.2 半導(dǎo)體存儲(chǔ)器由于集成工藝水平的限制,一個(gè)半導(dǎo)體存儲(chǔ)器芯片上所集成的單元個(gè)數(shù)和每個(gè)單元的位數(shù)有限,用它構(gòu)成內(nèi)存時(shí)必須滿足:內(nèi)存容量和一個(gè)存儲(chǔ)單元有8個(gè)位的要求,因此內(nèi)存常常由多個(gè)半導(dǎo)體存儲(chǔ)器芯片構(gòu)成。 半導(dǎo)體存儲(chǔ)器芯片的存儲(chǔ)容量是指其上所含的基本存儲(chǔ)電路的個(gè)數(shù),用單元個(gè)數(shù)×位數(shù)表示。掌握:① 已知內(nèi)存容量和半導(dǎo)體存儲(chǔ)器芯片的容量,求用半導(dǎo)體存儲(chǔ)器芯片構(gòu)成內(nèi)存時(shí)需要的芯片個(gè)數(shù)。② 內(nèi)存的容量=末地址—首地址+1 半導(dǎo)體存儲(chǔ)器芯片分成ROM和RAM兩類。6.2.1 ROM芯片6.2.2 RAM芯片6.3 MCS-51單片機(jī)存儲(chǔ)器擴(kuò)展 在微機(jī)系統(tǒng)中存儲(chǔ)器是必不可少。MCS51系列單片機(jī)內(nèi)部的存儲(chǔ)器不夠用時(shí)需要外擴(kuò)半導(dǎo)體存儲(chǔ)器芯片,外擴(kuò)的半導(dǎo)體存儲(chǔ)器芯片與MCS51系列單片機(jī)通過(guò)三總線交換信息。二者連接時(shí)必須考慮如下問(wèn)題:1.二者地址線、數(shù)據(jù)線、控制線的連接。2.工作速度的匹配。CPU在取指令和存儲(chǔ)器讀或?qū)懖僮鲿r(shí),是有固定時(shí)序的,用戶要根據(jù)這些來(lái)確定對(duì)存儲(chǔ)器存取速度的要求,或在存儲(chǔ)器已經(jīng)確定的情況下,考慮是否需要Tw周期,以及如何實(shí)現(xiàn)。3.片選信號(hào)的產(chǎn)生。目前生產(chǎn)的存儲(chǔ)器芯片,單片的容量仍然是有限的,通常總是要由許多片才能組成一個(gè)存儲(chǔ)器,這里就有一個(gè)如何產(chǎn)生片選信號(hào)的問(wèn)題。4.CPU的驅(qū)動(dòng)能力 。在設(shè)計(jì)CPU芯片時(shí),一般考慮其輸出線的直流負(fù)載能力,為帶一個(gè)TTL負(fù)載。現(xiàn)在的存儲(chǔ)器一般都為MOS電路,直流負(fù)載很小,主要的負(fù)載是電容負(fù)載,故在小型系統(tǒng)中,CPU是可以直接與存儲(chǔ)器相連的,而較大的系統(tǒng)中,若CPU的負(fù)載能力不能滿足要求,可以(就要考慮CPU能否帶得動(dòng),需要時(shí)就要加上緩沖器,)由緩沖器的輸出再帶負(fù)載。6.3.1 ROM芯片的擴(kuò)展6.3.2 RAM芯片的擴(kuò)展
標(biāo)簽: 存儲(chǔ)器接口
上傳時(shí)間: 2013-11-22
上傳用戶:moerwang
1.1 微機(jī)系統(tǒng)的組成 1.1.1 微機(jī)系統(tǒng)的硬件組成1.1.2 單片機(jī)系統(tǒng)的硬件組成1.1.3 微機(jī)系統(tǒng)的軟件組成1.2 MCS-51系列單片機(jī)1.2.1 MCS-51系列單片機(jī)的分類常用的MCS51系列單片機(jī)有2種類型的產(chǎn)品:8051/8751/89C51和8031。它們的結(jié)構(gòu)基本相同,其主要差別反映在存儲(chǔ)器的配置上的不同: ① 8051內(nèi)設(shè)有4KB的掩膜ROM。 ② 8751內(nèi)設(shè)有4KB的EPROM。 ③ 89C51內(nèi)設(shè)有4KB的E2PROM 。 ④ 8031內(nèi)沒(méi)有ROM。 1.2.2 MCS- 51系列單片機(jī)的結(jié)構(gòu)1.2.3 MCS- 51系列單片機(jī)的引腳
標(biāo)簽: 接口技術(shù)
上傳時(shí)間: 2013-11-24
上傳用戶:wmwai1314
單片機(jī)基礎(chǔ)知識(shí)單片機(jī)的外部結(jié)構(gòu):1、 DIP40雙列直插;2、 P0,P1,P2,P3四個(gè)8位準(zhǔn)雙向I/O引腳;(作為I/O輸入時(shí),要先輸出高電平)3、 電源VCC(PIN40)和地線GND(PIN20);4、 高電平復(fù)位RESET(PIN9);(10uF電容接VCC與RESET,即可實(shí)現(xiàn)上電復(fù)位)5、 內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、 程序配置EA(PIN31)接高電平VCC;(運(yùn)行單片機(jī)內(nèi)部ROM中的程序)7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機(jī)內(nèi)部I/O部件:(所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程控制以下I/O部件,完成指定任務(wù))1、 四個(gè)8位通用I/O端口,對(duì)應(yīng)引腳P0、P1、P2和P3;2、 兩個(gè)16位定時(shí)計(jì)數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、 一個(gè)串行通信接口;(SCON,SBUF)4、 一個(gè)中斷控制器;(IE,IP)針對(duì)AT89C52單片機(jī),頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書的160頁(yè)給出了針對(duì)MCS51系列單片機(jī)的C語(yǔ)言擴(kuò)展變量類型。 C語(yǔ)言編程基礎(chǔ):1、 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010B;0x6E為01101110。2、 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。3、 ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。4、 x |= 0x0f;表示為 x = x | 0x0f;5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。6、 While( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;}第一章 單片機(jī)最小應(yīng)用系統(tǒng):?jiǎn)纹瑱C(jī)最小系統(tǒng)的硬件原理接線圖:1、 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、 接晶體:X1(PIN18)、X2(PIN19)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF3、 接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動(dòng)復(fù)位電路,分析復(fù)位工作原理4、 接配置:EA(PIN31)。說(shuō)明原因。第二章 基本I/O口的應(yīng)用第三章 顯示驅(qū)動(dòng)第七章 串行接口應(yīng)用
標(biāo)簽: 單片機(jī)
上傳時(shí)間: 2013-10-30
上傳用戶:athjac
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1