|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
單片機(jī)相關(guān)學(xué)習(xí)資料 |
| 作者:冷冷的雨 欄目:單片機(jī) |
ATMEL CORPORATION今天宣佈推出其新的基于單周期 8051 核心 (Single-Cycle 8051 Core) 的 AT89LP 系列。新的系列產(chǎn)品速度較標(biāo)準(zhǔn)的8051核心快12倍,這一新的系列拓展了現(xiàn)有 8051 FLASH 微控制器產(chǎn)品。 這些新設(shè)備針對要求低功耗并且需要在低成本的條件下實(shí)現(xiàn)高效能的應(yīng)用產(chǎn)品而進(jìn)行了最優(yōu)化。2.0V 至 5.5V 的寬工作電壓范圍適用于功率管理、大型家電以及電池驅(qū)動(dòng)的應(yīng)用產(chǎn)品。 AT89LP 中央處理器 (CPU) 進(jìn)行一次字節(jié)讀取僅需一個(gè)時(shí)鐘周期,而標(biāo)準(zhǔn) 8051 CPU 卻需要12個(gè)時(shí)鐘周期。AT89LP 核心在 20 MHz 的時(shí)鐘頻率下能達(dá)到 20 MIPS 的處理速度,而標(biāo)準(zhǔn)的8051架構(gòu)在 20 MHz 時(shí)的處理速度低于 2 MIPS。相反,新的 AT89LP 核心能夠以低得多的時(shí)鐘頻率提供與標(biāo)準(zhǔn)8051核心相同的 MIPS 處理速度,從而使能耗下降85%。 與標(biāo)準(zhǔn)8051指令組的二進(jìn)制兼容性使設(shè)計(jì)者能夠輕易地從多時(shí)鐘周期的8051設(shè)備輕松移植至 AT89LP 系列,同時(shí)無需花費(fèi)巨大且耗時(shí)的重新設(shè)計(jì)即可輕易更新其應(yīng)用性能。該系列設(shè)備使設(shè)計(jì)者有機(jī)會(huì)獲得更高的速度,或在維持軟硬體兼容性的同時(shí)顯著降低能耗。同時(shí),該設(shè)備幫助設(shè)計(jì)者透過降低工作頻率解決 EMC 問題。 AT89LP 系列包括具有2至 64KB 的系統(tǒng)內(nèi)可編程 FLASH 記憶體的設(shè)備,并且提供從14針、20針、28針至44針不等的多種封裝選擇。它們包含芯片上 DataFLASH(R)、10位 ADC、模擬比較器、脈沖寬度調(diào)節(jié)器、可編程的看門狗定時(shí)器、增強(qiáng)型通用異步收發(fā)器 (UART)、內(nèi)部 RC 振蕩器、非常適合功率管理的功能、發(fā)動(dòng)機(jī)控制以及工業(yè)控制應(yīng)用產(chǎn)品。 該系列最初的兩款設(shè)備為 AT89LP2052 與 AT89LP4052。AT89LP2052 與 AT89LP4052採用20針 PDIP、TSSOP和SOIC包裝,分別具有 2KB 和 4KB FLASH 代碼記憶體。此兩件設(shè)備與現(xiàn)有 AT89C2051 和 AT89C4051 針腳兼容。2005年生產(chǎn)的樣品已經(jīng)推出。批量為10,000個(gè)單位的 AT89LP2052 和 AT89LP4052 的單價(jià)分別為0.85美元和0.99美元。 |
| 2樓: | >>參與討論 |
| 作者: 冷冷的雨 于 2007/4/17 12:45:21 發(fā)布:
AT90S1200特點(diǎn)及功能簡述 這種結(jié)構(gòu)可以有效地支持高級語言編程,同時(shí)保持代碼密度緊湊。 |
|
| 3樓: | >>參與討論 |
| 作者: 冷冷的雨 于 2007/4/17 12:49:43 發(fā)布:
AT89C2051設(shè)計(jì)的PC/AT鍵盤
|
|
| 4樓: | >>參與討論 |
| 作者: 冷冷的雨 于 2007/4/17 12:51:59 發(fā)布:
全部程序如下所示: /* CRYSTAL IS 20MHZ, keycode clock is 12.5kHz,*/ KEY: DO; $NOLIST $INCLUDE (REG51.DCL) $LIST DECLARE WDI LITERALLY 'P3_0'; DECLARE SW1 LITERALLY 'P3_7'; DECLARE SW2 LITERALLY 'P1_0'; DECLARE SW3 LITERALLY 'P1_1'; DECLARE SW4 LITERALLY 'P1_2'; DECLARE SW5 LITERALLY 'P1_3'; DECLARE SW6 LITERALLY 'P1_4'; DECLARE SW7 LITERALLY 'P1_5'; DECLARE SW8 LITERALLY 'P1_6'; DECLARE KEY$DATA LITERALLY 'P3_1'; DECLARE KEY$CLK LITERALLY 'P1_7'; DECLARE (DK,KEY$CODE,PARITY,SHIFT$REG,NUMBER,DI,DN) BYTE; DECLARE (T0$INT) BIT; /******* INTERRUPT OF TIMER 1 ********/ TIMER1: PROCEDURE INTERRUPT 3 USING 1; DISABLE; WDI=1; DK=0; TH1=0BEH; TL1=0E6H; DN=800; IF SW1=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW1=0 THEN DK=1; KEY$CODE=5AH; /*Enter*/ PARITY=0FFH; END; IF SW2=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW2=0 THEN DO; DK=2; KEY$CODE=76H; /*Esc*/ PARITY=00H; END; IF SW3=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW3=0 THEN DK=3; KEY$CODE=75H; /*8/up*/ PARITY=00H; END; IF SW4=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW4=0 THEN DK=4; KEY$CODE=72H; /*2/down*/ PARITY=0FFH; END; IF SW5=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW5=0 THEN DK=5; KEY$CODE=06H; /*F2*/ PARITY=0FFH; END; IF SW6=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW6=0 THEN DK=6; KEY$CODE=04H; /*F3*/ PARITY=00H; END; IF SW7=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW7=0 THEN DK=7; KEY$CODE=0CH; /*F4*/ PARITY=0FFH; END; |
|
| 5樓: | >>參與討論 |
| 作者: 冷冷的雨 于 2007/4/17 12:53:49 發(fā)布:
IF SW8=0 THEN DO; DI=DN; DO WHILE DI> 0; DI=DI-1; END; IF SW8=0 THEN DK=8; KEY$CODE=05H; /*F1*/ PARITY=0FFH; END; WDI=0; DN=0; T1$RET: ENABLE; END; /****INTERRUPT OF TIMER 0****/ TIMER0: PROCEDURE INTERRUPT 1 USING 2; DISABLE; WDI=1; IF NUMBER=0 THEN DO; KEY$CLK=0; KEY$DATA=1; END; ELSE DO; KEY$CLK=1; DI=4; DO WHILE DI> 0; DI=DI-1; END; IF (SHIFT$REG AND 01H)=0 THEN KEY$DATA=0; IF (SHIFT$REG AND 01H)=1 THEN KEY$DATA=1; DI=4; DO WHILE DI> 0; DI=DI-1; END; KEY$CLK=0; NUMBER=NUMBER-1; END; T0$RET: T0$INT=1; WDI=0; ENABLE; END; /*************MAIN PROGRAM***********/ MAIN_PRG: SW1=1; /**** INIT PORT ****/ SW2=1; SW3=1; SW4=1; SW5=1; SW6=1; SW7=1; SW8=1; KEY$CLK=0; KEY$DATA=0; KEY$CODE=00H; PARITY=00H; SHIFT$REG=00H; NUMBER=11; T0$INT=0; DK=0; DI=0; DN=0; TMOD=10H; /*T1 MODE 1*/ IE=0C8H; /****T1 interrupt enable **** TCON=40H; /****T1 begin work ****/ TH1=0BEH; /*T1 100Hz */ TL1=0E6H; TH0=7BH; /*T0 16kHz*/ TL0=7BH; ENABLE; MAIN$LOOP: IF DK=0 THEN GOTO MAIN$END; TMOD=02H; /*T0 BEGIN WORK*/ IE=0C2H; /*T1 STOP WORK*/ TCON=10H; |
|
| 6樓: | >>參與討論 |
| 作者: 冷冷的雨 于 2007/4/17 12:58:42 發(fā)布:
T0$INT=0; SHIFT$REG=00H; WAIT1: IF T0$INT=0 THEN GOTO WAIT1; /*send S bit*/ T0$INT=0; SHIFT$REG=KEY$CODE; WAIT2: IF T0$INT=0 THEN GOTO WAIT2; /*send Key$code*/ SHIFT$REG=SHR(SHIFT$REG,1); T0$INT=0; IF NUMBER> 2 THEN GOTO WAIT2; SHIFT$REG=PARITY; WAIT3: IF T0$INT=0 THEN GOTO WAIT3; /*send parity bit*/ T0$INT=0; SHIFT$REG=0FFH; WAIT4: IF T0$INT=0 THEN GOTO WAIT4; /*send ST bit*/ T0$INT=0; DK=0; WAIT5: IF T0$INT=0 THEN GOTO WAIT5; /* KEY$CLK=0 for 300us*/ T0$INT=0; DK=DK+1; IF DK <4 THEN GOTO WAIT5; /****************SEND 0F0H**************/ KEY$CLK=1; KEY$DATA=1; T0$INT=0; DK=0; IE=00H; /*T0 STOP WORK*/ TCON=00H TMOD=10H; /*T1 BEGAN WORK*/ IE=0C8H; TCON=40H; TH1=0BEH; TL1=0E6H; CALL TIME(200); TMOD=02H; /*T0 BEGIN WORK*/ IE=0C2H; /*T1 STOP WORK*/ TCON=10H; T0$INT=0; NUMBER=11; T0$INT=0; SHIFT$REG=00H; WAIT11: IF T0$INT=0 THEN GOTO WAIT11; /*send S bit*/ T0$INT=0; SHIFT$REG=0F0H; WAIT12: IF T0$INT=0 THEN GOTO WAIT12; /*send 0F0H code*/ SHIFT$REG=SHR(SHIFT$REG,1); T0$INT=0; IF NUMBER> 2 THEN GOTO WAIT12; SHIFT$REG=0FFH; WAIT13: IF T0$INT=0 THEN GOTO WAIT13; /*send parity bit*/ T0$INT=0; SHIFT$REG=0FFH; WAIT14: IF T0$INT=0 THEN GOTO WAIT14; /*send ST bit*/ T0$INT=0; DK=0; WAIT15: IF T0$INT=0 THEN GOTO WAIT15; /* KEY$CLK=0 for 300us*/ T0$INT=0 DK=DK+1; IF DK <4 THEN GOTO WAIT15; /***************SEND KEY$CODE******************/ KEY$CLK=1; KEY$DATA=1; T0$INT=0; DK=0; IE=00H; /*T0 STOP WORK*/ TCON=00H; TMOD=10H; /*T1 BEGAN WORK*/ IE=0C8H; TCON=40H; TH1=0BEH; TL1=0E6H; CALL TIME(200); TMOD=02H; /*T0 BEGIN WORK*/ IE=0C2H; /*T1 STOP WORK*/ TCON=10H; T0$INT=0; NUMBER=11; T0$INT=0; SHIFT$REG=00H; WAIT21: IF T0$INT=0 THEN GOTO WAIT21; /*send S bit*/ T0$INT=0; SHIFT$REG=KEY$CODE; WAIT22: T0$INT=0 THEN GOTO WAIT22; /*send Key$code*/ SHIFT$REG=SHR(SHIFT$REG,1); T0$INT=0; IF NUMBER> 2 THEN GOTO WAIT22; SHIFT$REG=PARITY; WAIT23: IF T0$INT=0 THEN GOTO WAIT23; /*send parity bit*/ T0$INT=0; SHIFT$REG=0FFH; WAIT24: IF T0$INT=0 THEN GOTO WAIT24; /*send ST bit*/ T0$INT=0; DK=0; WAIT25: IF T0$INT=0 THEN GOTO WAIT25; /* KEY$CLK=0 for 300us*/ T0$INT=0; DK=DK+1; IF DK <4 THEN GOTO WAIT25; KEY$CLK=1; KEY$DATA=1; T0$INT=0; DK=0; IE=00H; /*T0 STOP WORK*/ TCON=00H; DO DI=1 TO 300; /*DELAY TIME*/ CALL TIME(20); END; MAIN$END: KEY$CLK=1; KEY$DATA=1; NUMBER=11; SHIFT$REG=0; GOTO MAIN$LOOP; END KEY; 本文介紹的PC/AT鍵盤具有結(jié)構(gòu)簡單、設(shè)計(jì)靈活性強(qiáng)、易于編程、體積小、成本低的特點(diǎn),并可 根據(jù)用戶需要隨意設(shè)計(jì)和布放,對使用工控機(jī)的各種測試與控制儀器具有通用性。 |
|
| 7樓: | >>參與討論 |
| 作者: pgb 于 2007/4/17 15:26:33 發(fā)布:
頂 頂 |
|
| 8樓: | >>參與討論 |
| 作者: 天籟之音 于 2007/5/1 21:47:39 發(fā)布:
汗............................ 程序怎么那么長滴?????????? |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |