PIC单片机特殊功能寄存器定义问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:39:25
菜鸟向高手赐教,比如像STATUS,它在RAM 中的位置不是固定是02H吗?为什么还要在程序中用EQU定义:status equ 02h
我的问题是,假如这条定义取消,CPU 就不知道STATUS的地址是02H 了吗?

你的假如是对的,但是主要不是CPU不知道STATUS代表02H了(CPU当然也不知道,CPU除了机器语言什么也不知道),而是编译软件不知道STATUS代表02H了。 取消了当然不行!
“status EQU 02H”就是定义STATUS代表02H
定义了之后MOVF STATUS,W 就相当于MOVF 02H,W
EQU定义之后,上两句话功能是一样的!STATUS被定义是便于我们人直观理解。
你估计是刚学,刚开始教你定义是为了便于你理解,以后会教你引用编译软件里的头文件,你就不需要一个一个写了。

所谓的特殊功能寄存器都是人为地为其加上名字
单片机只能认识物理的寄存器
如20H,80H
所以吧STATUS定义为02H是有必要的

在一些编程环境是已经把51的特殊功能寄存器定义好的如wave6000
在keil C中需要include 51的寄存器/IO定义文件
对于PIC而言
在MPLAB IDE也是加入include XXX.INC

假如取消status equ 02h
CPU不能识别,编译出错

这些寄存器的地址是固定的,但是有个前提,就是包括头文件。
原因是头文件中包含了status equ 02h 等所有寄存器的定义。

你现在的程序肯定是没包括头文件,所以必须自己定义。

STATUS不属于特殊功能寄存器
当然要定义了才能用啊.