STC89系列高性能单片机及其应用
一、 1k bit片内RAM(数据存储器)
普通8051系列单片及片内RAM只有128(8051)或256(8052)字节,
1、低128字节(地址:00H~7FH),可直接或间接寻址;
2、高128字节(地址:80H~FFH),只可间接寻址;
STC89系列单片机另外增加了768字节的片内扩展RAM,以解决众多技术人员在编程时的RAM资源严重缺乏的问题。
768字节的片内扩展RAM(地址:000H~2FFH)与外部扩展RAM地址重叠,单片机可通过软件设置AUXR.1,决定是否使用片内扩展RAM,以防止可能的与外部扩展RAM的冲突,默认为使用片内扩展RAM。
片内扩展RAM的访问采用间接寻址,可通过
①、MOVX A,@DPTR 或 MOVX @DPTR ,A 指令访问片内扩展RAM(00H~2FFH,共768字节);
②、MOVX A,@Ri 或 MOVX @Ri,A 指令访问片内扩展RAM(00H~FFH,共256字节)。
当DPTR≥300H时,系统访问外部扩展RAM。
注意:在使用第二种指令时,特别要注意是使用MOV还是MOVX,MOV访问的是片内RAM,MOVX访问的是片内扩展RAM,刚刚接触此类单片机的技术人员最容易在这里犯错误。
二、 64/32/16/8K片内Flash(程序存储器)与ISP功能
STC89系列单片机按芯片型号分别有64/32/16/8K片内Flash,分为2个Flash存储块:Block0和Block1。2个 Flash存储块在物理上Block0在前,Block1在后。通过REMAP功能可以将Flash块重定位。下图显示的是STC89C58的程序存储器结构
使用过SST89系列单片机的用户要注意与STC89区别:
①、Block1大小不同;
②、Block扇区大小不同;
③、指令及SFR的不同。
STC89有2个配置位SC0,SC1控制上电复位/外部复位后程序是从Block0还是Block1启动。
①对于STC89C58,SC0,SC1同时起作用:
SC1,SC0=0,0 程序是从Block0启动;
SC1,SC0=1,1 程序是从Block1启动,这时Block1物理上在后8K(E000H~FFFFH),逻辑上又影象到前8K(0000H~1FFFH),Block0前8K对于PC指针不可见。
②对于STC89C16,只有SC0起作用:
SC0=0 程序是从Block0启动;
SC0=1 程序是从Block1启动,这时Block1逻辑上影象到前8K(0000H~1FFFH),将Block0前8K单元覆盖。
评论