#include<REG52.h>
#include<stdio.h>
#include <intrins.h>
sbit SDA=P1^0;
sbit CLK=P1^1;
sbit KD_KEY=P1^2;
unsigned char m=0xff;
unsigned char t[5]={0xbf,0x02,0x03,0x05,0x09};
unsigned char data display_bit;
unsigned char code led[20]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8C}; // 断码表
main()
{
......
}
1.我知道CODE是把数组放到ROM里,因为是断码表,所以不需要改变,但是如果是把改变的数组放ROM里,会出现什么现象呢?(ROM读取慢?好像不是吧)
2.单片机编写好程序时,要烧写程序,那么main()之前的程序时完全烧入ROM中吗?不是说不定义CODE的变量时烧入RAM?我想知道到底是烧入RAM还是ROM啊?
3.还有就是MAIN程序里也有局部变量,那也是烧入RAM还是在ROM?如果烧入ROM,那还可以赋予新值吗?(ROM只可以读,不可以写,比如for(i=1;i<9;i++),程序是烧入ROM的吧,但是I的值可以变化啊)。
4.我的理解:程序完全烧入ROM,包括MAIN前面的定义,只是当cpu读ROM的时候,会在RAM分配内存空间,全局变量一直占用着RAM内存,而局部变量在使用完后会自动清除RAM空间,而把不变的数组放到ROM中可以节省RAM空间,如果把变量放入ROM,则会读取速度变慢。但是烧入ROM的数组不可以改变(是这样吗,和for循环那个i有什么区别啊)。
望高手赐教,如果好,加分50!