欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 懇請(qǐng)大家?guī)臀覚z查一下我這個(gè)連續(xù)讀取EEPROM再輸出到串口的單片機(jī)程序哪里有問(wèn)題 [打印本頁(yè)]

作者: BugsBunny    時(shí)間: 2019-10-23 15:58
標(biāo)題: 懇請(qǐng)大家?guī)臀覚z查一下我這個(gè)連續(xù)讀取EEPROM再輸出到串口的單片機(jī)程序哪里有問(wèn)題
#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);

//串口驗(yàn)證
TMOD = 0x20;//定時(shí)器1設(shè)定為工作模式2
TR1 = 1;//打開(kāi)定時(shí)器1,這時(shí)有了一個(gè)波特率,但不是我們?cè)O(shè)置的波特率,單片機(jī)會(huì)檢測(cè)到數(shù)據(jù),卻不是我們所發(fā)的數(shù)據(jù)
TH1 = 0xfd, TL1 = 0xfd;//波特率9600
REN = 1;//串口允許接收
SM0 = 0, SM1 = 1;//串口工作方式為模式一,收到停止位才會(huì)RI = 1,沒(méi)有這一步,RI會(huì)不停自動(dòng)置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);
  }
}
}

作者: BugsBunny    時(shí)間: 2019-10-23 17:39
從串口會(huì)不停讀出0x00,但是我代碼里面是遇到0x00直接終止啊。。
作者: adject    時(shí)間: 2019-10-23 17:41
在主程序里,沒(méi)有調(diào)用EEPROM_Read函數(shù)
作者: adject    時(shí)間: 2019-10-23 17:42
在主程序里沒(méi)有調(diào)用EEPROM_Read函數(shù)
作者: wulin    時(shí)間: 2019-10-23 18:14
你的程序不能約束在主循環(huán)中運(yùn)行,一旦跳出while(1),CPU必須從main()入口重新進(jìn)入,相當(dāng)于一次熱復(fù)位。
作者: BugsBunny    時(shí)間: 2019-10-23 20:06
wulin 發(fā)表于 2019-10-23 18:14
你的程序不能約束在主循環(huán)中運(yùn)行,一旦跳出while(1),CPU必須從main()入口重新進(jìn)入,相當(dāng)于一次熱復(fù)位。

蟹蟹蟹蟹,漲姿勢(shì)了。。。我都不知道原來(lái)還有熱復(fù)位這種說(shuō)法




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1