找回密码
 立即注册
查看: 450|回复: 11

能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗

[复制链接]
已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
发表于 2026-8-25 10:31:06 | 显示全部楼层 |阅读模式
能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗



截图202608251031029403.jpg
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:31:31 | 显示全部楼层

好的,这是一个很实用的问题。作为 STC 的 FAE 工程师,我可以基于 AI8051U 手册来帮你规划一套面向大学教学的 PPT 大纲。

不过在正式生成完整PPT之前,我想先确认几个关键点,确保生成的PPT符合你的实际教学需求:


请你确认以下信息

1. 教学内容范围

AI8051U 功能非常丰富(USB、CAN、I2S、DSP32 等),请问你希望覆盖哪个阶段?

阶段 建议内容
入门基础 单片机概述、开发环境、I/O口、定时器、串口、中断
进阶外设 ADC/DAC、SPI、I²C、PWM、触摸按键
高阶应用 USB、CAN、DMA、I2S、TFT彩屏、DSP32

2. 教学对象

  • 大一/大二(初学单片机)?
  • 大三/大四(嵌入式方向)?
  • 研究生(进阶项目)?

3. 课时安排

  • 是一门完整课程(如 32 学时/48 学时)?
  • 还是某个专题章节(如 2~4 学时)?

4. 是否配套实验/例程

  • 需要配套可下载的实验代码和实验箱/开发板操作内容吗?
  • AI8051U 官方有配套实验箱,我可以结合实验箱讲解。

5. 输出形式

  • 你希望我提供的是 PPT 大纲/目录框架(文字形式,方便你自己排版)?
  • 还是逐页的详细内容(含课件要点、示例代码、图示说明文字)?

从教学规律角度,我建议的AI8051U 入门到进阶课程体系(供参考)

按照"概念认知 → 环境搭建 → 基础外设 → 进阶外设 → 综合项目"的递进逻辑,AI8051U 课程可以分为以下几个知识模块:

模块一:认识 AI8051U(2 学时)

模块二:开发环境与工具(2 学时)

模块三:最小系统与 I/O 口(4 学时)

模块四:定时器与中断(4 学时)

模块五:串口通信(4 学时)

模块六:模拟外设(4 学时)

模块七:总线通信(4 学时)

模块八:PWM 与电机控制(4 学时)

模块九:USB 通信(4 学时)

模块十:综合项目(8 学时)


请你告诉我具体偏好

请根据上面的问题(范围、对象、课时、实验配套、输出形式)告诉我你的实际需求,我就能为你生成符合教学规律、逐页可用的 PPT 大纲和课件要点。

你可以直接回复,例如:

"我想做入门到进阶 32 学时的完整课程,对象是大三学生,需要配套实验例程,输出为逐页详细内容。"

收到你的回复后,我会基于 AI8051U 手册(AI8051U系列选型简介 等章节)逐模块生成教学方案。


信息来源:

请确认你的具体需求,我来为你定制。


🔍 搜索 "AI8051U 教学PPT 知识点 大学课件"

📌 相关论坛讨论

  1. 《8051U深度入门到32位51大型实战教学视频》
  2. 沈阳建筑大学已开始用 AI8051U实验箱教学
  3. 51教学改革交流, AI8051U,8位 1T8051, 32位8051

⏱️ 查找用时 0.5s | 总回答用时 12.8s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:33:19 | 显示全部楼层
入门基础,初学单片机,一门完整课程/48 学时,
逐页的详细内容(含课件要点、示例代码、图示说明文字),
配套实验已有说明



截图202608251032577832.jpg
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:33:54 | 显示全部楼层

我已经获取了非常丰富的AI8051U手册资料。现在我有足够的核心信息来生成这份完整的大学教学PPT大纲。由于内容非常庞大,我将分批次输出,先给出课程整体规划和第一部分的详细内容。


AI8051U 大学单片机教学 PPT 完整规划(48学时入门课程)

📋 课程整体架构(48学时)

模块 章节标题 学时 知识点
第1讲 单片机基础与AI8051U认识 4 数制/编码、单片机概念、AI8051U特性
第2讲 开发环境搭建与程序烧录 4 Keil C51/C251安装、ISP下载、工程创建
第3讲 I/O口与最小系统 6 端口四种模式、LED点亮、按键输入
第4讲 中断系统 6 外部中断、定时器中断、中断优先级
第5讲 定时器/计数器 6 模式0/1/2、定时、计数、波特率
第6讲 串口通信 6 UART原理、串口1/2、波特率计算、收发
第7讲 存储器与特殊功能寄存器 4 edata/xdata、SFR/XFR、EAXFR
第8讲 综合实验 6 多外设综合、串口+定时器+LED
第9讲 课程总结与扩展 6 进阶外设介绍、综合项目展望
合计 48

下面逐讲输出详细课件内容。由于内容量大,我按每讲为核心单元输出。


📚 第1讲:单片机基础与AI8051U认识(4学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 主讲人:__________________
  • 本讲:第1讲 单片机基础与AI8051U认识

【PPT 第2页】什么是单片机?

课件要点:

  • 单片微型计算机(MCU/微控制器):在一个芯片上实现一个完整的计算机系统
  • 包含 CPU、存储器、I/O 接口、定时器、中断系统等
  • 有些机械件(如键盘、显示器)无法集成在芯片内
  • 题目:为什么键盘不能集成在芯片上?

图示说明文字:

单片机 = CPU + ROM/Flash + RAM + 外设接口
        ┌─────────────────────────┐
        │  ┌────┐  ┌─────┐        │
        │  │CPU │  │Flash │        │
        │  └────┘  └─────┘        │
        │  ┌────┐  ┌─────┐        │
        │  │ RAM │  │ 外设 │        │
        │  └────┘  └─────┘        │
        └─────────────────────────┘

依据:AI8051U手册「单片机基础概述」章节


【PPT 第3页】数制与编码基础

课件要点:

  • 二进制/十进制/十六进制转换
  • BCD码、ASCII码
  • 字节、字、双字
  • 位(bit)/字节(Byte)/字(Word)= 8/16/32位

图示说明文字:

1 位 (bit) = 0或1
1 字节 (Byte) = 8位 = 1B
1 字 (Word) = 16位 = 2B
1 双字 (DWord) = 32位 = 4B

十进制 → 二进制   例如:13 = 1101B
二进制 → 十六进制  例如:1101 1010B = DAH

依据:AI8051U手册「单片机基础概述」章节


【PPT 第4页】AI8051U系列介绍

课件要点(基于手册选型表):

  • AI8051U-34K64:64K Flash,2K edata,32K xdata,45个I/O口
  • 工作电压 1.9V~5.5V
  • 支持 USB直接下载、USB直接仿真
  • 支持 32位/8位 双核8051指令集
  • 内置 12位ADC(15通道)、8路PWM
  • 价格:LQFP48 ¥2.3,LQFP44 ¥3.9,PDIP40 ¥4.0

图示说明文字(特性选型表简化版):

┌─────────────────────────────────────────────┐
│ Ai8051U-34K64 特性摘要                        │
│ Flash: 64K   |  edata RAM: 2K   |  xdata: 32K│
│ I/O口: 45    |  ADC: 12位/15通道 |  PWM: 8路   │
│ 串口: 2组    |  定时器: 6个      |  USB: 全速  │
│ 工作电压: 1.9V~5.5V                           │
│ 封装: LQFP48/LQFP44/PDIP40                    │
└─────────────────────────────────────────────┘

依据:AI8051U手册「Ai8051U系列选型简介、特性/价格/管脚图/ISP下载/编程线路图」


【PPT 第5页】Ai8051U 内部结构

课件要点:

  • Ai8051U内部数据总线宽度为 32位(兼容16/8/1位)
  • 相比 Intel 80251(8位总线),32位数据 一个时钟即可完成读写
  • Intel 80251需要 4次读写+合并才能完成32位数据操作
  • 268条指令,包含32位加减法指令和16位乘除法指令
  • 内置 MDU32硬件32位乘除法器、TFPU硬件浮点/三角函数运算器

图示说明文字:

┌──────────────────────────────────────────────┐
│           Ai8051U 内部(32位总线)             │
│  ┌─────────┐    ┌──────────┐    ┌─────────┐ │
│  │  CPU     │    │ Flash    │    │  XRAM   │ │
│  │ 32位指令 │    │  64K     │    │  32K    │ │
│  └─────────┘    └──────────┘    └─────────┘ │
│  ┌─────────┐    ┌──────────┐    ┌─────────┐ │
│  │  EDATA   │    │  USB     │    │  ADC    │ │
│  │  2K      │    │  全速    │    │ 12位    │ │
│  └─────────┘    └──────────┘    └─────────┘ │
│           其他外设:UART/SPI/I2C/PWM/TFPU    │
└──────────────────────────────────────────────┘

依据:AI8051U手册「单片机基础概述」、「Ai8051U系列和Intel-80251内部结构图对比」


【PPT 第6页】AI8051U与经典8051的关系

课件要点:

  • 指令码完全一致:Ai8051U-8Bit指令码与STC89系列完全一致,代码可直接移植
  • 速度更快:大部分指令只需1个CPU时钟(1T)
  • I/O口默认状态不同:STC89上电为准双向口,AI8051U除P3.0/P3.1外上电为高阻输入
  • 复位电平不同:AI8051U复位脚为低电平复位,STC89为高电平复位

图示说明文字:

         指令兼容性对比
┌────────────┬──────────────┬──────────────┐
│   项目     │  STC89系列    │  Ai8051U      │
├────────────┼──────────────┼──────────────┤
│ 指令兼容   │ 基准          │ 完全兼容      │
│ 速度       │ 12T(慢)     │ 1T(快12倍)  │
│ I/O上电   │ 准双向口      │ 高阻输入      │
│ 复位电平   │ 高电平复位    │ 低电平复位    │
└────────────┴──────────────┴──────────────┘

依据:AI8051U手册「Ai8051U系列单片机取代STC89系列的注意事项」


【PPT 第7页】AI8051U 上电默认I/O口状态(重点!)

课件要点:

  • 重要差异:AI8051U-8Bit系列单片机的I/O中,除了ISP下载脚P3.0/P3.1为准双向口模式外,其余的所有I/O口在上电后都是高阻输入模式
  • 优势:可避免上电瞬间马达转动或LED闪烁(传统8051上电为准双向输出高电平)
  • 使用I/O输出前,必须先设置 PxM0/PxM1 寄存器
  • 陷阱:如果直接用 P1 = 0xFF; 而不配置模式,I/O口无法输出!因为它处于高阻输入状态

图示说明文字:

        AI8051U 上电后 I/O 状态
┌──────┬──────────────┬──────────────────┐
│ 端口  │ 上电默认模式  │  是否需要配置     │
├──────┼──────────────┼──────────────────┤
│ P3.0 │ 准双向口     │ 不需要(默认)     │
│ P3.1 │ 准双向口     │ 不需要(默认)     │
│ 其他 │ 高阻输入     │ 必须配置 PxM0/PxM1 │
└──────┴──────────────┴──────────────────┘

⚠️ 结论:用I/O输出前,必须先配置端口模式!

依据:AI8051U手册「Ai8051U系列单片机取代STC89系列的注意事项」


【PPT 第8页】本讲小结与思考题

课件要点:

  • 掌握数制/编码基础
  • 了解单片机的概念
  • 认识AI8051U系列特性
  • 理解AI8051U与经典8051的差异

思考题:

  1. 为什么AI8051U比传统8051快很多?
  2. AI8051U的I/O口上电默认是什么模式?与STC89有何不同?
  3. 使用I/O口输出信号前,需要做什么操作?

由于整个48学时的PPT内容非常庞大,我将继续输出第2讲到第9讲的内容。但考虑到单次输出长度限制,我会在下一轮继续输出第2讲。你现在看到的第1讲已经完整。

请问:

  1. 当前第1讲的输出格式是否符合你的需求?
  2. 需要我继续输出第2讲(开发环境搭建与程序烧录)吗?
  3. 或者你想先对第1讲的内容进行调整/补充?

信息来源:


🔍 搜索 "入门基础 初学单片机 一门完整课程/48 学时"

📌 相关论坛讨论

  1. 《51单片机原理与应用开发》
  2. 哪里可以下载完整的 冲哥视频课件?求助!
  3. 《8051U深度入门到32位51大型实战教学视频》打卡学习心得-第一集

⏱️ 查找用时 31.8s | 总回答用时 61.6s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:45:04 | 显示全部楼层

好的,我继续输出第2讲的详细教学内容。这一讲是开发环境搭建与程序烧录,对初学者非常关键。


📚 第2讲:开发环境搭建与程序烧录(4学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 本讲:第2讲 开发环境搭建与程序烧录
  • 主讲人:__________________

【PPT 第2页】本讲目标

课件要点:

  • 了解 Keil 集成开发环境的下载与安装
  • 掌握 Keil C51 与 C251 的区别
  • 学会创建工程、编写代码、编译
  • 掌握 AIapp-ISP 下载软件的使用
  • 认识 Ai8051U 实验箱

图示说明文字:

本讲学习路线:
安装Keil → 创建工程 → 编写代码 → 编译 → 下载 → 验证

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第3页】Keil 集成开发环境介绍

课件要点:

  • Keil 是嵌入式开发最常用的 IDE(集成开发环境)
  • 需要下载两个版本:C51 和 C251
  • Keil C51:用于传统8位8051单片机(如STC89、STC12等)
  • Keil C251:用于支持251指令集的单片机(如Ai8051U的32位模式)
  • 两者可安装在同一台电脑同一目录,互不冲突
  • 下载地址:https://www.keil.com/download/product/

图示说明文字:

┌─────────────────────────────────────────────┐
│          Keil 编译器家族                       │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  │
│  │   C51    │  │   C251   │  │   MDK    │  │
│  │ 8位8051  │  │ 251/32位 │  │ ARM内核   │  │
│  └──────────┘  └──────────┘  └──────────┘  │
│                                                │
│  Ai8051U 可用 C51 或 C251 编译!                │
│  - 8位兼容模式 → 用 Keil C51                    │
│  - 32位模式  → 用 Keil C251                    │
└─────────────────────────────────────────────┘

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第4页】Keil 的下载步骤

课件要点:

  1. 登录 Keil 官网,下载 C51 和 C251 编译器安装包
  2. C51 下载页面:C51V961.EXE(或更高版本)
  3. C251 下载页面:C251V*.EXE(或更高版本)
  4. 输入联系信息时注意:E-mail 拼写检查较严谨,必须用类似 c@qq.com 格式,其他任意字母填写

图示说明文字:

下载流程:
Keil官网 → 选择C51 → 输入信息(邮箱必须正确) → 点击Submit → 点击下载链接
Keil官网 → 选择C251 → 输入信息(邮箱必须正确) → 点击Submit → 点击下载链接

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第5页】Keil 的安装步骤

课件要点:

  1. 双击安装包 → 点击"Next"
  2. 勾选 "I agree to all the terms of the preceding License Agreement" → 点击"Next"
  3. 选择安装目录(默认即可) → 点击"Next"
  4. 填写个人信息 → 点击"Next"
  5. 安装完成 → 点击"Finish"

注意:C51、C251 和 MDK 可安装在同一台电脑同一个目录(C:\Keil),分别安装在不同子目录(C51、C251、ARM),互不冲突。

图示说明文字:

C:\Keil_v5\  (新版默认目录)
├── C51\        ← Keil C51编译器
├── C251\       ← Keil C251编译器  
└── ARM\        ← Keil MDK (ARM编译器)

三个编译器互不干扰,安装顺序不影响已有配置!

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第6页】如何获取无限制版 Keil

课件要点:

  • Keil 为商业软件,需要购买授权
  • 可通过以下方法获取授权信息:
    • 搜索"从哪购买KEIL,获取无限制版KEIL"
    • 搜索"如何购买 KEIL C251"
    • 搜索"如何购买 KEIL C51"
    • 搜索"如何获取无限制版KEIL"

注意:教学环境中请使用已授权的软件

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第7页】Ai8051U 的下载方式

课件要点:

  • Ai8051U 支持 USB 直接下载(无需额外下载器)
  • 支持 USB 直接仿真
  • 支持 RS485 下载
  • 支持 串口下载
  • 支持 在线仿真
  • 支持程序加密后传输(防拦截)
  • 支持可设置下次更新程序需口令

图示说明文字:

Ai8051U 支持的下载方式:
┌──────────────────────────────────┐
│  USB直接下载(推荐,无需额外硬件) │
│  USB直接仿真                      │
│  串口下载                         │
│  RS485下载                        │
│  在线仿真                         │
└──────────────────────────────────┘

依据:AI8051U手册「Ai8051U系列选型简介、特性/价格/管脚图/ISP下载/编程线路图」


【PPT 第8页】开发实验箱介绍

课件要点:

  • 配套Ai8051U 实验箱可进行各类实验
  • 实验箱上通常包含:LED、按键、数码管、蜂鸣器、LCD屏、传感器模块等
  • 通过实验箱可完成从基础到进阶的各类实验
  • 实验箱的接口与Ai8051U各管脚对应

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第9页】Ai8051U 管脚图与最小系统

课件要点:

  • Ai8051U-LQFP48 有45个I/O口
  • 不需要外部晶振(内部高精度IRC)
  • 不需要外部复位(内部高可靠复位电路)
  • 工作电压:1.9V~5.5V
  • 最小系统只需:电源 + GND + USB接口(下载用)

图示说明文字(最小系统接线简图):

        ┌─────────────┐
   VCC ─┤VCC(Pin)     │
        │              │
   GND ─┤GND(Pin)     │
        │              │
   USB ─┤D+   D-      │
        │   Ai8051U    │
        └─────────────┘

Ai8051U 不需要外部晶振!
Ai8051U 不需要外部复位!

依据:AI8051U手册「Ai8051U系列选型简介、特性/价格/管脚图/ISP下载/编程线路图」


【PPT 第10页】Keil 工程创建步骤

课件要点:

  1. 打开 Keil → 新建工程(Project → New uVision Project)
  2. 选择目标芯片(Ai8051U 系列)
  3. 添加源文件(.c文件)
  4. 设置工程选项(Options for Target)
  5. 编译生成 .hex 文件
  6. 使用 AIapp-ISP 下载软件烧录

图示说明文字:

Keil 工程创建流程:
新建工程 → 选芯片 → 添加.c文件 → 配置选项 → 编译(F7) → 生成HEX → 烧录

【PPT 第11页】Ai8051U 头文件

课件要点:

  • Ai8051U 的头文件可在 STC下载软件(AIapp-ISP) 中获取
  • 头文件名为 Ai8051U.H
  • 包含所有特殊功能寄存器定义
  • 使用前需包含:#include "Ai8051U.H"
  • 使用 _nop_() 函数需包含:#include "intrins.h"

示例代码(PPT展示):

#include "Ai8051U.H"   // 头文件见下载软件
#include "intrins.h"   // 使用_nop_()函数所必须包含的头文件

void main()
{
    ...
}

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第12页】AIapp-ISP 下载软件

课件要点:

  • AIapp-ISP 是 STC 官方的下载/编程/仿真软件

  • 功能包括:

    • 程序下载(烧录)
    • 设置芯片工作频率
    • 设置I/O口初始状态
    • 制作EEPROM文件
    • 在线仿真
    • 查看全球唯一ID号
  • 使用流程:打开软件 → 选择芯片型号 → 选串口/USB → 选择HEX文件 → 点击下载

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第13页】程序烧录步骤详解

课件要点:

  1. 将Ai8051U通过USB线连接电脑
  2. 打开 AIapp-ISP 下载软件
  3. 选择芯片型号:Ai8051U-34K64
  4. 选择下载方式:USB直连 / 串口
  5. 选择编译好的 .hex 文件
  6. 点击"下载/编程"按钮
  7. 等待烧录完成

图示说明文字:

烧录流程图:
USB连接 → 打开AIapp-ISP → 选型号 → 选HEX → 点下载 → 完成!

依据:AI8051U手册「集成开发环境、ISP下载软件及实验箱」


【PPT 第14页】上电后 I/O 口状态(重要!)

课件要点:

  • Ai8051U上电后,除P3.0/P3.1为准双向口外,其余所有I/O口都是高阻输入模式!
  • 这意味着使用I/O输出前必须设置 PxM0/PxM1 寄存器
  • 如果直接操作I/O口而不配置模式,无法输出!
  • 优势:避免上电瞬间马达转动/LED闪烁(传统8051上电为准双向输出高电平)

图示说明文字:

┌──────┬──────────────┬─────────────────────┐
│ 端口  │ 上电默认模式  │  是否需要配置        │
├──────┼──────────────┼─────────────────────┤
│ P3.0 │ 准双向口     │  不需要(ISP下载口)  │
│ P3.1 │ 准双向口     │  不需要(ISP下载口)  │
│ 其他 │ 高阻输入     │  必须配置 PxM0/PxM1   │
└──────┴──────────────┴─────────────────────┘

⚠️ 关键:用I/O输出前必须先配置端口模式!

依据:AI8051U手册「Ai8051U系列单片机取代STC89系列的注意事项」


【PPT 第15页】第一个程序:点亮LED(演示代码)

课件要点:

  • 展示AI8051U最基本的程序框架
  • 说明I/O口配置的必要性
  • 讲解 P1M0/P1M1 寄存器的配置

示例代码:

// 第一个程序:点亮P1.0上的LED
// 测试工作频率建议为 11.0592MHz
#include "Ai8051U.H"   // 头文件见下载软件
#include "intrins.h"

void main()
{
    // 配置P1口为准双向口(传统8051模式,弱上拉)
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    // P1.0输出低电平,点亮LED
    P1 = 0xFE;   // 1111 1110,仅P1.0为低
  
    while(1);
}

图示说明文字:

P1M1 = 0x00, P1M0 = 0x00  →  准双向口(弱上拉)
P1M1 = 0x00, P1M0 = 0x01  →  推挽输出(强上拉)
P1M1 = 0x01, P1M0 = 0x00  →  高阻输入
P1M1 = 0x01, P1M0 = 0x01  →  开漏模式

依据:AI8051U手册「I/O口」章节


【PPT 第16页】本讲小结与思考题

课件要点:

  • 掌握Keil C51/C251的安装使用
  • 掌握AIapp-ISP烧录流程
  • 掌握I/O口四种模式的配置
  • 能独立完成第一个程序

思考题:

  1. Keil C51 和 Keil C251 有什么区别?Ai8051U 可以用哪个?
  2. AI8051U 支持哪些下载方式?
  3. 为什么AI8051U使用I/O口输出前必须先配置 PxM0/PxM1 寄存器?
  4. 准双向口和推挽输出有什么区别?各适合什么场景?

信息来源:


第2讲内容已完整输出。由于整个48学时的PPT内容非常多,我需要分多轮输出。

当前已完成:

  • ✅ 第1讲:单片机基础与AI8051U认识(4学时)
  • ✅ 第2讲:开发环境搭建与程序烧录(4学时)

待输出:

  • 🔜 第3讲:I/O口与最小系统(6学时)
  • 🔜 第4讲:中断系统(6学时)
  • 🔜 第5讲:定时器/计数器(6学时)
  • 🔜 第6讲:串口通信(6学时)
  • 🔜 第7讲:存储器与特殊功能寄存器(4学时)
  • 🔜 第8讲:综合实验(6学时)
  • 🔜 第9讲:课程总结与扩展(6学时)

请问需要我继续输出第3讲(I/O口与最小系统)吗?


🔍 搜索 "继续输出第2讲"

📌 相关论坛讨论

  1. 能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗
  2. 第1-2讲:搭建开发环境
  3. 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版

⏱️ 查找用时 1.8s | 总回答用时 33.0s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:48:36 | 显示全部楼层

好的,继续输出第3讲的内容。这一讲是I/O口与最小系统,是初学者掌握单片机控制外部设备的核心内容。


📚 第3讲:I/O口与最小系统(6学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 本讲:第3讲 I/O口与最小系统
  • 主讲人:__________________

【PPT 第2页】本讲目标

课件要点:

  • 掌握 I/O 口的四种工作模式
  • 理解 PxM0/PxM1 寄存器的配置方法
  • 学会点亮 LED 灯
  • 学会按键输入检测
  • 掌握普通 I/O 口中断(高级内容)

【PPT 第3页】I/O口概述

课件要点:

  • Ai8051U 有最多 45个 I/O 口
  • 每个 I/O 口的配置需要 两个寄存器(PxM0 和 PxM1)
  • 例如:P0口需要 P0M0 和 P0M1 两个寄存器
  • P0M0的第0位 和 P0M1的第0位 组合配置 P0.0 口的模式
  • 依此类推,其他所有 I/O 口配置都与此类似

图示说明文字:

┌─────────────────────────────────────────────┐
│  I/O口的配置需要两个寄存器                     │
│                                                │
│  P0M0: bit0 → P00M0   bit1 → P01M0  ...      │
│  P0M1: bit0 → P00M1   bit1 → P01M1  ...      │
│                                                │
│  P0M0.0 + P0M1.0  →  配置 P0.0 口的模式       │
│  P0M0.1 + P0M1.1  →  配置 P0.1 口的模式       │
│  ...                                          │
└─────────────────────────────────────────────┘

依据:AI8051U手册「I/O口」章节


【PPT 第4页】I/O口四种工作模式(重点表格)

课件要点:这是本讲的核心内容,务必让学生掌握

PnM1.xPnM0.x工作模式

00准双向口(传统8051端口模式,弱上拉)灌电流可达20mA,拉电流为270~150μA(存在制造误差)
01推挽输出(强上拉输出,可达20mA,要加限流电阻)
10高阻输入(电流既不能流入也不能流出)
11开漏模式(Open-Drain),内部上拉电阻断开开漏模式既可读外部状态也可对外输出(高电平或低电平)。如要正确读外部状态或需要对外输出高电平,需外加上拉电阻,否则读不到外部状态,也对外输不出高电平。开漏模式,对外设置输出为1,等同于高阻输入开漏模式,打开内部上拉电阻 或 外部加上拉电阻,简单等同于准双向口

注意:n = 0,1,2,3,4,5,6,7

依据:AI8051U手册「I/O口」章节


【PPT 第5页】四种模式速记口诀

课件要点(教学技巧):

  • 00 → 准双向:可输入可输出,弱上拉,传统模式
  • 01 → 推挽:只能输出,强驱动,适合驱动LED/马达
  • 10 → 高阻:只能输入,电流不进不出,适合ADC采集
  • 11 → 开漏:内部上拉断开,需外接上拉电阻

图示说明文字:

口诀:0-0准双向,0-1推挽强,1-0高阻输入,1-1开漏外拉!

            PnM1  PnM0
准双向  ←    0     0   (可输入可输出,弱上拉)
推挽    ←    0     1   (强上拉输出)
高阻    ←    1     0   (纯输入,内部无上拉)
开漏    ←    1     1   (内部上拉断开,需外接上拉)

依据:AI8051U手册「I/O口」章节


【PPT 第6页】为什么Ai8051U上电I/O是高阻?

课件要点(重点讲解与STC89的区别):

  • STC89系列:所有I/O口上电后都是准双向口模式
  • Ai8051U系列:除ISP下载脚 P3.0/P3.1 为准双向口模式外,其余所有I/O口上电后都是高阻输入模式
  • 优势:避免上电瞬间马达转动、LED闪烁(传统8051上电准双向输出高电平)
  • 注意:使用I/O口向外输出信号前,必须先使用 PxM0 和 PxM1 寄存器对I/O的工作模式进行设置

图示说明文字:

┌─────────────────────────────────────────────────┐
│          Ai8051U 上电后 I/O 状态                  │
├────────────────┬────────────────────────────────┤
│ P3.0 / P3.1    │  准双向口(ISP下载脚默认)        │
│ 其余所有I/O口   │  高阻输入模式(不能直接输出!)   │
└────────────────┴────────────────────────────────┘

⚠️ 如果直接写 P1 = 0x00; 但没配置 P1M0/P1M1,
   P1口仍处于高阻状态,无法输出低电平!

依据:AI8051U手册「Ai8051U系列单片机取代STC89系列的注意事项」


【PPT 第7页】I/O口寄存器地址表

课件要点:完整列出各端口配置寄存器及其地址

端口PxM0(地址)PxM1(地址)

P0口P0M0(94H)P0M1(93H)
P1口P1M0(92H)P1M1(91H)
P2口P2M0(96H)P2M1(95H)
P3口P3M0(B2H)P3M1(B1H)
P4口P4M0(B4H)P4M1(B3H)
P5口P5M0(CAH)P5M1(C9H)
P6口P6M0(CCH)P6M1(CBH)
P7口P7M0(E2H)P7M1(E1H)

依据:AI8051U手册「I/O口」章节


【PPT 第8页】实验1:点亮一个LED(演示代码)

课件要点:

  • 展示AI8051U最基本的LED点亮程序
  • 强调必须配置I/O口模式
  • 说明LED接法(低电平点亮)

示例代码:

// 实验1:点亮P1.0上的LED
// 测试工作频率建议为 11.0592MHz
#include "Ai8051U.H"   // 头文件见下载软件
#include "intrins.h"   // 使用_nop_()函数所必须包含的头文件

void main()
{
    // 配置P1口为准双向口(传统8051模式,弱上拉)
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    // P1.0输出低电平,点亮LED
    P1 = 0xFE;   // 1111 1110,仅P1.0为低
  
    while(1);    // 死循环,保持程序运行
}

图示说明文字:

LED 接线(低电平点亮):
      
   VCC ──┬── LED ── 电阻 ── P1.0
         │
         └── 单片机P1.0输出低电平 → LED亮

P1 = 0xFE = 1111 1110
   bit0 = 0 → P1.0输出低电平 → LED亮

依据:AI8051U手册「I/O口」章节


【PPT 第9页】实验2:LED流水灯

课件要点:

  • 使用延时函数实现LED轮流亮灭
  • 说明 P1 寄存器按位操作的方法
  • 让学生理解循环与延时

示例代码:

// 实验2:P1口8个LED轮流点亮(流水灯)
// 测试工作频率建议为 11.0592MHz
#include "Ai8051U.H"
#include "intrins.h"

void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++)
        for (j = 0; j < 1000; j++);
}

void main()
{
    unsigned char i;
  
    // 配置P1口为准双向口
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    while (1)
    {
        for (i = 0; i < 8; i++)
        {
            P1 = ~(0x01 << i);  // 第i位为0,其余为1
            delay_ms(200);       // 延时200ms
        }
    }
}

图示说明文字:

流水灯原理:
0x01<<0 = 0000 0001 → ~ = 1111 1110 → P1.0亮
0x01<<1 = 0000 0010 → ~ = 1111 1101 → P1.1亮
0x01<<2 = 0000 0100 → ~ = 1111 1011 → P1.2亮
...
0x01<<7 = 1000 0000 → ~ = 0111 1111 → P1.7亮

依据:AI8051U手册「I/O口」章节


【PPT 第10页】实验3:按键输入检测

课件要点:

  • 按键需要配置为高阻输入或准双向口(作输入用)
  • 按键按下时,需要检测到低电平
  • 注意:按键接线为"按键一端接I/O口,另一端接GND"
  • 按键检测需要消抖处理

示例代码:

// 实验3:检测P1.0上的按键
// 测试工作频率建议为 11.0592MHz
#include "Ai8051U.H"
#include "intrins.h"

void main()
{
    unsigned char key_state;
  
    // 配置P1口为准双向口(可输入可输出)
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    while (1)
    {
        key_state = P1 & 0x01;  // 只读P1.0位
      
        if (key_state == 0)     // 按键按下(低电平)
        {
            // 按键被按下,执行相应操作
            // 此处可添加消抖代码
        }
    }
}

图示说明文字:

按键接线图(按下→低电平):
      
   VCC ─┬── P1.0(内部上拉)
         │
         └── 按键 ── GND

   ★ 按键未按下:P1.0被内部上拉 → 高电平(1)
   ★ 按键按下:P1.0通过按键接地 → 低电平(0)
   
   检测方法:读取P1.0是否为0

依据:AI8051U手册「I/O口」章节


【PPT 第11页】按键消抖处理

课件要点:

  • 机械按键在按下/释放瞬间会产生抖动(约5~20ms)
  • 需通过软件延时进行消抖
  • 常用方法:检测到按下→延时20ms→再次检测→确认按下

示例代码(消抖思路):

// 按键消抖基本思路
// 1. 检测到低电平
// 2. 延时20ms(跳过抖动区)
// 3. 再次检测,如果仍是低电平则确认按下
// 4. 等待按键释放

unsigned char key_press()
{
    if ((P1 & 0x01) == 0)      // 第一次检测到按下
    {
        delay_ms(20);           // 消抖延时
        if ((P1 & 0x01) == 0)  // 再次确认
        {
            while ((P1 & 0x01) == 0);  // 等待按键释放
            return 1;                   // 确认按键有效
        }
    }
    return 0;
}

依据:AI8051U手册「I/O口」章节(通用开发经验,非手册原文)


【PPT 第12页】I/O口中断(高级内容)

课件要点:

  • Ai8051U 支持所有I/O口中断(非传统外部中断INT0/INT1)
  • 支持4种中断模式:下降沿、上升沿、低电平、高电平
  • 每组I/O口有独立的中断入口地址
  • 每个I/O可独立设置中断模式
  • 特殊的:如果需要同时检测某个信号的上升沿和下降沿,可将此信号同时连接到两个I/O,一个检测上升沿、另一个检测下降沿

相关寄存器(PxINTE / PxINTF / PxIM0 / PxIM1 / PxWKUE):

  • PxINTE:端口中断使能
  • PxINTF:端口中断标志(需软件清0)
  • PxIM0/PxIM1:中断模式配置
  • PxWKUE:掉电唤醒使能

依据:AI8051U手册「普通I/O口均可中断,不是传统外部中断」


【PPT 第13页】I/O中断模式配置

课件要点:

PnIM1.xPnIM0.x中断模式掉电唤醒

00下降沿中断支持
01上升沿中断支持
10低电平中断不支持
11高电平中断不支持

依据:AI8051U手册「普通I/O口均可中断,不是传统外部中断」


【PPT 第14页】I/O中断示例:P0口下降沿中断

课件要点:

  • 由于中断向量大于31,在KEIL中无法直接编译
  • 必须借用第13号中断入口地址
  • 需要配合汇编文件 ISR.ASM

示例代码:

// 测试工作频率为11.0592MHz
#include "Ai8051U.H"
#include "intrins.h"

void main()
{
    EAXFR = 1;          // 允许访问扩展的特殊寄存器,XFR
    WTST = 0;           // 设置取程序代码等待时间,程序以最快速度运行
    CKCON = 0;          // 设置访问片内的xdata速度
  
    // 配置所有I/O口
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
  
    P0IM0 = 0x00;        // 下降沿中断
    P0IM1 = 0x00;
    P0INTE = 0xff;       // 使能P0口中断
    EA = 1;              // 开总中断
  
    while (1);
}

// 由于中断向量大于31,借用第13号中断入口地址
void common_isr() interrupt 13
{
    unsigned char intf;
    intf = P0INTF;
    if (intf)
    {
        P0INTF = 0x00;   // 清除中断标志
        if (intf & 0x01)  // P0.0口中断
        {
            // 处理P0.0中断
        }
        // ... 其他位处理
    }
}

配套汇编文件(ISR.ASM):

; 将下面的代码保存为ISR.ASM,加入项目中
CSEG AT 012BH     ; P0口中断入口地址
JMP P0INT_ISR
P0INT_ISR:
JMP 006BH         ; 借用13号中断的入口地址
END

依据:AI8051U手册「普通I/O口均可中断,不是传统外部中断」


【PPT 第15页】本讲小结与思考题

课件要点:

  • 掌握I/O口四种模式及配置方法
  • 掌握LED点亮和按键输入
  • 了解I/O中断的使用

思考题:

  1. 准双向口和推挽输出有什么区别?驱动LED应该用哪种?
  2. 为什么Ai8051U上电后I/O口是高阻输入?这有什么好处?
  3. 按键为什么要消抖?消抖的常用方法是什么?
  4. Ai8051U的I/O中断支持哪几种触发模式?哪种模式支持掉电唤醒?

信息来源:


第3讲内容已完整输出。

当前已完成:

  • ✅ 第1讲:单片机基础与AI8051U认识(4学时)
  • ✅ 第2讲:开发环境搭建与程序烧录(4学时)
  • ✅ 第3讲:I/O口与最小系统(6学时)

待输出:

  • 🔜 第4讲:中断系统(6学时)
  • 🔜 第5讲:定时器/计数器(6学时)
  • 🔜 第6讲:串口通信(6学时)
  • 🔜 第7讲:存储器与特殊功能寄存器(4学时)
  • 🔜 第8讲:综合实验(6学时)
  • 🔜 第9讲:课程总结与扩展(6学时)

请问需要继续输出第4讲(中断系统)吗?


🔍 搜索 "继续输出第3讲"

📌 相关论坛讨论

  1. 能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗
  2. 第2-3讲:触摸按键输入检测
  3. 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版

⏱️ 查找用时 0.8s | 总回答用时 41.6s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:52:47 | 显示全部楼层

好的,继续输出第4讲。这一讲是中断系统,是单片机实现实时响应外部事件的核心机制。


📚 第4讲:中断系统(6学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 本讲:第4讲 中断系统
  • 主讲人:__________________

【PPT 第2页】本讲目标

课件要点:

  • 理解中断的概念与作用
  • 掌握中断系统的结构与中断源
  • 掌握外部中断 INT0/INT1/INT2/INT3/INT4 的配置
  • 掌握中断优先级的设置
  • 理解中断嵌套的概念
  • 能编写中断服务程序

【PPT 第3页】什么是中断?

课件要点:

  • 中断:当CPU正在处理某件事的时候,外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后再回到原来被中断的地方继续原来的工作
  • 中断源:请求CPU中断的请求源
  • 中断嵌套:CPU正在处理一个中断时,又发生了更高优先级的中断请求,CPU暂停当前中断,转去处理更高优先级中断,处理完再回来继续
  • 优先级:CPU总是先响应优先级别最高的中断请求

图示说明文字:

中断处理流程图:

主程序正在执行...
    │
    ▼
┌─────────────┐
│ 主程序运行中  │
└─────────────┘
    │
    ▼ 外部事件发生(中断请求)
┌─────────────┐
│ 暂停当前工作  │
│ 保存现场     │
│ 执行中断服务  │
│ 恢复现场     │
└─────────────┘
    │
    ▼
回到主程序继续执行

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第4页】中断系统的作用

课件要点:

  • 实时处理:对外界紧急事件作出及时响应
  • 提高效率:CPU不需要轮询等待外部事件,而是由外部事件主动"通知"CPU
  • 多任务处理:不同优先级的中断可实现优先处理

对比(轮询 vs 中断):

轮询方式(效率低):
while(1)
{
    if (按键按下) { 处理按键; }   // CPU一直循环检查
    if (串口有数据) { 处理数据; }  // 浪费CPU时间
}

中断方式(效率高):
主程序做主要工作
→ 按键按下 → 产生中断 → 自动处理 → 继续主程序
→ 串口有数据 → 产生中断 → 自动处理 → 继续主程序

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第5页】Ai8051U 中断源列表

课件要点:了解Ai8051U支持的中断源

中断源Ai8051U系列

外部中断0中断(INT0,从P3.2管脚输入)√
定时器0中断(Timer0)√
外部中断1中断(INT1,从P3.3管脚输入)√
定时器1中断(Timer1)√
串口1中断(UART1)√
模数转换中断(ADC)√
低压检测中断(LVD)√
CCP/PCA/PWM中断√
串口2中断(UART2)√
串行外设接口中断(SPI)√
外部中断2中断(INT2,从P3.6管脚输入)√
外部中断3中断(INT3,从P3.7管脚输入)√
定时器2中断(Timer2)√

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第6页】中断允许寄存器(IE)

课件要点:

符号地址B7B6B5B4B3B2B1B0

IEA8HEAELVDEADCESET1EX1ET0EX0

寄存器位说明:

  • EA(IE.7):总中断使能位。0=禁止所有中断,1=允许所有中断
  • ELVD(IE.6):低压检测中断使能
  • EADC(IE.5):ADC中断使能
  • ES(IE.4):串口1中断使能
  • ET1(IE.3):定时器1中断使能
  • EX1(IE.2):外部中断1使能
  • ET0(IE.1):定时器0中断使能
  • EX0(IE.0):外部中断0使能

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第7页】中断优先级控制寄存器(IP / IPH)

课件要点:

IP寄存器(B8H):

B7B6B5B4B3B2B1B0

PPCAPLVDPADCPSPT1PX1PT0PX0

IPH寄存器(B7H):

B7B6B5B4B3B2B1B0

PPCAHPLVDHPADCHPSHPT1HPX1HPT0HPX0H

说明:IP 与 IPH 组合使用,每对位可设置中断为 0~3 级优先级:

  • IPH.x=0, IP.x=0 → 优先级0(最低)
  • IPH.x=0, IP.x=1 → 优先级1
  • IPH.x=1, IP.x=0 → 优先级2
  • IPH.x=1, IP.x=1 → 优先级3(最高)

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第8页】定时器控制寄存器(TCON)

课件要点:TCON 用于控制外部中断和定时器的标志位

符号地址B7B6B5B4B3B2B1B0

TCON88HTF1TR1TF0TR0IE1IT1IE0IT0

寄存器位说明:

  • TF1(TCON.7):定时器1溢出标志
  • TR1(TCON.6):定时器1运行控制位
  • TF0(TCON.5):定时器0溢出标志
  • TR0(TCON.4):定时器0运行控制位
  • IE1(TCON.3):外部中断1请求标志
  • IT1(TCON.2):外部中断1触发方式(0=低电平,1=下降沿)
  • IE0(TCON.1):外部中断0请求标志
  • IT0(TCON.0):外部中断0触发方式(0=低电平,1=下降沿)

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第9页】外部中断 INT0/INT1 配置

课件要点:

  • INT0 从 P3.2 管脚输入
  • INT1 从 P3.3 管脚输入
  • IT0/IT1 设置触发方式:0=低电平触发,1=下降沿触发
  • 使用前需配置P3.2/P3.3为输入模式(高阻或准双向)

示例代码:

// 外部中断0(INT0)配置示例
#include "Ai8051U.H"
#include "intrins.h"

void main()
{
    // 配置P3口为准双向(P3.2作为输入)
    P3M0 = 0x00;
    P3M1 = 0x00;
  
    IT0 = 1;    // 设置INT0为下降沿触发
    EX0 = 1;    // 使能外部中断0
    EA = 1;     // 开总中断
  
    while(1);
}

// 外部中断0服务程序
void int0_isr() interrupt 0
{
    // 处理INT0中断
}

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第10页】外部中断 INT2/INT3/INT4

课件要点:

  • INT2 从 P3.6 管脚输入
  • INT3 从 P3.7 管脚输入
  • INT4 从 P3.0 管脚输入(通过INTCLKO寄存器控制)
  • 需要IE2寄存器中的 ET2/ET3/ET4 使能

相关寄存器:

  • INTCLKO(8FH):EX4/EX3/EX2 使能位
  • IE2(AFH):ET4/ET3/ET2 使能位
  • AUXINTIF(EFH):INT4IF/INT3IF/INT2IF 标志位

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第11页】中断优先级与嵌套

课件要点:

  • 高优先级中断可以打断低优先级中断(中断嵌套)
  • 低优先级中断不能打断高优先级中断
  • 当两个相同优先级的中断同时产生时,由查询次序决定系统先响应哪个
  • AI8051U的中断优先级分为 0~3级(4级)

图示说明文字:

中断嵌套示例:

主程序(优先级最低)
  │
  ├── 中断A(优先级1) 发生 → 正在处理
  │     │
  │     ├── 中断B(优先级2) 发生 → 打断中断A,先处理B
  │     │     │
  │     │     └── B处理完毕,恢复处理A
  │     │
  │     └── A处理完毕,恢复主程序
  │
  └── 主程序继续

优先级规则:
中断B(高) 可以打断 中断A(低)
中断A(低) 不能打断 中断B(高)

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第12页】中断示例:外部中断控制LED

课件要点:

  • 使用INT0按键触发中断,在中断里翻转LED状态
  • 演示中断服务程序的写法

示例代码:

// 外部中断0控制LED翻转
// 测试工作频率为11.0592MHz
#include "Ai8051U.H"
#include "intrins.h"

void main()
{
    // 配置P1口为准双向口(LED输出)
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    // 配置P3口为准双向口(P3.2作为INT0输入)
    P3M0 = 0x00;
    P3M1 = 0x00;
  
    P1 = 0xFE;    // 初始LED状态:P1.0亮
  
    IT0 = 1;      // 设置INT0为下降沿触发
    EX0 = 1;      // 使能外部中断0
    EA = 1;       // 开总中断
  
    while(1);     // 主程序空循环
}

// 外部中断0服务程序(中断号为0)
void int0_isr() interrupt 0
{
    // 当P3.2检测到下降沿时,翻转P1.0的LED
    P1 = ~P1;     // 翻转P1口所有位
}

图示说明文字:

硬件连接:
┌──────────────────────────────┐
│ P1.0 ── LED ── 电阻 ── VCC   │
│                              │
│ P3.2 ── 按键 ── GND          │
└──────────────────────────────┘

按一下按键 → P3.2下降沿 → 触发INT0中断
→ 中断服务程序翻转LED → LED切换状态

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第13页】中断服务程序编写要点

课件要点:

  • 中断服务程序使用 interrupt n 关键字声明
  • 中断号 n 对应:INT0=0,Timer0=1,INT1=2,Timer1=3,UART=4,ADC=5,Timer2=12等
  • 中断服务程序尽量简短,复杂逻辑放在主循环中
  • 注意中断标志位的清除

示例:

// 中断服务程序基本格式
void 中断函数名() interrupt 中断号
{
    // 中断处理代码(尽量简短)
    // 注意清除中断标志位
}

中断号对照表:

中断号 中断源
0 外部中断0(INT0)
1 定时器0
2 外部中断1(INT1)
3 定时器1
4 串口1
5 ADC
12 定时器2
13 借用(I/O中断)

依据:AI8051U手册「中断系统及外部中断INT0/1/2/3/4实验」


【PPT 第14页】普通I/O口中断(回顾)

课件要点:

  • Ai8051U 支持所有I/O口中断,而非仅是传统外部中断INT0/INT1
  • 支持4种模式:下降沿、上升沿、低电平、高电平
  • 每组I/O有独立中断入口地址
  • 由于中断向量大于31,必须借用第13号中断入口地址,配合汇编文件 ISR.ASM
  • 中断优先级支持 4级

实现步骤:

  1. 配置 PxIM0/PxIM1 设置中断模式
  2. 配置 PxINTE 使能对应I/O中断
  3. 编写 common_isr() interrupt 13 处理中断
  4. 添加 ISR.ASM 文件到工程

依据:AI8051U手册「普通I/O口均可中断,不是传统外部中断」


【PPT 第15页】本讲小结与思考题

课件要点:

  • 理解中断概念、中断源
  • 掌握IE、IP、TCON等寄存器
  • 掌握外部中断配置与中断服务程序编写
  • 理解中断优先级与嵌套

思考题:

  1. 什么是中断嵌套?什么情况下会发生?
  2. INT0 和 INT1 分别从哪个管脚输入?如何设置触发方式?
  3. 如何设置一个中断为最高优先级?
  4. 为什么中断服务程序要尽量简洁?

信息来源:


第4讲内容已完整输出。

当前已完成:

  • ✅ 第1讲:单片机基础与AI8051U认识(4学时)
  • ✅ 第2讲:开发环境搭建与程序烧录(4学时)
  • ✅ 第3讲:I/O口与最小系统(6学时)
  • ✅ 第4讲:中断系统(6学时)

待输出:

  • 🔜 第5讲:定时器/计数器(6学时)
  • 🔜 第6讲:串口通信(6学时)
  • 🔜 第7讲:存储器与特殊功能寄存器(4学时)
  • 🔜 第8讲:综合实验(6学时)
  • 🔜 第9讲:课程总结与扩展(6学时)

请问需要继续输出第5讲(定时器/计数器)吗?


🔍 搜索 "继续输出第4讲"

📌 相关论坛讨论

  1. 能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗
  2. 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版
  3. 第2-4-2讲:外部中断原理介绍

⏱️ 查找用时 1.1s | 总回答用时 39.6s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:54:18 | 显示全部楼层

好的,继续输出第5讲。这一讲是定时器/计数器,是单片机实现精确延时、定时控制、波特率生成的核心功能。


📚 第5讲:定时器/计数器(6学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 本讲:第5讲 定时器/计数器
  • 主讲人:__________________

【PPT 第2页】本讲目标

课件要点:

  • 理解定时器与计数器的区别
  • 掌握定时器0/1的模式0(16位自动重装载)
  • 掌握定时器0/1的模式1(16位不可重装载)
  • 掌握定时器0/1的模式2(8位自动重装载)
  • 掌握定时器0模式3(不可屏蔽中断)
  • 掌握定时器计算公式
  • 理解1T模式与12T模式的区别

【PPT 第3页】定时器/计数器概念

课件要点:

  • 定时器:对内部系统时钟计数,用于产生精确的定时时间
  • 计数器:对外部脉冲输入计数,用于统计外部事件次数
  • Ai8051U 有 6个定时器(T0/T1/T2/T3/T4/T11)
  • T0/T1 是基础定时器,与8051兼容
  • 定时器0有两种计数速率:
    • 12T模式:每12个时钟加1(与传统8051相同)
    • 1T模式:每个时钟加1(速度是传统8051的12倍)

图示说明文字:

        ┌──────────────────────────┐
        │       定时器/计数器        │
        │                          │
 系统时钟 ──→ │ 分频(12T/1T) │ ──→ │ 计数器  │
        │                          │
 外部脉冲 ──→ │            │ ──→ │ 计数器  │
        └──────────────────────────┘

定时器 = 对内部时钟计数(产生定时)
计数器 = 对外部脉冲计数(统计事件)

依据:AI8051U手册「定时器/计数器,16位自动重装载定时器 + 8位预分频 = 24位」


【PPT 第4页】定时器0的控制寄存器(TMOD)

课件要点:

TMOD(89H):

B7B6B5B4B3B2B1B0

T1_GATET1_C/TT1_M1T1_M0T0_GATET0_C/TT0_M0T0_M0

寄存器位说明:

  • T0_GATE(TMOD.3):定时器0门控位。0=TR0直接控制,1=需INT0和TR0同时为1才计数
  • T0_C/T(TMOD.2):定时器0计数/定时选择。0=定时模式(对系统时钟计数),1=计数模式(对外部脉冲P3.4/T0计数)
  • T0_M1/T0_M0(TMOD.1/0):定时器0模式选择

定时器0模式选择:

T0_M1 T0_M0 模式
0 0 模式0:16位自动重装载
0 1 模式1:16位不可重装载
1 0 模式2:8位自动重装载
1 1 模式3:不可屏蔽中断16位自动重装载

依据:AI8051U手册「定时器/计数器,16位自动重装载定时器 + 8位预分频 = 24位」


【PPT 第5页】定时器控制寄存器(TCON)

课件要点:

TCON(88H):

B7B6B5B4B3B2B1B0

TF1TR1TF0TR0IE1IT1IE0IT0

寄存器位说明(定时器相关部分):

  • TF0(TCON.5):定时器0溢出标志。计数溢出时自动置1,需软件清0
  • TR0(TCON.4):定时器0运行控制位。1=启动,0=停止
  • TF1(TCON.7):定时器1溢出标志
  • TR1(TCON.6):定时器1运行控制位

依据:AI8051U手册「定时器/计数器,16位自动重装载定时器 + 8位预分频 = 24位」


【PPT 第6页】辅助寄存器(AUXR)—— 1T/12T选择

课件要点:

AUXR(8EH):

B7B6B5B4B3B2B1B0

T0x12T1x12UART_M0x6T2RT2_C/TT2x12EXTRAMS1BRT

寄存器位说明:

  • T0x12(AUXR.7):定时器0速度控制位
    • 0:12T模式(FOSC/12,与传统8051相同)
    • 1:1T模式(FOSC/1,速度快12倍)
  • T1x12(AUXR.6):定时器1速度控制位
    • 0:12T模式(FOSC/12)
    • 1:1T模式(FOSC/1)

依据:AI8051U手册「定时器/计数器,16位自动重装载定时器 + 8位预分频 = 24位」


【PPT 第7页】定时器0模式0:16位自动重装载(重点)

课件要点:

  • 模式0为16位自动重装载模式
  • 如果启动8位预分频(TM0PS),则成为24位定时器
  • 当GATE=0时,TR0=1则定时器计数
  • GATE=1时,允许由外部输入INT0控制定时器0(可实现脉宽测量)
  • 当C/T=0时,对内部系统时钟计数(定时方式)
  • 当C/T=1时,对外部脉冲输入P3.4/T0计数(计数方式)
  • 两个隐藏寄存器 RL_TH0 和 RL_TL0 实现自动重装载:
    • 当TR0=0时,对TL0/TH0写入会写入RL_TL0/RL_TH0
    • 当TR0=1时,对TL0/TH0写入实际上是写入RL_TL0/RL_TH0
    • 溢出时自动将RL_TH0/RL_TL0内容装入TH0/TL0

图示说明文字:

定时器0模式0(16位自动重装载):
                 ┌──────────────────────────────┐
   系统时钟 ──→ │ TM0PS预分频 │ ──→ │ 16位计数器 │
                 │             │     │ TH0/TL0  │
                 └────────────┘     └─────┬────┘
                                              │ 溢出
                                              ▼
                                   置位TF0 → 产生中断
                                              │
                                   自动重装 ← ─┘
                                   (RL_TH0,RL_TL0)

依据:AI8051U手册「定时器/计数器,16位自动重装载定时器 + 8位预分频 = 24位」


【PPT 第8页】定时器0模式0计算公式

课件要点:这是本讲重点,学生必须掌握

定时器0模式0(16位自动重装)计时公式:

1T模式:

\text{定时器周期}=\frac{65536-[\text{TH0,TL0}]}{\text{SYSclk}/(\text{TM0PS}+1)} \quad (\text{自动重载})

12T模式:

\text{定时器周期}=\frac{65536-[\text{TH0,TL0}]}{\text{SYSclk}/(\text{TM0PS}+1)}\times 12 \quad (\text{自动重载})

例题:系统时钟 SYSclk=11.0592MHz,TM0PS=0(不分频),1T模式,定时1ms

\text{定时器周期}=\frac{65536-[TH0,TL0]}{11059200/1}

→ $65536-[TH0,TL0] = 11059200 \times 0.001 = 11059.2 \approx 11059$

→ ​[TH0,TL0] = 65536 - 11059 = 54477 = 0xD4CD

→ ​TH0=0xD4, TL0=0xCD

依据:AI8051U手册「定时器/计数器,16位自动重装载定时器 + 8位预分频 = 24位」


【PPT 第9页】示例:定时器0定时1ms(模式0)

课件要点:

  • 系统频率 11.0592MHz,1T模式
  • 配置TMOD为模式0(M1M0=00)
  • 计算TH0/TL0初值

示例代码:

// 定时器0定时1ms实验
// 测试工作频率为11.0592MHz
#include "Ai8051U.H"
#include "intrins.h"

void main()
{
    // 配置P1口为准双向口(LED输出)
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    // 配置定时器0为模式0(16位自动重装载)
    TMOD &= 0xF0;      // 清除T0相关位
    // T0_GATE=0, T0_C/T=0(定时), T0_M1=0, T0_M0=0(模式0)
  
    // 设置1T模式(AUXR.7/T0x12=1)
    AUXR |= 0x80;      // T0x12 = 1,1T模式
  
    // 设置定时器初值:1ms @ 11.0592MHz
    // 65536 - 11059 = 54477 = 0xD4CD
    TH0 = 0xD4;
    TL0 = 0xCD;
  
    // 启动定时器0
    TR0 = 1;
  
    while(1);
}

依据:AI8051U手册「定时器/计数器」章节


【PPT 第10页】定时器0中断实验:LED闪烁

课件要点:

  • 使用定时器0中断来实现精确的LED闪烁
  • 中断频率 = 1ms,每500次翻转LED(即500ms亮/500ms灭)
  • 演示定时器中断在实时控制中的应用

示例代码:

// 定时器0中断控制LED闪烁
// 测试工作频率为11.0592MHz
#include "Ai8051U.H"
#include "intrins.h"

unsigned int tick_count;   // 计数变量

void main()
{
    // 配置P1口为准双向口(LED输出)
    P1M0 = 0x00;
    P1M1 = 0x00;
  
    // 配置定时器0为模式0(16位自动重装载)
    TMOD &= 0xF0;
    // T0_GATE=0, T0_C/T=0, T0_M1=0, T0_M0=0
  
    // 设置1T模式
    AUXR |= 0x80;      // T0x12 = 1,1T模式
  
    // 设置定时器初值:1ms @ 11.0592MHz
    TH0 = 0xD4;
    TL0 = 0xCD;
  
    // 使能定时器0中断
    ET0 = 1;           // 使能定时器0中断
    EA = 1;            // 开总中断
  
    // 启动定时器0
    TR0 = 1;
  
    while(1);          // 主循环空转,中断负责处理
}

// 定时器0中断服务程序(中断号1)
void timer0_isr() interrupt 1
{
    tick_count++;
    if (tick_count >= 500)    // 500ms = 500次×1ms
    {
        tick_count = 0;
        P1 = ~P1;             // 翻转LED
    }
}

图示说明文字:

时序图:
1ms ── 定时器中断 ──> tick_count++
     ... 重复500次 ...
tick_count == 500 → 翻转LED状态 → tick_count=0

LED亮500ms → 灭500ms → 亮500ms → ...

依据:AI8051U手册「定时器/计数器」章节


【PPT 第11页】定时器0模式1:16位不可重装载

课件要点:

  • 模式1为16位不可重装载模式
  • 由TL0的8位和TH0的8位构成
  • TL0溢出向TH0进位,TH0计数溢出置位TF0
  • 溢出后不会自动重装载,需软件重新设置初值

适用场景:需要测量脉冲宽度、单次定时等场合

依据:AI8051U手册「定时器/计数器」章节


【PPT 第12页】定时器0模式2:8位自动重装载

课件要点:

  • 模式2为8位自动重装载模式
  • TL0溢出不仅置位TF0,而且将TH0的内容重新装入TL0
  • TH0内容由软件预置,重装时TH0内容不变
  • 适合产生固定频率的定时(如波特率发生器)

计算:

\text{定时器周期}=\frac{256-\text{TH0}}{\text{SYSclk}/(\text{TM0PS}+1)} \quad (1T)

依据:AI8051U手册「定时器/计数器」章节


【PPT 第13页】定时器0模式3:不可屏蔽中断(高级)

课件要点:

  • 模式3与模式0一样是16位自动重装载
  • 特殊:只需允许 ET0(IE.1),不需要允许 EA(IE.7)就能打开定时器0中断
  • 此中断是不可屏蔽的,优先级最高
  • 不能被任何中断打断,且不受EA或ET0控制
  • 适合实时操作系统节拍器应用

注意:

当定时器0工作在模式3时,不需要允许EA/IE.7,只需允许ET0/IE.1就能打开中断。一旦该中断被打开,优先级就是最高的,它不能被其他任何中断打断,而且不受EA或ET0控制,清零EA或ET0都不能关闭此中断。

依据:AI8051U手册「定时器/计数器」章节


【PPT 第14页】定时器1(介绍)

课件要点:

  • 定时器1与定时器0类似,也有模式0/1/2
  • 模式0:16位自动重装载
  • 模式1:16位不可重装载
  • 模式2:8位自动重装载
  • 速度控制由 AUXR.6/T1x12 控制
  • 常用于串口波特率发生器

计算公式:
模式0(16位自动重装)1T:

\text{定时器周期}=\frac{65536-[TH1,TL1]}{\text{SYSclk}/(\text{TM1PS}+1)}

依据:AI8051U手册「定时器/计数器」章节


【PPT 第15页】定时器预分频寄存器(TM0PS/TM1PS)

课件要点:

  • TM0PS(地址7EFEA0H):定时器0的8位预分频寄存器
  • TM1PS(地址7EFEA1H):定时器1的8位预分频寄存器
  • 位于 XFR区域,访问前必须使能 EAXFR(P_SW2.7=1)
  • 当启动预分频时,定时器扩展为24位定时器

访问方法:

EAXFR = 1;        // 允许访问扩展的XFR
TM0PS = 0x00;     // 设置定时器0预分频为0(不分频)

依据:AI8051U手册「定时器/计数器」章节


【PPT 第16页】定时器计算综合练习

课件要点:本讲的核心练习

练习1:SYSclk=24MHz,1T模式,TM0PS=0,定时0.5ms,求TH0/TL0

定时器周期 = (65536-[TH0,TL0]) / (24000000/1) = 0.0005s
→ 65536-[TH0,TL0] = 24000000 × 0.0005 = 12000
→ [TH0,TL0] = 65536 - 12000 = 53536 = 0xD120
→ TH0=0xD1, TL0=0x20

练习2:SYSclk=11.0592MHz,12T模式,TM0PS=0,定时5ms,求TH0/TL0

定时器周期 = (65536-[TH0,TL0]) / (11059200/1) × 12 = 0.005s
→ 65536-[TH0,TL0] = 11059200 × 0.005 / 12 = 4608
→ [TH0,TL0] = 65536 - 4608 = 60928 = 0xEE00
→ TH0=0xEE, TL0=0x00

依据:AI8051U手册「定时器/计数器」章节


【PPT 第17页】本讲小结与思考题

课件要点:

  • 掌握定时器0/1的模式0/1/2/3
  • 掌握1T/12T模式的配置
  • 掌握定时器初值计算方法
  • 掌握定时器中断的使用

思考题:

  1. 定时器和计数器有什么区别?
  2. 1T模式和12T模式有什么区别?哪种计时间隔更精确?
  3. 定时器0模式0和模式1有什么区别?模式0有什么优势?
  4. 如何计算定时器初值?给出SYSclk=24MHz、1T、定时2ms的TH0/TL0值。
  5. 定时器0模式3有什么特殊之处?适合什么应用?

信息来源:


第5讲内容已完整输出。

当前已完成:

  • ✅ 第1讲:单片机基础与AI8051U认识(4学时)
  • ✅ 第2讲:开发环境搭建与程序烧录(4学时)
  • ✅ 第3讲:I/O口与最小系统(6学时)
  • ✅ 第4讲:中断系统(6学时)
  • ✅ 第5讲:定时器/计数器(6学时)

待输出:

  • 🔜 第6讲:串口通信(6学时)
  • 🔜 第7讲:存储器与特殊功能寄存器(4学时)
  • 🔜 第8讲:综合实验(6学时)
  • 🔜 第9讲:课程总结与扩展(6学时)

请问需要继续输出第6讲(串口通信)吗?


🔍 搜索 "继续输出第5讲"

📌 相关论坛讨论

  1. 能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗
  2. 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版
  3. ZXC-0168 STC8A8K64D4单片机 第13讲 继电器控制单路闪烁输出(延时方式)

⏱️ 查找用时 1.4s | 总回答用时 42.9s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:55:45 | 显示全部楼层

好的,继续输出第6讲。这一讲是串口通信,是单片机与外部设备(PC、传感器、其他MCU)进行数据交换的最常用方式。


📚 第6讲:串口通信(6学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 本讲:第6讲 串口通信
  • 主讲人:__________________

【PPT 第2页】本讲目标

课件要点:

  • 理解串行通信与并行通信的区别
  • 掌握 UART 异步串口通信原理
  • 掌握串口1(USART1)的4种工作方式
  • 掌握波特率的计算
  • 掌握串口1的寄存器配置
  • 能编写串口发送/接收程序
  • 了解Ai8051U的2组串口

【PPT 第3页】串行通信基础

课件要点:

  • 并行通信:多位数据同时传输(如8位同时),速度快但需要多根线
  • 串行通信:一位一位地传输数据,速度较慢但只需1~2根线
  • UART(Universal Asynchronous Receiver/Transmitter):通用异步收发器
  • 异步通信:不需要时钟同步线,通过波特率约定通信速率
  • 全双工:可以同时发送和接收数据

图示说明文字:

并行通信(8根数据线):
┌─────┐                      ┌─────┐
│ 发送  │ ── 8根线同时传8位 ──→ │ 接收  │
└─────┘                      └─────┘
需要8根数据线+控制线

串行通信(UART/TTL):
┌─────┐                      ┌─────┐
│ 发送  │ ── TxD ──→ RxD ───→ │ 接收  │
│      │ ←── RxD ←── TxD ←── │      │
└─────┘                      └─────┘
只需2根线:TxD(发送) + RxD(接收)

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第4页】异步串口通信格式

课件要点:

  • 一帧数据 = 起始位 + 数据位 + 校验位(可选) + 停止位
  • 起始位:1位,低电平(0)
  • 数据位:8位或9位
  • 校验位:可选(奇校验/偶校验/无校验)
  • 停止位:1位(Ai8051U硬件只支持1位停止位)

图示说明文字:

UART一帧数据格式(8位数据,无校验,1位停止位):

  空闲(高)  起始位    数据位(8位)        停止位  空闲(高)
  ──────┐  ┌───┬───┬───┬───┬───┬───┬───┬───┐  ┌──────
        │  │ 0 │ D0 │ D1 │ D2 │ D3 │ D4 │ D5 │ D6 │ D7 │ 1 │
  ──────┘  └───┴───┴───┴───┴───┴───┴───┴───┘  └──────
            ↓                                        ↓
          起始位(低)                              停止位(高)

  发送顺序:先低位(D0)后高位(D7)

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第5页】Ai8051U 的串口资源

课件要点:

  • Ai8051U 有 2组 USART(U1~U2)
  • 支持 LIN、SPI、IrDA 等协议
  • 可省电模式唤醒
  • 每个串行口由2个数据缓冲器、一个移位寄存器、一个串行控制寄存器和一个波特率发生器等组成
  • 每个串口的数据缓冲器由2个互相独立的接收、发送缓冲器构成,可以同时发送和接收数据
  • 串口1、串口2均有 4种工作方式
  • 串口1、串口2的通讯口均可以通过功能管脚切换功能切换到多组端口

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第6页】串口1功能脚切换(P_SW1)

课件要点:

P_SW1(A2H):

B7B6B5B4B3B2B1B0

S1_S[1:0]-SPI_S[1:0]-

S1_S[1:0]:串口1功能脚选择位

S1_S[1:0] RxD TxD
00 P3.0 P3.1
01 P3.6 P3.7
10 P1.6 P1.7
11 P4.3 P4.4

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第7页】串口1控制寄存器(SCON)

课件要点:

SCON(98H):

符号地址B7B6B5B4B3B2B1B0

SCON98HSM0/FESM1SM2RENTB8RB8TIRI

寄存器位说明:

  • SM0/FE(SCON.7):工作方式选择/帧错误检测
  • SM1(SCON.6):工作方式选择
  • SM2(SCON.5):多机通信控制位
  • REN(SCON.4):接收允许位。1=允许接收,0=禁止接收
  • TB8(SCON.3):发送的第9位数据(方式2/3)
  • RB8(SCON.2):接收的第9位数据
  • TI(SCON.1):发送中断标志。发送完成自动置1,需软件清0
  • RI(SCON.0):接收中断标志。接收完成自动置1,需软件清0

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第8页】串口工作方式选择

课件要点:串口1有4种工作方式

SM0 SM1 方式 功能 波特率
0 0 方式0 同步移位寄存器 固定(SYSclk/12)
0 1 方式1 8位UART 可变化
1 0 方式2 9位UART 固定(SYSclk/32 或 SYSclk/64)
1 1 方式3 9位UART 可变化

用途说明:

  • 方式1:最常用,8位数据,真正UART通信
  • 方式2/3:9位数据,可作多机通信
  • 方式0:同步移位方式,用于扩展I/O口

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第9页】波特率计算(重点)

课件要点:

  • 波特率:每秒传输的位数(bit/s)
  • 例如9600波特率 = 每秒传输9600位
  • 波特率由定时器1或定时器2产生
  • Ai8051U串口1波特率可通过 S1BRT(AUXR.0)选择使用定时器1或定时器2

方式1波特率计算公式(用定时器1):

\text{波特率}=\frac{2^{SMOD}}{32}\times\frac{\text{SYSclk}}{(256-TH1)\times 2}\quad(\text{定时器1模式2,1T})

其中:SMOD = PCON.7(波特率倍增位)

方式1波特率计算公式(用定时器2):

\text{波特率}=\frac{\text{SYSclk}}{\text{(65536-[T2H,T2L])}\times 4}

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第10页】波特率计算示例

课件要点:

示例:SYSclk=11.0592MHz,使用定时器1模式2(8位自动重载),SMOD=0(不分频),求9600波特率对应的TH1

9600 = (2^0 / 32) × (11059200 / ((256-TH1)×2))
9600 = (1/32) × (11059200 / ((256-TH1)×2))
9600 × 32 = 11059200 / ((256-TH1)×2)
307200 = 11059200 / ((256-TH1)×2)
(256-TH1)×2 = 11059200 / 307200 = 36
256-TH1 = 18
TH1 = 238 = 0xEE

验证:

波特率 = (1/32) × (11059200 / ((256-238)×2))
       = (1/32) × (11059200 / 36)
       = (1/32) × 307200
       = 9600 ✓

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第11页】串口1数据寄存器(SBUF)

课件要点:

  • SBUF(99H):串口1数据寄存器
  • 发送和接收共用一个地址,但物理上是两个独立的缓冲器
  • 写SBUF = 向发送缓冲器写入数据,自动开始发送
  • 读SBUF = 从接收缓冲器读取数据
  • 当TI=1时,发送完成
  • 当RI=1时,接收完成

图示说明文字:

┌──────────────────────────────────────┐
│             SBUF (99H)                │
│                                      │
│  写SBUF → 发送缓冲器 → TxD引脚        │
│                                      │
│  RxD引脚 → 接收缓冲器 → 读SBUF        │
│                                      │
│  ⚡ 同一个地址,两个独立的缓冲器!      │
└──────────────────────────────────────┘

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第12页】串口1发送程序(查询方式)

课件要点:

  • 发送流程:写SBUF → 等待TI=1 → 清TI
  • 演示最基础的串口发送

示例代码:

// 串口1发送一个字节(查询方式)
// 测试工作频率为11.0592MHz,波特率9600
#include "Ai8051U.H"
#include "intrins.h"

void Uart1_Init()
{
    // 配置串口1脚:RxD=P3.0, TxD=P3.1(默认)
    P_SW1 &= 0x3F;        // S1_S=00,串口1用P3.0/P3.1
  
    // 配置P3.0/P3.1为准双向口
    P3M0 &= ~0x03;
    P3M1 &= ~0x03;
  
    // 配置串口1:方式1(8位UART),允许接收
    SCON = 0x50;          // SM0=0, SM1=1, REN=1
  
    // 配置定时器1为模式2(8位自动重载)
    TMOD &= 0x0F;         // 清除T1相关位
    TMOD |= 0x20;         // T1_M1=1, T1_M0=0 → 模式2
  
    // 设置波特率9600 @ 11.0592MHz
    // TH1 = 0xEE(前面计算)
    TH1 = 0xEE;
    TL1 = 0xEE;
  
    // 定时器1 1T模式
    AUXR |= 0x40;         // T1x12 = 1,1T模式
  
    // 启动定时器1
    TR1 = 1;
}

void Uart1_SendByte(unsigned char dat)
{
    SBUF = dat;           // 写入SBUF,开始发送
    while (!TI);          // 等待发送完成
    TI = 0;               // 清除发送标志
}

void main()
{
    Uart1_Init();
  
    while (1)
    {
        Uart1_SendByte('A');   // 发送字符'A'
    }
}

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第13页】串口1接收程序(查询方式)

课件要点:

  • 接收流程:等待RI=1 → 读SBUF → 清RI
  • 需要先使能接收(REN=1)

示例代码:

// 串口1接收一个字节(查询方式)
// 测试工作频率为11.0592MHz,波特率9600
#include "Ai8051U.H"
#include "intrins.h"

void Uart1_Init()
{
    // 配置串口1脚:RxD=P3.0, TxD=P3.1(默认)
    P_SW1 &= 0x3F;
  
    // 配置P3.0/P3.1为准双向口
    P3M0 &= ~0x03;
    P3M1 &= ~0x03;
  
    // 配置串口1:方式1(8位UART),允许接收
    SCON = 0x50;          // REN=1 允许接收
  
    // 配置定时器1为模式2
    TMOD &= 0x0F;
    TMOD |= 0x20;
  
    // 波特率9600 @ 11.0592MHz
    TH1 = 0xEE;
    TL1 = 0xEE;
  
    AUXR |= 0x40;         // 1T模式
    TR1 = 1;              // 启动定时器1
}

unsigned char Uart1_ReceiveByte()
{
    unsigned char dat;
    while (!RI);          // 等待接收完成
    dat = SBUF;           // 读取数据
    RI = 0;               // 清除接收标志
    return dat;
}

void main()
{
    unsigned char data;
    Uart1_Init();
  
    while (1)
    {
        data = Uart1_ReceiveByte();   // 等待接收
        // 对接收到的数据进行处理
    }
}

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第14页】串口1中断收发(推荐方式)

课件要点:

  • 使用中断方式,不占用CPU时间
  • 串口1中断号为 4
  • 中断服务程序中判断是TI(发送中断)还是RI(接收中断)

示例代码:

// 串口1中断收发
// 测试工作频率为11.0592MHz,波特率9600
#include "Ai8051U.H"
#include "intrins.h"

unsigned char rx_buf;   // 接收缓冲区

void Uart1_Init()
{
    // 配置串口1脚
    P_SW1 &= 0x3F;
    P3M0 &= ~0x03;
    P3M1 &= ~0x03;
  
    // 方式1,允许接收
    SCON = 0x50;
  
    // 定时器1模式2,9600波特率
    TMOD &= 0x0F;
    TMOD |= 0x20;
    TH1 = 0xEE;
    TL1 = 0xEE;
    AUXR |= 0x40;
    TR1 = 1;
  
    // 使能串口1中断
    ES = 1;              // IE.4 串口1中断使能
    EA = 1;              // 开总中断
}

void main()
{
    Uart1_Init();
  
    while (1)
    {
        // 主程序做其他工作
        // 串口数据由中断自动处理
    }
}

// 串口1中断服务程序(中断号4)
void uart1_isr() interrupt 4
{
    if (RI)              // 接收中断
    {
        rx_buf = SBUF;   // 读取接收数据
        RI = 0;          // 清除接收标志
    }
    if (TI)              // 发送中断
    {
        TI = 0;          // 清除发送标志
    }
}

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第15页】串口1与PC通信实验

课件要点:

  • 使用串口助手(如AIapp-ISP自带的串口助手)
  • 设置波特率9600,8位数据,无校验,1位停止位
  • 单片机通过串口发送字符给PC

实验框图:

┌─────────────────────────┐     USB/TTL转串口线    ┌──────────────┐
│       Ai8051U           │                         │    PC电脑     │
│                         │                         │              │
│  P3.0(RxD) ──────────→ │ ── TxD ──────────────→ │ 串口助手      │
│  P3.1(TxD) ←────────── │ ←─ RxD ──────────────← │ (AIapp-ISP)  │
└─────────────────────────┘                         └──────────────┘

实验步骤:

  1. 使用USB转TTL串口线连接电脑与Ai8051U(注意RxD/TxD交叉连接)
  2. 打开AIapp-ISP软件中的串口助手
  3. 设置波特率9600,选择对应串口
  4. 下载程序到单片机
  5. 观察电脑串口助手中收到字符'A'

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第16页】串口2(简要介绍)

课件要点:

  • 串口2(UART2)与串口1功能类似
  • 控制寄存器:S2CON(9AH)
  • 数据寄存器:S2BUF(9BH)
  • 功能脚切换:S2_S(P_SW2.0)
  • 中断使能:ES2(IE2.0)
  • 波特率发生器可选择定时器2

S2CON位定义:SM0/SM1/SM2/REN/TB8/RB8/TI/RI(与SCON类似)

依据:AI8051U手册「2组USART-LIN/SPI,同步/异步串口通信,硬件奇偶校验」


【PPT 第17页】本讲小结与思考题

课件要点:

  • 理解串行通信原理
  • 掌握SCON、SBUF寄存器
  • 掌握波特率计算
  • 掌握串口发送/接收的查询方式和中断方式

思考题:

  1. UART异步串行通信的一帧数据包含哪些部分?
  2. 串口1有几种工作方式?最常用的是哪种?
  3. 如何计算波特率?SYSclk=24MHz,SMOD=0,定时器1模式2,求9600波特率的TH1值。
  4. 串口查询方式和中断方式有什么区别?各有什么优缺点?
  5. 为什么SBUF发送和接收共用同一地址但能区分?

信息来源:


第6讲内容已完整输出。

当前已完成:

  • ✅ 第1讲:单片机基础与AI8051U认识(4学时)
  • ✅ 第2讲:开发环境搭建与程序烧录(4学时)
  • ✅ 第3讲:I/O口与最小系统(6学时)
  • ✅ 第4讲:中断系统(6学时)
  • ✅ 第5讲:定时器/计数器(6学时)
  • ✅ 第6讲:串口通信(6学时)

待输出:

  • 🔜 第7讲:存储器与特殊功能寄存器(4学时)
  • 🔜 第8讲:综合实验(6学时)
  • 🔜 第9讲:课程总结与扩展(6学时)

请问需要继续输出第7讲(存储器与特殊功能寄存器)吗?


🔍 搜索 "继续输出第6讲(串口通信)"

📌 相关论坛讨论

  1. 能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗
  2. STC8H2K08U下载不了2CDC+HID,那能不能只要HID | 用CDC虚拟串口烧录仿真通信就行了
  3. 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版

⏱️ 查找用时 1.3s | 总回答用时 45.8s

回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
 楼主| 发表于 2026-8-25 10:56:59 | 显示全部楼层

好的,继续输出第7讲。这一讲是存储器与特殊功能寄存器,帮助学生理解Ai8051U的存储结构和寄存器体系。


📚 第7讲:存储器与特殊功能寄存器(4学时)

【PPT 第1页】封面

  • 课程名:单片机原理与应用 —— AI8051U 教学版
  • 本讲:第7讲 存储器与特殊功能寄存器
  • 主讲人:__________________

【PPT 第2页】本讲目标

课件要点:

  • 理解 Ai8051U 的存储器结构(edata / xdata)
  • 掌握 edata 和 xdata 的区别与使用
  • 了解程序存储器和数据存储器的统一编址
  • 掌握特殊功能寄存器(SFR)和扩展SFR(XFR)
  • 理解 EAXFR 的使用方法
  • 了解全球唯一ID号(CHIPID)

【PPT 第3页】Ai8051U 存储器概述

课件要点:

  • Ai8051U 的程序存储器和数据存储器是统一编址的
  • 提供24位寻址空间,最多能访问 16M 的存储器(8M数据 + 8M程序)
  • 没有提供访问外部程序存储器的总线,所以所有程序存储器都是片上Flash
  • 内部数据存储器分为两个地址空间:
    • edata(内部RAM):可32位/16位/8位访问,单时钟读写
    • xdata(内部扩展RAM):可16位/8位访问

图示说明文字:

┌──────────────────────────────────────────────┐
│            Ai8051U 存储器结构                   │
│                                              │
│  ┌─────────────┐  ┌─────────────────┐        │
│  │  edata      │  │  xdata          │        │
│  │  2K 字节    │  │  32K 字节       │        │
│  │  单时钟存取  │  │  存取需2~3个时钟 │        │
│  │  可做堆栈    │  │  成本低         │        │
│  └─────────────┘  └─────────────────┘        │
│                                              │
│  总SRAM = 2K(edata) + 32K(xdata) = 34K       │
└──────────────────────────────────────────────┘

依据:AI8051U手册「存储器,在哪存储重要参数,及全球唯一ID号CHIPID」


【PPT 第4页】edata 与 xdata 的区别(重点)

课件要点:

项目 edata(内部RAM) xdata(内部扩展RAM)
大小 2K字节 32K字节
访问速度 单时钟存取 存取需2~3个时钟
寻址方式 可32/16/8位访问 可16/8位访问
可做堆栈 可以(设计上理论深度可达64K,实际2K) 不可以
C语言关键字 edata xdata
最大设计深度 64K字节 8M字节

C语言声明示例:

char edata bCounter;      // 在EDATA区域声明字节变量(单时钟8位读写)
int edata wCounter;       // 在EDATA区域声明双字节变量(单时钟16位读写)
long edata dwCounter;     // 在EDATA区域声明4字节变量(单时钟32位读写)

char xdata bCounter;      // 在XDATA区域声明字节变量(3/2个时钟读写)
int xdata wCounter;       // 在XDATA区域声明双字节变量(3/2个时钟16位读写)

依据:AI8051U手册「存储器,在哪存储重要参数,及全球唯一ID号CHIPID」


【PPT 第5页】内部edata-RAM结构

课件要点:

  • 内部edata-RAM共2K字节
  • 2K字节低端的256字节与8051的256字节DATA完全兼容
  • 分为低128字节和高128字节两部分:
    • 低128字节:与传统8051兼容,可直接寻址也可间接寻址
    • 高128字节(8052扩展):只能间接寻址
  • 特殊功能寄存器分布在80H~FFH区域,只可直接寻址

图示说明文字:

内部edata-RAM结构(低端256字节):
┌──────────────────────────────┐
│ FFH │ 高128字节(间接寻址)    │
│     │ SFR寄存器区(直接寻址)  │
│ 80H │                        │
├──────────────────────────────┤
│ 30H │ 可位寻址区              │
│ 2FH │                        │
├──────────────────────────────┤
│ 20H │ 可位寻址区              │
│     │ 20H~2FH 每一位可寻址    │
├──────────────────────────────┤
│ 1FH │ 寄存器组3               │
│ 18H │                        │
├──────────────────────────────┤
│ 17H │ 寄存器组2               │
│ 10H │                        │
├──────────────────────────────┤
│ 0FH │ 寄存器组1               │
│ 08H │                        │
├──────────────────────────────┤
│ 07H │ 寄存器组0               │
│ 00H │                        │
└──────────────────────────────┘

依据:AI8051U手册「存储器,在哪存储重要参数,及全球唯一ID号CHIPID」


【PPT 第6页】存储器地址编址表

课件要点:了解Ai8051U的线性编址方式

区域地址范围功能说明

数据区
00:0000H - 00:FFFFH数据区(edata)堆栈区

01:0000H - 01:FFFFH内部扩展数据区(xdata)
02:0000H - 7D:FFFFH数据保留区
7E:0000H - 7E:FFFFH扩展SFR区(XFR)需使能EAXFR(P_SW2.7)才能访问
7F:0000H - 7F:FFFFH外部数据区(xdata)需使能EXTRAM(AUXR.1)才能访问

代码区
80:0000H - FD:FFFFH代码保留区
FE:0000H - FE:FFFFH扩展代码区(ecode)
FF:0000H - FF:FFFFH代码区(code)

依据:AI8051U手册「存储器,在哪存储重要参数,及全球唯一ID号CHIPID」


【PPT 第7页】扩展SFR使能寄存器(EAXFR)

课件要点:

P_SW2(BAH):

B7B6B5B4B3B2B1B0

EAXFR-I2C_S[1:0]CMPO_SS4_SS3_SS2_S

EAXFR(P_SW2.7):扩展RAM区特殊功能寄存器(XFR)访问控制寄存器

  • 0:禁止访问XFR
  • 1:使能访问XFR
    当需要访问XFR时,必须先将EAXFR置1,才能对XFR进行正常的读写。建议上电初始化时直接设置为1,后续不要再修改

使用示例:

EAXFR = 1;     // 允许访问扩展的特殊寄存器,XFR
// 或使用
P_SW2 |= 0x80; // 同样效果

// 注意:由于EAXFR和S2_S等位共用一个寄存器
// 建议直接使用位操作,例如:
// S2_S = 0; 而不是直接操作P_SW2

依据:AI8051U手册「特殊功能寄存器,EAXFR允许访问XFR」


【PPT 第8页】特殊功能寄存器(SFR)区

课件要点:

  • SFR位于 80H~FFH 地址范围(低256字节RAM之上)
  • 只能直接寻址
  • 每个SFR有专门的名称和地址

SFR 地址表(关键寄存器):

地址 寄存器 地址 寄存器
80H P0 88H TCON
81H SP 89H TMOD
8AH TL0 8BH TL1
8CH TH0 8DH TH1
8EH AUXR 8FH INTCLKO
90H P1 91H P1M1
92H P1M0 93H P0M1
94H P0M0 95H P2M1
96H P2M0 98H SCON
99H SBUF 9AH S2CON
9BH S2BUF A0H P2
A2H P_SW1 A8H IE
B0H P3 B1H P3M1
B2H P3M0 B3H P4M1
B4H P4M0 BAH P_SW2
BCH ADC_CONTR BDH ADC_RES
C0H P4 C1H WDT_CONTR
C8H P5 D0H PSW
E0H ACC F0H B

依据:AI8051U手册「特殊功能寄存器,EAXFR允许访问XFR」


【PPT 第9页】扩展特殊功能寄存器(XFR)区

课件要点:

  • XFR位于 7E:0000H ~ 7E:FFFFH 地址范围
  • 访问前必须使能 EAXFR(P_SW2.7=1)
  • XFR包含大量高级外设寄存器,如:
    • 时钟控制:CLKSEL, CLKDIV, HIRCCR
    • I/O增强:P0PU~P7PU(上拉电阻控制)
    • 定时器扩展:TM0PS, TM1PS(预分频)
    • ADC时序:ADCTIM
    • I/O中断:P0INTEP7INTE, P0INTFP7INTF
    • 串口扩展:USARTCR1~USARTCR5
    • DMA控制:DMA_M2M_CFG, DMA_ADC_CFG 等
    • PWM高级:PWMA_CR1, PWMA_CCR1 等

使用示例:

EAXFR = 1;    // 必须先使能EAXFR

// 访问XFR中的寄存器(如TM0PS)
TM0PS = 0x00;   // 设置定时器0预分频

// 访问I/O中断寄存器
P0INTE = 0xFF;  // 使能P0口所有I/O中断

依据:AI8051U手册「特殊功能寄存器,EAXFR允许访问XFR」


【PPT 第10页】全球唯一ID号(CHIPID)

课件要点:

  • Ai8051U 每颗芯片都有全球唯一ID号
  • ID号位于XFR区域,需使能EAXFR访问
  • CHIPID0~CHIPID6为ID号(7字节)
  • CHIPID7/8为内部1.19V参考信号源BGV值
  • CHIPID9/10为32K掉电唤醒定时器的频率
  • 用途:产品序列号、防伪、加密等

图示说明文字:

CHIPID 寄存器(XFR区):
7EFDE0H: CHIPID0 (全球唯一ID第0字节)
7EFDE1H: CHIPID1 (全球唯一ID第1字节)
...
7EFDE6H: CHIPID6 (全球唯一ID第6字节)
7EFDE7H: CHIPID7 (内部1.19V参考信号源BGV高字节)
7EFDE8H: CHIPID8 (内部1.19V参考信号源BGV低字节)
7EFDE9H: CHIPID9 (32K掉电唤醒定时器频率高字节)
7EFDEAH: CHIPID10 (32K掉电唤醒定时器频率低字节)
...

依据:AI8051U手册「存储器,在哪存储重要参数,及全球唯一ID号CHIPID」


【PPT 第11页】C语言存储类型关键字

课件要点:

C关键字 存储区域 访问速度 适用场景
code Flash程序存储器 快 常量、查找表
edata 内部RAM(2K) 单时钟 频繁访问的变量
xdata 内部扩展RAM(32K) 2~3时钟 大量数据
data 低128字节RAM 单时钟 传统8051兼容
idata 高128字节RAM 单时钟 间接寻址

示例:

code unsigned char table[] = {1,2,3,4,5};  // 常量表存Flash
edata unsigned int count;                   // 频繁访问变量
xdata unsigned char buffer[256];            // 大数据缓冲区

依据:AI8051U手册「存储器,在哪存储重要参数,及全球唯一ID号CHIPID」


【PPT 第12页】本讲小结与思考题

课件要点:

  • 理解edata/xdata的区别
  • 掌握EAXFR的使用方法
  • 了解SFR与XFR的地址范围
  • 了解CHIPID全球唯一ID号

思考题:

  1. edata和xdata有什么区别?哪个速度快?哪个容量大?
  2. 什么是XFR?访问XFR需要什么条件?
  3. 为什么建议上电初始化时直接将EAXFR设置为1?
  4. CHIPID有什么用途?
  5. C语言中 edata、xdata、code关键字分别对应什么存储区域?

信息来源:


第7讲内容已完整输出。

当前已完成:

  • ✅ 第1讲:单片机基础与AI8051U认识(4学时)
  • ✅ 第2讲:开发环境搭建与程序烧录(4学时)
  • ✅ 第3讲:I/O口与最小系统(6学时)
  • ✅ 第4讲:中断系统(6学时)
  • ✅ 第5讲:定时器/计数器(6学时)
  • ✅ 第6讲:串口通信(6学时)
  • ✅ 第7讲:存储器与特殊功能寄存器(4学时)

待输出:

  • 🔜 第8讲:综合实验(6学时)
  • 🔜 第9讲:课程总结与扩展(6学时)

请问需要继续输出第8讲(综合实验)吗?


🔍 搜索 "继续输出第7讲(存储器与特殊功能寄存器)"

📌 相关论坛讨论

  1. 能按教学规律,按知识点,生成 AI8051U的大学教学 PPT给老师用吗
  2. 陈桂友教授《8051单片机原理及应用-8H8K64U》学习打卡记录
  3. 学习打卡,努力坚持 | 直接送 Ai8051U-实验箱

⏱️ 查找用时 1.6s | 总回答用时 34.4s

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-7 12:25 , Processed in 0.093230 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表