文章目录
- 1.寄存器总结
- 1.1常用SFR汇总表格
- 1.2TCON(定时器控制寄存器P131)地址为88H
- 1.2.1四种工作方式
- 1.3定时器方式控制寄存器 89H
- 1.4IE(中断允许寄存器)
- 功能说明如下
- 1.5IP(中断优先级寄存器)
- 功能说明
- 1.6SCON(串行口控制器寄存器)
- 2.中断总结
- 2.1外部中断
- 2.2定时器中断
- 标准代码模板
- 2.3串口中断
- 标准模板
- 3.IO端口总结
1.寄存器总结
1.1常用SFR汇总表格
| SRF类别 | 寄存器 | 功能 | 地址 |
|---|---|---|---|
| 中断系统 | IE | 中断允许控制 | A8H |
| 中断系统 | IP | 中断优先级设置 | B8H |
| 串行通信 | SCON | 串口设置 | 98H |
| 串行通信 | PCON | 串口波特率倍增\电源控制 | 87H |
| 串行通信 | SBUF | 存放待发送\已接受的数据 | 99H |
| 定时器/计数器 | TH1/TL1 | 定时器1高/低8位计数寄存器,存放初值和当前计数值 | 8DH/8BH |
| 定时器/计数器 | TH0/TL0 | 定时器0高/低8位计数寄存器,存放初值和当前计数值 | 8CH/8AH |
| 定时器/计数器 | TCON | 定时器控制 | 88H |
| 定时器/计数器 | TMOD | 定时器模式设置 | 89H |
| IO端口 | P0-P3 | 定时器1高/4个八位并行口 | 80H/A0H/B0H/90H |
| 累加器 | A | 累加器 | E0H |
1.2TCON(定时器控制寄存器P131)地址为88H
| 位符号 | 位地址 | 功能说明 |
|---|---|---|
| TF1 | D7 | 计数器/计时器1溢出标志位。计数器/计时器1溢出时,该位置为1 |
| TR1 | D6 | 定时器/计数器1运行控制位。TR1=0停止工作。TR1=1时启动工作。 |
| TF0 | D5 | 计数器/计时器0溢出标志位。溢出时该位置为1.转向中断服务程序时自动清0。 |
| TR0 | D4 | 定时器/计数器0运行控制位。TR0=0时启动工作,TR0=1时启动工作。 |
| IE1 | D3 | 外部中断1请求标志。检测到有效信号置1,进入中断后自动清0 |
| IT1 | D2 | 外部中断1触发方式。0=低电平触发,1=下降沿触发 |
| IE0 | D1 | 外部中断0请求标志。检测到有效信号置1,进入中断后自动清0 |
| IT0 | D0 | 外部中断0触发方式。0=低电平触发,1=下降沿触发 |
启动定时器0与外部中断0触发设置:voidTCON_Example(){IT0=1;// 设置外部中断0为下降沿触发(例如按键按下瞬间触发)TR0=1;// 正式启动定时器0开始计数}1.2.1四种工作方式
| M0 M1 | 工作方式 | 功能 | 最大计数值 |
| 0 0 | 方式0 | 13位定时器/计数器THx(x=0,1)的8位和TLx的低5位构成 | 2^13=8192 |
| 0 1 | 1 | 16位定时器/计数器,又THx和TLx组成 | 2^16=65536 |
| 1 0 | 2 | 可重装初值的8位计数器 | 2^8=256 |
| 1 1 | 3 | 仅适用于T0分为两个8位计数器T1停止计数 | 2^8=256 |
1.3定时器方式控制寄存器 89H
| 位 | 名称 | 功能 |
| D7 | GATE | 门控位GATE=0时,以TRx(X=0,1)来启动运行定时器/计数器,等于1时,用外部中断引脚(INT0/INT1)上的高电平和TRx来启动定时器/计数器 |
| D6 | C/T=1/0 | 计数工作方式定时工作方式 |
| D5D4 | M1M0 | 工作方式选择位 |
| D3 | GATE | 定时器0门控位 |
| D2 | C/T | 定时器0功能选择,0定时1计数 |
1.4IE(中断允许寄存器)
| 位序号 | D7 | D6 |
| 位符号 | EA | - |
| 位地址 | AFH | - |
功能说明如下
- EA等于0时,禁止所有中断;EA=1时,开放中断,但每个中断还受各自的控制位控制。
- ES=0时,禁止中断,=1时允许中断。
- ET1=0时,禁止中断,=1时允许中断。
- EX1=0时,禁止中断,EX1=1时允许中断
- ET0=0时,禁止中断,ET0=1时允许中断。
- EX0=0时,禁止中断,EX0=1时允许中断。
1.5IP(中断优先级寄存器)
| 位序号 | D7 | D6 |
| 位符号 | - | - |
| 位地址 | - | - |
功能说明
1.中断源的中断优先级分别由IP寄存器的各位设定。中断申请源的中断优先级高低,由中断优先级控制器IP的各位控制,IP的各位由用户指令来设定。
2.IP寄存器各位功能如下:
(1).PS:串行口中断优先级控制位。PS=1,为高优先级中断;PS=0,为低优先级中断。
(2).PT1:定时器/计数器T1中断优先级控制位。PT1=1,高优先级中断;PT1=0,低优先级中断。
(3).PX1:外部中断1中断优先级控制位。PX1=1,高优先级中断;PX1=0,低优先级中断。
(4).PT0:定时器/计数器T0中断优先级控制位。PT0=1,高优先级中断;PT0=0,低优先级中断。
(5).PX0:外部中断0中断优先级控制位。PX0=1,高优先级中断;PX0=0,低优先级中断。
1.6SCON(串行口控制器寄存器)
2.中断总结
2.1外部中断
2.2定时器中断
标准代码模板
voidTimer0_Init(void){TMOD=0x01;// T0方式1 16位定时TH0=0xFC;TL0=0x67;// 11.0592MHz 1ms初值ET0=1;// 使能T0中断EA=1;// 开启总中断TR0=1;// 启动定时器0}// 定时器0中断服务函数voidTimer0_ISR(void)interrupt1{// 方式1必须手动重装初值TH0=0xFC;TL0=0x67;// 自定义定时任务}2.3串口中断
标准模板
voidUART_Init(){TMOD=0x20;// T1方式2 自动重装,产生波特率TH1=0xFD;TL1=0xFD;// 11.0592MHz 9600波特率初值SCON=0x50;// 串口方式1,允许接收ES=1;// 开启串口中断EA=1;// 开启总中断TR1=1;// 启动T1}// 串口中断服务函数voidUART_ISR()interrupt4{// 接收中断if(RI==1){RI=0;// 必须手动清零接收标志// 读取接收数据 SBUF}// 发送中断if(TI==1){TI=0;// 必须手动清零发送标志// 发送完成后续处理}}