找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1290|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

懇請大家?guī)臀覚z查一下我這個連續(xù)讀取EEPROM再輸出到串口的單片機程序哪里有問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:625292 發(fā)表于 2019-10-23 15:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "reg52.h"
#include "I2C.h"
#define EEPROM_ADDR_Write 0xa0
#define EEPROM_ADDR_Read 0xa1
#define PCF_ADDR_Write 0x90
#define PCF_ADDE_Read 0x91
#define uchar unsigned char
#define uint unsigned int
uchar music[100];
uchar ack, i;
void EEPROM_Read(uchar address);
void main(){
SDA = SCL = 1;
//讀取EEPROM
EEPROM_Read(0x00);

//串口驗證
TMOD = 0x20;//定時器1設(shè)定為工作模式2
TR1 = 1;//打開定時器1,這時有了一個波特率,但不是我們設(shè)置的波特率,單片機會檢測到數(shù)據(jù),卻不是我們所發(fā)的數(shù)據(jù)
TH1 = 0xfd, TL1 = 0xfd;//波特率9600
REN = 1;//串口允許接收
SM0 = 0, SM1 = 1;//串口工作方式為模式一,收到停止位才會RI = 1,沒有這一步,RI會不停自動置1
i=0;
while(1){
  SBUF = music[ i];
  while(!TI);
  TI = 0;
  if(music[ i] == 0x00)
   break;
  i++;
}

}
void EEPROM_Read(uchar address){
uchar i;
I2C_Start();
I2C_SendByte(EEPROM_ADDR_Write);
I2C_WaitAck();
I2C_SendByte(address);
I2C_WaitAck();
I2C_Start();
for(i=0; i<100; i++){
  music[ i] = I2C_RcvByte();
  if(music[ i] == 0x00){
   I2C_Ack(0);
   I2C_Stop();
   break;
  }
  else{
   I2C_Ack(1);
  }
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:625292 發(fā)表于 2019-10-23 17:39 | 只看該作者
從串口會不停讀出0x00,但是我代碼里面是遇到0x00直接終止啊。。
回復(fù)

使用道具 舉報

板凳
ID:419968 發(fā)表于 2019-10-23 17:41 | 只看該作者
在主程序里,沒有調(diào)用EEPROM_Read函數(shù)
回復(fù)

使用道具 舉報

地板
ID:419968 發(fā)表于 2019-10-23 17:42 | 只看該作者
在主程序里沒有調(diào)用EEPROM_Read函數(shù)
回復(fù)

使用道具 舉報

5#
ID:213173 發(fā)表于 2019-10-23 18:14 | 只看該作者
你的程序不能約束在主循環(huán)中運行,一旦跳出while(1),CPU必須從main()入口重新進(jìn)入,相當(dāng)于一次熱復(fù)位。
回復(fù)

使用道具 舉報

6#
ID:625292 發(fā)表于 2019-10-23 20:06 | 只看該作者
wulin 發(fā)表于 2019-10-23 18:14
你的程序不能約束在主循環(huán)中運行,一旦跳出while(1),CPU必須從main()入口重新進(jìn)入,相當(dāng)于一次熱復(fù)位。

蟹蟹蟹蟹,漲姿勢了。。。我都不知道原來還有熱復(fù)位這種說法
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表