|
kmsj 發表于 2020-3-31 14:04 不是實用不實用的問題, 是因為現在高校設計都是要用這些舊芯片,我就是設計被要求擴展6116并使用的。 |
f556 發表于 2020-3-31 16:40 你說的也非常精辟,51單片機通過6116外擴2K×8位的RAM,要用掉十幾個IO口,按現在主流的非總線單片機而言,絕對是一件大虧本的事情,現在的主流單片機,內部資源已經非常豐富了,IO口反而顯得比較珍貴。 |
kmsj 發表于 2020-3-31 14:04 非常精辟,精單的事情不要復雜化。當用了6116后,發現IO不夠了,是否再加一片IO擴展!另外csmyldl的回答也有道理,我一般大的數組放在DATA 或者const。 |
| 都什么年代了?還研究6116?6116是總線型單片機的產物,以后設計電路,用到6116的可能性幾乎為零,沒有特殊要求,就不要研究6116了,上個世紀80年代左右,單片機基本只有一種,就是51單片機,51單片機就是典型的總線型單片機,為了擴展使用,就用總線擴RAM、IO口等,優點是是在當時的技術下,可以設計出比較復雜的電路,缺點還是電路復雜、成本太高、抗干擾差。6116好像是2K×8的RAM,很早以前研究過6264、2764之類的東西,好像還需要一片74LS373,匯編語言和C語言都有專門讀外部RAM的指令和語句。現在的單片機都是以非總線型單片機為主,像AVR或者STM32,片內達到2K×8的RAM或者EEPROM多得是。 |
| 不用考慮,只要不超過范圍即可 |
| 數組用xdata定義,不需要 |
|
電路里的6116的地址范圍是0x0000~0x07ff。存儲在外部ram的數組或變量,使用xdata進行定義,注意不要超過6116地址范圍。使用時,可以像正常的內部變量進行讀寫即可,不用考慮硬件的地址。 例如: xdata char buf[10];//定義外部數組buf[] char a; //定義內部變量a buf[0]=1;//外部數組buf[]寫 a=buf[0];//外部數組buf[]讀 |