51单片机关于片内片外存储器的操作方法总结
来源:互联网 发布:一元包邮 淘宝 编辑:程序博客网 时间:2024/05/21 17:59
一、
char addr,i;
addr=0x30; //起始地址
for(i=0;i<16;i++)
{
*((char idata*)addr++)=i; //从起始地动址开始赋值
}
addr=0x30;
具体意思是:
首先addr自加一,因为++在变量后面,所以该表达式使用自加之前的值,比如第一次循环,表达式使用的addr是0x30.
第二步,将0x30强制转换为char idata类型指针。
第三步,解引用该指针,将i的值赋给该指针指向的地址
二、
char addr1,i;
addr = 0x2000;
addr1 = 0x30; //片内,片外存储区首地址分别为30H、2000H
for(i=0;i<16;i++)
{
*((char xdata*)addr++) = i; //给片外存储地址赋值
}
addr=0x2000;
for(i=0;i<16;i++) //从片外存储区读取数据
{
*((char idata*)addr1++) = *((char xdata*)addr++); //存储到片内的数据存储区
}
三、
char addr,i,j,t;
addr=0x30; //数据块的首地址
for(i=0;i<16;i++)
{
*((char idata*)(addr+i))=15-i; //初始化数据块
}
for(i=0;i<15;i++) //采用冒泡法排序
for(j=i+1;j<16;j++)
{
if(*((char idata*)(addr+i))>*((char idata*)(addr+j)))
{
t=*((char idata*)(addr+i));
*((char idata*)(addr+i))=*((char idata*)(addr+j));
*((char idata*)(addr+j))=t;
}
}
四、
char aa,i;
P1=0xff;
while(1)
{
aa=P1; //初P1口的开关状态
switch(aa) //判断是哪个开关闭合
{
case 0xff: //没有开关按下时,则给目标地址一赋0
{
for(i=0;i<16;i++)
{
*((char idata*)0x30+i)=0x00;
}
}break;
case 0xfe: //第一个开关按下时,则给目标地址一赋1
{
for(i=0;i<16;i++)
{
*((char idata*)0x30+i)=0x01;
}
}break;
case 0xfd: //第二个开关按下时,则给目标地址一赋2
{
for(i=0;i<16;i++)
{
*((char idata*)0x30+i)=0x02;
}
}break;
case 0xfb: //第三个开关按下时,则给目标地址一赋3
{
for(i=0;i<16;i++)
{
*((char idata*)0x30+i)=0x03;
}
}break;
default: break;
}
}
- 51单片机关于片内片外存储器的操作方法总结
- 单片机的片内存储器 片外存储器的内和外是相对于什么啊?
- android外存储的状态
- 1.7.关于存储器的内存和外存
- 关于单片机IIC的操作总结
- FPGA片外存储器ddr2之DQSn引脚的分析
- 关于Python的文件操作方法
- 关于spring的事务操作方法
- 51单片机总结之微型计算机(单片机)的组成
- 关于51单片机用红外遥控步进马达实验的一点心得总结
- 关于51单片机寻址方式的个人总结和困惑点记录及自答
- 关于单片机按键问题总结
- 关于串口与单片机通信电平转换的总结
- FPGA外存储器之DDR2控制器1
- FPGA片外存储器之DDR2控制器2
- FPGA片外存储器之cyclone v ddr2,ddr3
- 关于51单片机定时器的灵活使用
- 关于51单片机的一些基本知识
- 业务逻辑
- 在ECLIPSE下使用ANT编译报:Error starting modern compiler
- SQLite(快速上手版)笔记
- 【ERROR】将截断字符串或二进制数据。\r\n语句已终止。
- android注入so,有代码有命令
- 51单片机关于片内片外存储器的操作方法总结
- Oracle SQL性能优化
- Linux进程管理命令详解(3)
- linux定时器的使用
- 酉矩阵
- DEDECMS在任意页面获取任意栏目N级列表链接
- SuppressWarnings笔记
- ubuntu源码下载
- sql server中如何把一个表结构复制到另一个新表中