DAI0061A_Byte_addressing Byte addresssing in ARM
標(biāo)簽: A_Byte_addressing addresssing 0061 Byte
上傳時(shí)間: 2017-09-27
上傳用戶:康郎
Byte-of-python-chinese-edition中文版python入門簡明教程
標(biāo)簽: Byte-of-python-chinese-edition
上傳時(shí)間: 2020-06-19
上傳用戶:piaolingzuo
主要特點(diǎn)管腳完全與三星9454兼容8位CISC型內(nèi)核(MC05)4K Byte OTP ROM208 Byte RAM3組IO口(最多可支持17個(gè)通用IO口和1個(gè)輸入口)1個(gè)PWM輸出1個(gè)8位基本定時(shí)器1個(gè)8位帶比較輸出的定時(shí)器1個(gè)10位ADC(9路輸入)2個(gè)外中斷、1個(gè)定時(shí)器中斷、1個(gè)PWM中斷看門狗復(fù)位功能3V低壓復(fù)位可選晶振/RC振蕩晶振400K-8MHzRC振蕩有3.2MHz(@5V,typ.)、8MHz(@5V,typ.)、外接電阻電容3種可選
上傳時(shí)間: 2013-11-05
上傳用戶:Jerry_Chow
The CAT25128 is a 128−Kb Serial CMOS EEPROM device internally organized as 16Kx8 bits. This features a 64−Byte page write buffer and supports the Serial Peripheral Interface (SPI) protocol. The device is enabled through a Chip Select (CS) input. In addition, the required bus signals are clock input (SCK), data input (SI) and data output (SO) lines. The HOLD input may be used to pause any serial communication with the CAT25128 device. The device featuressoftware and hardware write protection, including partial as well as full array protection.
標(biāo)簽: 25128 EEPRO CMOS CAT
上傳時(shí)間: 2013-11-15
上傳用戶:fklinran
AT89C2051驅(qū)動(dòng)步進(jìn)電機(jī)的電路和源碼:AT89C2051驅(qū)動(dòng)步進(jìn)電機(jī)的電路和源碼 程序:stepper.c stepper.hex/* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */#i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.hregister unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n;unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400/* flag1 mask Byte 0x01 run cw() 0x02 run ccw() */main(){ flag1=0; serinit(9600); disable(); /* no need timer interrupt */ cw_n = n; /* initial step number for cw */ flag1 |=0x01; /* initial enable cw() */while(1){ { tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw(); ccw(); } }}cw(){ if((flag1&0x01)!=0) { cw_n--; /* decrement cw step number */ if (cw_n !=0) j++; /* if not zero increment index j */ else {flag1&=~0x01; /* disable cw() execution */ ccw_n = n; /* reload step number to ccw counter */ flag1 |=0x02; /* enable cww() execution */ } }
上傳時(shí)間: 2013-11-21
上傳用戶:boyaboy
The PCA9544A provides 4 interrupt inputs, one for each channeland one open drain interrupt output. When an interrupt is generated byany device, it will be detected by the PCA9544A and the interruptoutput will be driven LOW. The channel need not be active fordetection of the interrupt. A bit is also set in the control Byte.Bits 4 – 7 of the control Byte correspond to channels 0 – 3 of thePCA9544A, respectively. Therefore, if an interrupt is generated byany device connected to channel 2, the state of the interrupt inputs isloaded into the control register when a read is accomplished.Likewise, an interrupt on any device connected to channel 0 wouldcause bit 4 of the control register to be set on the read. The mastercan then address the PCA9544A and read the contents of thecontrol Byte to determine which channel contains the devicegenerating the interrupt. The master can then reconfigure thePCA9544A to select this channel, and locate the device generatingthe interrupt and clear it. The interrupt clears when the deviceoriginating the interrupt clears.
標(biāo)簽: 4channel multiple 9544A 9544
上傳時(shí)間: 2014-12-28
上傳用戶:潛水的三貢
//芯片資料請到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
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實(shí)現(xiàn)編程的讀,寫,擦等細(xì)節(jié)//AT89C2051的特殊處:給XTAL一個(gè)脈沖,地址計(jì)數(shù)加1;P1的引腳排列與AT89C51相反,需要用函數(shù)轉(zhuǎn)換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準(zhǔn)備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結(jié)束后的工作,設(shè)置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} Byte GetData()//從P0口獲得數(shù)據(jù){ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(Byte DataByte)//轉(zhuǎn)換并設(shè)置P0口的數(shù)據(jù){ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(Byte Data)//寫器件{//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 //寫一個(gè)單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗(yàn):循環(huán)讀,直到讀出與寫入的數(shù)相同 { nTimeOut++; if(nTimeOut>1000)//超時(shí)了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個(gè)脈沖指向下一個(gè)單元//----------------------------------------------------------------------------- return 1;} Byte Read01()//讀器件{ Byte Data;//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 //讀一個(gè)單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個(gè)脈沖指向下一個(gè)單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設(shè)置成編程狀態(tài)//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設(shè)置pw中的函數(shù)指針,讓主程序可以調(diào)用上面的函數(shù){ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時(shí)間: 2013-11-12
上傳用戶:gut1234567
用C51寫的普通拼音輸入法源程序代碼:原作使用了一個(gè)二維數(shù)組用以查表,我認(rèn)為這樣比較的浪費(fèi)空間,而且每個(gè)字表的索引地址要手工輸入,效率不高。所以我用結(jié)構(gòu)體將其改寫了一下。就是大家現(xiàn)在看到的這個(gè)。 因?yàn)榇a比較的大,共有6,000多漢字,這樣就得要12,000 Byte來存放GB內(nèi)碼,所以也是沒辦法的.編譯結(jié)果約為3000h,因?yàn)榇蟛糠质撬饕恚a優(yōu)化幾乎無效。 在Keil C里仿真芯片選用的是華邦的W77E58,它有32k ROM, 256B on-chip RAM, 1K on-chip SRAM (用DPTR1指針尋址,相當(dāng)于有1K的片上xdata)。條件有限,沒有上片試驗(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
16 16點(diǎn)陣顯示漢字原理及顯示程序 #include "config.h" #define DOTLED_LINE_PORT PORTB #define DOTLED_LINE_DDR DDRB #define DOTLED_LINE_PIN PINB #define DOTLED_LINE_SCKT PB1 #define DOTLED_LINE_SCKH PB5 #define DOTLED_LINE_SDA PB3 #define DOTLED_ROW_PORT PORTC #define DOTLED_ROW_DDR DDRC #define DOTLED_ROW_PIN PINC #define DOTLED_ROW_A0 PC0 #define DOTLED_ROW_A1 PC1 #define DOTLED_ROW_A2 PC2 #define DOTLED_ROW_A3 PC3 #define DOTLED_ROW_E PC4 uint8 font[] = { /*-- 調(diào)入了一幅圖像:這是您新建的圖像 --*/ /*-- 寬度x高度=16x16 --*/ 0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10, 0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00 }; static void TransmitByte(uint8 Byte); static void SelectRow(uint8 row); static void FlipLatchLine(void); static void TransmitByte(uint8 Byte) { uint8 i; for(i = 0 ; i < 8 ; i ++) { if(Byte & (1 << i)) { DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA); } else { DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SDA); } //__delay_cycles(100); DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH); //__delay_cycles(100); DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKH); //__delay_cycles(100); } } static void SelectRow(uint8 row) { //row -= 1; row |= DOTLED_ROW_PIN & 0xe0; DOTLED_ROW_PORT = row; } static void FlipLatchLine(void) { DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT); DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT); } void InitDotLedPort(void) { DOTLED_LINE_PORT &= ~(_BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH)); DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA); DOTLED_LINE_DDR |= _BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH) | _BV(DOTLED_LINE_SDA); DOTLED_ROW_PORT |= 0x1f; DOTLED_ROW_PORT &= 0xf0; DOTLED_ROW_DDR |= 0x1f; } void EnableRow(boolean IsEnable) { if(IsEnable) { DOTLED_ROW_PORT &= ~_BV(DOTLED_ROW_E); } else { DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E); } } void PrintDotLed(uint8 * buffer) { uint8 i , tmp; for(i = 0 ; i < 16 ; i ++) { tmp = *buffer ++; TransmitByte(~tmp); tmp = *buffer ++; TransmitByte(~tmp); SelectRow(i); FlipLatchLine(); } } void main(void) { InitDotLedPort(); EnableRow(TRUE); while(1) { PrintDotLed(font); __delay_cycles(5000); } } //---------------------------------------------------- config.h文件 #ifndef _CONFIG_H #define _CONFIG_H //#define GCCAVR #define CPU_CYCLES 7372800L #ifndef GCCAVR #define _BV(bit) (1 << (bit)) #endif #define MSB 0x80 #define LSB 0x01 #define FALSE 0 #define TRUE 1 typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; typedef unsigned char boolean; #include <ioavr.h> #include <inavr.h> #include "dotled.h" #endif //-----
標(biāo)簽: 16 點(diǎn)陣顯示 漢字 顯示程序
上傳時(shí)間: 2013-11-18
上傳用戶:mnacyf
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1