完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#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); } 两个就是数组定义的地方不同 我觉的影响不大呀 不知道为什么 有高手的顶下 谢谢了 |
|
相关推荐
1 个讨论
|
|
337 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
838 浏览 0 评论
2384 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2237 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1694 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5757 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 10:08 , Processed in 0.465147 second(s), Total 47, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号