#include #define uint unsigned int #define uchar unsigned char sfr P4 = 0XE8; ***it A15 = P4^0; ***it A16 = P4^1; ***it R232 = P1^6; ***it GPRS = P1^5; uchar xdata *address_index;
//////////////////////////////////////////////////////////////////////////////////////////// // //写外部RAM // ///////////////////////////////////////////////////////////////////////////////////////////// WriteRAM(unsigned long address,unsigned int num,uchar *m) { uchar address_h; uint address_l; uint i; address_h = (uchar)(address/32768); A15 = (bit)(address_h&0x01); A16 = (bit)(address_h&0x02); address_l = (uint)(address%32768); address_index = address_l; for(i=0;i { *(address_index++) = *(m++); if(address_index==0x8000) { address_index = 0x0000; { if(A15==0) { A15 = 1; } else { A15 = 0; if(A16==0) { A16 = 1; } else {} } } } } } /////////////////////////////////////////////////////////////////////////////////////////////// // //读外部RAM // ////////////////////////////////////////////////////////////////////////////////////////////// ReadRAM(unsigned long address,unsigned int num,uchar *m) { uchar address_h; uint address_l; uint i; address_h = (uchar)(address/32768); A15 = (bit)(address_h&0x01); A16 = (bit)(address_h&0x02); address_l = (uint)(address%32768); address_index = address_l; for(i=0;i { *(m++) = *(address_index++); if(address_index==0x8000) { address_index = 0x0000; if(A15==0) { A15 = 1; } else { A15 = 0; if(A16==0) { A16 = 1; } else {} } } }
} //////////////////////////////////////////////////////////////////////////////////////////////////////// // //设置波特率 // /////////////////////////////////////////////////////////////////////////////////////////////// void Com19200(void) {
TMOD = 0X20; TH1 = 0XFD; TL1 = 0XFD; SCON = 0X50; PCON = 0X80; TR1 = 1; }
///////////////////////////////////////////////////////////////////////////////////////////////////// // // // ////////////////////////////////////////////////////////////////////////////////////////////// void Delay(void) { uchar i; for(i=0;i<250;i++); } void main(void) {
uchar i,z; uchar m[10]={0x74,0x95,0x15,0x56,0x77,0x23,0x85,0xa6,0xff,0x4e}; uchar s[10]={0};
Com19200(); EA = 0; ES = 0; EA = 1; ES = 1; R232 = 0; GPRS = 1; WriteRAM(0x7ffe,10,m); ReadRAM(0x7ffe,10,s); for(i=0;i<10;i++) { SBUF = s; ti = 0; while(!TI); Delay(); /* SBUF = s; TI = 0; while(!TI); Delay(); SBUF = m; TI = 0; while(!TI); Delay();*/ } while(1);
}
以上从RAM中读的数总是不对,而下面的则能通过
#include #define uint unsigned int #define uchar unsigned char sfr P4 = 0XE8; ***it A15 = P4^0; ***it A16 = P4^1; ***it R232 = P1^6; ***it GPRS = P1^5; uchar xdata *address_index; uchar m[10]={0x74,0x95,0x15,0x56,0x77,0x23,0x85,0xa6,0xff,0x4e}; uchar s[10]={0};
//////////////////////////////////////////////////////////////////////////////////////////// // //写外部RAM // ///////////////////////////////////////////////////////////////////////////////////////////// WriteRAM(unsigned long address,unsigned int num,uchar *m) { uchar address_h; uint address_l; uint i; address_h = (uchar)(address/32768); A15 = (bit)(address_h&0x01); A16 = (bit)(address_h&0x02); address_l = (uint)(address%32768); address_index = address_l; for(i=0;i { *(address_index++) = *(m++); if(address_index==0x8000) { address_index = 0x0000; { if(A15==0) { A15 = 1; } else { A15 = 0; if(A16==0) { A16 = 1; } else {} } } } } } /////////////////////////////////////////////////////////////////////////////////////////////// // //读外部RAM // ////////////////////////////////////////////////////////////////////////////////////////////// ReadRAM(unsigned long address,unsigned int num,uchar *m) { uchar address_h; uint address_l; uint i; address_h = (uchar)(address/32768); A15 = (bit)(address_h&0x01); A16 = (bit)(address_h&0x02); address_l = (uint)(address%32768); address_index = address_l; for(i=0;i { *(m++) = *(address_index++); if(address_index==0x8000) { address_index = 0x0000; if(A15==0) { A15 = 1; } else { A15 = 0; if(A16==0) { A16 = 1; } else {} } } }
} //////////////////////////////////////////////////////////////////////////////////////////////////////// // //设置波特率 // /////////////////////////////////////////////////////////////////////////////////////////////// void Com19200(void) {
TMOD = 0X20; TH1 = 0XFD; TL1 = 0XFD; SCON = 0X50; PCON = 0X80; TR1 = 1; }
///////////////////////////////////////////////////////////////////////////////////////////////////// // // // ////////////////////////////////////////////////////////////////////////////////////////////// void Delay(void) { uchar i; for(i=0;i<250;i++); } void main(void) {
uchar i,z;
Com19200(); EA = 0; ES = 0; EA = 1; ES = 1; R232 = 0; GPRS = 1; WriteRAM(0x7ffe,10,m); ReadRAM(0x7ffe,10,s); for(i=0;i<10;i++) { SBUF = s; TI = 0; while(!TI); Delay(); /* SBUF = s; TI = 0; while(!TI); Delay(); SBUF = m; TI = 0; while(!TI); Delay();*/ } while(1);
}
两个就是数组定义的地方不同 我觉的影响不大呀 不知道为什么 有高手的顶下 谢谢了
0
|
2009-3-16 09:39:02
评论
淘帖0
1 个讨论
|
|
|