8051单片机学习笔记/概要/总结/备忘

*.I/O引脚和I/O端口

P0(P0.7~P0.0)

1.P0是一个漏极开路型准双向I/O口.
2.在访问外存时, 它是数据总线和地址总线的低8位分时复用接口.
3.在EPROM编程时, 它接收指令字节; 在验证程序时, 输出指令字节, 并要求外接上拉电阻.

P1(P1.7~P1.0)1.P1口是带内部上拉电阻的8位双向I/O口, 它是通用I/O口.
2.在EPROM编程和程序验证时, 它接收低8位地址.
P2(P2.7~P2.0)1.P2是带内部上拉电阻的8位双向I/O口.
2.在访问外存时, 它输出8位高地址.
3.在对EPROM编程时和程序验证时, 它接收8位高地址.
P3(P3.7~P3.0)1.P3是带内部上拉电阻的8位双向I/O口, 它是双功能I/O口.
2.除基本输入/输出功能外, 每个引脚还有特殊功能.
I/O口特殊/专用功能
P3.0RXD:串行数据接收
P3.1TXD:串行数据发送
P3.2/INT0:外部中断0输入请求
P3.3/INT1:外部中断1请求输入
P3.4T0:定时器0外部计数脉冲输入
P3.5T1:定时器1外部计数脉冲输入
P3.6/WR:外部数据存储器写信号
P3.7/RD:外部数据存储器读信号

 

 

 

 

 

 

 

 

 

 

 

 

 

 






*.复位寄存器状态

寄存器内容寄存器内容
PC0000HTMOD00H
A00HTCON00H
B00HTH000H
PSW00HTL000H
SP07HTH100H
DPTR0000HTL100H
P0~P30FFHSCON00H
IPXXX00000BSBUFXX
IE0XX00000BPCON 00H

 

 













*.特殊功能寄存器

特殊功能寄存器功能名称地址复位状态
B通用寄存器F0H00H
A累加器E0H00H
PSW程序状态字D0H00H
IP中断优先级控制B8HXXX0000B
P3P3端口B0H0FFH
IE中断使能控制A8H0XX00000B
P2P2端口A0H0FFH
SBUF串行发送/接收缓冲器99HXXH
SCON串行口控制98H00H
P1P1端口90H0FFH
TH1T1定时器高8位8DH00H
TH0T0定时器高8位8CH00H
TL1T1定时器低8位8BH00H
TL0T0定时器低8位8AH00H
TMOD定时器/计数器方式控制89H00H
TCON定时器控制88H00H
PCON电源控制87H00H
DPH地址寄存器高8位83H00H
DPL地址寄存器低8位82H00H
SP堆栈指针81H07H
P0P0端口80H0FFH

































*.可位寻址的特殊功能寄存器

寄存器名D7D6D5D4D3D2D1D0
电源控制寄存器 PCONSMOD   GF1GF0PDIDL
波特率倍乘位   用户标志用户标志掉电方式位待机方式位
定时器方式控制寄存器 TMODGATEC/-TM1M0GATEC/-TM1M0
T1门控位T1定时器/计数器选择T1工作方式选择T0门控位T0定时器/计数器选择T0工作方式选择
程序状态字 PSWCYACF0RS1RS0OV P
进位标志辅助进位标志用户标志工作寄存器组选择标志溢出标志 奇偶标志
中断优先级控制器 IP   PSPT1PX1PT0PX0
   串口优先级设置T1优先级设置/INT1优先级设置T0优先级设置/INT0优先级设置
中断使能寄存器 IEEA  ESET1ETXET0EX0
CPU总中断使能  串口中断使能T1中断使能/INT1中断使能T0中断使能/INT0中断使能
串口控制寄存器 SCONSM0SM1SM2RENTB8RB8TIRI
串口工作方式选择位允许接收发送数据第9位接收数据第9位发送完成中断标志接收数据中断标志
定时器控制寄存器 TCONTF1TR1TF0TR0IE1IT1IE0IT0
T1溢出标志T1运行控制位T0溢出位T0运行控制位/INT1中断标志/INT1触发方式/INT0中断标志/INT0触发方式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 














*.中断系统

中断源入口地址长度 中断允许中断标志中断优先级位触发方式中断标志清零方式同级内部优先级
/INT00003H8EX0(IE.0)IE0(TCON.1)PX0(IP.0)IT0(TCON.0)
0:电平触发
1:下降沿触发
电平触发时需软件清零最高
T0000BH8ET0(IE.1)TF0(TCON.5)PT0(IP.1) 无需软件清零 
/INT10013H8EX1(IE.2)IE1(TCON.3)PX1(IP.2)IT1(TCON.2)电平触发时需软件清零 
T1001BH8ET1(IE.3)TF1(TCON.7)PT1(IP.3) 无需软件清零 
串口0023H8ES(IE.4)

RI(SCON.0)
TI(SCON.1)

PS(IP.4)  需软件清零最低





















*.定时器/计数器工作方式

M1M0工作方式功能
00方式013位计数器
01方式116位计数器
10方式2可自动重新装入的8位计数器
11方式3T0分为两个独立的8位计数器,T1停止









*.串口工作方式

SM0SM1方式说明
000位移寄存器方式(用于I/O扩展)
0118位UART,波特率可变(T1溢出率/n)
1029位UART,波特率为fosc/64或fosc/32
1139位UART,波特率可变(TI溢出率/n)








  注:表中n为32/2SMOD,SMOD为PCON的第7位波特率倍乘位

*.定时器/计数器初值的计算
环境:
  晶振:12.0000MHz
  定时器:T0
  溢出条件:(TH0<<8|TL0)由0FFFFH变为0000H(0FFFFH+1 产生的进位置位TF0产生中断)

假设延时时间为50ms,则:
  频率:ft = 12.0000MHz
  时钟周期:Tt = 1/ft (SI)
  机器周期:Tm = 12*Tt = 12*1/(12*10^6),(SI) = 12*1/12 (us) = 1 (us)(前面的12是因为51是12分频,即12个时钟周期为1个机器周期)
  所以:
    50ms == 50000us == 50000个机器周期
    由 0FFFFH 到 10000H 为 1个机器周期,则:
  初值:start = 0FFFFH + 1H - 50000D = 65536D - 50000D = 15536D = 3CB0H
    于是:TH0 = 0x3C,TL0 = 0xB0

  若晶振频率为:ft = 11.0592MHz
  同样:机器周期Tm = 12*Tt = 12*1/(11.0592*10^6),(SI) = 12/11.0592 (us) = 1.085069(us)
  所以:
    50ms == 50000us = 50000/1.085069 = 46080D 个机器周期
    初值:start = 0FFFFH + 1H - 46080D = 65536D - 46080D = 19456D = 4C00H
    于是:TH0 = 0x4C, TL0 = 0x00

*.串口通信中定时器工作方式下波特率初值计算以及晶振的选择
  当串口工作方式为1(8位UART),T1为定时器时:
    k=13:定时器工作方式0; k=16, 工作方式1, k=8, 工作方式2, ...
    T1溢出率 = Fosc/(12*(2k-初值)),即每秒溢出次数,Fosc:晶振频率,*12:转换为时钟周期
    所以 波特率 = T1溢出率/(32/2SMOD) = 2SMOD */32*T1溢出率 = 2SMOD * Fosc /(32*12*(2k-初值))
    常用波特率:9600bps,192000bps,4800bps, ...
    所以当波特率=9600bps, SMOD=0, k=8时:
      波特率 = 2SMOD * Fosc /(32*12*(2k-初值)) = Fosc/(384*(256-初值)) = 9600
      当晶振为11.0592Mhz时:9600=11.0592*106/(384(256-初值)),求得:初值=253D = 0FDH,此时恰为整数(即TH1=TL1 = 0xFD)
      当晶振为12.0000MHz时:初值为252.744791, 不为整数
这就是为什么在进行串行通信时要选择11.0592MHz晶振, 不选择12MHz晶振的原因.


*.由定时器1产生的常用波特率

波特率 bps晶振频率 Fosc波特率倍乘
SMOD
定时器1
C/-T模式重装载值
62500121020FFH
1920011.05921020FDH
960011.05920020FDH
480011.05920020FAH
240011.05920020F4H
120011.05920020E8H
13750011.05920021DH
110600272H
110120010FEEBH

















---pre---

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值