欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC15W104 EEPROM測試程序
[打印本頁]
作者:
流淌的歌聲
時間:
2017-1-25 11:31
標題:
STC15W104 EEPROM測試程序
資料下載:
15W104 EEPROM測試.zip
(14.27 KB, 下載次數: 59)
2017-1-25 11:29 上傳
點擊文件名下載附件
15W104 EEPROM測試
下載積分: 黑幣 -5
/*******************************************************
STC15W104 EEPROM測試
測試芯片工作頻率為11.0592MHz
/********************************************************/
#include <STC_NEW_8051.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ENABLE_IAP 0x82
#define IAP_ADDRESS 0x0000
#define CMD_IDLE 0 //空閑模式
#define CMD_READ 1 //IAP字節讀命令
#define CMD_PROGRAM 2 //IAP字節編程命令
#define CMD_ERASE 3 //IAP扇區擦除命令
uchar bright;
/***************延時程序*********************************/
void Delay(uchar n)
{
uint x;
while(n--)
{
x=0;
while(++x);
}
}
/****************關閉IAP********************************/
void IAPIdle()
{
IAP_CONTR =0; //關閉IAP功能
IAP_CMD =0; //清除命令寄存器
IAP_TRIG =0; //清除觸發寄存器
IAP_ADDRH =0x80; //將地址設置到非IAP區域
IAP_ADDRL =0; //
}
/****************從EEPROM讀一字節**************************/
uchar IAPReadByte(uint addr)
{
uchar dat; //數據緩沖區
IAP_CONTR =ENABLE_IAP; //使能IAP
IAP_CMD =CMD_READ; //設置IAP命令
IAP_ADDRL =addr; //設置IAP底地址
IAP_ADDRH =addr>>8; //設置IAP高地址
IAP_TRIG =0x5a; //寫觸發命令0x5a
IAP_TRIG =0xa5; //寫觸發命令0xa5
_nop_(); //等待EEPROM操作完成
dat=IAP_DATA; //讀EEPROM數據
IAPIdle(); //關閉IAP
return dat; //返回數據
}
/***************寫一字節到EEPROM**************************/
void IAPProgramByte(uint addr,uchar dat)
{
IAP_CONTR =ENABLE_IAP; //使能IAP
IAP_CMD =CMD_PROGRAM; //設置IAP命令
IAP_ADDRL =addr; //設置IAP底地址
IAP_ADDRH =addr>>8; //設置IAP高地址
IAP_DATA=dat; //寫EEPROM數據
IAP_TRIG =0x5a; //寫觸發命令0x5a
IAP_TRIG =0xa5; //寫觸發命令0xa5
_nop_(); //等待EEPROM操作完成
IAPIdle(); //關閉IAP
}
/**************扇區擦除**********************************/
void IAPEraseSector(uint addr)
{
IAP_CONTR =ENABLE_IAP; //使能IAP
IAP_CMD =CMD_ERASE; //設置IAP命令
IAP_ADDRL =addr; //設置IAP底地址
IAP_ADDRH =addr>>8; //設置IAP高地址
IAP_TRIG =0x5a; //寫觸發命令0x5a
IAP_TRIG =0xa5; //寫觸發命令0xa5
_nop_(); //等待EEPROM操作完成
IAPIdle(); //關閉IAP
}
/**************主函數***********************************/
void main()
{
uint i;
bright=255;
P3=0xfe; //1111,1110系統OK
Delay(10); //延時
IAPEraseSector(IAP_ADDRESS); //扇區擦除
for(i=0;i<512;i++) //檢測是否擦除成功(全FF檢測)
{
if(IAPReadByte(IAP_ADDRESS+i)!=0xff)
goto Error; //如出錯,則退出
}
P3=0xfc; //1111,1100擦除成功
Delay(10);
IAPProgramByte(IAP_ADDRESS,bright); //編程字節
P3=0xf8; //1111,1000編程完成
Delay(10);
if(IAPReadByte(IAP_ADDRESS)!=255) //校驗512字節
goto Error; //如校驗錯誤,則退出
P3=0xf0;
//1111,0000測試完成
while(1);
Error:
P3=0xcf; //1100,1111IAP操作失敗
while(1);
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1