當前位置:編程學習大全網 - 編程語言 - 單片機C51程序

單片機C51程序

# includE & ltrEg52.h & gt///52庫

# includE & ltintrins.h & gt

/////////////////////

sfr ISP _ wdt = 0xe 1;

sfr isp _ data = 0xE2

sfr isp _ addrh = 0xE3

sfr isp _ addrl = 0xE4

sfr isp _ cmd = 0xE5

sfr isp _ trig = 0xE6

sfr isp _ contr = 0xE7

/////////

無符號字符iic _ num

////從t_addr地址開始寫。

/*打開ISP、IAP函數*/

void ErasEEEprom(無符號字符t_addr)

{

isp _ addrh = t _ addr

ISP _ addrl = 0;

EA = 0;/*關閉中斷*/

ISP _ contr = 0x 81;/* 1000,0000 */

ISP _ cmd = 3;

isp _ trig = 0x46

isp _ trig = 0xb9

_ nop _();

_ nop _();

ISP _ contr = 0;/* 0111,1111 */

ISP _ cmd = 0;

ISP _ trig = 0;

ISP _ addrh = 0;

ISP _ addrl = 0;

EA = 1;/*打開中斷*/

}

////壹次最多256個。建議嘗試幾個。要存儲的數據在指針指向的緩沖區中是松散的。

void write EEPROM(unsignEd char t _ addr,unsignEd char num,unsignEd char xdata *ptr)

{

ErasEEEprom(t _ addr);

for(IIC _ num = 0;iic _ num & ltnumiic_num++)

{

ISP _ data = *(ptr+IIC _ num);

isp _ addrh = t _ addr

isp _ addrl = iic _ num

EA = 0;/*關閉中斷*/

ISP _ contr = 0x 81;/* 1000,0000 */

ISP _ cmd = 2;

isp _ trig = 0x46

isp _ trig = 0xb9

_ nop _();

_ nop _();

ISP _ contr = 0;/* 0111,1111 */

ISP _ cmd = 0;

ISP _ trig = 0;

ISP _ addrh = 0;

ISP _ addrl = 0;

EA = 1;/*打開中斷*/

}

}

////從EEprom的t_addr地址讀取num數據。

////存儲在從tEmp[0]開始的存儲單元中

////壹次最多256個,讀取的數據存放在指針指向的緩沖區。

void read eprom(unsignEd char s _ addr,unsignEd char num,unsignEd char xdata *ptr)

{

for(IIC _ num = 0;iic _ num & ltnumiic_num++)

{

isp _ addrh = s _ addr

isp _ addrl = iic _ num

EA = 0;/*關閉中斷*/

ISP _ contr = 0x 81;/* 1000,0000 */

ISP _ cmd = 1;

isp _ trig = 0x46

isp _ trig = 0xb9

_ nop _();

_ nop _();

ISP _ contr = 0;/* 0111,1111 */

ISP _ cmd = 0;

ISP _ trig = 0;

ISP _ addrh = 0;

ISP _ addrl = 0;

EA = 1;/*打開中斷*/

*(ptr+IIC _ num)= ISP _ data;

}

}

  • 上一篇:2023年烏魯木齊中考單列人數多少
  • 下一篇:馬來西亞航空公司370航班概述:乘客、機組人員和飛機
  • copyright 2024編程學習大全網