stc单片机的sram,一般包括内部RAM和片上RAM,其中内部RAM最大为256字节,其余sram为片上RAM,片上RAM相当于外部数据存储器。例如有768字节的sram,则256字节是内部RAM,用汇编语言编程时,要用mov寻址,另外512字节要用用movx寻址。C语言中定义在内部高128字节的变量要用 idata来修饰,低128字节不用任何修饰符,而片上超过256字节的RAM相当于外部RAM,定义在外部RAM的变量要用xdata来修饰。
片内的用mov,片外的用movx,片外的也就是你用P0,P2口自己外扩的存储芯片。
你所说的这512字节应该都是片内的,用mov寻址。
我一般都是用52的,有256字节可用,实际上可用的只有128字节可用,因为还有128字节是做寄存器用。即使128字节寄存器没用完,用户也不能用。
你那芯片具体有多少可用还是要看下数据手册。
STC单片机片内
低128字节可以直接寻址 MOV A,“RAM地址”。
高128字节的地址与低128字节重复因此只能使用间接寻址的方式,
MOV Rn,“RAM地址”。MOV A,@Rn。
对大于256字节的RAM,STC是把它们作为片外存储器使用的,因此必须用片外存储器的方式操作即 MOV DPTR,“RAM地址”, MOVX A,@DPTR。
比如说有512字节的sram,是有256用mov寻址,256用movx寻址