這種問題對于做過的朋友來說是相當簡單,但是還是請走過路過的高手朋友,耽擱幾秒看一下,留個腳印!:)新手在此感謝! #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)//按鍵參數設置
{
init_uart();//打開串口 //兩個51單片機雙機通信
}
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]);//這里的存儲是原作者寫的,但是我試過了還是存不住。
delay_ms(100);
read_add(0xa0);
}
}
哪位朋友能幫我看看這程序,我要把每一次 switch(team_data[0])的team_data[0]值存起來(放在24C02當中),但是switch每選一個值就發送出去了一次,到最后只能存住一個switch內的參數,
我想過如下分開寫:
......
case 0xa1:
dis();
write_add(team_data[0]);
break;
......
但還是不行,請指教,
主程序內我想改成如下:
void main()
{
init();
while(1)
{
if(!parameter)//按鍵參數設置
{
init_uart();//打開串口 //兩個51單片機雙機通信
}
else
{
read_add();//讀出存儲參數
}
current(); //顯示電流
}
}
不知這種結構是否存在問題???
......
還有幾個其它的問題也想問一下:
1,為什么team_data[0]定義為兩個零?
2,i++;
if(i>1) i=0;
if(i==0)
這怎么理解?
......
以前剛學單片機的時候都是寫的己知,且單個數據,最近接觸一個大程序有點生硬,我知道這是一個多參數的存儲與讀取,由于沒有做過,在思緒方面太模糊,這件事又很急,一下子又找不到怎么辦,才來請教大家,請大家多多指點,多多指點! ...... 有時間的朋友幫我寫一個參考程序,萬分感激! ...... 急急急~~~~~~~~~~~~~~~~
|