请教一个关于单片机系统的多参数存取问题,高手留步! | |
发起人:huhui5009 回复数:0 浏览数:3978 最后更新:2010/6/18 14:22:07 by huhui5009 |
发表新帖 | 帖子排序: |
huhui5009 发表于 2010/6/18 14:22:09
|
请教一个关于单片机系统的多参数存取问题,高手留步! 这种问题对于做过的朋友来说是相当简单,但是还是请走过路过的高手朋友,耽搁几秒看一下,留个脚印!:)新手在此感谢!
#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) 这怎么理解? ...... 以前刚学单片机的时候都是写的己知,且单个数据,最近接触一个大程序有点生硬,我知道这是一个多参数的存储与读取,由于没有做过,在思绪方面太模糊,这件事又很急,一下子又找不到怎么办,才来请教大家,请大家多多指点,多多指点! ...... 有时间的朋友帮我写一个参考程序,万分感激! ...... 急急急~~~~~~~~~~~~~~~~ |