打印
[牛人杂谈]

51单片机头文件reg51.h详解

[复制链接]
1121|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔、ARM系列的单片机头文件往往内容就非常多,尽管如此,对一些初次接触单片机的朋友来说,51的头文件还是搞不太清楚,今天具体来说明一下。
       1)“文件包含”处理概念

所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include<reg51.h>包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。
     2寄存器地址及位地址声明的原因
    reg51.h里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如sfr P1=0x80; sfr IE=0xA8;sbit EA=0xAF等。
sfr P1 = 0x90这句话表示:P1口所对应的特殊功能寄存器P1在内存中的地址为0x80,sbit EA=0xAF这句话表示EA这一位的地址为0xAF。
        注意这里出现了一个使用很频繁的sfr和sbit。
sfr 表示特殊功能寄存器的意思,它并非标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新的关键词,其用法是:sfr  特殊功能寄存器名=地址值(注意对于头文件里“特殊功能寄存器名”,用户实际上也可以修改的,如P1=0x80,也可改为A1=0x80,但sfr  和地址值则不能更改,否者会编译出错。)
   sbit 表示位的意思,它也是非标准C 语言的关键字,编写程序时如需操作寄存器的某一位(可位寻址的寄存器才能用)时,需定义一个位变量,此时就要要到sbit,如sbit deng=P1^0,sbit EA   = 0xAF;需要注意的是,位定义时有些特殊, 用法有三种:
第一种方法:sbit 位变量名=寄存器位地址值
第二种方法:sbit 位变量名=SFR 名称^寄存器位值(0-7)
第三种方法:sbit 位变量名=SFR 地址值^寄存器位值
如:
sbit IT0=0x88 (1)说明:0x88是IT0 的位地址值
sbit  deng=P1^2 (2)说明:其中P1 必须先用sfr 定义好
sbit EA=0xA8^7 (3)说明:0xA8 就是IE寄存器的地址值
    以上三种定义方法需注意的是 IT0 deng EA可由用户随便定义,但必须满足C语言对变量名的定义规则。除些外其它的则必须按照上面的格式写,如“名称^变量位地址值中“^”,它是由keil软件的规定的 ,不能写成其它的,只能这样能才编译通过。
    以上是对寄存器地址和位地址的定义和声明作了解释,大家需要牢牢记住:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。至于说为什么,这可能一句话两句话也说不清楚。

沙发
稳稳の幸福|  楼主 | 2016-7-28 22:43 | 只看该作者
   3内存、SFR、位、地址等的通俗解释
前面讲到了寄存器地址和位地址(前提能位寻址)声明的目的是为告诉C编译器相应寄存器及其位在内存中的地址,这样我们对寄存器及一些位赋的变量和数值才能正确保存,然后才能供CPU正确的调用,完成相应的功能。
    上段文字出现了寄存器(SFR)、位,地址、内存等,单片机学习过程中还会出现ROM、RAM等名词,可能大家觉得不是很好理解,这里可以通俗的解释一下,如下面三个图所示。
    我们把内存比作宾馆,ROM、RAM、SFR相当于宾馆里具体的有三种不同功能楼层(具体这个宾馆多少层即多少ROM、RAM、SFR,视各个宾馆或者每种单片机而不同),每层8个房间相当于8位,每个房间要么住男人要么住女人相当于每位要么放入数字1要么放入数字0,keil编译器就相当于宾馆的工作人员,旅客去住旅馆相当写程序的过程,住宾馆的人必须事先要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才能把你带到你的房间里去(这里假设这个宾馆可以由旅客自己决定住哪个房间)。即:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。







使用特权

评论回复
板凳
稳稳の幸福|  楼主 | 2016-7-28 22:45 | 只看该作者
4)REG51.H头文件原文及解释
   打开reg51.h 可以看到这样的一些内容(此文件一般在C:\KEIL\C51\INC下 ,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。)
    下面附出头文件的原文,并把注释文件一并附后。

/*--------------------------------------------------------------------------

REG51.H

Header 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 Register  */
        
sfr P0   = 0x80;   //三态双向     IO      P0口 此句话的意思是:特殊功能寄存器 P0 地址为0x80 ,可位寻址,下同
                          //8位地址总线/数据总线(一般不用而只作普通I/O口,注意作I/O口用时,硬件上需接上接电阻)
sfr P1   = 0x90;   //准双向       IO      P1


sfr P2   = 0xA0;   //
准双向  IO      P2
                          //8位地址总线,一般也作普通I/O用
sfr P3   = 0xB0;   //双功能
                          //1.准双向      IO      P3
                        //2.  P30              RXD串行数据接受
                       //    P31              TXD串行数据发送
                          //     P32              外部中断0     信号申请
                         //     P33              外部中断1     信号申请
                            //     P34              定时/计数器T0     外部计数脉冲输入
                            //     P35              定时/计数器T1     外部计数脉冲输入
                            //     P36              WR  片外RAM写脉冲信号输入
                            //     P37           RD  片外ram读脉冲信号输入
sfr PSW  = 0xD0; // 可以位寻址(C语言编程时可不考虑此寄存器)
                            //程序状态寄存器Program Status WORD  (程序状态信息)
                            //psw.7(CY)    进位标志
                            //psw.6(AC)辅助进位标志位低四位向高四位进位或借位时   AC=1
                            //主要用于十进制调整
                            //psw.5(F0)用户可自定义的程序标志位
                           //psw.4(RS1)
                            //psw.3(RS0)
                            //工作寄存器选择位
                            //任一时刻只有一组寄存器在工作
                            //0 0  0     00H~07H
                            //0 1   1     08H~0fH
                            //1 0   2     10H~17H
                            //1 1   3     18H~1FH
                            //psw.2(OV)    溢出标志位
                            //psw.1(   )      保留为 ,不可使用
                            //psw.0(P)              奇偶校验位
sfr ACC  = 0xE0;     //累加器A     特殊功能寄存器    可位寻址
sfr B    = 0xF0;        //寄存器B      主要用于乘除运算
sfr SP   = 0x81;       //堆栈指针寄存器SP    存放站定栈顶地址、
sfr DPL  = 0x82;      //
sfr DPH  = 0x83;     //数据指针寄存器DPTR、//对片外RAM及扩展IO进行存取用的地址指针
sfr PCON = 0x87; //电源控制寄存器  、不能位寻址            
                           //管理单片机的电源部分包括上电复位、掉电模式、空闲模式等
                           //单片机复位时PCON被全部清0,编程时一般是用到SMOD位,其它的一般不用
                          //D7 SMOD该位与串口通信波特率有关
                          //SMOD=0     串口方式1 2 3 波特率正常
                          //SMOD=1     串口方式1 2 3 波特率加倍
              


使用特权

评论回复
地板
稳稳の幸福|  楼主 | 2016-7-28 22:48 | 只看该作者




sfr TCON = 0x88;  //定时器/计数器    控制寄存器   可以位寻址                                                           
         //D7  TF1        定时器1溢出标志位
                            //D6       TR1      定时器1运行控制位
                            //D5       TF0        定时器0溢出标志位
                            //D4     TR0        定时器0运行控制位
                            //D3       IE1         外部中断1请求标志
                            //D2       IT1         外部中断1 触发方式选择位
                            //D1       IE0       外部中断0请求标志
                            //D0     IT0         外部中断0 触发方式选择位

sfr TMOD = 0x89; //定时器/计数器    工作方式寄存器    不能位寻址
                            //确定工作方式和功能                                                  
                            //D7 GATE     门控制位
                            //GATE=0;定时器/计数器由TRX(x=0,1)来控制
                            //GATE=1;定时器/计数器由TRX(x=0,1)
                            //和外部中断引脚(init0,1)来共同控制
                            //D6  C/T      定时器、计数器选择位
                            //     0    选择定时器模式
                            //     1     选择计数器模式
                            //D5       M1        
                            //D4       M0
                            //M1       M0         工作方式
                            //0   0            方式0     13位定时器/计数器
                            //0   1          方式1     16位定时器/计数器
                            //1   0          方式2     8位自动重装定时器/计数器
                            //1   1          方式3     仅适用T0      分成两个8位计数器,T1停止计数
                            //D3 GATE     门控制位
                            //GATE=0;定时器/计数器由TRX(x=0,1)来控制
                            //GATE=1;定时器/计数器由TRX(x=0,1)
                            //和外部中断引脚(init0,1)来共同控制
                            //D2  C/T             定时器、计数器选择位
                            //0  选择定时器模式
                            //1   选择计数器模式
                            //D1       M1        
                            //D0       M0
                            //     M1 M0         工作方式
                            //     0     0     方式0     13位定时器/计数器
                            //     0     1     方式1   16位定时器/计数器
                            //     1     0     方式2   8位自动重装定时器/计数器
                            //     1     1     方式3   仅适用T0      分成两个8位计数器,T1停止计数
sfr TL0  = 0x8A;    //定时器/计数器0高8位     容器   加1 计数器
sfr TL1  = 0x8B;    //定时器/计数器1高8位     容器
sfr TH0  = 0x8C;    //定时器/计数器0低8位     容器
sfr TH1  = 0x8D;    //定时器/计数器1低8位     容器


sfr IE   = 0xA8;                 //中断允许寄存器          可以位寻址
                                          //D7  EA         全局中断允许位
                                          //D6       NULL
                                          //D5       ET2        定时器/计数器2中断允许位     interrupt 5

                                          //D4  ES          串行口中断允许位        interrupt 4

                                          //D3  ET1        定时器/计数器1中断允许位     interrupt 3

                                          //D2  EX1        外部中断1中断允许位      interrupt 2

                                           //D1  ET0        定时器/计数器0中断允许位  interrupt 1

                                           //D0  EX0        外部中断0中断允许位     interrupt 0
  
sfr IP   = 0xB8;        //中断优先级寄存器   可进行位寻址
                             //D7 NULL
                                //D6 NULL
                                 //D5       NULL
                                                 //D4       PS          串行口中断定义优先级控制位
                                                 //            1            串行口中断定义为高优先级中断
                                                 //            0            串行口中断定义为低优先级中断
                                                 //         
                                                 //D3       PT1      
                                                 //            1     定时器/计数器1中断定义为高优先级中断
                                                 //            0     定时器/计数器1中断定义为低优先级中断
                                                 //D2 PX1
                                                 //            1            外部中断1定义为高优先级中断
                                                 //            0          外部中断1定义为低优先级中断
                                                 //D1       PT0      
                                                 //            1     定时器/计数器0中断定义为高优先级中断
                                                 //            0     定时器/计数器0中断定义为低优先级中断
                                                 //D0 PX0
                                                 //            1            外部中断0定义为高优先级中断
                                                 //            0          外部中断0定义为低优先级中断


sfr SCON = 0x98;   //串行口控制寄存器     可以进行位寻址         
                              //D7   SM0            
                               //D6       SM1
                               //     SM0      SM1              串行口工作方式
                               //     0           0            同步移位寄存器方式
                             //     0         1            10位异步收发(8位数据),波特率可变(定时器1溢出率控制)
                               //   1         0            11位异步收发(9位数据),波特率固定
                               //     1         1            11异步收发(9位数据)  ,波特率可变(定时器1溢出率控制)
                               //D5       SM2            多机通信控制位    主要用于方式2和方式3
                               //D4       REN            允许串行接收位

                               //D3       TB8        方式2,3中发送数据的第9位
                               //D2       RB8      方式2,3中接受数据的第9位

                               //D1       TI           发送中断标志位
                              //D0       RI         接受中断标志位

sfr SBUF = 0x99;    //串行数据缓冲区



sfr TCON = 0x88;  //定时器/计数器    控制寄存器   可以位寻址                                                           
         //D7  TF1        定时器1溢出标志位
                            //D6       TR1      定时器1运行控制位
                            //D5       TF0        定时器0溢出标志位
                            //D4     TR0        定时器0运行控制位
                            //D3       IE1         外部中断1请求标志
                            //D2       IT1         外部中断1 触发方式选择位
                            //D1       IE0       外部中断0请求标志
                            //D0     IT0         外部中断0 触发方式选择位

sfr TMOD = 0x89; //定时器/计数器    工作方式寄存器    不能位寻址
                            //确定工作方式和功能                                                  
                            //D7 GATE     门控制位
                            //GATE=0;定时器/计数器由TRX(x=0,1)来控制
                            //GATE=1;定时器/计数器由TRX(x=0,1)
                            //和外部中断引脚(init0,1)来共同控制
                            //D6  C/T      定时器、计数器选择位
                            //     0    选择定时器模式
                            //     1     选择计数器模式
                            //D5       M1        
                            //D4       M0
                            //M1       M0         工作方式
                            //0   0            方式0     13位定时器/计数器
                            //0   1          方式1     16位定时器/计数器
                            //1   0          方式2     8位自动重装定时器/计数器
                            //1   1          方式3     仅适用T0      分成两个8位计数器,T1停止计数
                            //D3 GATE     门控制位
                            //GATE=0;定时器/计数器由TRX(x=0,1)来控制
                            //GATE=1;定时器/计数器由TRX(x=0,1)
                            //和外部中断引脚(init0,1)来共同控制
                            //D2  C/T             定时器、计数器选择位
                            //0  选择定时器模式
                            //1   选择计数器模式
                            //D1       M1        
                            //D0       M0
                            //     M1 M0         工作方式
                            //     0     0     方式0     13位定时器/计数器
                            //     0     1     方式1   16位定时器/计数器
                            //     1     0     方式2   8位自动重装定时器/计数器
                            //     1     1     方式3   仅适用T0      分成两个8位计数器,T1停止计数

使用特权

评论回复
5
稳稳の幸福|  楼主 | 2016-7-28 22:49 | 只看该作者

sfr TL0  = 0x8A;    //定时器/计数器0高8位     容器   加1 计数器
sfr TL1  = 0x8B;    //定时器/计数器1高8位     容器
sfr TH0  = 0x8C;    //定时器/计数器0低8位     容器
sfr TH1  = 0x8D;    //定时器/计数器1低8位     容器



sfr IE   = 0xA8;                 //中断允许寄存器          可以位寻址
                                          //D7  EA         全局中断允许位
                                          //D6       NULL
                                          //D5       ET2        定时器/计数器2中断允许位     interrupt 5

                                          //D4  ES          串行口中断允许位        interrupt 4

                                          //D3  ET1        定时器/计数器1中断允许位     interrupt 3

                                          //D2  EX1        外部中断1中断允许位      interrupt 2

                                           //D1  ET0        定时器/计数器0中断允许位  interrupt 1

                                           //D0  EX0        外部中断0中断允许位     interrupt 0
  
sfr IP   = 0xB8;        //中断优先级寄存器   可进行位寻址
                             //D7 NULL
                                //D6 NULL
                                 //D5       NULL
                                                 //D4       PS          串行口中断定义优先级控制位
                                                 //            1            串行口中断定义为高优先级中断
                                                 //            0            串行口中断定义为低优先级中断
                                                 //         
                                                 //D3       PT1      
                                                 //            1     定时器/计数器1中断定义为高优先级中断
                                                 //            0     定时器/计数器1中断定义为低优先级中断
                                                 //D2 PX1
                                                 //            1            外部中断1定义为高优先级中断
                                                 //            0          外部中断1定义为低优先级中断
                                                 //D1       PT0      
                                                 //            1     定时器/计数器0中断定义为高优先级中断
                                                 //            0     定时器/计数器0中断定义为低优先级中断
                                                 //D0 PX0
                                                 //            1            外部中断0定义为高优先级中断
                                                 //            0          外部中断0定义为低优先级中断



sfr SCON = 0x98;   //串行口控制寄存器     可以进行位寻址         
                              //D7   SM0            
                               //D6       SM1
                               //     SM0      SM1              串行口工作方式
                               //     0           0            同步移位寄存器方式
                             //     0         1            10位异步收发(8位数据),波特率可变(定时器1溢出率控制)
                               //   1         0            11位异步收发(9位数据),波特率固定
                               //     1         1            11异步收发(9位数据)  ,波特率可变(定时器1溢出率控制)
                               //D5       SM2            多机通信控制位    主要用于方式2和方式3
                               //D4       REN            允许串行接收位

                               //D3       TB8        方式2,3中发送数据的第9位
                               //D2       RB8      方式2,3中接受数据的第9位

                               //D1       TI           发送中断标志位
                              //D0       RI         接受中断标志位


sfr SBUF = 0x99;    //串行数据缓冲区




sfr TCON = 0x88;  //定时器/计数器    控制寄存器   可以位寻址                                                           
         //D7  TF1        定时器1溢出标志位
                            //D6       TR1      定时器1运行控制位
                            //D5       TF0        定时器0溢出标志位
                            //D4     TR0        定时器0运行控制位
                            //D3       IE1         外部中断1请求标志
                            //D2       IT1         外部中断1 触发方式选择位
                            //D1       IE0       外部中断0请求标志
                            //D0     IT0         外部中断0 触发方式选择位


sfr TMOD = 0x89; //定时器/计数器    工作方式寄存器    不能位寻址
                            //确定工作方式和功能                                                  
                            //D7 GATE     门控制位
                            //GATE=0;定时器/计数器由TRX(x=0,1)来控制
                            //GATE=1;定时器/计数器由TRX(x=0,1)
                            //和外部中断引脚(init0,1)来共同控制
                            //D6  C/T      定时器、计数器选择位
                            //     0    选择定时器模式
                            //     1     选择计数器模式
                            //D5       M1        
                            //D4       M0
                            //M1       M0         工作方式
                            //0   0            方式0     13位定时器/计数器
                            //0   1          方式1     16位定时器/计数器
                            //1   0          方式2     8位自动重装定时器/计数器
                            //1   1          方式3     仅适用T0      分成两个8位计数器,T1停止计数
                            //D3 GATE     门控制位
                            //GATE=0;定时器/计数器由TRX(x=0,1)来控制
                            //GATE=1;定时器/计数器由TRX(x=0,1)
                            //和外部中断引脚(init0,1)来共同控制
                            //D2  C/T             定时器、计数器选择位
                            //0  选择定时器模式
                            //1   选择计数器模式
                            //D1       M1        
                            //D0       M0
                            //     M1 M0         工作方式
                            //     0     0     方式0     13位定时器/计数器
                            //     0     1     方式1   16位定时器/计数器
                            //     1     0     方式2   8位自动重装定时器/计数器
                            //     1     1     方式3   仅适用T0      分成两个8位计数器,T1停止计数

sfr TL0  = 0x8A;    //定时器/计数器0高8位     容器   加1 计数器
sfr TL1  = 0x8B;    //定时器/计数器1高8位     容器
sfr TH0  = 0x8C;    //定时器/计数器0低8位     容器
sfr TH1  = 0x8D;    //定时器/计数器1低8位     容器



sfr IE   = 0xA8;                 //中断允许寄存器          可以位寻址
                                          //D7  EA         全局中断允许位
                                          //D6       NULL
                                          //D5       ET2        定时器/计数器2中断允许位     interrupt 5

                                          //D4  ES          串行口中断允许位        interrupt 4

                                          //D3  ET1        定时器/计数器1中断允许位     interrupt 3

                                          //D2  EX1        外部中断1中断允许位      interrupt 2

                                           //D1  ET0        定时器/计数器0中断允许位  interrupt 1

                                           //D0  EX0        外部中断0中断允许位     interrupt 0
  
sfr IP   = 0xB8;        //中断优先级寄存器   可进行位寻址
                             //D7 NULL
                                //D6 NULL
                                 //D5       NULL
                                                 //D4       PS          串行口中断定义优先级控制位
                                                 //            1            串行口中断定义为高优先级中断
                                                 //            0            串行口中断定义为低优先级中断
                                                 //         
                                                 //D3       PT1      
                                                 //            1     定时器/计数器1中断定义为高优先级中断
                                                 //            0     定时器/计数器1中断定义为低优先级中断
                                                 //D2 PX1
                                                 //            1            外部中断1定义为高优先级中断
                                                 //            0          外部中断1定义为低优先级中断
                                                 //D1       PT0      
                                                 //            1     定时器/计数器0中断定义为高优先级中断
                                                 //            0     定时器/计数器0中断定义为低优先级中断
                                                 //D0 PX0
                                                 //            1            外部中断0定义为高优先级中断
                                                 //            0          外部中断0定义为低优先级中断



sfr SCON = 0x98;   //串行口控制寄存器     可以进行位寻址         
                              //D7   SM0            
                               //D6       SM1
                               //     SM0      SM1              串行口工作方式
                               //     0           0            同步移位寄存器方式
                             //     0         1            10位异步收发(8位数据),波特率可变(定时器1溢出率控制)
                               //   1         0            11位异步收发(9位数据),波特率固定
                               //     1         1            11异步收发(9位数据)  ,波特率可变(定时器1溢出率控制)
                               //D5       SM2            多机通信控制位    主要用于方式2和方式3
                               //D4       REN            允许串行接收位

                               //D3       TB8        方式2,3中发送数据的第9位
                               //D2       RB8      方式2,3中接受数据的第9位

                               //D1       TI           发送中断标志位
                              //D0       RI         接受中断标志位


sfr SBUF = 0x99;    //串行数据缓冲区

使用特权

评论回复
6
稳稳の幸福|  楼主 | 2016-7-28 22:56 | 只看该作者
/*****************************************************************************
                                                        下面是位寻址区
                                          上面做过解释的就不在下面一一解释了
******************************************************************************/
/*  BIT Register  */   
/*  PSW   */
sbit CY   = 0xD7;
sbit AC   = 0xD6;
sbit F0   = 0xD5;
sbit RS1  = 0xD4;
sbit RS0  = 0xD3;
sbit OV   = 0xD2;
sbit P    = 0xD0;
/*  TCON  */
sbit TF1  = 0x8F;
sbit TR1  = 0x8E;
sbit TF0  = 0x8D;
sbit TR0  = 0x8C;
sbit IE1  = 0x8B;
sbit IT1  = 0x8A;
sbit IE0  = 0x89;
sbit IT0  = 0x88;
/*  IE   */
sbit EA   = 0xAF;
sbit ES   = 0xAC;
sbit ET1  = 0xAB;
sbit EX1  = 0xAA;
sbit ET0  = 0xA9;
sbit EX0  = 0xA8;
/*  IP   */
sbit PS   = 0xBC;
sbit PT1  = 0xBB;
sbit PX1  = 0xBA;
sbit PT0  = 0xB9;
sbit PX0  = 0xB8;
/*  P3  */
sbit RD   = 0xB7;
sbit WR   = 0xB6;
sbit T1   = 0xB5;
sbit T0   = 0xB4;
sbit INT1 = 0xB3;
sbit INT0 = 0xB2;
sbit TXD  = 0xB1;
sbit RXD  = 0xB0;
/*  SCON  */
sbit SM0  = 0x9F;
sbit SM1  = 0x9E;
sbit SM2  = 0x9D;
sbit REN  = 0x9C;
sbit TB8  = 0x9B;
sbit RB8  = 0x9A;
sbit TI   = 0x99;
sbit RI   = 0x98;
#endif

使用特权

评论回复
7
yiyigirl2014| | 2016-7-28 23:47 | 只看该作者
//电源控制寄存器  、不能位寻址            
                           //管理单片机的电源部分包括上电复位、掉电模式、空闲模式等
                           //单片机复位时PCON被全部清0,编程时一般是用到SMOD位,其它的一般不用

使用特权

评论回复
8
稳稳の幸福|  楼主 | 2016-7-29 20:00 | 只看该作者
要搞清楚每个寄存器的作用和使用方法。

使用特权

评论回复
9
天灵灵地灵灵| | 2016-7-29 20:57 | 只看该作者
讲解很透彻。

使用特权

评论回复
10
sa123800| | 2016-8-5 14:03 | 只看该作者
学习了

使用特权

评论回复
11
稳稳の幸福|  楼主 | 2016-8-6 23:32 | 只看该作者
10位异步收发(8位数据),波特率可变(定时器1溢出率控制)

使用特权

评论回复
12
捉虫天师| | 2016-8-7 11:46 | 只看该作者
P1口所对应的特殊功能寄存器P1在内存中的地址为0x80,sbit EA=0xAF这句话表示EA这一位的地址为0xAF。

使用特权

评论回复
13
天灵灵地灵灵| | 2016-8-9 22:56 | 只看该作者
三态双向     IO口      P0口 此句话的意思是:特殊功能寄存器 P0 地址为0x80 ,可位寻址,下同
低8位地址总线/数据总线(一般不用而只作普通I/O口,注意作I/O口用时,硬件上需接上接电阻)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

187

主题

3282

帖子

8

粉丝