完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
#include
#include"intrins.h" #include #define uchar unsigned char #define uint unsigned int #define ADC_POWER 0x80 #define ADC_FLAG 0x10 #define ADC_START 0x08 #define CMD_IDLE 0 //IAP等待 #define CMD_READ 1 //读flash #define CMD_PROGRAM 2 //写入 #define CMD_ERASE 3 //擦除 #define IAP_EN 0x83 #define iap_ADDRESS 0x0000 //地址 void delay(int k) //延时函数 { int i,j; for(i=0;i<184;i++) for(j=0;j //使硬件或软件操作停止 void iap_IDLE() { IAP_CONTR=0; //禁止IAP读写擦除 IAP_CMD=0; //等待 IAP_TRIG=0; //命令未触发 IAP_ADDRH=0x80; //高位数据地址 IAP_ADDRL=0; //低位 } //从数据里面读取数据 uchar iap_READ(uint addr) { uchar datas; IAP_CONTR=IAP_EN; //控制允许位 IAP_CMD=CMD_READ; //写入读命令 IAP_ADDRL=addr; //自定义地址 IAP_ADDRH=addr>>8; IAP_TRIG=0x5a; //命令有效 IAP_TRIG=0xa5; _nop_(); datas=IAP_DATA; iap_IDLE(); return datas; //返回读出的数据 } //写一个比特ISP写到某个地方 void iap_PROGRAM(uint addr,uchar datas) { IAP_CONTR=IAP_EN; IAP_CMD=CMD_PROGRAM; IAP_ADDRL=addr; IAP_ADDRH=addr>>8; IAP_DATA=datas; IAP_TRIG=0x5a; IAP_TRIG=0xa5; _nop_(); iap_IDLE(); } //擦掉某个区域 void iap_ERASE(uint addr) { IAP_CONTR=IAP_EN; IAP_CMD=CMD_ERASE; IAP_ADDRL=addr; IAP_ADDRH=addr>>8; IAP_TRIG=0x5a; IAP_TRIG=0xa5; _nop_(); iap_IDLE(); } void uart_init(void) //串口的初始化 { TMOD=0x20;//即0010 0000,定时器/计数器1,工作方式2 TH1=0xfd;//设置波特率为9600 TL1=0xfd; TR1=1;//启动定时器/计数器1 SCON=0x50; //0101 0000.串口工作方式1,允许串行控制 PCON=0x00;//设置SMOD=0 IE=0x90; //CPU允许中断,串行允许中断 ti=1;//直接使用printf必须加入此句才能实现发送 } main() { int i; union { float x; uchar s[4]; }fasong; fasong.x=3.4; iap_ERASE(iap_ADDRESS); //擦除扇区 for(i=0;i<4;i++) { iap_PROGRAM(iap_ADDRESS+i,fasong.x);//向这个区间512字节里面写东西 } uart_init(); //串口初始化 while(1) { for(i=0;i<4;i++) { printf("iap_READ[%d]=%.1f n",i,iap_READ(iap_ADDRESS+i)); //在串口上输出 delay(500); } } } 请各位大神看看,是哪有问题呀? |
|
相关推荐
8个回答
|
|
|
先往EEPROM里写一个字节数据,或四个单字节数据,看看读写有没有问题,然后再找其他的原因
|
|
|
|
|
|
串口只能发送uchar数据,你可以使用printf来输出
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(⊙o⊙)…是用的printf输出,串口显示的全是0.0。 |
|
|
|
|
|
虽然不知道你在说什么 但是浮点是四字节32位的数据 如果没记错的话是 符号位31 指数位30-24 小数位 23-0 所以说如果是字符发送的话需要发送四个字符 最后还要把四字节转化成浮点
|
|
|
|
|
|
应该是读的方式和写的方式的差异,送入数据时以float类型送入,送出时不注意,传递的时以char形式传递。就有可能造成这种情况,在送入时,应该将float转换成char类型送入,然后在以char送出,再转换成float类型,就可以解决。
|
|
|
|
|
***lbin2008 发表于 2017-4-6 19:20 好的,我试试,谢谢哈! |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
140 浏览 0 评论
483 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
815 浏览 0 评论
1346 浏览 2 评论
804 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16903 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 16:53 , Processed in 1.150280 second(s), Total 90, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2500