|
60黑幣
用串口調(diào)試助手,將數(shù)據(jù)通過UART下發(fā)到單片機(jī)當(dāng)中, 并且存儲(chǔ)到EEPROM中, 然后將電源關(guān)掉, 重新上電讀取EEPROM的數(shù)據(jù)并數(shù)碼管上顯示出來,但是我現(xiàn)在數(shù)據(jù)發(fā)送單片機(jī)也接收了,就是無法存儲(chǔ)到EEPROM中,望各位朋友幫忙指點(diǎn)一下,謝謝!
以下是單片機(jī)代碼:
-----------------------------------------------------------------------------------------------------
- #include <reg52.h>
- #include <intrins.h>
- sbit I2C_SCL = P0^6;
- sbit I2C_SDA = P0^7;
- #define I2CDelay() {_nop_();_nop_();_nop_();_nop_();}
- /* 595控制數(shù)碼管時(shí)鐘信號(hào)線引腳定義 */
- sbit HC595CLK = P1^1;
- /* 595控制數(shù)碼管片選信號(hào)線引腳定義 */
- sbit HC595RCK = P1^0;
- /* 595控制數(shù)碼管數(shù)據(jù)輸入引腳定義 */
- sbit HC595DATA = P1^4;
- unsigned char ucDataOneTab[10] = {0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,0x6f};
- unsigned char ucDataTwoTab[8] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
- unsigned char led_buf[8] = {0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07};
- unsigned char RxdByte = 0;
- void send_dat(unsigned char uiDataOne,unsigned int uiDataTwo)
- {
- unsigned char i;
-
- HC595RCK = 0;
- for(i=0; i<8; i++)
- {
- HC595CLK = 0;
- if(0 != (uiDataOne&0x80))
- {
- HC595DATA = 1;
- }
- else
- {
- HC595DATA = 0;
- }
- uiDataOne <<= 1;
- HC595CLK = 1;
- }
- for(i=0; i<8; i++)
- {
- HC595CLK = 0;
- if(0 != (uiDataTwo&0x80))
- {
- HC595DATA = 1;
- }
- else
- {
- HC595DATA = 0;
- }
- uiDataTwo <<= 1;
- HC595CLK = 1;
- }
- HC595RCK = 1;
- }
- void Delay1ms(int i)
- {
- int j;
- for(; i > 0; i--)
- {
- for(j = 0; j < 110; j++);
- }
- }
- /* 串口配置函數(shù),baud-通信波特率 */
- void ConfigUART(unsigned int baud)
- {
- SCON = 0x50; //配置串口為模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1為模式2
- TH1 = 256 - (11059200/12/32)/baud; //計(jì)算T1重載值
- TL1 = TH1; //初值等于重載值
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- TR1 = 1; //啟動(dòng)T1
- }
- void main()
- {
- unsigned char dat,i;
- unsigned char str[5];
-
- EA = 1;
- ConfigUART(9600);
-
- RxdByte = E2ReadByte(0x02);
- str[0] = (RxdByte/100); //轉(zhuǎn)換為十進(jìn)制字符串格式
- str[1] = (RxdByte/10%10);
- str[2] = (RxdByte%10);
-
- dat++; //將其數(shù)值+1
- //E2WriteByte(0x02, dat); //再寫回到對(duì)應(yīng)的地址上
- E2WriteByte(0x02, RxdByte); //再寫回到對(duì)應(yīng)的地址上
-
- led_buf[2] = ucDataOneTab[str[2]];
- led_buf[1] = ucDataOneTab[str[1]];
- led_buf[0] = ucDataOneTab[str[0]];
-
- while(1)
- {
- for(i=0; i<8; i++)
- {
- send_dat(led_buf[i],ucDataTwoTab[i]);
- Delay1ms(1);
- }
- }
- }
- void InterruptUart() interrupt 4
- {
- if(RI)
- {
- RI = 0;
- RxdByte = SBUF;
- SBUF = RxdByte + 1;
- }
- if(TI)
- {
- TI = 0;
- }
- }
復(fù)制代碼
---------------------------------------------------------------------------------------------------------------
|
|