我的keil uvision4找不到AT80c51或者stc80c51系列的芯片

我的keil uvision4找不到AT80c51或者stc80c51系列的芯片,第1张

你装的是MDK,是开发ARM用的,不是针对51平台。

μVision不是工具链,仅仅是一个IDE(辅助设计环境,也就是个用户界面)而已。Keil的诸多工具链都可以共用μVision IDE。

你需要另外装一个51开发工具包。

扩展RAM编程基础

(1)弄清扩展器件的地址

在图7.2.5中,U3的ABC接单片机A13,A14,A15,所以片选信号对应地址最高位,即:“CBAxxxxx xxxxxxxx”(x为任意)。U4片选接CS1,即Y1,CBA=001,可得U4的地址范围是0x2000~0x3fff。U5接CS3,即Y3,CBA=011,地址为0x6000~0x7fff。U6接CS4,即Y4,CBA=100,地址为0x8000~0x9fff。知道了器件地址,可以利用直接地址、外部数据指针来访问存储器。通过设置,也可以让编译器在扩展RAM中自动分配存储单元。

(2)直接地址访问

①向U4写数据:

XBYTE[0x2000+addr]=dat//addr为U4内部地址,取值为0~0x1fff;dat为数据。

②读出U4数据:

dat=XBYTE[0x2000+addr]

也可以用页访问方式。页访问方式,实际就是先把16位地址高8位送P2口,通过低8位地址读写。

③按页读写U4:

P2=0x20+page// page为页,取值为0x00~0x1F。

PBYTE[addr]=dat// addr为页内地址,取值为0x00~0xFF。

dat=PBYTE[addr]

④读U6

dat=XBYTE[0x8000]//读U6,地址取0x8000~0x9fff任何值,都一样。

⑤写U5

XBYTE[0x6000]=dat//写U5,地址取0x6000~0x7fff任何值,都一样。

(3)数据指针

如,读写U4,可以这样写:

unsigned char xdata *p=0x3000//声明指针p,并初始指向0x3000单元

x=*p//读指针所指向的位置

p=p+1//指针指向下一单元

*p=0x16//向指针所指向的位置写入数据

(4)让编译器自动分配存储空间

①为了能让编译器自动分配存储空间,并使用扩展RAM,必须设置扩展RAM地址。在Keil编程软件中,点击工具栏快捷图标“ ”,d出目标选项对话框。按图7.2.6所示,设置RAM起始地址和长度。

②变量声明时使用xdata关键词。如:

unsigned char xdata a//变量a使用扩展RAM空间。

特别注意,扩展RAM直接地址访问方式与自动分配存储空间方式最好不要混用,否则可能产生冲突。

这个和默认数据类型有关,TH0=(65536-10000)/256,默认unsigned char,即TH0=0xD8;TH0=(-10000)/256,默认signed char,二进制最高位为符号位,负数为1,所以TH0=0xD9


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11809224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存