*.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.0 RXD:串行数据接收
P3.1 TXD:串行数据发送
P3.2 /INT0:外部中断0输入请求
P3.3 /INT1:外部中断1请求输入
P3.4 T0:定时器0外部计数脉冲输入
P3.5 T1:定时器1外部计数脉冲输入
P3.6 /WR:外部数据存储器写信号
P3.7 /RD:外部数据存储器读信号

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*.复位寄存器状态

寄存器 内容 寄存器 内容
PC 0000H TMOD 00H
A 00H TCON 00H
B 00H TH0 00H
PSW 00H TL0 00H
SP 07H TH1 00H
DPTR 0000H TL1 00H
P0~P3 0FFH SCON 00H
IP XXX00000B SBUF XX
IE 0XX00000B PCON  00H

 

 

*.特殊功能寄存器

特殊功能寄存器 功能名称 地址 复位状态
B 通用寄存器 F0H 00H
A 累加器 E0H 00H
PSW 程序状态字 D0H 00H
IP 中断优先级控制 B8H XXX0000B
P3 P3端口 B0H 0FFH
IE 中断使能控制 A8H 0XX00000B
P2 P2端口 A0H 0FFH
SBUF 串行发送/接收缓冲器 99H XXH
SCON 串行口控制 98H 00H
P1 P1端口 90H 0FFH
TH1 T1定时器高8位 8DH 00H
TH0 T0定时器高8位 8CH 00H
TL1 T1定时器低8位 8BH 00H
TL0 T0定时器低8位 8AH 00H
TMOD 定时器/计数器方式控制 89H 00H
TCON 定时器控制 88H 00H
PCON 电源控制 87H 00H
DPH 地址寄存器高8位 83H 00H
DPL 地址寄存器低8位 82H 00H
SP 堆栈指针 81H 07H
P0 P0端口 80H 0FFH

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

寄存器名 D7 D6 D5 D4 D3 D2 D1 D0
电源控制寄存器 PCON SMOD       GF1 GF0 PD IDL
波特率倍乘位       用户标志 用户标志 掉电方式位 待机方式位
定时器方式控制寄存器 TMOD GATE C/-T M1 M0 GATE C/-T M1 M0
T1门控位 T1定时器/计数器选择 T1工作方式选择 T0门控位 T0定时器/计数器选择 T0工作方式选择
程序状态字 PSW CY AC F0 RS1 RS0 OV   P
进位标志 辅助进位标志 用户标志 工作寄存器组选择标志 溢出标志   奇偶标志
中断优先级控制器 IP       PS PT1 PX1 PT0 PX0
      串口优先级设置 T1优先级设置 /INT1优先级设置 T0优先级设置 /INT0优先级设置
中断使能寄存器 IE EA     ES ET1 ETX ET0 EX0
CPU总中断使能     串口中断使能 T1中断使能 /INT1中断使能 T0中断使能 /INT0中断使能
串口控制寄存器 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
串口工作方式选择位 允许接收 发送数据第9位 接收数据第9位 发送完成中断标志 接收数据中断标志
定时器控制寄存器 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
T1溢出标志 T1运行控制位 T0溢出位 T0运行控制位 /INT1中断标志 /INT1触发方式 /INT0中断标志 /INT0触发方式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*.中断系统

中断源 入口地址 长度 中断允许 中断标志 中断优先级位 触发方式 中断标志清零方式 同级内部优先级
/INT0 0003H 8 EX0(IE.0) IE0(TCON.1) PX0(IP.0) IT0(TCON.0)
0:电平触发
1:下降沿触发
电平触发时需软件清零 最高
T0 000BH 8 ET0(IE.1) TF0(TCON.5) PT0(IP.1)   无需软件清零  
/INT1 0013H 8 EX1(IE.2) IE1(TCON.3) PX1(IP.2) IT1(TCON.2) 电平触发时需软件清零  
T1 001BH 8 ET1(IE.3) TF1(TCON.7) PT1(IP.3)   无需软件清零  
串口 0023H 8 ES(IE.4)

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

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

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

M1 M0 工作方式 功能
0 0 方式0 13位计数器
0 1 方式1 16位计数器
1 0 方式2 可自动重新装入的8位计数器
1 1 方式3 T0分为两个独立的8位计数器,T1停止

*.串口工作方式

SM0 SM1 方式 说明
0 0 0 位移寄存器方式(用于I/O扩展)
0 1 1 8位UART,波特率可变(T1溢出率/n)
1 0 2 9位UART,波特率为fosc/64或fosc/32
1 1 3 9位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 模式 重装载值
62500 12 1 0 2 0FFH
19200 11.0592 1 0 2 0FDH
9600 11.0592 0 0 2 0FDH
4800 11.0592 0 0 2 0FAH
2400 11.0592 0 0 2 0F4H
1200 11.0592 0 0 2 0E8H
137500 11.0592 0 0 2 1DH
110 6 0 0 2 72H
110 12 0 0 1 0FEEBH

—pre—

版权声明:本文为memset原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/memset/archive/2012/12/17/2821575.html