這種問(wèn)題對(duì)于做過(guò)的朋友來(lái)說(shuō)是相當(dāng)簡(jiǎn)單,但是還是請(qǐng)走過(guò)路過(guò)的高手朋友,耽擱幾秒看一下,留個(gè)腳印!:)新手在此感謝! #include< reg51.h>
#include< intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit parameter=P0^4;//if parameter=1;set parameter mode,if parameter=0;finish set parameter
uchar team_data[2]={0,0};
uchar i=0;
void main()
{
init();
while(1)
{
while(!parameter)//按鍵參數(shù)設(shè)置
{
init_uart();//打開(kāi)串口 //兩個(gè)51單片機(jī)雙機(jī)通信
}
current(); //顯示電流
}
}
//-----------------------------this is the intrrupt to receive data-----------------------
void init_uart(void)
{
SCON=0X50;
TMOD=0x20;
TL1=0xfa;
TH1=0xfa;
PCON=0x00;
TR1=1;
ES=1;
EA=1;
}
void uart(void) interrupt 4 //這里怎么不用interrupt“0、1、2、3”
{
if(RI==1)
{
RI=0;
team_data=SBUF;
i++;
if(i>1) i=0;
if(i==0)
switch(team_data[0])
{
case 0xb1:
AAA();break;
case 0xa1:
BBB();break;
case 0xa2:
CCC();break;
case 0xa3:
DDD();break;
case 0xa4:
EEE();break;
case 0xa5:
FFF();break;
default: ;break;
}
write_add(0xa0,team_data[0]);//這里的存儲(chǔ)是原作者寫(xiě)的,但是我試過(guò)了還是存不住。
delay_ms(100);
read_add(0xa0);
}
}
哪位朋友能幫我看看這程序,我要把每一次 switch(team_data[0])的team_data[0]值存起來(lái)(放在24C02當(dāng)中),但是switch每選一個(gè)值就發(fā)送出去了一次,到最后只能存住一個(gè)switch內(nèi)的參數(shù),
我想過(guò)如下分開(kāi)寫(xiě):
......
case 0xa1:
dis();
write_add(team_data[0]);
break;
......
但還是不行,請(qǐng)指教,
主程序內(nèi)我想改成如下:
void main()
{
init();
while(1)
{
if(!parameter)//按鍵參數(shù)設(shè)置
{
init_uart();//打開(kāi)串口 //兩個(gè)51單片機(jī)雙機(jī)通信
}
else
{
read_add();//讀出存儲(chǔ)參數(shù)
}
current(); //顯示電流
}
}
不知這種結(jié)構(gòu)是否存在問(wèn)題???
......
還有幾個(gè)其它的問(wèn)題也想問(wèn)一下:
1,為什么team_data[0]定義為兩個(gè)零?
2,i++;
if(i>1) i=0;
if(i==0)
這怎么理解?
......
以前剛學(xué)單片機(jī)的時(shí)候都是寫(xiě)的己知,且單個(gè)數(shù)據(jù),最近接觸一個(gè)大程序有點(diǎn)生硬,我知道這是一個(gè)多參數(shù)的存儲(chǔ)與讀取,由于沒(méi)有做過(guò),在思緒方面太模糊,這件事又很急,一下子又找不到怎么辦,才來(lái)請(qǐng)教大家,請(qǐng)大家多多指點(diǎn),多多指點(diǎn)! ...... 有時(shí)間的朋友幫我寫(xiě)一個(gè)參考程序,萬(wàn)分感激! ...... 急急急~~~~~~~~~~~~~~~~
|