8052 单片机 如何区别访问SFR和高128RAM呢
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/02 15:10:20
8052 单片机 如何区别访问SFR和高128RAM呢
地址重复呀?
在c中应该怎么定义呢?
地址重复呀?
在c中应该怎么定义呢?
![8052 单片机 如何区别访问SFR和高128RAM呢](/uploads/image/z/14761924-52-4.jpg?t=8052+%E5%8D%95%E7%89%87%E6%9C%BA+%E5%A6%82%E4%BD%95%E5%8C%BA%E5%88%AB%E8%AE%BF%E9%97%AESFR%E5%92%8C%E9%AB%98128RAM%E5%91%A2)
MCS-51通过访问方式来区别物理内存位置,即使地址一样.
比如内部RAM的高128字节,如果用直接寻址,那么就是操作SFR;如果用间接寻址(MOVX @Ri,A)那么就是对RAM操作.
在C语言中,通过定义变量时加上关键字表示位置:
如unsigned char data a;表示内部RAM低128字节中定义一个无符号整数a.省略或data表示内部低128字节(用直接寻址);bdata表示在可位寻址区;idata表示内部高128字节(用MOV @Ri,A);pdata表示外部低256字节拓展RAM(用MOVX @Ri,A);xdata表示外部所有拓展RAM(用MOVX @DPTR,A);code表示ROM(用MOVC),通常用作数据表格.
比如内部RAM的高128字节,如果用直接寻址,那么就是操作SFR;如果用间接寻址(MOVX @Ri,A)那么就是对RAM操作.
在C语言中,通过定义变量时加上关键字表示位置:
如unsigned char data a;表示内部RAM低128字节中定义一个无符号整数a.省略或data表示内部低128字节(用直接寻址);bdata表示在可位寻址区;idata表示内部高128字节(用MOV @Ri,A);pdata表示外部低256字节拓展RAM(用MOVX @Ri,A);xdata表示外部所有拓展RAM(用MOVX @DPTR,A);code表示ROM(用MOVC),通常用作数据表格.