中微单片机学习--SC8F072

目录

1、引脚分布

​2、系统配置

3、系统时钟

4、时钟框图​编辑

4、复位系统

5、休眠模式

(1)进入休眠模式

(2)从休眠状态唤醒

(3)使用中断唤醒

6、IO配置

7、中断

(1)中断源

(2)中断原理

(3)中断相关寄存器

8、定时器TIMER0

(1)TIMER0/WDT结构图​编辑

(2)定时器TIMER0工作原理

(3)相关寄存器

9、定时器TIMER2

(1)TIMER2结构图​编辑

(2)定时器TIMER2工作原理

(3)TIMER2相关寄存器

10、10位PWM

11、模数转换ADC

(1)ADC框图

(2)ADC工作原理

(3)AD转换步骤

(4)ADC相关寄存器


1、引脚分布

2、系统配置

WDT

ENABLE:打开看门狗

DISABLE:关闭看门狗

PROTECT

ENABLE:ROM代码加密

DISABLE:ROM代码不加密

FCPU_DIV

(指令时钟分频)

4T:Fcpu=Fsys/4

2T:Fcpu=Fsys/2

ICSPPORT_SEL

(仿真口功能选择)

ICSP:ICSPCLK、DAT口一直保持为仿真口、所有功能不可用

NORMAL:ICSPCLK、DAT口为普通功能口

EXT_RESET

(外部复位口选择)

ENABLE:使能外部复位功能,RB2为外部复位口

DISABLE:禁止外部复位功能,RB2为普通IO口

LVR_SEL

(低压侦测选择)

1.8V

2.0V

2.5V

3.0V

注:如果 CONFIG WDT 配置位 =1 ,则 WDT 始终被使能,而与 SWDTEN 控制位的状态无关。如 果 CONFIG WDT 配置位 =0 ,则可以使用 SWDTEN 控制位使能或禁止 WDT

3、系统时钟

        芯片默认的振荡方式为内部 RC 振荡,振荡频率固定为 16MHz ,在这个基础上可通过 OSCCON 寄存器设 置芯片工作频率。起振时间( ResetTime )是指从芯片复位到芯片振荡稳定这段时间,其设计值为 16ms

4、时钟框图

4、复位系统

芯片可用以下4种复位方式:上电复位、外部复位、LVR复位、正常工作下看门狗溢出复位。

5、休眠模式

(1)进入休眠模式

        由STOP指令可进入休眠模式。

(2)从休眠状态唤醒

  • 看门狗定时器唤醒;
  • INT 中断;
  • PORTB 电平变化中断;
  • PORTA 电平变化中断或外设中断。

(3)使用中断唤醒

        当禁止全局中断(GIE 被清零)时,并且有任一中断源将其中断允许位和中断标志位置 1 ,将会发生下列 事件之一。
  • 如果在执行 STOP 指令之前产生了中断,那么 STOP 指令将被作为一条 NOP 指令执行
  • 如果在执行 STOP 指令期间或之后产生了中断,那么器件将被立即从休眠模式唤醒。

6、IO配置

PORTx数据寄存器
TRISx方向寄存器
ODCONx开漏输出使能寄存器
ANSELx模拟选择寄存器
WPUx上拉电阻寄存器
WPDx下拉电阻寄存器
IOCxPORTx电平变化中断寄存器
注:当用户读一个 I/O 口状态时,若此 I/O 口为输入口,则用户读回的数据将是此口线外部电平的状态, 若此 I/O 口为输出口那么读出的值将会是此口线内部输出寄存器的数据。

7、中断

(1)中断源

PORTA 电平变化中断
PORTB 电平变化中断
TIMER0 溢出中断
TIMER2 匹配中断
PWM 中断
INT 中断
CMP 中断
A/D 中断

(2)中断原理

(3)中断相关寄存器

8、定时器TIMER0

(1)TIMER0/WDT结构图

(2)定时器TIMER0工作原理

TIMER0 模块既可用作 8 位定时器也可用作 8 位计数器。
用作定时器时, TIMER0 模块将在每个指令周期递增(不带预分频器)。
用作计数器时, TIMER0 模块将在 T0CKI 引脚的每个上升沿或下降沿递增。
TIMER0 和看门狗定时器( WDT )共用一个软件可编程预分频器,但不能同时使用。
注:只有将时钟源选择 FLSE 时, TIMER0 中断才能唤醒处理器。

(3)相关寄存器

9、定时器TIMER2

(1)TIMER2结构图

(2)定时器TIMER2工作原理

TIMER2 模块的输入时钟是系统指令时钟(FSYS/4)或外部 32.768kHz 振荡(FLSE)。 时钟被输入到 TIMER2 预分频器,有如下几种分频比可供选择:1:11:4 1:16

通过将 T2CON 寄存器的 TMR2ON 位置 1 使能 TIMER2;通过将 TMR2ON 位清零禁止 TIMER2

(3)TIMER2相关寄存器

10、10位PWM

芯片包含一个 10 PWM 模块,可配置为 4 路共用周期、独立占空比的输出,和 1 路独立周期、独立占 空比的输出,或 2 组互补输出.。
PWM周期:
                T_{PWM}=(PWMT+1)*T_{HSI}*CLKDIV (T_{HSI}=1/F_{HSI})
脉冲宽度:
                 (PWMD+1)*T_{HSI}*CLKDIV
占空比:
                                         \frac{PWMD+1}{PWMT+1}

11、模数转换ADC

        模数转换器(ADC )可以将模拟输入信号转换为表示该信号的一个 12 位二进制数。ADC 参考电压可选择内部 LDO 或 VDD。ADC 在转换完成之后可以产生一个中断。

(1)ADC框图

(2)ADC工作原理

        要使能ADC模块,必须将ADCON0寄存器的ADON位置为1,将ADCON0寄存器的GO/DONE位置1开始模数转换。

(3)AD转换步骤

1. 端口配置:
将引脚配置为输入引脚(见 TRIS 寄存器)。
2. 配置 ADC 模块:
选择 ADC 转换时钟;
选择 ADC 输入通道;
选择结果的格式;
启动 ADC 模块。
3. 配置 ADC 中断(可选):
清零 ADC 中断标志位;
允许 ADC 中断;
允许外设中断;
允许全局中断。
4. 等待所需的采集时间。
5. GO/DONE 1 启动转换。
6. 由如下方法之一等待 ADC 转换结束:
查询 GO / DONE 位;
等待 ADC 中断(允许中断)。
7. ADC 结果。
8. ADC 中断标志位清零(如果允许中断的话,需要进行此操作)。

(4)ADC相关寄存器

<think>嗯,用户想了解SC8F072单片机内部EEPROM的操作方法。首先,我需要回忆一下这款单片机的基本信息。SC8F072是中微半导体(CMSemicon)的产品,属于8位微控制器,可能基于8051内核。内部EEPROM的操作通常涉及特定的寄存器和步骤,比如地址设置、数据写入和读取,以及擦除操作。 接下来,用户可能需要知道如何初始化和配置EEPROM相关的寄存器。通常,操作EEPROM需要设置控制寄存器,比如EECON,可能包含使能位、读写控制位等。另外,地址寄存器(EEARH和EEARL)用来指定要访问的EEPROM地址,数据寄存器(EEDR)用于存放要写入或读取的数据。 然后,写入数据到EEPROM通常需要特定的时序,比如先写地址和数据,再触发写操作,可能需要延时等待操作完成。读取则相对简单,设置地址后直接读取数据寄存器即可。需要注意的是,写入前可能需要擦除,因为EEPROM只能将1变为0,或者按块擦除。但有些单片机的EEPROM是按字节操作的,可能不需要预先擦除。 用户可能还会关心注意事项,比如操作EEPROM时的中断处理,防止写入过程中断导致数据错误;以及寿命问题,EEPROM有写入次数限制,通常是10万次左右,需要避免频繁写入同一地址。 此外,是否有库函数或者示例代码可供参考?虽然中微半导体的资料可能不如ST或Atmel丰富,但官网可能有相关的数据手册和应用笔记。用户可能需要查阅SC8F072的数据手册,确认具体的寄存器名称和操作流程,因为不同厂商的EEPROM操作可能有差异。 最后,总结操作步骤:配置寄存器、设置地址、写入数据(可能需要触发命令和等待)、读取数据。同时提醒用户注意延时、中断和寿命问题,确保操作可靠。</think>SC8F072 单片机内部集成了 EEPROM 存储器,可用于存储非易失性数据(如配置参数、校准数据等)。其操作通常涉及 **地址设置、数据读写控制** 等步骤,以下是基本操作流程及注意事项: --- ### **一、EEPROM 基本特性** 1. **容量与地址范围** SC8F072 的 EEPROM 容量需参考具体型号的数据手册(例如 1KB EEPROM 的地址范围可能是 `0x0000~0x03FF`)。 2. **操作单位** 通常支持 **按字节读写**,无需整页擦除。 3. **寿命限制** EEPROM 的擦写次数有限(约 10 万次),需避免频繁写入。 --- ### **二、操作步骤(基于典型流程)** #### **1. 配置相关寄存器** - **EEPROM 控制寄存器**(如 `EECON`): 设置读写使能位、触发操作命令等。 - **地址寄存器**(如 `EEARH` 和 `EEARL`): 写入目标 EEPROM 地址(16 位地址需分高低字节)。 - **数据寄存器**(如 `EEDR`): 存放待写入的数据或读取到的数据。 #### **2. 写入数据流程** ```c // 伪代码示例(需根据实际寄存器名称修改) void EEPROM_Write(uint16_t addr, uint8_t data) { EEARH = (addr >> 8); // 设置地址高字节 EEARL = addr; // 设置地址低字节 EEDR = data; // 写入数据到数据寄存器 EECON |= 0x04; // 使能写操作(具体位需参考手册) EECON |= 0x02; // 触发写入(可能需要特定时序) while (EECON & 0x02); // 等待写入完成(检查标志位) } ``` #### **3. 读取数据流程** ```c uint8_t EEPROM_Read(uint16_t addr) { EEARH = (addr >> 8); // 设置地址高字节 EEARL = addr; // 设置地址低字节 EECON |= 0x01; // 启动读取(具体位需参考手册) return EEDR; // 返回读取的数据 } ``` --- ### **三、注意事项** 1. **时序与延时** - 写入操作需严格遵循数据手册中的时序(例如触发写操作后需等待 `TWRI` 时间)。 - 部分型号需要插入 `NOP` 指令或延时函数确保操作完成。 2. **中断与电源** - 在 EEPROM 操作期间建议关闭中断,防止打断关键流程。 - 避免在低电压下操作,可能导致写入失败。 3. **数据保护** - 部分单片机提供写保护锁定位,操作前需解除保护(参考 `EECON` 寄存器)。 --- ### **四、参考资源** 1. **数据手册** 务必查阅《SC8F072 数据手册》中 **EEPROM 章节**,确认寄存器名称、地址范围及操作细节。 2. **官方例程** 中微半导体官网或开发工具包中可能提供 EEPROM 操作示例代码。 如需进一步帮助,请提供具体寄存器定义或硬件手册片段,可协助分析代码实现!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值