欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
懇請大家幫我檢查一下我這個連續讀取EEPROM再輸出到串口的單片機程序哪里有問題
[打印本頁]
作者:
BugsBunny
時間:
2019-10-23 15:58
標題:
懇請大家幫我檢查一下我這個連續讀取EEPROM再輸出到串口的單片機程序哪里有問題
#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設定為工作模式2
TR1 = 1;//打開定時器1,這時有了一個波特率,但不是我們設置的波特率,單片機會檢測到數據,卻不是我們所發的數據
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);
}
}
}
作者:
BugsBunny
時間:
2019-10-23 17:39
從串口會不停讀出0x00,但是我代碼里面是遇到0x00直接終止啊。。
作者:
adject
時間:
2019-10-23 17:41
在主程序里,沒有調用EEPROM_Read函數
作者:
adject
時間:
2019-10-23 17:42
在主程序里沒有調用EEPROM_Read函數
作者:
wulin
時間:
2019-10-23 18:14
你的程序不能約束在主循環中運行,一旦跳出while(1),CPU必須從main()入口重新進入,相當于一次熱復位。
作者:
BugsBunny
時間:
2019-10-23 20:06
wulin 發表于 2019-10-23 18:14
你的程序不能約束在主循環中運行,一旦跳出while(1),CPU必須從main()入口重新進入,相當于一次熱復位。
蟹蟹蟹蟹,漲姿勢了。。。我都不知道原來還有熱復位這種說法
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1