www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] #include#define BAUD 9600 //波特率4800#define CRYSTAL 3686400 //晶振3M#define BAUD_set (unsigned int)( (unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1 ) //波特率計(jì)算#define BAUD_H (unsi

#include

#define BAUD 9600 //波特率4800
#define CRYSTAL 3686400 //晶振3M
#define BAUD_set (unsigned int)( (unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1 ) //波特率計(jì)算
#define BAUD_H (unsigned char)(BAUD_set>>8) //波特率寄存器
#define BAUD_L (unsigned char)(BAUD_set)

/*
//GPRS
#define GPRS_ONOFFH PORTA|=(1<#define GPRS_ONOFFL PORTA&=~(1<#define GPRS_RSTH PORTB|=(1<#define GPRS_RSTL PORTB&=~(1<


//通訊燈
#defineLED1H PORTC|=(1<#define LED1L PORTC&=~(1<#define LED2H PORTC|=(1<#define LED2L PORTC&=~(1<#define LED3H PORTC|=(1<#define LED3L PORTC&=~(1<*/

//25256
#define EEPROM_CSH PORTD|=(1<#define EEPROM_CSL PORTD&=~(1<#define EEPROM_WPH PORTD|=(1<#define EEPROM_WPL PORTD&=~(1<

#define SPIF 7


//////////////////////USRT0,USTR1 begin//////////////////////////
/////////////////////////////////////串口begin///////////////////////////////////////////
//串口0初始化
void USART0_Init()
{
UCSR0B = (1 << RXCIE0) | /*接收完成中斷允許*/
// (1 << TXCIE0) | /*發(fā)送完成中斷允許*/
(1 << RXEN0) | /*接收允許*/
(1 << TXEN0); /*發(fā)送允許*/
UBRR0H = BAUD_H; //設(shè)置波特率
UBRR0L = BAUD_L;
UCSR0C = (1 << URSEL0) | /*選擇訪問(wèn)UCSRC寄存器*/
(3 << UCSZ00); /*UCSZ2 UCSZ1 UCSZ0=3 8個(gè)數(shù)據(jù)位*/
}


//串口1初始化
void USART1_Init()
{
UCSR1B = (1 << RXCIE1) | /*接收完成中斷允許*/
// (1 << TXCIE1) | /*發(fā)送完成中斷允許*/
(1 << RXEN0) | /*接收允許*/
(1 << TXEN0); /*發(fā)送允許*/
UBRR1H = BAUD_H; //設(shè)置波特率
UBRR1L = BAUD_L;
UCSR1C = (1 << URSEL1) | /*選擇訪問(wèn)UCSRC寄存器*/
(3 << UCSZ10); /*UCSZ2 UCSZ1 UCSZ0=3 8個(gè)數(shù)據(jù)位*/
}


//串口0查詢方式發(fā)送數(shù)據(jù)
void USART0_Transmit(unsigned char data)
{
while(!(UCSR0A&(1< /*等待發(fā)送緩沖器為空。UDRE數(shù)據(jù)寄存器空標(biāo)志位,
當(dāng)發(fā)送緩沖器空時(shí)被置1;發(fā)送緩沖器包含需要發(fā)送的數(shù)據(jù)時(shí)清零*/
UDR0=data; //將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)
}


//串口1查詢方式發(fā)送數(shù)據(jù)
void USART1_Transmit(unsigned char data)
{
while(!(UCSR1A&(1< /*等待發(fā)送緩沖器為空。UDRE數(shù)據(jù)寄存器空標(biāo)志位,
當(dāng)發(fā)送緩沖器空時(shí)被置1;發(fā)送緩沖器包含需要發(fā)送的數(shù)據(jù)時(shí)清零*/
UDR1=data; //將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)
}

/*
//發(fā)送GPRS命令給手機(jī)模塊
void USART1_Tx_Str(char *s,unsigned char cnt)
{
while(cnt--)
{
USART1_Transmit(*s);
s++;
}
}
*/
/////////////////////////////////////////////串口end/////////////////////////////////////


/*
unsigned char usart0_receive(void)
{
while(!(UCSR0A&(1<return UDR0; //從緩沖器中獲取并返回?cái)?shù)據(jù)
}
*/

////////////////////////USRT1,USRT2 end///////////////////////


///////////////////////////////////////////GPRS begin////////////////////////////////////
//延時(shí)ms
/*
void delayms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i for(j=0;j<3500;j++) ;
}


//GPRS開機(jī)
void GPRS_On()
{
GPRS_RSTH; GPRS_ONOFFH; delayms(20);
GPRS_RSTL; delayms(10);
GPRS_ONOFFL;LED1L;LED2L;LED3L;delayms(1800);
GPRS_ONOFFH;LED1H;LED2H;LED3H;delayms(200);
LED1L;LED2L;
}


//GPRS關(guān)機(jī)
void GPRS_Off()
{
GPRS_ONOFFL;delayms(1800);
GPRS_ONOFFH;delayms(5000);
GPRS_RSTL;
}


//GPRS復(fù)位
void GPRS_Rst()
{
GPRS_Off();
GPRS_On();
}
*/
////////////////////////////////////////GPRS end/////////////////////////////////////////


////////////////////////////////////eeprom begin//////////////////////////////////////
void SPI_MasterInit(void)
{
EEPROM_WPH;
delayms(20);
SPCR =(1</*
使能SPI,選擇主機(jī)模式,SCK=fosc/128,選擇SPI模式CPOL=0,CPHA=0
*/
}

unsigned char SPI_MasterTransmit(unsigned char cData)
{
//啟動(dòng)數(shù)據(jù)傳輸
SPDR = cData;
//等待數(shù)據(jù)傳輸結(jié)束
while(!(SPSR&(1<//發(fā)送完成后,清除發(fā)送標(biāo)志
// SPSR&=~(1< return SPDR;
//每次發(fā)送數(shù)據(jù)的同時(shí),也會(huì)接收到數(shù)據(jù)。
}

//EEPROM寫使能
void EEPROM_WREN()
{
EEPROM_CSL; //拉低片選端
SPI_MasterTransmit(0x06); //0x06為寫使能的指令
EEPROM_CSH; //抬高片選端,結(jié)束
}

//EEPROM寫禁止
void EEPROM_WRDI()
{
EEPROM_CSL;//delayms(20);
SPI_MasterTransmit(0x04); //0x04為寫禁止的指令
EEPROM_CSH;//delayms(20);
}

//寫狀態(tài)寄存器
void EEPROM_WRSR()
{
EEPROM_WREN();
EEPROM_CSL; //使能
SPI_MasterTransmit(0x01); //0x01為寫狀態(tài)寄存器的指令
SPI_MasterTransmit(0x82); //把0x82寫入狀態(tài)寄存器
EEPROM_CSH; //抬高片選,結(jié)束
}

/*
讀狀態(tài)寄存器。讀SPI從機(jī)數(shù)據(jù)時(shí),主機(jī)要給從機(jī)發(fā)送任意數(shù)據(jù),才能收到從機(jī)返回的數(shù)據(jù).
即0x00可以是任何數(shù)據(jù)(但是不能是25256的指令,例如0x01,0x04之類的)
*/
unsigned char EEPROM_RDSR()
{
unsigned char StatusReg;
EEPROM_WREN();
// EEPROM_WRDI(); //如使用此句,不使用EEPROM_WREN(),則讀出0x80
EEPROM_CSL; //使能
SPI_MasterTransmit(0x05); //0x05為讀狀態(tài)寄存器指令
StatusReg=SPI_MasterTransmit(0x00); //給25256發(fā)送任意數(shù)據(jù)
/*
此處原為:
SPDR = 0x00;
while(!(SPSR&(1<StatusReg=SPDR;
時(shí)出錯(cuò),讀出數(shù)據(jù)都為0xff。想不清楚為什么
*/
EEPROM_CSH;
return StatusReg;
}

//25256字節(jié)寫
void EEPROM_ByteWrite(unsigned int Address,unsigned char Data)
{
EEPROM_WREN();
EEPROM_CSL; //使能
SPI_MasterTransmit(0x02); //0x02為寫指令
SPI_MasterTransmit(Address/256); //地址高位
SPI_MasterTransmit(Address%256); //地址低位
SPI_MasterTransmit(Data); //寫入數(shù)據(jù)
EEPROM_CSH;delayms(50);
}

//25256頁(yè)寫。試驗(yàn)結(jié)果,只能連續(xù)寫入三個(gè)字節(jié)
void EEPROM_PageWrite(unsigned int Address,unsigned char *Data,unsigned char NData)
{
unsigned char i;
EEPROM_WREN();
EEPROM_CSL;
SPI_MasterTransmit(0x02);//頁(yè)寫指令
SPI_MasterTransmit(Address/256); //地址高位
SPI_MasterTransmit(Address%256); //地址低位
for(i=0;i {
SPI_MasterTransmit(*Data); //寫入數(shù)據(jù)
Data++;
}
EEPROM_CSH;
}

//25256讀
unsigned char EEPROM_Read(unsigned int Address)
{
unsigned char dataa;
EEPROM_CSL; //使能
SPI_MasterTransmit(0x03); //0x03為讀25256的指令
SPI_MasterTransmit(Address/256); //地址高位
SPI_MasterTransmit(Address%256); //地址低位
dataa=SPI_MasterTransmit(0x00);//發(fā)送任意數(shù)據(jù)
EEPROM_CSH;
return dataa; //返回讀到的數(shù)據(jù)
}
////////////////////////////////////eeprom end////////////////////////////////////////


//端口初始化
void Port_Init()
{
PORTA=0xff;
DDRA=0x30; //PA4,PA5輸出1
PORTB=0xbf;
DDRB=0xb7; //PB1輸出1,PB2輸出1,PB3輸入0,PB4輸出1,PB0輸出1(用于新終端開關(guān)電源控制),PB5PB7為輸出1
PORTC=0xff;
DDRC=0xd0; //PC4輸出1,PC6,PC7輸出1
PORTD=0xff;
DDRD=0x26; //PD0輸入0,PD1輸出1,PD5PD2輸出1
}


void main(void)
{
// unsigned char dataa,i,j;
SREG=0x80; //開放全局中斷
Port_Init();
USART0_Init();
USART1_Init();
// GPRS_On();
SPI_MasterInit();EEPROM_WRSR();

while(1)
{
USART0_Transmit(0x22);
USART0_Transmit(0x33);
EEPROM_ByteWrite(0x2030,0x48); //給25256地址0x2030寫入數(shù)據(jù)0x48
USART0_Transmit(EEPROM_Read(0x2010));
USART0_Transmit(EEPROM_Read(0x2030));//讀出地址0x2030中數(shù)據(jù),從串口0發(fā)送出來(lái)
USART0_Transmit(0x44);
USART0_Transmit(0x55);
USART0_Transmit(EEPROM_RDSR());
EEPROM_PageWrite(0x1001,"456789",6); //輸出結(jié)果0xff,0xff,0xff,0x37,0x38,0x39
USART0_Transmit(EEPROM_Read(0x1001));
USART0_Transmit(EEPROM_Read(0x1002));
USART0_Transmit(EEPROM_Read(0x1003));
USART0_Transmit(EEPROM_Read(0x1004));
USART0_Transmit(EEPROM_Read(0x1005));
USART0_Transmit(EEPROM_Read(0x1006));
USART0_Transmit(0x11);
}
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

P430顱內(nèi)出血檢測(cè)設(shè)備的研制策略 1 引言 在中國(guó)有許多因創(chuàng)傷性顱腦損傷的患者急需搶救,但相當(dāng)一部分顱內(nèi)出血患者因未能及時(shí)診斷,延誤了搶救和治療時(shí)機(jī).因而出現(xiàn)腦血腫或腦疝后壓

關(guān)鍵字: 單片機(jī) LCD 醫(yī)療設(shè)備 eeprom

1 前言   近年來(lái),數(shù)字化電視技術(shù)迅猛發(fā)展,特別是遙控系統(tǒng)的面市,各廠商在電視機(jī)中加人微處理器(MCU),各種人工智能化彩電完全替代了老式電視手動(dòng)(機(jī)械式)控制和記憶方式。隨著電視專用

關(guān)鍵字: eeprom 串行通信 i2c總線

物聯(lián)網(wǎng)(IoT)沒有表現(xiàn)出短期流行的跡象。每一新應(yīng)用都添加許多端點(diǎn)到互聯(lián)網(wǎng)。不同的無(wú)線技術(shù)激增,在大部分射頻(RF)頻譜運(yùn)行,就是最好的證明。 工程師在對(duì)廣泛的IoT端點(diǎn)進(jìn)行調(diào)

關(guān)鍵字: eeprom RFID 物聯(lián)網(wǎng)

通過(guò)在單個(gè)器件中集成EEPROM存儲(chǔ)和RFID聯(lián)接,工程師可以設(shè)計(jì)IoT端點(diǎn),使其可存儲(chǔ)工作數(shù)據(jù)并與服務(wù)工程師通信,即使電源故障或完全斷電。 這呈現(xiàn)了服務(wù)和維護(hù)的全新范例,并且完全適用于IoT。

關(guān)鍵字: eeprom RFID 電源資訊

24C02:256 個(gè)字節(jié)的 EEPROM。一般情況下,EEPROM 擁有 30 萬(wàn)到 100 萬(wàn)次的壽命?;?I2C 通信協(xié)議的器件。I2C 是一個(gè)通信協(xié)議,它擁有嚴(yán)密的通信時(shí)序邏輯要求,而EEPROM 是一個(gè)器件,...

關(guān)鍵字: 51單片機(jī) eeprom

在向 EEPROM 連續(xù)寫入多個(gè)字節(jié)的數(shù)據(jù)時(shí),如果每寫一個(gè)字節(jié)都要等待幾 ms 的話,整體上的寫入效率就太低了。因此 EEPROM 的廠商就想了一個(gè)辦法,把 EEPROM 分頁(yè)管理。24C01、24C02 這兩個(gè)型號(hào)是...

關(guān)鍵字: eeprom 單片機(jī) 頁(yè)寫入

物聯(lián)網(wǎng)(IoT)沒有表現(xiàn)出短期流行的跡象。每一新應(yīng)用都添加許多端點(diǎn)到互聯(lián)網(wǎng)。不同的無(wú)線技術(shù)激增,在大部分射頻(RF)頻譜運(yùn)行,就是最好的證明。

關(guān)鍵字: eeprom IoT RFID

//**************************************************//實(shí)驗(yàn)?zāi)康模?/熟悉使用單片機(jī)模擬讀寫24C01EEPROM//1、首先向24C01EEPROM寫入數(shù)據(jù)//2、在...

關(guān)鍵字: 24c01 eeprom pic單片機(jī) 模擬讀寫

移植環(huán)境1,主機(jī)環(huán)境:VMare下CentOS 5.5 ,1G內(nèi)存。2,集成開發(fā)環(huán)境:Elipse IDE3,編譯編譯環(huán)境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

關(guān)鍵字: eeprom i2c mini2440 u-boot 移植
關(guān)閉