登录
|
注册
|
搜索
|
返回网站首页
我的论坛
→
51,AVR,ARM
→
51,AVR,ARM,DSP技术论坛
→
请教一个关于单片机系统的多参数存取问题,高手留步!
请教一个关于单片机系统的多参数存取问题,高手留步!
发起人:huhui5009 回复数:
0
浏览数:
3977
最后更新:2010/6/18 14:22:07 by huhui5009
简洁模式
完整模式
发表新帖
帖子排序:
从旧到新
从新到旧
2010/6/18 14:22:09
[
只看该作者
]
#1
huhui5009
角 色:普通会员
发 帖 数:1
注册时间:2010/6/18
回复
编辑
删除
请教一个关于单片机系统的多参数存取问题,高手留步!
这种问题对于做过的朋友来说是相当简单,但是还是请走过路过的高手朋友,耽搁几秒看一下,留个脚印!:)新手在此感谢!
#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)
这怎么理解?
......
以前刚学单片机的时候都是写的己知,且单个数据,最近接触一个大程序有点生硬,我知道这是一个多参数的存储与读取,由于没有做过,在思绪方面太模糊,这件事又很急,一下子又找不到怎么办,才来请教大家,请大家多多指点,多多指点!
......
有时间的朋友帮我写一个参考程序,万分感激!
......
急急急~~~~~~~~~~~~~~~~