1、为能直接访问80C51中的SFR而提供了一个新的关键词,其用法是:特殊功能寄存器名=地址值(注意对于头文件里“特殊功能寄存器名”,用户实际上也可以修改的,如=x80,也可改为=x80,但sfr 和地址值则不能更改,否者会编译出错。)些位赋的变量和数值才能正确保存,然后才能供CPU正确的调用,完成相应的功能。上段文字出现了寄存器(SFR)、位,地址、内存等,单片机学习过程中还会出现ROM、RAM等名词,可能大家觉得不是很好理解,这里可以通俗的解释一下,如下面三个图所示。我们把内存比作宾馆,ROM、RAM、SFR相当于宾馆里具体的有三种不同功能楼层(具体这个宾馆多少层即多少ROM、RAM、SFR,
2、视各个宾馆或者每种单片机而不同),每层8个房间相当于8位,每个房间要么住男人要么住女人相当于每位要么放入数字1要么放入数字0,keil编译器就相当于宾馆的工作人员,旅客去住旅馆相当写程序的过程,住宾馆的人必须事先要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才能把你带到你的房间里去(这里假设这个宾馆可以由旅客自己决定住哪个房间)。即:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。4)REG51.H头文件原文及解释打开reg51.h可以看到这样的一些内容(此文件一般在C:KEILC51INC下,INC文件夹根目录里有不少头
3、文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。下面附出头文件的原文,并把注释文件一并附后。/*-REG51.HHeader file for generic 80C51 and 80C31 microcontroller.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _REG51_H_#define _REG51_H_/*BYTE Re
4、gister*/sfr P0= 0x80;/三态双向IO口P0口此句话的意思是:特殊功能寄存器地址为x80 ,可位寻址,下同/低8位地址总线/数据总线(一般不用而只作普通/口,注意作/口用时,硬件上需接上接电阻)sfr P1= 0x90;/准双向P1口sfr P2= 0xA0;P2口/高8位地址总线,一般也作普通/用sfr P3= 0xB0;/双功能/1.准双向P3口/2.P30RXD串行数据接受/P31TXD串行数据发送/P32外部中断0信号申请P33外部中断1P34定时/计数器T0外部计数脉冲输入P35定时/计数器T1P36WR片外RAM写脉冲信号输入P37 RD片外ram读脉冲信号输入s
5、fr PSW= 0xD0;可以位寻址(语言编程时可不考虑此寄存器)/程序状态寄存器Program Status WORD(程序状态信息)/psw.7(CY)进位标志/psw.6(AC)辅助进位标志位低四位向高四位进位或借位时AC=1/主要用于十进制调整/psw.5(F0)用户可自定义的程序标志位/psw.4(RS1)/psw.3(RS0)/工作寄存器选择位/任一时刻只有一组寄存器在工作/0 00区00H07H/0 11区08H0fH/1 02区10H17H/1 13区18H1FH/psw.2(OV)溢出标志位/psw.1()保留为,不可使用/psw.0(P)奇偶校验位sfr ACC= 0xE0
6、;/累加器A特殊功能寄存器可位寻址sfr B= 0xF0;/寄存器B主要用于乘除运算sfr SP= 0x81;/堆栈指针寄存器SP存放站定栈顶地址、sfr DPL= 0x82;/sfr DPH= 0x83;/数据指针寄存器DPTR、/对片外RAM及扩展IO进行存取用的地址指针sfr PCON = 0x87;/电源控制寄存器、不能位寻址/管理单片机的电源部分包括上电复位、掉电模式、空闲模式等/单片机复位时PCON被全部清0,编程时一般是用到位,其它的一般不用/D7SMOD该位与串口通信波特率有关/SMOD=0串口方式1 2 3波特率正常/SMOD=1波特率加倍sfr TCON = 0x88;/定时器/计数器控制寄存器可以位寻址/D7TF1定时器1溢出标志位/D6TR1定时器1运行控制位/D5TF0定时器0溢出标志位/D4TR0定时器0运行控制位/D3IE1外部中断1请求标志/D2IT1触发方式选择位/D1IE0外部中断0请求标志/D0IT0sfr TMOD = 0x89;工作方式寄存器不能位寻址/确定工作方式和功能GATE门控制位/GATE=0;定时器/计数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1