STC12C5410AD ETC1
Document overview
- Manufacturer or author: Provided By www.digicamel.com(FREE DATASHEET DOWNLOAD SITE)
- PDF pages: 149
Technical content
STC12C5412, STC12C5412AD STC12C5410, STC12C5410AD STC12C5408, STC12C5408AD STC12C5406, STC12C5406AD STC12C5404, STC12C5404AD STC12C5402, STC12C5402AD STC12C5410AD系列单片机器件手册 技术支援 :宏晶科技 (深圳 ) www.MCU-Memory.com support@MCU-Memory.com Update date: 2006-4-15 (请随时注意更新) ---高速,高可靠 ---低功耗,超低价 ---无法解密 ---强抗静电,强抗干扰 STC12LE5412,STC12LE5412AD STC12LE5410,STC12LE5410AD STC12LE5408,STC12LE5408AD STC12LE5406,STC12LE5406AD STC12LE5404,STC12LE5404AD STC12LE5402,STC12LE5402AD --- 1个时钟/机器周期8051
宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 2 宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 领导业界革命 覆盖市场需求 宏晶科技是新一代增强型8051单片机标准的制定者,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆盖全国。在保 证质量的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。在广受欢迎的STC89C51全系列单片机的基础上,现全力推出“1个时钟/机器周期”的 单片机,全面提升8051单片机性能。欢迎海内外厂家前来洽谈合作!新客户请直接联系深圳,以获得更好的技术支持与服务。 STC 12C5410AD系列 1T 8051 单片机 DIP-20,SOP-20,(超小封装TSSOP-20定货) STC12C2052、STC12C4052不带A/D转换 STC12C2052AD、STC12C4052AD带A/D转换 新客户请直接联系深圳以获得更好的技术支持和服务 专业单片机 、存储器 供应商 欢迎海内外厂家前来洽谈合作 网址:www.MCU-Memory.com 技术支持:13922805190 从网上下载样品申请单, 传真至深圳申请STC单片机 样片及ISP下载线 /编程工具 免费索取 1个时钟/机器周期,超小封装8051单片机
- 高速:1个时钟 /机器周期,RISC型8051内核,速度比普通 8051快12倍
- 宽电压:5.5~3.4V,2.0~3.8V(STC12LE5410AD系列)
- 低功耗设计 :空闲模式 ,掉电模式 (可由外部中断唤醒 )
- 工作频率:0~35MHz,相当于普通 8051:0~420MHz ---实际可到48MHz,相当于8051: 0~576MHz
- 时钟:外部晶体或内部 RC振荡器可选,在ISP下载编程用户程序时设置
- 12K/10K/8K/6K/4K/2K字节片内Flash程序存储器,擦写次数10万次以上
- 512字节片内RAM数据存储器
- 芯片内E2PROM功能
- ISP / IAP,在系统可编程 /在应用可编程,无需仿真器
- 10位ADC,8通道,STC12C2052AD系列为8位ADC
- 4通道捕获 /比较单元(PWM/PCA/CCU),STC12C2052AD系列为 2通道 ---也可用来再实现 4个定时器或 4个外部中断(支持上升沿 /下降沿中断)
- 2个硬件 16位定时器,兼容普通 8051的定时器。4路PCA还可再实现 4个定时器
- 硬件看门狗 (WDT)
- 高速SPI通信端口
- 全双工异步串行口(UART),兼容普通8051的串口
- 先进的指令集结构,兼容普通 8051指令集 4组8个8位通用工作寄存器(共32个通用寄存器) 有硬件乘法/除法指令 STC12C5410/STC12C2052系列主要性能: 1个时钟 /机器周期,高速、高可靠,4路PWM,8路高速 A/D转换 在系统可编程 ,无需编程器 ,可远程升级 可送 STC-ISP下载编程器 ,1万片 /人 /天 内部集成 MAX810专用复位电路 ,原复位电路可以 保留,也可以不用 ,不用时 RESET脚直接短到地 1个时钟 /机器周期 ,可用低频晶振 ,大幅降低 EMI ---出口欧美的有力保证 超低功耗 : 1、掉电模式: 典型功耗 <0.1μA 2、空闲模式: 典型功耗 <1.3mA 3、正常工作模式: 典型功耗 2.7mA - 7mA 4、掉电模式可由外部中断唤醒 ,适用于电池 供电系统 ,如水表、气表、便携设备等 。 选择 STC12C5410AD系列单片机的理由 : 超强抗干扰 : 1、高抗静电 (ESD保护 ) 2、轻松过 4KV快速脉冲干扰(EFT测试) 3、宽电压 ,不怕电源抖动 4、宽温度范围 ,-40℃~85℃ 5、I/O口经过特殊处理 6、单片机内部的电源供电系统经过特殊处理 7、单片机内部的时钟电路经过特殊处理 8、单片机内部的复位电路经过特殊处理 9、单片机内部的看门狗电路经过特殊处理 加密性强 ,无法解密 XTAL2 4 17 P1.5/MOSI/ADC5 Gnd 10 11 P3.7/PWM0 XTAL1 5 16 P1.4/SS/ADC4 RST 1 20 VCC RxD/P3.0 2 19 P1.7/SCLK/ADC7 TxD/P3.1 3 18 P1.6/MISO/ADC6 INT0/P3.2 6 15 P1.3/ADC3 INT1/P3.3 7 14 P1.2/ADC2 ECI/T0/P3.4 8 13 P1.1/ADC1 PWM1/T1/P3.5 9 12 P1.0/ADC0 XTAL2 6 23 P1.5/MOSI/ADC5 PWM3/PCA3/P2.4 12 17 P3.7/PCA0/PWM0 XTAL1 7 22 P1.4/SS/ADC4 RST 3 26 P2.0/PCA2/PWM2 RxD/P3.0 4 25 P1.7/SCLK/ADC7 TxD/P3.1 5 24 P1.6/MISO/ADC6 INT0/P3.2 8 21 P1.3/ADC3 INT1/P3.3 9 20 P1.2/ADC2 ECI/T0/P3.4 10 19 P1.1/ADC1 PWM1/PCA1/T1/P3.5 11 18 P1.0/ADC0 P2.3 2 27 P2.1 P2.2 1 28 VDD P2.5 13 16 P2.7 VSS 14 15 P2.6 DIP-28(窄体)/ SOP-28 大客户特价支持 STC12C1052 ,人民币 3.8元 P2.0/PWM2 TxD/P3.1 INT0/P3.2 P0.0 XTAL2 XTAL1 P0.1 PWM1/T1/P3.5 INT1/P3.3 ECI/T0/P3.4 14 4 21 ADC0/P1.0 PWM0/P3.7 P2.7 P2.6 VSS P2.5 PWM3/P2.4 P1.7/SCLK/ADC7 P1.6/MISO/ADC6 P1.5/MOSI/ADC5 P0.3 P1.4/SS/ADC4 P1.3/ADC3 P0.2 P1.2/ADC2 P1.1/ADC1 P2.1 VDD P2.2 P2.3 RST P3.0/RxD
- 通用 I/O口(27/23/15个),复位后为: 准双向口 /弱上拉(普通 8051传统I/O口) 可设置成四种模式 :准双向口 /弱上拉,推挽 /强上拉,仅为输入 /高阻,开漏 每个I/O口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA DIP-28/20,SOP-28/20 超小封装 8051 单时钟 1T
8051 CPU
字节Flash 程序存储器 512/256字节 数据 RAM 1K字节 EEPROM Port1,Port3 可配置I/O口 Port2,Port0 可配置I/O口 UART全双工 异步串行口 ISP / IAP Timer 0 Timer 1 WDT 硬件看门狗 高 速 高 可 靠 宽 电 压 低 功 耗 超 强 抗 干 扰 无 法 解 密 8通道 高速A/D PWM/PCA/CCU 捕获/比较单元 可配置振荡器 片内 R/C振荡器 晶体或 谐振器 XTAL2 XTAL1 电源监控 (上电复位 , 掉电复位 ) CPU时钟 SPI 深 圳:Tel:0755-82948409 82948410 Fax:0755-82944243 82905966 广州办:Tel:020-38851405 38850557 Fax:020-38850581 上海办:Tel:021-53560136 53560138 Fax:021-53080587 北京办:Tel:010-62538687 62634001 Fax:010-62538683 无 法 解 密 PLCC-32 无法解密 ISP/IAP 无 法 解 密 ISP/IAP ISP / IAP
宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 3 宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 STC 89 系列单片机选型一览表 超低价 新客户请直接联系深圳以获得更好的技术支持和服务 专业单片机 、存储器 供应商 欢迎海内外厂家前来洽谈合作 网址:www.MCU-Memory.com 技术支持:13922805190 STC 89系列单片机 ,高速 、高可靠 、在线编程 提升的是性能 ,降低的是成本 单倍速和 双倍速可 “ISP” 反复设置 P4口地址 0E8H INT2/P4.3 INT3/P4.2 P4口均可位寻址 A/D (高速)可做: 按键扫描 电池电压检测 掉电检测 音量、频谱检测等 4.7 元起 DIP-40,PLCC-44,PQFP-44封装(RC/RD+系列PLCC、PQFP有P4口地址E8H,AD系列P4口为C0H) RC/RD+系列PLCC、PQFP多两个外部中断P4.2/INT3,P4.3/INT2。 P4口均可位寻址 真正的看门狗,可放心省去外部看门狗 ,缺省为关闭,打开后无法关闭。单倍速和双倍速可反复设置 “6时钟/机器周期”和“12时钟/机器周期”可在ISP编程时反复设置,新的设置冷启动后才生效 另 STC89LE516AD、58AD、54AD、52AD、51AD系列单片机,带高速A/D转换 关于单片机说明:<管脚与流行的8051兼容> 大客户超低价 在系统可编程,无需编程器,可远程升级 可送 STC-ISP下载编程器,1万片 /人/天 可供应内部集成 MAX810专用复位电路的单片机 , 只有 D版本才有内部集成专用复位电路 ,原复位 电路可以保留 ,也可以不用 ,不用时 RESET脚直 接短到地 三大降低单片机时钟对外部电磁辐射的措施 : —— 出口欧美的有力保证 1、禁止 ALE输出; 2、如选 6时钟 /机器周期,外部时钟频率可降一半 ; 3、单片机时钟振荡器增益可设为 1/2gain。 超低功耗: 1、掉电模式: 典型功耗 <0.1μA 2、空闲模式: 典型功耗 2mA 3、正常工作模式: 典型功耗 4mA - 7mA 4、掉电模式可由外部中断唤醒 ,适用于电池 供电系统,如水表、气表、便携设备等。 选择 STC89C52RC系列 STC89C58RD+系列单片机的理由 : 超强抗干扰 : 1、高抗静电 (ESD保护 ) 2、轻松过2KV/4KV快速脉冲干扰(EFT测试) 3、宽电压 ,不怕电源抖动 4、宽温度范围 ,-40℃~85℃ 5、I/O口经过特殊处理 6、单片机内部的电源供电系统经过特殊处理 7、单片机内部的时钟电路经过特殊处理 8、单片机内部的复位电路经过特殊处理 9、单片机内部的看门狗电路经过特殊处理 加密性强,无法解密 从网上下载样品申请单, 传真至深圳申请STC单片 机样片及 ISP下载线 /编程工具 免费索取 1280 字节 SRAM E2PROM Data Flash 双数据 指针 看门狗 8/16/32/64k 字节 闪存 内置系统 ISP 监控程序 四个 8 位 并行端口 P4.0—P4.3 四个附送 I/O 端口 UART(串口) 3 个定时器 A / D 不加价 微处理器 低功耗 ,超低价 高速 (0-90M),高可靠 掉电模式 :< 0.1μA, 空闲模式 :2mA集成MAX810 专用复位电路 IAP STC IAP 8051 P4 (E8H) 看 门 狗 双 倍 速 P 口 STC 89LE516RD+ 0~80M 64K 1280 STC 89LE54 RD+ 0~80M 16K 1280 16K STC 89LE52 RC 0~80M 8K 512 2K STC 89C516 RD+ 0~80M 64K 1280 STC 89C54 RD+ 0~80M 16K 1280 16K STC 89C52 RC 0~80M 8K 512 2K E2P ROM 字节 STC 89LE53 RC 0~80M 15K 512 STC 89C51 RC 0~80M 4K 512 2K STC 89LE51 RC 0~80M 4K 512 2K STC 89LE58 RD+ 0~80M 32K 1280 16K STC 89C53 RC 0~80M 15K 512 STC 89C58 RD+ 0~80M 32K 1280 16K Flash 存储器 降低 EMI 型 号 最 高 时 钟 频 率Hz I S P I A P STC 89C55 RD+ 0~80M 20K 1280 16K√ √√√√ √ RAM 字节 另有:STC89LE516AD系列单片机 STC 89LE516AD 0~90M,3.6~1.9V 64K 512 A D TXD/P3.1 11 30 ALE/PROG DIP-40 RST 9 32 P0.7/AD7 P1.3 4 37 P0.2/AD2 P1.5 6 35 P0.4/AD4 RXD/P3.0 10 31 EA INT0/P3.2 12 29 PSEN INT1/P3.3 13 28 P2.7/A15 T0/P3.4 14 27 P2.6/A14 T1/P3.5 15 26 P2.5/A13 WR/P3.6 16 25 P2.4/A12 RD/P3.7 17 24 P2.3/A11 XTAL2 18 23 P2.2/A10 XTAL1 19 22 P2.1/A9 VSS 20 21 P2.0/A8 T2/P1.0 1 40 VCC T2EX/P1.1 2 39 P0.0/AD0 P1.2 3 38 P0.1/AD1 P1.4 5 36 P0.3/AD3 P1.6 7 34 P0.5/AD5 P1.7 8 33 P0.6/AD6WR/P3.6 P1.4 RD/P3.7 P1.3 XTAL2 P1.2 A12/P2.4 P0.3/AD3 A11/P2.3 P0.2/AD2 P4.0 P4.2/INT3 A8/P2.0 VDD A9/P2.1 P0.0/AD0 A10/P2.2 P0.1/AD1 XTAL1 P1.1/T2EX VSS P1.0/T2 INT0/P3.2 8 26 PSEN INT1/P3.3 9 25 P2.7/A15 T1/P3.5 11 23 P2.5/A13 T0/P3.4 10 24 P2.6/A14 TXD/P3.1 7 27 ALE/PROG INT2/P4.3 6 28 P4.1 RXD/P3.0 5 29 EA RST 4 30 P0.7/AD7 P1.5 1 33 P0.4/AD4 P1.6 2 32 P0.5/AD5 P1.7 3 31 P0.6/AD6 PQFP-44 WR/P3.6 P1.4 RD/P3.7 P1.3 XTAL2 P1.2 A12/P2.4 P0.3/AD3 A11/P2.3 P0.2/AD2 P4.0 P4.2/INT3 A8/P2.0 VDD A9/P2.1 P0.0/AD0 A10/P2.2 P0.1/AD1 XTAL1 P1.1/T2EX VSS P1.0/T2 INT0/P3.2 14 32 PSEN INT1/P3.3 15 31 P2.7/A15 T1/P3.5 17 29 P2.5/A13 T0/P3.4 16 30 P2.6/A14 TXD/P3.1 13 33 ALE/PROG INT2/P4.3 12 34 P4.1 RXD/P3.0 11 35 EA RST 10 36 P0.7/AD7 P1.5 7 39 P0.4/AD4 P1.6 8 38 P0.5/AD5 P1.7 9 37 P0.6/AD6 PLCC-445 STC 单片机在线编程典型线路
8 R2IN R2OUT 9
0.1uF
2 V+ GND 15
1 C1+ Vcc 16 Vcc
3 C1- T1OUT 14
5 C2- R1OUT 12
6 V- T1IN 11
7 T2OUT T2IN 10
STC3232,STC232,MAX232,SP232 PC_RxD (COM Pin2)
4 C2+ R1IN 13
PC_TxD (COM Pin3) Gnd MCU_RxD (P3.0) MCU_TxD (P3.1) P3.0 P3.1 89C52RC 89C58RD+ PC /电脑 串口 89LE52RC 89LE516RD+ GND VCC RESET 0.1uF 10uF 如 用 编程锁紧座 就是编程器 10K 10μF XTAL2 XTAL1 Vcc Vcc 0.1uF 深 圳:Tel:0755-82948409 82948410 Fax:0755-82944243 82905966 广州办:Tel:020-38851405 38850557 Fax:020-38850581 上海办:Tel:021-53560136 53560138 Fax:021-53080587 北京办:Tel:010-62538687 62634001 Fax:010-62538683 <增加 P4口, 并可位寻址> <增加 口 并可位寻址
目录 2.6 STC12C5410AD系列单片机指令系统与普通 8051指令代码完全兼容,但执行速度大幅提升 ..15 2.9 STC12C5410AD系列单片机定时器 0/1及UART串口的速度与普通 8051兼容,但也可快12倍 ..25
8.9 利用定时器 0的溢出作为 PCA模块的时钟输入,实现可调频率 PWM并用PCA再实现定时器 .91 9.3 进入掉电模式前的 I/O口设置特别注意事项(仅针对 A版本,现供货的 C版本无此问题) 101
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 6 特点 : 1. 增强型 1T 流水线/精简指令集结构 8051 CPU 3. 工作频率范围:0 - 35 MHz,相当于普通 8051的 0~420MHz.实际工作频率可达 48MHz. 4. 用户应用程序空间12K / 10K / 8K / 6K / 4K / 2K 字节 5. 片上集成 512 字节 RAM 6. 通用I/O口(27/23个),复位后为: 准双向口/弱上拉(普通8051传统I/O口) 可设置成四种模式 :准双向口 /弱上拉,推挽 /强上拉,仅为输入 /高阻,开漏 每个I/O口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片 8. EEPROM 功能 9. 看门狗 10.内部集成 MAX810专用复位电路(外部晶体 20M以下时,可省外部复位电路 ) 11.时钟源:外部高精度晶体 /时钟,内部 R/C 振荡器 用户在下载用户程序时,可选择是使用内部 R/C振荡器还是外部晶体 /时钟 常温下内部R/C 振荡器频率为:5.2MHz ~ 6.8MHz 精度要求不高时,可选择使用内部时钟,但因为有温漂,应认为是 4MHz ~ 8MHz 12.共2个16位定时器/计数器 13.外部中断2路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒 14.PWM(4路)/PCA(可编程计数器阵列 ),也可用来再实现 4个定时器 ---也可用来再实现 4个定时器或4个外部中断(上升沿中断/下降沿中断均可支持) 15.ADC, 10位精度ADC,共8路 16. 通用异步串行口(UART) 17.SPI同步通信口, 主模式/从模式 19.封装: PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封状,定货) STC12C5410系列单片机是单时钟 /机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代 8051单片机,全新的流水线 /精简指令集结构,内部集成 MAX810专用复位电路。 STC12C5410AD系列 1T 单片机简介
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 7 TxD/P3.1 INT0/P3.2 P0.0 XTAL2 XTAL1 P0.1 PWM1/PCA1/CEX1/T1/P3.5 INT1/P3.3 ECI/T0/P3.4 PLCC-3214 4 21 ADC0/P1.0 PWM0/PCA0/CEX0/P3.7 P2.7 P2.6 VSS P2.5 PWM3/PCA3/CEX3/P2.4 P1.7/SCLK/ADC7 P1.6/MISO/ADC6 P1.5/MOSI/ADC5 P0.3 P1.4/SS/ADC4 P1.3/ADC3 P0.2 P1.2/ADC2 P1.1/ADC1 P2.0/CEX2/PCA2/PWM2 P2.1 VDD P2.2 P2.3 RST P3.0/RxD STC12C5410AD系列 1T 单片机管脚图 DIP-28( 窄体 / SOP-28 P2.2 1 28 P2.1P2.3 2 27 P2.0/CEX2/PCA2/PWM2RST 3 26 VDD RxD/P3.04 25 P1.7/SCLK/ADC7 TxD/P3.15 24 P1.6/MISO/ADC6 XTAL2 6 23 P1.5/MOSI/ADC5 XTAL1 7 22 P1.4/SS/ADC4 INT0/P3.28 21 P1.3/ADC3 INT1/P3.39 20 P1.2/ADC2 ECI/T0/P3.410 19 P1.1/ADC1 PWM1/PCA1/CEX1/T1/P3.511 18 P1.0/ADC0 VSS 12 17 P3.7/CEX0/PCA0/PWM0PWM3/PCA3/CEX3/P2.4 13 16 P2.7P2.5 14 15 P2.6 RST 1 20 VCC RxD/P3.0 2 19 P1.7/SCLK/ADC7 TxD/P3.1 3 18 P1.6/MISO/ADC6 XTAL2 4 17 P1.5/MOSI/ADC5 INT0/P3.2 6 15 P1.3/ADC3 INT1/P3.3 7 14 P1.2/ADC2 ECI/T0/P3.4 8 13 P1.1/ADC1 PWM1/PCA1/CEX1/T1/P3.5 9 12 P1.0/ADC0 Gnd 10 11 P3.7/CEX0/PCA0/PWM0 XTAL1 5 16 P1.4/SS/ADC4 DIP-20/SOP-20 RST 1 20 VCC RxD/P3.0 2 19 P1.7/SCLK TxD/P3.1 3 18 P1.6/MISO XTAL2 4 17 P1.5/MOSI INT0/P3.2 6 15 P1.3 INT1/P3.3 7 14 P1.2 ECI/T0/P3.4 8 13 P1.1 PWM1/CEX1/T1/P3.5 9 12 P1.0 Gnd 10 11 P3.7/CEX0/PWM0 XTAL1 5 16 P1.4/SS DIP-20/SOP-20 STC12C5410AD(有A/D转换) STC12C5410(无A/D转换) STC12C5410AD(有A/D转换) STC12C5410(无A/D转换) P2.2 1 28 P2.1P2.3 2 27 P2.0/CEX2/PCA2/PWM2RST 3 26 VDD RxD/P3.04 25 P1.7/SCLK TxD/P3.15 24 P1.6/MISO XTAL2 6 23 P1.5/MOSI XTAL1 7 22 P1.4/SS INT0/P3.28 21 P1.3 INT1/P3.39 20 P1.2 ECI/T0/P3.410 19 P1.1 PWM1/PCA1/CEX1/T1/P3.511 18 P1.0 VSS 12 17 P3.7/CEX0/PCA0/PWM0PWM3/PCA3/CEX3/P2.4 13 16 P2.7P2.5 14 15 P2.6 DIP-28( 窄体 / SOP-28
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 8 0.485 inch(12.32 mm) 0.495 inch(12.57 mm) 0.447(11.35) 0.048(1.22) 0.042(1.07) 0.048(1.22) 0.547(13.89) 0.553 (14.05) 0.585(14.86) 0.595(15.11) 0.050(1.27) BSC. 0.050(1.27) BSC. 0.026(0.66) 0.032 (0.81) 0.023(0.58) 0.029 (0.74)×30° 0.106 (2.69) 0.112 (2.84) 0.013(0.33) 0.021(0.53) 0.400(10.16) BSC 0.490(12.45) 0.530(13.46) 0.015(0.38)Min 0.075 (1.91) 0.095 (2.41) 0.125 (3.18) 0.140 (3.56) Optional Pin #1 Identifier PIN1 1.445 (36.70) 1.455 (36.96) 0.280 (7.11) 0.240 (6.10) 0.090(2.29) MAX 0.005(0.127) MIN 1.300(33.02) REF 0.210(5.33) MAX 0.150 (3.81) 0.115 (2.92) 0.045(1.13) 0.022 (0.559) 0.014 (0.356) 0.015(0.381)MIN 0.325(8.26) 0.300(7.62) 0.014(0.356) 0.008(0.203) 0.430(10.92)MAX 15REF SEATING PLANE 28-PIN PLASTIC DUAL-IN-LINE PACKAGE (PDIP) 32-PIN PLASTIC LEAD CHIP CARRIER (PLCC) PIN1 0.020 (0.508) 0.014 (0.350) 0.703 (17.856) 0.693 (17.602) 0.013 (0.330) 0.009 (0.229) 0.0484 (1.228) 0.0276 (0.700)
10 REF
0.112 (2.844) 0.100 (2.540) 0.014 (0.350) 0.004 (0.102) 28-PIN SMALL OUTLINE PACKAGE (SOP) 0.050 (1.270) STC12C5410AD系列 1T 单片机封装尺寸图 0.299 (7.60) 0.291 (7.39) 0.420 (10.7) 0.393 (9.98)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 9 20P3, 20-lead, 0.300" Wide, Plastic Dual Inline Package (PDIP-20) Dimensions in Inches and (Millimeters) JEDEC STANDARD MS-001 AD 20S, 20-lead, 0.300" Wide, Plastic Gull WIng Small Outline (SOIC-20 / SOP-20) Dimensions in Inches and (Millimeters) PIN1 0.020 (0.508) 0.013 (0.330) 0.299 (7.60) 0.291 (7.39) 0.420 (10.7) 0.393 (9.98) 0.050 (1.27) 0.513 (13.0) 0.092 (2.34) 0.012 (0.305) 0.003 (0.076) 0.013 (0.330) 0.009 (0.229) 0.035 (0.889) 0.015 (0.381) 8REF PIN1 1.060 (26.9) 0.980 (24.9) 0.280 (7.11) 0.240 (6.10) 0.090(2.29) MAX 0.005(0.127) MIN 0.900(22.86) REF 0.210(5.33) MAX 0.150 (3.81) 0.115 (2.92) 0.045(1.13) 0.022 (0.559) 0.014 (0.356) 0.015(0.381)MIN 0.325(8.26) 0.300(7.62) 0.014(0.356) 0.008(0.203) 0.430(10.92)MAX 15REF SEATING PLANE
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 10 PACKAGE:PLASTIC SHRINK SMALL OUTLINE(TSSOP-20,6.4mm× 6.4mm) 20-PIN A B D E e L Φ DIMENSIONS in inches (mm) Minimum/Maximum - /0.043 (- /1.10) 0.002/0.006 (0.05/0.15mm) 0.007/0.012 (0.19/0.30mm) 0.252/0.260 (6.40/6.60mm) 0.169/0.177 (4.30/4.50mm)
0.026 BSC
(0.65mm BSC)
0.126 BSC
(3.20mm BSC) 0.020/0.030 (0.50/0.75mm) 0°/8° E(4.5mm) E2(3.2mm) 6.4mm A Φ D(6.40mm~6.60mm) STC12C5410AD系列的 TSSOP-20封装需订货
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 11 工作 电压(V) Flash 程序 存储器 字节 SRAM 字节 定 时 器 UARTPCA PWMA/DI/O 看 门 狗 内置 复位 EEP ROM S P I 封装 20-Pin 封装 28-Pin 封装 32-Pin STC12C54015.5 - 3.41K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5401AD5.5 - 3.41K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C54025.5 - 3.42K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5402AD5.5 - 3.42K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C54045.5 - 3.44K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5404AD5.5 - 3.44K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C54065.5 - 3.46K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5406AD5.5 - 3.46K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C54085.5 - 3.48K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5408AD5.5 - 3.48K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C54105.5 - 3.410K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5410AD5.5 - 3.410K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C54125.5 - 3.412K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5412AD5.5 - 3.412K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54012.0 - 3.81K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5401AD2.0 - 3.81K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54022.0 - 3.82K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5402AD2.0 - 3.82K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54042.0 - 3.84K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5404AD2.0 - 3.84K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54062.0 - 3.86K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5406AD2.0 - 3.86K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54082.0 - 3.88K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5408AD2.0 - 3.88K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54102.0 - 3.810K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5410AD2.0 - 3.810K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE54122.0 - 3.812K 5122 有 4路 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12LE5412AD2.0 - 3.812K 5122 有 4路 有 27/23有 有 有 有 DIP/SOP/TSSOPDIP/SOPPLCC-32 STC12C5410AD系列单片机选型一览表
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 12 STC12xx54xx xx—35x-xxxx xx 管脚数 如20,28,32 何种封装 :如 PDIP,SOP,PLCC,TSSOP 工作温度范围 : C:商业级, 0℃ ~ 70℃ 工作频率: 12:工作频率可到 12MHz 35:工作频率可到 35MHz 48:工作频率可到 48MHz AD:有A/D转换功能 无AD字样,则无 A/D转换 程序空间大小 ,如: 04是4K字节, 08是8K字节 10是10K字节,12是12K字节 RAM是512字节,PCA/PWM是4路 STC 1T 8051,同样的工作频率时,速度是普通 8051的8~12倍 C: 5.5V~3.4V LE:2.0V~3.8V LV:2.0V~3.8V,超低功耗设计,工作频率 2MHz时: 正常工作电流 < 2.7mA; 空闲模式电流 < 1.3mA; 掉电模式电流 < 0.1μA STC12C5410AD系列 单片机 命名规则
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 13 10K 10μF 0.1uF PC_RxD (COM Pin2)
4 C2+ R1IN 13 PC_TxD (COM Pin3)
PC /电脑 串口 STC3232,STC232,MAX232,SP232 U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND 3 RST P2.0/PCA2/PWM2 26 4 RxD/P3.0 P1.7/SCLK/ADC7 25 5 TxD/P3.1 P1.6/MISO/ADC6 24 6 XTAL2 P1.5/MOSI/ADC5 23 8 INT0/P3.2 P1.3/ADC3 21 9 INT1/P3.3 P1.2/ADC2 20 10 ECI/T0/P3.4 P1.1/ADC1 19 11 PWM1/PCA1/T1/P3.5 P1.0/ADC0 18 12 PWM3/PCA3/P2.4 P3.7/PCA0/PWM0 17 7 XTAL1 P1.4/SS/ADC4 22 Vcc Vin Power On SW1 电源开关 USB +5V <33pF <33pF 通过电脑端的 STC-ISP软件 控制下载 “用户程序 ” 到 STC单片机建议用户在系统上 留此接口 ,可方便 在线下载用户程序 10μF0.1μF 10μF Vcc Vcc 0.1uF 0.1uF 2 P2.3 P2.1 27 1 P2.2 VDD 28 13 P2.5 P2.7 16 14 VSS P2.6 15 USB+5VT1OUT GNDR1IN USB1
28 Pin
STC12C5410AD系列 单片机 典型应用电路(28Pin) ----通过RS-232转换器连接电脑就可以下载程序 用户在自己的目标系统上,如将P3.0/P3.1经过RS-232电平转换器转换后连接到电脑的普通 RS- 232串口,就可以在系统编程 /升级用户软件。建议如果用户板上无 RS-232电平转换器,应引出一个插 P1.0 六个信号线为最好,这样就可以在用户系统上直接编程了 。关于 ISP编程的原理及应用指南详见 附录部分“STC12C5410AD系列单片机 ISP 编程 原理 工具使用说明”部分。另外我们有标准化的编程 下载工具,用户可以在上面编程后再插到目标系统上 ,也可以借用它上面的 RS-232电平转换器连接到 电脑,以做下载编程之用。编程一个芯片大致需几秒钟 ,速度比普通的通用编程器快很多 ,故无须买通 用编程器。 此线路已做成一个 STC12C5410AD系列单片机 ISP下载编程工具,可直接赠送给客户 电脑端STC-ISP软件从网站www.MCU-Memory.com下载 使用编程锁紧座就是编程器 晶振频率在20M以下时: 可以不用C1,R1可为0~10K 如果使用内部 R/C振荡器时钟 (4MHz~8MHz,制造误差),XTAL1和 XTAL2脚浮空. 如果外部时钟频率在 33MHz以上时, 建议直接使用外部有源晶振,时钟从 XTAL1脚输入,XTAL2脚必须浮空. 不过建议保留R/C复位电路
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 14 用户在自己的目标系统上,如将P3.0/P3.1经过RS-232电平转换器转换后连接到电脑的普通 RS- 232串口,就可以在系统编程 /升级用户软件。建议如果用户板上无 RS-232电平转换器,应引出一个插 P1.0 六个信号线为最好,这样就可以在用户系统上直接编程了 。关于 ISP编程的原理及应用指南详见 附录部分“STC12C5410AD系列单片机 ISP 编程 原理 工具使用说明”部分。另外我们有标准化的编程 下载工具,用户可以在上面编程后再插到目标系统上 ,也可以借用它上面的 RS-232电平转换器连接到 电脑,以做下载编程之用。编程一个芯片大致需几秒钟 ,速度比普通的通用编程器快很多 ,故无须买通 用编程器。 0.1uF PC_RxD (COM Pin2) PC /电脑 串口 STC3232,STC232,MAX232,SP232 U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND USB+5VT1OUT GNDR1IN USB1
1 RST VCC 20
2 RxD/P3.0 P1.7/SCLK/ADC7 19 3 TxD/P3.1 P1.6/MISO/ADC6 18 4 XTAL2 P1.5/MOSI/ADC5 17 6 INT0/P3.2 P1.3/ADC3 15 7 INT1/P3.3 P1.2/ADC2 14 8 ECI/T0/P3.4 P1.1/ADC1 13 9 PWM1/PCA1/T1/P3.5 P1.0/ADC0 12 10 Gnd P3.7/PCA0/PWM0 11 5 XTAL1 P1.4/SS/ADC4 16 1K1K Vcc Vin Power On SW1 电源开关 USB +5V 10K 10μF <33pF <33pF 通过电脑端的 STC-ISP软件 控制下载 “用户程序 ” 到 STC单片机建议用户在系统上 留此接口 ,可方便 在线下载用户程序 10μF0.1μF 10μF Vcc Vcc 0.1uF 0.1uF 此线路已做成一个 STC12C5410AD系列单片机 ISP下载编程工具,可直接赠送给客户 使用编程锁紧座就是编程器 电脑端STC-ISP软件从网站www.MCU-Memory.com下载
20 Pin
STC12C5410AD系列 单片机 典型应用电路(20Pin) ----通过RS-232转换器连接电脑就可以下载程序 晶振频率在20M以下时: 可以不用C1,R1可为0~10K 如果使用内部 R/C振荡器时钟 (4MHz~8MHz,制造误差),XTAL1和 XTAL2脚浮空. 如果外部时钟频率在 33MHz以上时, 建议直接使用外部有源晶振,时钟从 XTAL1脚输入,XTAL2脚必须浮空. 不过建议保留R/C复位电路
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 15 如果按功能分类,STC89/12系列单片机指令系统可分为 : 1.数据传送类指令; 2.算术操作类指令; 3.逻辑操作类指令; 4.控制转移类指令; 5.布尔变量操作类指令。 按功能分类的指令系统表如下表所示 。 数据传送类指令 传统 12T的8051 STC12C5410AD系列 指令系统分类总结及与普通 8051指令执行时间对比 ---与8051指令代码完全兼容,但执行的时间效率大幅提升 ---其中INC DPTR指令的执行速度大幅提升 24倍 ---共有 12条指令,一个时钟就可以执行完成 ,平均速度快 8~12倍 助记符 功能说明 字节数 12时钟/机器周期 所需时钟 1时钟/机器周期 所需时钟 效率 提升 MOV A,Rn 寄存器内容送入累加器 1 12 1 12倍 MOV A,direct 直接地址单元中的数据送入累加器 2 12 2 6倍 MOV A,@Ri 间接RAM中的数据送入累加器 1 12 2 6倍 MOV A,#data 立即送入累加器 2 12 2 6倍 MOV Rn,A 累加器内容送入寄存器 1 12 2 6倍 MOV Rn,direct 直接地址单元中的数据送入寄存器 2 24 4 6倍 MOV Rn,#data 立即数送入寄存器 2 12 2 6倍 MOV direct,A 累加器内容送入直接地址单元 2 12 3 4倍 MOV direct,Rn 寄存器内容送入直接地址单元 2 24 3 8倍 MOV direct,direct直接地址单元中的数据送入另一个直接 地址单元 3 24 4 6倍 MOV direct,@Ri 间接RAM中的数据送入直接地址单元 2 24 4 6倍 MOV direct,#data立即数送入直接地址单元 3 24 3 8倍 MOV @Ri,A 累加器内容送间接RAM单元 1 12 3 4倍 MOV @Ri,direct 直接地址单元数据送入间接RAM单元 2 24 3 8倍 MOV @Ri,#data 立即数送入间接RAM单元 2 12 3 4倍 MOV DPTR,#data16 16位立即数送入地址寄存器 3 24 3 8倍 MOVC A,@A+DPTR以DPTR为基地址变址寻址单元中的数据 送入累加器 1 24 4 6倍 MOVC A,@A+PC以PC为基地址变址寻址单元中的数据送 入累加器 1 24 4 6倍 MOVX A,@Ri 外部RAM(8位地址)送入累加器 1 24 3 8倍 MOVX A,@DPTR 外部RAM(16位地址)送入累加器 1 24 3 8倍 MOVX @Ri,A累加器送外部RAM(8位地址) 1 24 3 8倍 MOVX @DPTR ,A 累加器送外部RAM(16位地址) 1 24 3 8倍 PUSH direct 直接地址单元中的数据压入堆栈 2 24 4 6倍 POP direct 出栈送直接地址单元 2 24 3 8倍 XCH A,Rn 寄存器与累加器交换 1 12 3 4倍 XCH A,direct直接地址单元与累加器交换 2 12 4 3倍 XCH A,@Ri 间接RAM与累加器交换 1 12 4 3倍 XCHD A,@Ri 间接RAM的低半字节与累加器交换 1 12 4 3倍
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 16 算术操作类指令 逻辑操作类指令 助记符 功能说明 字节数 12时钟/周期 所需时钟 1时钟/周期 所需时钟 提升 效率 ADD A,Rn 寄存器内容加到累加器 1 12 2 6倍 ADD A,direct 直接地址单元中的数据加到累加器 2 12 3 4倍 ADD A,@Ri 间接RAM中的数据加到累加器 1 12 3 4倍 ADD A,#data 立即加到累加器 2 12 2 6倍 ADDC A,Rn 寄存器内容带进位加到累加器 1 12 2 6倍 ADDC A,direct 直接地址单元的内容带进位加到累加器 2 12 3 4倍 ADDC A,@Ri 间接RAM内容带进位加到累加器 1 12 3 4倍 ADDC A,#data 立即数带进位加到累加器 2 12 2 6倍 SUBB A,Rn 累加器带借位减寄存器内容 1 12 2 6倍 SUBB A,direct 累加器带借位减直接地址单元的内容 2 12 3 4倍 SUBB A,@Ri 累加器带借位减间接RAM中的内容 1 12 3 4倍 SUBB A,#data 累加器带借位减立即数 2 12 2 6倍 INC A 累加器加1 1 12 2 6倍 INC Rn 寄存器加1 1 12 3 4倍 INC direct 直接地址单元加1 2 12 4 3倍 INC @Ri 间接RAM单元加1 1 12 4 3倍 DEC A 累加器减1 1 12 2 6倍 DEC Rn 寄存器减1 1 12 3 4倍 DEC direct 直接地址单元减1 2 12 4 3倍 DEC @Ri 间接RAM单元减1 1 12 4 3倍 INC DPTR地址寄存器DPTR加1 1 24 1 24倍 MUL AB A乘以B 1 48 4 12倍 DIV AB A除以B 1 48 5 9.6倍 DA A 累加器十进制调整 1 12 4 3倍 助记符 功能说明 字节数 12 时钟 /周 期所需时钟 1时钟 /周期 所需时钟 提升 效率 ANL A,Rn 累加器与寄存器相 “与” 1 12 2 6倍 ANL A,direct 累加器与直接地址单元相 “与” 2 12 3 4倍 ANL A,@Ri 累加器与间接 RAM单元相 “与” 1 12 3 4倍 ANL A,#data 累加器与立即数相 “与” 2 12 2 6倍 ANL direct,A 直接地址单元与累加器相 “与” 2 12 4 3倍 ANL direct,#data 直接地址单元与立即数相 “与” 3 24 4 6倍 ORL A,Rn 累加器与寄存器相 “或” 1 12 2 6倍 ORL A,direct 累加器与直接地址单元相 “或” 2 12 3 4倍 ORL A,@Ri 累加器与间接 RAM单元相 “或” 1 12 3 4倍 ORL A,#data 累加器与立即数相 “或” 2 12 2 6倍 ORL direct,A 直接地址单元与累加器相 “或” 2 12 4 3倍 ORL direct,#data 直接地址单元与立即数相 “或” 3 24 4 6倍 XRL A,Rn 累加器与寄存器相 “异或 ” 1 12 2 6倍 XRL A,direct 累加器与直接地址单元相 “异或 ” 2 12 3 4倍 XRL A,@Ri 累加器与间接 RAM单元相 “异或 ” 1 12 3 4倍 XRL A,#data 累加器与立即数相 “异或 ” 2 12 2 6倍 XRL direct,A 直接地址单元与累加器相 “异或 ” 2 12 4 3倍 XRL direct,#data 直接地址单元与立即数相 “异或 ” 3 24 4 6倍 CLR A 累加器清 “0” 1 12 1 12 倍 CPL A 累加器求反 1 12 2 6倍 RL A 累加器循环左移 1 12 1 12 倍 RLC A 累加器带进位位循环左移 1 12 1 12 倍 RR A 累加器循环右移 1 12 1 12 倍 RRC A 累加器带进位位循环右移 1 12 1 12 倍 SWAP A 累加器半字节交换 1 12 1 12 倍
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 17 控制转移类指令 布尔变量操作类指令 助记符 功能说明 字节数 12时钟/周期 所需时钟 1时钟/周期 所需时钟 提升 效率 CLR C 清0进位位 1 12 1 12倍 CLR bit清0直接地址位 2 12 4 3倍 SETB C 置1进位位 1 12 1 12倍 SETB bit置1直接地址位 2 12 4 3倍 CPL C 进位位求反 1 12 1 12倍 CPL bit直接地址位求反 2 12 4 3倍 ANL C,bit 进位位和直接地址位相“与” 2 24 3 8倍 ANL C,bit 进位位和直接地址位的反码相“与” 2 24 3 8倍 ORL C,bit 进位位和直接地址位相“或” 2 24 3 8倍 ORL C,bit 进位位和直接地址位的反码相“或” 2 24 3 8倍 MOV C,bit 直接地址位送入进位位 2 12 3 4倍 MOV bit,C 进位位送入直接地址位 2 24 3 8倍 JC re1进位位为1则转移 2 24 3 8倍 JNC re1进位位为0则转移 2 24 3 8倍 JB bit,re1 直接地址位为1则转移 3 24 4 6倍 JNB bit,re1 直接地址位为0则转移 3 24 4 6倍 JBC bit,re1 直接地址位为1则转移,该位清0 3 24 5 4.8倍 助记符 功能说明 字节数 12时钟/周期 所需时钟 1时钟/周期 所需时钟 提升 效率 ACALL addr11绝对(短)调用子程序 2 24 6 4倍 LCALL addr16长调用子程序 3 24 6 4倍 RET 子程序返回 1 24 4 6倍 RETI 中断返回 1 24 4 6倍 AJMP addr11绝对(短)转移 2 24 3 8倍 LJMP addr16长转移 3 24 4 6倍 SJMP re1相对转移 2 24 3 8倍 JMP @A+DPTR相对于DPTR的间接转移 1 24 3 8倍 JZ re1累加器为零转移 2 24 3 8倍 JNZ re1累加器非零转移 2 24 3 8倍 CJNE A,direct,re1 累加器与直接地址单元比较,不相等则转移 3 24 5 4.8倍 CJNE A,#data,re1 累加器与立即数比较,不相等则转移 3 24 4 6倍 CJNE Rn,#data,re1 寄存器与立即数比较,不相等则转移 3 24 4 6倍 CJNE @Ri,#data,re1 间接RAM单元与立即数比较,不相等则转移 3 24 5 4.8倍 DJNZ Rn,re1 寄存器减1,非零转移 3 24 4 6倍 DJNZ direct,re1 直接地址单元减1,非零转移 3 24 5 4.8倍 NOP 空操作 1 12 1 12倍
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 18 指令执行速度效率提升总结 : 指令系统共包括 111条指令,其中: 执行速度快24倍的 共1条 执行速度快12倍的 共12条 执行速度快9.6倍的 共1条 执行速度快8倍的 共21条 执行速度快6倍的 共37条 执行速度快4.8倍的 共4条 执行速度快4倍的 共21条 执行速度快3倍的 共14条 根据对指令的使用频率分析统计,STC12系列 1T的8051单片机比普通的 8051单片机在同样的工作频率 下运行速度提升了 8~12倍。 指令执行时钟数统计 (供参考 ): 指令系统共包括 111条指令,其中: 1个时钟就可执行完成的指令 共12条 2个时钟就可执行完成的指令 共20条 3个时钟就可执行完成的指令 共40条 4个时钟就可执行完成的指令 共32条 5个时钟就可执行完成的指令 共5条 6个时钟就可执行完成的指令 共2条
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 19 特殊功能寄存器映像 SFR Mapping Bit Addressable Non Bit Addressable F8h CH 0000,0000 CCAP0H 0000,0000 CCAP1H 0000,0000 CCAP2H 0000,0000 CCAP3H 0000,0000 FFh F0h B 0000,0000 PCA_PWM0 xxxx,xx00 PCA_PWM1 xxxx,xx00 PCA_PWM2 xxxx,xx00 PCA_PWM3 xxxx,xx00 F7h E8h CL 0000,0000 CCAP0L 0000,0000 CCAP1L 0000,0000 CCAP2L 0000,0000 CCAP3L 0000,0000 EFh E0h ACC 0000,0000 WDT_CONTR 0x00,0000 ISP_DATA 1111,1111 ISP_ADDRH 0000,0000 ISP_ADDRL 0000,0000 ISP_CMD xxxx,xx00 ISP_TRIG xxxx,xxxx ISP_CONTR 0000,1000E7h D8h CCON 00xx,0000 CMOD 0xxx,x000 CCAPM0 x000,0000 CCAPM1 x000,0000 CCAPM2 x000,0000 CCAPM3 x000,0000 DFh D0h PSW 0000,0000 D7h C8h CFh C0h ADC_CONTR 0000,0000 ADC_DATA 0000,0000 CLK_DIV xxxx,x000C7h B8h IP x000,0000 SADEN don't use ADC_LOW2 0000,0000BFh B0h P3 1x11,1111 P3M0 0000,0000 P3M1 0000,0000 IPH x000,0000B7h A8h IE 0000,0000 SADDR don't use AFh A0h P2 1111,1111 TEST_WDT don't useA7h 98h SCON 0000,0000 SBUF xxxx,xxxx 9Fh 90h P1 1111,1111 P1M0 0000,0000 P1M1 0000,0000 P0M0 0000,0000 P0M1 0000,0000 P2M0 0000,0000 P2M1 0000,000097h 88h TCON 0000,0000 TMOD 0000,0000 TL0 0000,0000 TL1 0000,0000 TH0 0000,0000 TH1 0000,0000 AUXR 0000,00xx8Fh 80h P0 xxxx,1111 SP 0000,0111 DPL 0000,0000 DPH 0000,0000 SPSTAT 00xx,xxxx SPCTL 0000,0100 SPDAT 0000,0000 PCON 0011,000087h 特别标出部分为在 Intel 8052基础上新增加的特殊功能寄存器 ,一般用户可不管
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 20 STC12C5410AD系列 8051 单片机内核特殊功能寄存器 C51 Core SFRs MnemonicAddName 7 6 5 4 3 2 1 0 Reset Value ACC E0hAccumulator 0000,0000 B F0hB Register 0000,0000 PSW D0hProgram Status WordCY AC F0 RS1RS0OV F1 P 0000,0000 SP 81hStack Pointer 0000,0111 DPL 82hData Pointer Low Byte 0000,0000 DPH 83hData Pointer High Byte 0000,0000 STC12C5410AD系列8051 单片机系统管理特殊功能寄存器 System Management SFRs MnemonicAddName 7 6 5 4 3 2 1 0 Reset value PCON 87hPower ControlSMOD SMOD0 LVDFPOF GF1 GF0 PD IDL 0011,0000 AUXR 8EhAuxiliary Register T0x12 T1x12 UART_M0x6 EADCI ESPI ELVDI- - 0000,00xx CLK_DIVC7hClock Divder- - - - - CLKS2CLKS1CLKS0xxxx,x000 STC12C5410AD系列8051 单片机 I/O 口 特殊功能寄存器 Port SFRs MnemonicAdd Name 7 6 5 4 3 2 1 0 Reset Value P0 80h 8-bit Port 0- - - - P0.3P0.2P0.1P0.0xxxx,1111 P0M0 93h 0000,0000 P0M1 94h 0000,0000 P1M0 91h 0000,0000 P1M1 92h 0000,0000 P2M0 95h 0000,0000 P2M1 96h 0000,0000 P3M0 B1h 0000,0000 P3M1 B2h 0000,0000 MnemonicAddName 7 6 5 4 3 2 1 0 Reset Value SCON 98hSerial ControlSM0/FESM1 SM2 REN TB8RB8 TI RI 0000,0000 SBUF 99hSerial Data Buffer xxxx,xxxx SADENB9hSlave Address Mask 0000,0000 SADDRA9hSlave Address 0000,0000 AUXR 8EhAuxiliary RegisterT0x12T1x12UART_M0x6EADCIESPIELVDI - - 0000,00xx STC12C5410AD系列 8051 单片机 串行口 特殊功能寄存器 Serial I/O Port SFRs MnemonicAddName 7 6 5 4 3 2 1 0Reset Value WDT_CONTRE1hWatch-Dog-Timer Control register WDT_FLAG -EN_WDTCLR_WDTIDLE_WDTPS2PS1PS0xx00,0000 STC12C5410AD系列 8051单片机 看门狗定时器 特殊功能寄存器 Watch Dog Timer SFRs STC12C5410AD系列 8051 单片机 定时器 特殊功能寄存器 Timer SFRs MnemonicAddName 7 6 5 4 3 2 1 0 Reset Value TCON 88hTimer / Counter 0 and 1 ControlTF1TR1 TF0 TR0IE1 IT1 IE0 IT0 0000,0000 TMOD 89hTimer / Counter 0 and 1 ModesGATE GATE1 C/T# C/T1# M1_1 M1_0 GATE GATE0 C/T# C/T0# M0_1 M0_00000,0000 TL0 8AhTimer / Counter 0 Low Byte 0000,0000 TH0 8ChTimer / Counter 0 High Byte 0000,0000 TL1 8BhTimer / Counter 1 Low Byte 0000,0000 TH1 8DhTimer / Counter 1 High Byte 0000,0000 AUXR 8EhAuxiliary RegisterT0x12T1x12UART_M0x6EADCIESPIELVDI - - 0000,00xx
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 21 MnemonicAddName 7 6 5 4 3 2 1 0 Reset value CCON D8hPCA Control RegisterCF CR - - CCF3CCF2CCF1CCF000xx,0000 CMOD D9hPCA Mode Register CIDL - - - - CPS1CPS0 ECF 0xxx,x000 CCAPM0DAhPCA Module 0 Mode Register - ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0x000,0000 CCAPM1DBhPCA Module 1 Mode Register - ECOM1CAPP1CAPN1MAT1TOG1PWM1ECCF1x000,0000 CCAPM2DChPCA Module 2 Mode Register - ECOM2CAPP2CAPN2MAT2TOG2PWM2ECCF2x000,0000 CCAPM3DDhPCA Module 3 Mode Register - ECOM3CAPP3CAPN3MAT3TOG3PWM3ECCF3x000,0000 CL E9hPCA Base Timer Low 0000,0000 CH F9hPCA Base Timer High 0000,0000 CCAP0LEAhPCA Module-0 Capture Register Low 0000,0000 CCAP0HFAhPCA Module-0 Capture Register High 0000,0000 CCAP1LEBhPCA Module-1 Capture Register Low 0000,0000 CCAP1HFBhPCA Module-1 Capture Register High 0000,0000 CCAP2LEChPCA Module-2 Capture Register Low 0000,0000 CCAP2HFChPCA Module-2 Capture Register High 0000,0000 CCAP3LEDhPCA Module-3 Capture Register Low 0000,0000 CCAP3HFDhPCA Module-3 Capture Register High 0000,0000 PCA_PWM0F2hPCA PWM Mode Auxiliary Register 0- - - - - - EPC0HEPC0Lxxxx,xx00 PCA_PWM1F3hPCA PWM Mode Auxiliary Register 1- - - - - - EPC1HEPC1Lxxxx,xx00 PCA_PWM2F4hPCA PWM Mode Auxiliary Register 2- - - - - - EPC2HEPC2Lxxxx,xx00 PCA_PWM3F5hPCA PWM Mode Auxiliary Register 3- - - - - - EPC3HEPC3Lxxxx,xx00 STC12C5410AD系列 8051 单片机 PCA/PWM 特殊功能寄存器 PCA/PWM SFRs STC12C5410AD系列 1T 8051 单片机 中断 特殊功能寄存器 Interrupt SFRs MnemonicAddName 7 6 5 4 3 2 1 0 Reset Value IE A8hInterrupt EnableEA EPCA_LVDEADC_SPIES ET1 EX1ET0 EX0 0000,0000 IP B8hInterrupt Priority Low - PPCA_LVDPADC_SPIPS PT1 PX1PT0 PX0 xx00,0000 IPH B7hInterrupt Priority High - PPCA_LVDHPADC_SPIHPSH PT1H PX1HPT0HPX0H0000,0000 TCON 88hTimer / Counter 0 and
1 Control TF1 TR1 TF0 TR0 IE1 IT1IE0 IT0 0000,0000
SCON 98hSerial ControlSM0/FESM1 SM2 REN TB8 RB8 TI RI 0000,0000 PCON 87hPower ControlSMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0011,0000 AUXR 8EhAuxiliary RegisterT0x12 T1x12UART_M0x6EADCI ESPIELVDI - - 0000,00xx ADC_CONTRC5hA/D 转换控制寄存器 ADC_POWER SPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS00xx0,0000 SPSTAT84hSPI Status RegisterSPIF WCOL - - - - - - 00xx,xxxx CCON D8hPCA Control RegisterCF CR - - CCF3 CCF2CCF1CCF000xx,0000 CMOD D9hPCA Mode Register CIDL - - - - CPS1CPS0ECF 0xxx,x000 CCAPM0DAhPCA Module 0 Mode Register- ECOM0 CAPP0 CAPN0 MAT0 TOG0PWM0ECCF0x000,0000 CCAPM1DBhPCA Module 1 Mode Register- ECOM1 CAPP1 CAPN1 MAT1 TOG1PWM1ECCF1x000,0000 CCAPM2DChPCA Module 2 Mode Register- ECOM2 CAPP2 CAPN2 MAT2 TOG2PWM2ECCF2x000,0000 CCAPM3DDhPCA Module 3 Mode Register- ECOM3 CAPP3 CAPN3 MAT3 TOG3PWM3ECCF3x000,0000
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 22 STC12C5410AD系列 8051 单片机 ISP/IAP 特殊功能寄存器 ISP/IAP SFRs MnemonicAddName 7 6 5 4 3 2 1 0Reset Value ISP_DATAE2hISP/IAP Flash Data Register 1111,1111 ISP_ADDRHE3hISP/IAP Flash Address High 0000,0000 ISP_ADDRLE4hISP/IAP Flash Address Low 0000,0000 ISP_CMDE5hISP/IAP Flash Command Register - - - - - - MS1MS0xxxx,x000 ISP_TRIGE6hISP/IAP Flash Command Trigger xxxx,xxxx ISP_CONTRE7hISP/IAP Control RegisterISPENSWBSSWRST CMD_FAIL 1WT2WT1WT00000,1000
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 23 中断 STC12C5410AD系列 1T 8051 单片机 中断 特殊功能寄存器 Interrupt SFRs STC12C5410AD系列 中断与普通 8051完全兼容,优先级可设为 4级。 Interrupt Source 中断源 Vector Address 中断 向量地址 Polling Sequence 中断 查询次序 中断 优先级设置 优先级0 最低 优先级1 优先级2 优先级3 最高 Interrupt Request 中断请求 /INT00003H0(最优先) PX0H,PX0 0,0 0,1 1,0 1,1 IE0 Timer 0000BH1 PT0H,PT0 0,0 0,1 1,0 1,1 TF0 /INT10013H2 PX1H,PX1 0,0 0,1 1,0 1,1 IE1 Timer 1001BH3 PT1H,PT1 0,0 0,1 1,0 1,1 IF1 UART 0023H4 PSH, PS 0,0 0,1 1,0 1,1 RI + TI ADC/SPI002BH5 PADC_SPIH,PADC_SPI0,0 0,1 1,0 1,1 ADC_FLAG + SPIF PCA/LVD0033H6 PPCA_LVDH,PPCA_LVD0,0 0,1 1,0 1,1 CF + CCF0 + CCF1 + CCF2 + CCF3 + LVDF MnemonicAddName 7 6 5 4 3 2 1 0 Reset Value IE A8hInterrupt EnableEA EPCA_LVDEADC_SPIES ET1 EX1ET0 EX0 0000,0000 IP B8hInterrupt Priority Low - PPCA_LVDPADC_SPIPS PT1 PX1PT0 PX0 xx00,0000 IPH B7hInterrupt Priority High - PPCA_LVDHPADC_SPIHPSH PT1H PX1HPT0HPX0H0000,0000 TCON 88hTimer / Counter 0 and SCON 98hSerial ControlSM0/FESM1 SM2 REN TB8 RB8 TI RI 0000,0000 PCON 87hPower ControlSMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0011,0000 AUXR 8EhAuxiliary RegisterT0x12 T1x12UART_M0x6EADCI ESPIELVDI - - 0000,00xx ADC_CONTRC5hA/D 转换控制寄存器 ADC_POWER SPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS00xx0,0000 SPSTAT84hSPI Status RegisterSPIF WCOL - - - - - - 00xx,xxxx CCON D8hPCA Control RegisterCF CR - - CCF3 CCF2CCF1CCF000xx,0000 CMOD D9hPCA Mode Register CIDL - - - - CPS1CPS0ECF 0xxx,x000 CCAPM0DAhPCA Module 0 Mode Register- ECOM0 CAPP0 CAPN0 MAT0 TOG0PWM0ECCF0x000,0000 CCAPM1DBhPCA Module 1 Mode Register- ECOM1 CAPP1 CAPN1 MAT1 TOG1PWM1ECCF1x000,0000 CCAPM2DChPCA Module 2 Mode Register- ECOM2 CAPP2 CAPN2 MAT2 TOG2PWM2ECCF2x000,0000 CCAPM3DDhPCA Module 3 Mode Register- ECOM3 CAPP3 CAPN3 MAT3 TOG3PWM3ECCF3x000,0000
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 24 PCA/PWM 特殊功能寄存器 , 其中部分位与PCA中断有关 MnemonicAddName 7 6 5 4 3 2 1 0 Reset value CCON D8hPCA Control RegisterCF CR - - CCF3CCF2CCF1CCF000xx,0000 CMOD D9hPCA Mode Register CIDL - - - - CPS1CPS0ECF0xxx,x000 CCAPM0DAhPCA Module 0 Mode Register- ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0x000,0000 CCAPM1DBhPCA Module 1 Mode Register- ECOM1CAPP1CAPN1MAT1TOG1PWM1ECCF1x000,0000 CCAPM2DChPCA Module 2 Mode Register- ECOM2CAPP2CAPN2MAT2TOG2PWM2ECCF2x000,0000 CCAPM3DDhPCA Module 3 Mode Register- ECOM3CAPP3CAPN3MAT3TOG3PWM3ECCF3x000,0000 CL E9hPCA Base Timer Low 0000,0000 CH F9hPCA Base Timer High 0000,0000 CCAP0LEAhPCA Module-0 Capture Register Low 0000,0000 CCAP0HFAhPCA Module-0 Capture Register High 0000,0000 CCAP1LEBhPCA Module-1 Capture Register Low 0000,0000 CCAP1HFBhPCA Module-1 Capture Register High 0000,0000 CCAP2LEChPCA Module-2 Capture Register Low 0000,0000 CCAP2HFChPCA Module-2 Capture Register High 0000,0000 CCAP3LEDhPCA Module-3 Capture Register Low 0000,0000 CCAP3HFDhPCA Module-3 Capture Register High 0000,0000 PCA_PWM0F2hPCA PWM Mode Auxiliary Register 0- - - - - - EPC0HEPC0Lxxxx,xx00 PCA_PWM1F3hPCA PWM Mode Auxiliary Register 1- - - - - - EPC1HEPC1Lxxxx,xx00 PCA_PWM2F4hPCA PWM Mode Auxiliary Register 2- - - - - - EPC2HEPC2Lxxxx,xx00 PCA_PWM3F5hPCA PWM Mode Auxiliary Register 3- - - - - - EPC3HEPC3Lxxxx,xx00 STC12C5410AD系列8051 单片机SPI功能模块特殊功能寄存器 其中SPIF位与中断有关 MnemonicAddName 7 6 5 4 3 2 1 0Reset value SPCTL85hSPI Control RegisterSSIG SPEN DORDMSTRCPOLCPHASPR1SPR00000,0000 SPSTAT84hSPI Status RegisterSPIF WCOL - - - - - - 00xx,xxxx SPDAT86hSPI Data Register 0000,0000
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 25 定时器0/定时器1,UART串口的速度 MnemonicAddName 7 6 5 4 3 2 1 0Reset Value AUXR 8EhAuxiliary RegisterT0x12T1x12UART_M0x6EADCIESPIELVDI - -0000,00xx 定时器0和定时器 1: STC12C5410AD系列是 1T 的8051单片机,为了兼容传统 8051,定时器0和定时器 1复位后是传统 8051 的速度,即12分频,这是为了兼容传统 8051。但也可不进行 12分频,实现真正的 1T。 T0x12: 0, 定时器0是传统8051速度,12分频;1, 定时器0的速度是传统 8051的12倍,不分频 T1x12: 0, 定时器1是传统8051速度,12分频;1, 定时器1的速度是传统8051的12倍,不分频 如果UART串口用定时器1做波特率发生器,T1x12位就可以控制UART串口是12T 还是1T了。 UART串口的模式0: STC12C5410AD系列是 1T 的8051单片机,为了兼容传统8051,UART串口复位后是兼容传统8051的。 UART_M0x6: 0, UART串口的模式0是传统12T的8051速度,12分频; 1, UART串口的模式0的速度是传统12T的8051的6倍,2分频 EADCI: 0, 禁止A/D 中断; 1,允许A/D中断 ESPI: 0, 禁止SPI 中断; 1,允许SPI中断 ELVDI: 0, 禁止低压中断; 1,允许低压中断 5V 单片机,3.7V以下为低压,3V 单片机,2.4V以下为低压, 如ELVDI=1(允许低压中断),则会产生低压中断
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 26 系统工作时钟 STC12C5410AD系列是 1T 的8051单片机,系统时钟兼容传统 8051。 现出厂标准配置是使用芯片内部的 R/C振荡器,5V 单片机常温下频率是5MHz - 6.9Hz,因为随着温度 的变化,内部R/C振荡器的频率会有一些温飘,应认为是 4MHz - 8MHz。故内部R/C振荡器只适用于对时 钟频率要求不敏感的场合。 在对STC12C5410AD系列单片机进行ISP下载用户程序时,可以在选项中选择: “下次冷启动后时钟源为外部晶体或时钟 ” 这样下载完用户程序后,停电,再冷启动后单片机的工作时钟使用的就不是内部R/C振荡器,而是外部晶体振 荡后产生的高精度时钟了(接在XTAL1/XTAL2管脚上),也可以直接从XTAL1脚输入外部时钟,XTAL2脚浮空。 如果还要设置成使用内部 R/C振荡器,在对STC12C5410AD系列单片机进行 ISP下载用户程序时,可 以在选项中选择: “下次冷启动后时钟源为内部 R/C振荡器” MnemonicAddName 7 6 5 4 3 2 1 0 Reset value CLK_DIVC7hClock Divder- - - - - CLKS2 CLKS1 CLKS0xxxx,x000 系统时钟分频及分频寄存器 CLKS2CLKS1CLKS0CPU的实际工作时钟 0 0 0 系统时钟(外部时钟或内部R/C振荡时钟) 0 0 1 系统时钟/2 0 1 0 系统时钟/4 0 1 1 系统时钟/8 1 0 0 系统时钟/16 1 0 1 系统时钟/32 1 1 0 系统时钟/64 1 1 1 系统时钟/128 如用户系统希望大幅降低功耗 ,还可对系统时钟进行分频 。 系统时钟分频寄存器 ,可将系统时钟分成较低频率工作
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 27 I/O口结构 I/O口配置 STC12C5410AD系列单片机其所有 I/O口均可由软件配置成 4种工作类型之一,如下表所示。4种 类型分别为:准双向口(标准8051输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。每个口由 2个控制寄存器中的相应位控制每个引脚工作类型。STC12C5410AD系列单片机上电复位后为准双向口(标 准8051输出模式)模式。2V以上时为高电平,0.8V以下时为低电平。 I/O口工作类型设定 P3M0【 7: 0】 P3M1【 7: 0】 I/O 口模式 0 0 准双向口 ( 传统 8051 I/O 口模式 ) , 灌电流可达 20mA , 拉电流为 230µA , 由于制造误差 , 实际为 250uA ~ 160uA 0 1 推挽输出 ( 强上拉输出 , 可达 20mA , 尽量少用 ) 1 0 仅为输入 ( 高阻 ) 1 1 开漏 (Open Drain) , 内部上拉电阻断开 , 要外加 P1M0【7:0】 P1M1【7:0】 I/O 口模式(P1.x 如做A/D使用,需先将其设置成开漏或高阻输入 ) 0 0 准双向口(传统8051 I/O 口模式), 灌电流可达20mA , 拉电流为230µA , 由于制造误差,实际为250uA~160uA 0 1 推挽输出(强上拉输出,可达20mA,尽量少用) 1 0 仅为输入(高阻),如果该I/O口需作为A/D使用,可选此模式 1 1 开漏(Open Drain) ,如果该I/O口需作为A/D使用,可选此模式 举例: MOVP1M0,#11000000B MOVP1M1,#10100000B 0 0 准双向口 (传统 8051 I/O 口模式 ), 灌电流可达 20mA , 拉电流为 230µA , 由于制造误差 ,实际为 250uA ~160uA 0 1 推挽输出 (强上拉输出 ,可达 20mA ,尽量少用 ) 1 0 仅为输入 (高阻 ) 1 1 开漏 (Open Drain) ,内部上拉电阻断开 ,要外加 P0M0【 7: 0】 P0M1【 7: 0】 I/O 口模式 0 0 准双向口 (传统 8051 I/O 口模式 ) , 灌电流可达 20mA , 拉电流为 230µA , 由于制造误差 , 实际为 250uA ~ 160uA 0 1 推挽输出 ( 强上拉输出 , 可达 20mA , 尽量少用 ) 1 0 仅为输入 ( 高阻 ) 1 1 开漏 (Open Drain) , 内部上拉电阻断开 , 要外加 注意: 虽然每个 I/O口在弱上拉时都能承受 20mA的灌电流(还是要加限流电阻,如1K,560Ω等),在强推挽 输出时都能输出 20mA的拉电流,但是整个芯片的工作电流推荐不要超过 55mA。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 28 1.准双向口输出配置 准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态 。这是因为当口线输出为 1 时驱动能力很弱 ,允许外部装置将其拉低 。当引脚输出为低时 ,它的驱动能力很强 ,可吸收相当大的 电流。准双向口有 3个上拉晶体管适应不同的需要 。 在3个上拉晶体管中,有1个上拉晶体管称为“弱上拉”,当口线寄存器为1且引脚本身也为1时打开。 此上拉提供基本驱动电流使准双向口输出为1。如果一个引脚输出为1而由外部装置下拉到低时,弱上拉关闭而 “极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门 槛电压以下。 第 2个上拉晶体管 ,称为“极弱上拉”,当口线锁存为 1时打开。当引脚悬空时 ,这个极弱的上 拉源产生很弱的上拉电流将引脚上拉为高电平 。 第3个上拉晶体管称为“强上拉”。当口线锁存器由 0到1跳变时,这个上拉用来加快准双向口由逻 辑0到逻辑 1转换。当发生这种情况时 ,强上拉打开约 2个机器周期以使引脚能够迅速地上拉到高电平 。 准双向口输出如下图所示。 2个CPU 时钟延时 VDD VDD VDD 弱极弱强 端口 引脚 口锁存数据 输入数据 干扰滤波 STC12LE5410系列单片机为 3V器件,如果用户在引脚加上 5V电压,将会有电流从引脚流向 VDD,这样 导致额外的功率消耗。因此,建议不要在准双向口模式中向 3V单片机引脚施加 5V电压,如使用的话,要加 限流电阻,或用二极管做输入隔离,或用三极管做输出隔离。 准双向口带有一个施密特触发输入以及一个干扰抑制电路 。 200uA30uA 灌电流最大 可到20mA, 输出低时 2.推挽输出配置 推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同 ,但当锁存器为 1时提供持续的 强上拉。推挽模式一般用于需要更大驱动电流的情况 。 推挽引脚配置如下图所示 。 拉电流最大可到20mA,输出高时 VDD 强 端口 引脚 口锁存数据 输入数据 干扰滤波 灌电流也可承受20mA,输出低时 由于制造误差, 弱上拉能力为 250uA~160uA 2mA
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 29 3.仅为输入 (高阻)配置 输入口配置如下图所示 。 输入口带有一个施密特触发输入以及一个干扰抑制电路 。 干扰滤波 输入数据 端口 引脚 口锁存数据 端口 引脚 干扰滤波 输入数据 4.开漏输出配置 当口线锁存器为0时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出时,这种配置方式必须有 外部上拉,一般通过电阻外接到 VDD。这种方式的下拉与准双向口相同 。输出口线配置如下图所示 。 开漏端口带有一个施密特触发输入以及一个干扰抑制电路 。 灌电流也可承受20mA,输出低时 仅为输入(高阻)时,不提供吸入 20mA电流的能力 一种典型三极管控制电路 10K(3.3K~10K) 15K(3.3K~15K) 普通I/O口 如果用弱上拉控制 ,建议加上拉电阻 R1(3.3K~10K),如果不加上拉电阻 R1(3.3K~10K),建议 R2的值在15K以上,或用强推挽输出
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 30 适用型号: STC12C5410AD系列 Symbol符号Function功能 WDT_FLAG When WDT overflows, this bit is set. It can be cleared by software. 看门狗溢出标志位,当溢出时,该位由硬件置1,可用软件将其清 0。 EN_WDT Enable WDT bit. When set, WDT is started 看门狗允许位, 当设置为“1”时,看门狗启动。 CLR_WDTWDT clear bit. When set, WDT will recount. Hardware will automatically clear this bit. IDLE_WDTWhen set, WDT is enabled in IDLE mode. When clear, WDT is disabled in IDLE mode 看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在“空闲模式”计数 当清“0”该位时, 看门狗定时器在“空闲模式”时不计数 PS2, PS1, PS0 Pre-scale value of Watchdog timer is shown as the bellowed table: 看门狗定时器预分频值,如下表所示 MnemonicAddName 7 6 5 4 3 2 1 0Reset Value WDT_CONTRE1hWatch-Dog-Timer Control register WDT_FLAG -EN_WDTCLR_WDTIDLE_WDTPS2PS1PS0xx00,0000 PS2 PS1 PS0 Pre-scale 预分频 WDT Period @20MHz 0 0 0 2 39.3 mS 0 0 1 4 78.6 mS 0 1 0 8 157.3 mS 0 1 1 16 314.6 mS 1 0 0 32 629.1 mS 1 0 1 64 1.25S 1 1 0 128 2.5S 1 1 1 256 5S PS2 PS1 PS0 Pre-scale 预分频 WDT Period @12MHz 0 0 0 2 65.5 mS 0 0 1 4 131.0 mS 0 1 0 8 262.1 mS 0 1 1 16 524.2 mS 1 0 0 32 1.0485S 1 0 1 64 2.0971S 1 1 0 128 4.1943S 1 1 1 256 8.3886S 看门狗应用及测试程序 The WDT period is determined by the following equation 看门狗溢出时间计算 看门狗溢出时间 =( N x Pre-scale x 32768) / Oscillator frequency 设时钟为 12MHz: 看门狗溢出时间 = ( 12 x Pre-scale x 32768) / 12000000 = Pre-scale x 393216 / 12000000
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 31 设时钟为 11.0592MHz: 看门狗溢出时间 = (12 x Pre-scale x 32768) / 11059200 = Pre-scale x 393216 / 11059200 PS2 PS1 PS0 Pre-scale 预分频 WDT Period @11.0592MHz 0 0 0 2 71.1 mS 0 0 1 4 142.2 mS 0 1 0 8 284.4 mS 0 1 1 16 568.8 mS 1 0 0 32 1.1377S 1 0 1 64 2.2755S 1 1 0 128 4.5511S 1 1 1 256 9.1022S 汇编语言程序示例 WDT_CONTRDATA0E1H ; 或者 WDT_CONTREQU 0E1H ;复位入口 ORG 0000H LJMPInitial ORG 0060H Initial: MOV WDT_CONTR,#00111100B; Load initial value 看门狗定时器控制寄存器初始化 ; EN_WDT = 1, CLR_WDT = 1, IDLE_WDT = 1, PS2 = 1, PS1 = 0, PS0 = 0 Main_Loop: LCALLDisplay_Loop LCALLKeyboard_Loop MOV WDT_CONTR,#00111100B ; 喂狗, 不要用 ORL WDT_CONTR, #00010000B LJMPMain_Loop C语言程序示例 #include<reg52.h> sfr WDT_CONTR= 0xe1; void main() { … WDT_CONTR= 0x3c; /* 0011,1100 EN_WDT = 1,CLR_WDT = 1,IDLE_WDT = 1,PS2 = 1,PS1 = 0,PS0 = 0 */ while(1){ display(); keyboard(); WDT_CONTR= 0x3c; /* 喂狗, 不要用 WDT_CONTR= WDT_CONTR |0x10;*/
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 32 ;本程序验证 STC12C5410AD 系列及 STC12C2052AD系列单片机的看门狗及其溢出时间计算公式 ;本演示程序在 STC-ISP Ver 3.0A.PCB的下载编程工具上测试通过,相关的工作状态在 P1口上显示 ;看门狗及其溢出时间 = (12 * Pre_scale *32768)/Oscillator frequency WDT_CONTR EQU 0E1H ;看门狗地址 WDT_TIME_LED EQU P1.5 ;用 P1.5 控制看门狗溢出时间指示灯, ;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示 WDT_FLAG_LED EQU P1.7 ;用 P1.7 控制看门狗溢出复位指示灯, 如点亮表示为看门狗溢出复位 Last_WDT_Time_LED_Status EQU 00H ;位变量, 存储看门狗溢出时间指示灯的上一次状态位 ;WDT 复位时间(所用的Oscillator frequency = 18.432MHz): ;Pre_scale_Word EQU 00111100B ;清0,启动看门狗,预分频数=32, 0.68S Pre_scale_Word EQU 00111101B ;清0,启动看门狗,预分频数=64, 1.36S ;Pre_scale_Word EQU 00111110B ;清0,启动看门狗,预分频数=128, 2.72S ;Pre_scale_Word EQU 00111111B ;清0,启动看门狗,预分频数=256, 5.44S ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV A, WDT_CONTR ;检测是否为看门狗复位 ANL A, #10000000B JNZ WDT_Reset ;WDT_CONTR.7 = 1, 看门狗复位, 跳转到看门狗复位程序 ;WDT_CONTR.7 = 0,上电复位, 冷启动, RAM 单元内容为随机值 SETB Last_WDT_Time_LED_Status ;上电复位, ;初始化看门狗溢出时间指示灯的状态位 = 1 CLR WDT_TIME_LED ;上电复位, 点亮看门狗溢出时间指示灯 MOV WDT_CONTR, #Pre_scale_Word ;启动看门狗 WAIT1: SJMP WAIT1 ;循环执行本语句(停机),等待看门狗溢出复位 ;WDT_CONTR.7 = 1,看门狗复位, 热启动, RAM 单元内容不变, 为复位前的值 WDT_Reset: ;看门狗复位, 热启动 CLR WDT_FLAG_LED ;是看门狗复位,点亮看门狗溢出复位指示灯 JB Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED;为1熄灭相应的灯,为0亮相应灯 ;根据看门狗溢出时间指示灯的上一次状态位设置 WDT_TIME_LED 灯, ;若上次亮本次就熄灭, 若上次熄灭本次就亮 CLR WDT_TIME_LED ;上次熄灭本次点亮看门狗溢出时间指示灯 CPL Last_WDT_Time_LED_Status ;将看门狗溢出时间指示灯的上一次状态位取反 WAIT2: SJMP WAIT2 ;循环执行本语句(停机),等待看门狗溢出复位 Power_Off_WDT_TIME_LED: SETB WDT_TIME_LED ;上次亮本次就熄灭看门狗溢出时间指示灯 CPL Last_WDT_Time_LED_Status ;将看门狗溢出时间指示灯的上一次状态位取反 WAIT3: SJMP WAIT3 ;循环执行本语句(停机),等待看门狗溢出复位 END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 33 如何用软件实现系统复位 ISP_CONTR:ISP/IAP控制寄存器,地址在 0E7H单元 B7 B6 B5 B4 B3 B2 B1 B0Reset Value ISPENSWBSSWRST CMD_FAIL 1 WT2 WT1 WT00000,1000 ISPEN: ISP/IAP 功能允许位。0:禁止ISP/IAP编程改变 Flash,1:允许编程改变 Flash SWBS: 软件选择从用户应用程序区启动 (0),还是从 ISP程序区启动(1)。要与 SWRST直接配合 才可以实现 SWRST: 0: 不操作; 1: 产生软件系统复位 ,硬件自动清零 。 CMD_FAIL: 如果送了ISP/IAP命令,并对ISP_TRIG送46h/B9h触发失败,则为1,需由 软件清零。 ;从用户应用程序区(AP区)软件复位并切换到系统 ISP监控程序区开始执行程序 MOVISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位) ;从系统ISP监控程序区软件复位并切换到系统 ISP监控程序区开始执行程序 MOVISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位) 本复位是整个系统复位 ,所有的特殊功能寄存器都会复位到初始值 ,I/O口也会初始化 。 ;从系统ISP监控程序区软件复位并切换到用户应用程序区 (AP区)开始执行程序 MOVISP_CONTR,#00100000B;SWBS = 0(选择AP区), SWRST = 1(软复位) ;从用户应用程序区(AP区)软件复位并切换到用户应用程序区(AP区)开始执行程序 MOVISP_CONTR,#00100000B;SWBS = 0(选择AP区), SWRST = 1(软复位) 用户应用程序在运行过程当中 ,有时会有特殊需求 ,需要实现单片机系统软复位 (热启动之一 ), 传统的 8051单片机由于硬件上未支持此功能 ,用户必须用软件模拟实现 ,实现起来较麻烦 。现STC新 推出的增强型 8051根据客户要求增加了 ISP_CONTR 特殊功能寄存器,实现了此功能。用户只需简单的控 制ISP_CONTR 特殊功能寄存器的其中两位 SWBS / SWRST 就可以系统复位了。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 34 STC12C5410AD系列 1T 8051 单片机 ISP/IAP 特殊功能寄存器 ISP/IAP SFRs STC12C5410AD 系列 1T 8051 单片机IAP 应用 ISP_DATA:ISP/IAP操作时的数据寄存器。 ISP/IAP从Flash读出的数据放在此处,向Flash写的数据也需放在此处 ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位。 ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位 。 ISP_CMD: ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。 B7 B6 B5 B4 B3 B2 B1 B0 命令 / 操作 模式选择 保留 命令 - - - - - - 0 0 Standby 待机模式 , 无 ISP操作 - - - - - - 0 1 从用户的应用程序区对 "Data Flash/EEPROM区 " 进行字节读 - - - - - - 1 0 从用户的应用程序区对 "Data Flash/EEPROM区 " 进行字节编程 - - - - - - 1 1 从用户的应用程序区对 "Data Flash/EEPROM区 " 进行扇区擦除 程序在用户应用程序区时 ,仅可以对数据 Flash区(EEPROM)进行字节读 /字节编程 /扇区擦除, STC12C5412AD/STC12LE5412AD除外。STC12C5410AD系列单片机出厂时就已完全加密。 ISP_TRIG:ISP/IAP操作时的命令触发寄存器 。 在ISPEN(ISP_CONTR.7) = 1时,对ISP_TRIG先写入46h,再写入B9h, ISP/IAP命令才会生效。 STC12C5410AD系列 1T 8051单片机内部EEPROM的应用 -- 利用IAP技术可实现EEPROM,内部Flash擦写次数为100,000次以上 MnemonicAddName 7 6 5 4 3 2 1 0Reset Value ISP_DATAE2hISP/IAP Flash Data Register 1111,1111 ISP_ADDRHE3hISP/IAP Flash Address High 0000,0000 ISP_ADDRLE4hISP/IAP Flash Address Low 0000,0000 ISP_CMDE5hISP/IAP Flash Command Register - - - - - -MS1MS0xxxx,xx00 ISP_TRIGE6hISP/IAP Flash Command Trigger xxxx,xxxx ISP_CONTRE7hISP/IAP Control RegisterISPENSWBSSWRST CMD_FAIL 1WT2WT1WT00000,1000 ISP_CONTR:ISP/IAP控制寄存器,地址在 0E7H单元 B7 B6 B5 B4 B3 B2 B1 B0 Reset Value ISPENSWBSSWRST CMD_FAIL 1 WT2 WT1 WT00000,1000 ISPEN:ISP/IAP 功能允许位。0:禁止ISP/IAP编程改变 Flash,1:允许编程改变 Flash SWBS: 软件选择从用户主程序区启动 (0),还是从 ISP程序区启动 (1)。 SWRST:0: 不操作;1: 产生软件系统复位,硬件自动清零。 CMD_FAIL:如果送了ISP/IAP命令,并对ISP_TRIG送46h/B9h触发失败,则为1,需由 软件清零。 ;在用户应用程序区(AP区)软件复位并从用户应用程序区(AP区)开始执行程序 MOVISP_CONTR,#00100000B;SWBS = 0(选择AP区), SWRST = 1(软复位) ;在用户应用程序区(AP区)软件复位并从系统 ISP监控程序区开始执行程序 MOVISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位) ;在系统ISP监控程序区软件复位并从用户应用程序区 (AP区)开始执行程序 MOVISP_CONTR,#00100000B;SWBS = 0(选择AP区), SWRST = 1(软复位) ;在系统ISP监控程序区软件复位并从系统 ISP监控程序区开始执行程序 MOVISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 35 设置等待时间 CPU 等待时间 (多少个 CPU 工作时钟 ) WT2 WT1WT0 Read/读 Program/编程 Sector Erase 扇区擦除 Recommended System Clock 跟等待参数对应的推荐系统时钟 1 1 1 2个时钟 55个时钟 21012个时钟 〈 1MHz 1 1 0 2个时钟 110个时钟 42024个时钟 〈 2MHz 1 0 1 2个时钟 165个时钟 63036个时钟 〈 3MHz 1 0 0 2个时钟 330个时钟 126072个时钟 〈 6MHz 0 1 1 2个时钟 660个时钟 252144个时钟 〈 12MHz 0 1 0 2个时钟 1100个时钟 420240个时钟 〈 20MHz 0 0 1 2个时钟 1320个时钟 504288个时钟 〈 24MHz 0 0 0 2个时钟 1760个时钟 672384个时钟 〈 30MHz STC12C5410AD,STC12C5410,STC12LE5410AD,STC12LE5410 STC12C5408AD,STC12C5408,STC12LE5408AD,STC12LE5408 STC12C5406AD,STC12C5406,STC12LE5406AD,STC12LE5406 STC12C5404AD,STC12C5404,STC12LE5404AD,STC12LE5404 STC12C5402AD,STC12C5402,STC12LE5402AD,STC12LE5402 STC12C5401AD,STC12C5401,STC12LE5401AD,STC12LE5401 系列单片机内部可用 Data Flash(EEPROM)的地址: 第一扇区 第二扇区 每个扇区 512字节 共 4个扇区 建议同一次修改的数据 放在同一个扇区 , 不必 用满 , 当然可全用 , 用 满则为 2K字节 EEPROM。 由于擦除是按扇区擦 除 , 所以每个扇区用的 越少越方便 , 256个字节 以内较合理 。 起始地址 结束地址 起始地址 结束地址 2800h 29FFh 2A00h 2BFFh 第三扇区 第四扇区 起始地址 结束地址 起始地址 结束地址 2C00h 2DFFh 2E00h 2FFFh STC12C5412,STC12C5412AD,STC12LE5412,STC12LE5412AD单片机可对自身内部应用程序区进行 IAP/ISP 操作,故所有部分均可当 Data Flash(EEPROM)使用,其地址如下: 第一扇区 第二扇区 第三扇区 第四扇区 每个扇区 512字节 建议同一次 修改的数据 放在同一个 扇区 , 不必 用满 , 当然 可全用 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 0000h 01FFh 0200h 03FFh 0400h 05FFh 0600h 07FFh 第五扇区 第六扇区 第七扇区 第八扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 0800h 09FFh 0A00h 0BFFh 0C00h 0DFFh 0E00h 0FFFh 第九扇区 第十扇区 第十一扇区 第十二扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 1000h 11FFh 1200h 13FFh 1400h 15FFh 1600h 17FFh 第十三扇区 第十四扇区 第十五扇区 第十六扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 1800h 19FFh 1A00h 1BFFh 1C00h 1DFFh 1E00h 1FFFh 第十七扇区 第十八扇区 第十九扇区 第二十扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h 27FFh 第二十一扇区 第二十二扇区 第二十三扇区 第二十四扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 2800h 29FFh 2A00h 2BFFh 2C00h 2DFFh 2E00h 2FFFh STC12C5410AD系列单片机内部可用 Data Flash(EEPROM)的地址(与程序空间是分开的): 如果对应用程序区进行 IAP写数据,则该语句会被单片机忽略 ,继续执行下一句 。 程序在用户应用程序区(AP区)时,仅可以对Data Flash(EEPROM)进行IAP/ISP操作。 但STC12C5412AD/STC12LE5412AD在应用程序区可以修改应用程序区(灵活)。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 36 STC12C5410AD 系列 IAP 应用汇编简介 STC12C5410AD 系列 内部EEPROM的应用 此两句可以合成一句,并且只送一次就够了 地址需要改变时才需重新送地址 ;用DATA还是EQU声明新增特殊功能寄存器地址要看你用的汇编器 /编译器 ISP_DATA DATA 0E2h;或 ISP_DATA EQU 0E2h ISP_ADDRHDATA 0E3h;或 ISP_ADDRHEQU 0E3h ISP_ADDRLDATA 0E4h;或 ISP_ADDRLEQU 0E4h ISP_CMD DATA 0E5h;或 ISP_CMD EQU 0E5h ISP_TRIG DATA 0E6h;或 ISP_TRIG EQU 0E6h ISP_CONTRDATA 0E7h;或 ISP_CONTREQU 0E7h ;定义ISP/IAP命令及等待时间 ISP_IAP_BYTE_READEQU1 ;字节读 ISP_IAP_BYTE_PROGRAMEQU2 ;字节编程,前提是该字节是空,0FFh ISP_IAP_SECTOR_ERASEEQU3 ;扇区擦除,要某字节为空 ,要擦一扇区 WAIT_TIMEEQU0 ;设置等待时间,30MHz以下0,24M以下1, ;20MHz以下2,12M以下3,6M以下4,3M以下5,2M以下6,1M以下7, ;字节读 MOVISP_ADDRH,#BYTE_ADDR_HIGH ;送地址高字节 MOVISP_ADDRL,#BYTE_ADDR_LOW;送地址低字节 MOVISP_CONTR,#WAIT_TIME;设置等待时间 ORLISP_CONTR,#10000000B;允许ISP/IAP操作 MOVISP_CMD, #ISP_IAP_BYTE_READ;送字节读命令,命令不需改变时,不需重新送命令 MOVISP_TRIG,#46h ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此 MOVISP_TRIG,#0B9h;送完B9h后,ISP/IAP命令立即被触发起动 ;CPU等待 IAP动作完成后,才会继续执行程序 。 NOP ;数据读出到 ISP_DATA寄存器后,CPU继续执行程序 MOVA, ISP_DATA ;将读出的数据送往 Acc ;以下语句可不用,只是出于安全考虑而已 MOVISP_CONTR,#00000000B ;禁止ISP/IAP操作 MOVISP_CMD,#00000000B ;去除ISP/IAP命令 ;MOVISP_TRIG,#00000000B ;防止ISP/IAP命令误触发 ;MOVISP_ADDRH,#0 ;送地址高字节单元为 00,指向非EEPROM区 ;MOVISP_ADDRL,#0 ;送地址低字节单元为 00,防止误操作
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 37 ;字节编程,该字节为 FFh/空时,可对其编程,否则不行,要先执行扇区擦除 MOVISP_DATA,#ONE_DATA ;送字节编程数据到 ISP_DATA,只有数据改变时才需重新送 MOVISP_ADDRH,#BYTE_ADDR_HIGH;送地址高字节 MOVISP_ADDRL,#BYTE_ADDR_LOW;送地址低字节 MOVISP_CONTR,#WAIT_TIME;设置等待时间 ORLISP_CONTR,#10000000B;允许ISP/IAP操作 MOVISP_CMD,#ISP_IAP_BYTE_PROGRAM ;送字节编程命令 MOVISP_TRIG,#46h ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此 MOVISP_TRIG,#0B9h ;送完B9h后,ISP/IAP命令立即被触发起动 ;CPU等待 IAP动作完成后,才会继续执行程序. NOP ;字节编程成功后,CPU继续执行程序 ;以下语句可不用,只是出于安全考虑而已 MOVISP_CONTR,#00000000B;禁止ISP/IAP操作 MOVISP_CMD,#00000000B;去除ISP/IAP命令 ;MOVISP_TRIG,#00000000B;防止ISP/IAP命令误触发 ;MOVISP_ADDRH,#0 ;送地址高字节单元为 00,指向非EEPROM区,防止误操作 ;MOVISP_ADDRL,#0 ;送地址低字节单元为 00,指向非EEPROM区,防止误操作 3个基本命令 ----字节读,字节编程,扇区擦除 字节编程:如果该字节是 “1111,1111B”,则可将其中的 “1”编程为“0”,如果该 字节中有位为 “0”,则须先将整个扇区擦除 ,因为只有 “扇区擦除 ”才可以将 “0” 变为 “1 ”。 大建议 : 1.同一次修改的数据放在同一扇区中 ,不是同一次修改的数据放在另外的扇区 ,就不须读出保护 。 2.如果一个扇区只用一个字节,那就是真正的EEPROM,STC单片机的Data Flash比外部EEPROM要快很多, 读一个字节 /编程一个字节大概是 0.2uS/60uS。 3.如果在一个扇区中存放了大量的数据 ,某次只需要修改其中的一个字节或一部分字节时 ,则另外的不 需要修改的数据须先读出放在 STC 单片机的RAM中,然后擦除整个扇区,再将需要保留的数据和需修改的 数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便 (不需读出一大堆需保留数据)。 地址需要改变时才需重新送地址 此两句可合成一句,并且只送一次就够了
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 38 ;扇区擦除,没有字节擦除 ,只有扇区擦除 ,512字节 /扇区,每个扇区用得越少越方便 ;如果要对某个扇区进行擦除 ,而其中有些字节的内容需要保留 ,则需将其先读到单片机 ;内部的 RAM中保存,再将该扇区擦除 ,然后将须保留的数据写回该扇区 ,所以每个扇区 ;中用的字节数越少越好 ,操作起来越灵活越快 . MOVISP_ADDRH,#SECTOR_FIRST_BYTE_ADDR_HIGH ;送扇区起始地址高字节 MOVISP_ADDRL,#SECTOR_FIRST_BYTE_ADDR_LOW ;送扇区起始地址低字节 MOVISP_CONTR,#WAIT_TIME;设置等待时间 ORLISP_CONTR,#10000000B;允许ISP/IAP MOVISP_CMD,#ISP_IAP_SECTOR_ERASE;送扇区擦除命令,命令不需改变时,不需重新送命令 MOVISP_TRIG,#46h ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此 MOVISP_TRIG,#0B9h ;送完B9h后,ISP/IAP命令立即被触发起动 ;CPU等待 IAP动作完成后,才会继续执行程序. NOP ;扇区擦除成功后,CPU继续执行程序 ;以下语句可不用,只是出于安全考虑而已 MOVISP_CONTR,#00000000B ;禁止ISP/IAP操作 MOVISP_CMD,#00000000B ;去除ISP/IAP命令 ;MOVISP_TRIG,#00000000B ;防止ISP/IAP命令误触发 ;MOVISP_ADDRH,#0 ;送地址高字节单元为 00,指向非EEPROM区 ;MOVISP_ADDRL,#0 ;送地址低字节单元为 00,防止误操作 地址需要改变时 才需重新送地址 此两句可以合成一句,并且只送一次就够了
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 39 ;STC12C5410AD系列和 STC12C2052AD系列单片机 EEPROM/IAP功能测试程序演示 ;/* --- 演示 STC12C5410AD 系列 MCU EEPROM/IAP功能- */ ;/* --- 演示 STC12C2052AD 系列 MCU EEPROM/IAP功能- */ ;本演示程序在 STC-ISP Ver 3.0A.PCB的下载编程工具上测试通过,EEPROM的数据在P1口上显示 ;声明与IAP/ISP/EEPROM有关的特殊功能寄存器的地址 ISP_DATA EQU 0E2H ISP_ADDRH EQU 0E3H ISP_ADDRL EQU 0E4H ISP_CMD EQU 0E5H ISP_TRIG EQU 0E6H ISP_CONTR EQU 0E7H ;定义ISP/IAP命令 ISP_IAP_BYTE_READ EQU 1H;字节读 ISP_IAP_BYTE_PROGRAM EQU 2H;字节编程,可以将 1写成 0,要将 1变成 0,必须执行字节编程 ISP_IAP_SECTOR_ERASE EQU 3H;扇区擦除,可以将 0擦成 1,要将 0变成 1,必须擦除整个扇区 ;定义Flash 操作等待时间及允许 IAP/ISP/EEPROM操作的常数 ;ENABLE_ISP EQU 80H ;系统工作时钟<30MHz时,对ISP_CONTR寄存器设置此值 ;ENABLE_ISP EQU 81H ;系统工作时钟<24MHz时,对ISP_CONTR寄存器设置此值 ENABLE_ISP EQU 82H ;系统工作时钟<20MHz时,对ISP_CONTR寄存器设置此值 ;ENABLE_ISP EQU 83H ;系统工作时钟<12MHz时,对ISP_CONTR寄存器设置此值 ;ENABLE_ISP EQU 84H ;系统工作时钟<6MHz时,对ISP_CONTR寄存器设置此值 ;ENABLE_ISP EQU 85H ;系统工作时钟<3MHz时,对ISP_CONTR寄存器设置此值 ;ENABLE_ISP EQU 86H ;系统工作时钟<2MHz时,对ISP_CONTR寄存器设置此值 ;ENABLE_ISP EQU 87H ;系统工作时钟<1MHz时,对ISP_CONTR寄存器设置此值 DEBUG_DATA EQU 5AH ;是本测试程序选定的 EEPROM单元的数值如正确应等于的数值 ;选择 MCU 型号 ;DATA_FLASH_START_ADDRESS EQU 1000H ;STC12C2052AD系列单片机的EEPROM测试起始地址 DATA_FLASH_START_ADDRESS EQU 2800H ;STC12C5410AD系列单片机的EEPROM测试起始地址 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV P1,#0F0H ;演示程序开始工作,让P1.0/P1.1/P1.2/P1.3控制的灯亮 LCALL Delay ;延时 MOV P1,#0FH ;演示程序开始工作,让P1.7/P1.6/P1.5/P1.4控制的灯亮
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 40 LCALL Delay ;延时 MOV SP, #7FH ;堆栈指针指向 7FH 单元 ;将EEPROM测试起始地址单元的内容读出 MAIN1: MOV DPTR, #DATA_FLASH_START_ADDRESS ;将EEPROM测试起始地址送DPTR数据指针 LCALL Byte_Read MOV 40H, A ;将EEPROM的值送40H 单元保存 CJNE A, #DEBUG_DATA, DATA_NOT_EQU_DEBUG_DATA ;如果数据比较不正确,就跳转 DATA_IS_DEBUG_DATA: ;数据是对的,亮P1.7控制的灯,然后在P1口上将EEPROM的数据显示出来 MOV P1, #01111111B ;如 (DATA_FLASH_START_ADDRESS)的值等于#DEBUG_DATA, 亮P1.7 LCALL Delay ;延时 MOV A, 40H ;将保存在40H单元中EEPROM的值从40H单元送累加器A CPL A ;取反的目的是相应的灯亮代表 1,不亮代表0 MOV P1,A ;数据是对的,送 P1显示 WAIT1: SJMP WAIT1 ;数据是对的,送 P1显示后,CPU在此无限循环执行此句 DATA_NOT_EQU_DEBUG_DATA: ;EEPROM里的数据是错的,亮P1.3控制的灯,然后在P1口上将错误的数据显示出来, ;再将该EEPROM所在的扇区整个擦除,将正确的数据写入后,亮P1.5控制的灯 MOV P1, #11110111B ;如 (DATA_FLASH_START_ADDRESS)的值不等于#DEBUG_DATA, 亮P1.3 LCALLDelay ;延时 MOV A, 40H ;将保存在40H单元中EEPROM的值从40H单元送累加器A CPL A ;取反的目的是相应的灯亮代表 1,不亮代表0 MOV P1, A ;数据不对,送 P1显示 LCALL Delay ;延时 MOV DPTR,#DATA_FLASH_START_ADDRESS ;将EEPROM测试起始地址送DPTR数据指针 ACALL Sector_Erase ;擦除整个扇区 MOV DPTR, #DATA_FLASH_START_ADDRESS ;将EEPROM测试起始地址送DPTR数据指针 MOV A, #DEBUG_DATA ;写入 EEPROM 的数据为 #DEBUG_DATA ACALL Byte_Program ;字节编程 MOV P1, #11011111B ;将先前亮的P1.3灯关闭 ,再亮 P1.5灯,代表数据已被修改 WAIT2: SJMP WAIT2 ;字节编程后,CPU在此无限循环执行此句
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 41 ;读一字节,调用前需打开 IAP 功能,入口:DPTR = 字节地址,返回:A = 读出字节 Byte_Read: MOV ISP_CONTR, #ENABLE_ISP ;打开 IAP 功能, 设置 Flash 操作等待时间 MOV ISP_CMD, #ISP_IAP_BYTE_READ ;设置为IAP/ISP/EEPROM字节读模式命令 MOV ISP_ADDRH, DPH ;设置目标单元地址的高 8位地址 MOV ISP_ADDRL, DPL ;设置目标单元地址的低 8位地址 ;CLR EA MOV ISP_TRIG, #46H ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此 MOV ISP_TRIG, #0B9H ;送完B9h后,ISP/IAP命令立即被触发起动 NOP MOV A, ISP_DATA ;读出的数据在ISP_DATA单元中,送入累加器A ;SETB EA ACALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态, ;一次连续的IAP操作完成之后建议关闭 IAP功能,不需要每次都关 RET ;字节编程,调用前需打开 IAP 功能,入口:DPTR = 字节地址, A=须编程字节的数据 Byte_Program: MOV ISP_CONTR, #ENABLE_ISP ;打开 IAP 功能, 设置 Flash 操作等待时间 MOV ISP_CMD, #ISP_IAP_BYTE_PROGRAM ;设置为IAP/ISP/EEPROM字节编程模式命令 MOV ISP_ADDRH, DPH ;设置目标单元地址的高 8位地址 MOV ISP_ADDRL, DPL ;设置目标单元地址的低 8位地址 MOV ISP_DATA, A ;要编程的数据先送进 ISP_DATA寄存器 ;CLR EA MOV ISP_TRIG, #46H ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此 MOV ISP_TRIG, #0B9H ;送完B9h后,ISP/IAP命令立即被触发起动 NOP ;SETB EA ACALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态, ;一次连续的IAP操作完成之后建议关闭 IAP功能,不需要每次都关 RET ;擦除扇区, 入口:DPTR = 扇区地址 Sector_Erase: MOV ISP_CONTR, #ENABLE_ISP ;打开 IAP 功能, 设置 Flash 操作等待时间 MOV ISP_CMD, #03H ;设置为IAP/ISP/EEPROM扇区擦除模式命令 MOV ISP_ADDRH, DPH ;设置目标单元地址的高 8位地址 MOV ISP_ADDRL, DPL ;设置目标单元地址的低 8位地址 ;CLR EA MOV ISP_TRIG, #46H ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此 MOV ISP_TRIG, #0B9H ;送完B9h后,ISP/IAP命令立即被触发起动 NOP ;SETB EA ACALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态, ;一次连续的IAP操作完成之后建议关闭 IAP功能,不需要每次都关 RET
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 42 IAP_Disable: ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态, ;一次连续的 IAP操作完成之后建议关闭 IAP功能,不需要每次都关 MOV ISP_CONTR, #0 ;关闭 IAP 功能 MOV ISP_CMD, #0 ;清命令寄存器,使命令寄存器无命令,此句可不用 MOV ISP_TRIG, #0 ;清命令触发寄存器,使命令触发寄存器无触发,此句可不用 RET Delay: CLR A MOV R0, A MOV R1, A MOV R2, #20H Delay_Loop: DJNZ R0, Delay_Loop DJNZ R1, Delay_Loop DJNZ R2, Delay_Loop RET END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 43 定时器 0和 1 定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择,TMOD寄存器的各位信息如下表所列。 可以看出,2个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和 2都相同,模式3不同,各模式下的功能如下所述。 寄存器 TMOD各位的功能描述 TMOD 地址:89H 不可位寻址 复位值:00H GATEC/T M1 M0 GATEC/T M1 M0 定时器1 定时器0 位 符号 功能 TMOD.7/ GATE TMOD.7控制定时器1,置1时只有在INT1脚为高及TR1控制位置1时才 可打开定时器/计数器1。 TMOD.3/ GATE TMOD.3控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才 可打开定时器/计数器0。 TMOD.6/ C/T TMOD.6控制定时器 1用作定时器或计数器 ,清零则用作定时器 (从内 部系统时钟输入),置1用作计数器(从T1/P3.5脚输入) TMOD.2/ C/T TMOD.2控制定时器 0用作定时器或计数器 ,清零则用作定时器 (从内 部系统时钟输入),置1用作计数器(从T0/P3.4脚输入) TMOD.5/TMOD.4 M1、M0 定时器/计数器1模式选择 0 013位定时器 /计数器,兼容 8048定时器模式,TL1只用低 5位参与分 频,TH1整个8位全用。 0 116位定时器 /计数器,TL1、TH1全用 1 08位自动重装载定时器 ,当溢出时将 TH1存放的值自动重装入 TL1。 1 1定时器 /计数器 1此时无效 (停止计数 )。 TMOD.1/TMOD.0 M1、M0 定时器/计数器0模式选择 0 013位定时器 /计数器,兼容 8048定时器模式,TL0只用低 5位参与分 频,TH0整个8位全用。 0 116位定时器 /计数器,TL0、TH0全用 1 08位自动重装载定时器 ,当溢出时将 TH0存放的值自动重装入 TL0。 1 1定时器 0此时作为双 8位定时器 /计数器。TL0作为一个 8位定时器 /计 数器,通过标准定时器 0的控制位控制。TH0仅作为一个 8位定时器, 由定时器1的控制位控制。 1.模式 0 将定时器设置成模式 0时类似8048定时器,即8位计数器带32分频的预分频器。下图所示为模式 0 工作方式。此模式下,定时器配置为13位的计数器,由TLn的低5位和THn的8位所构成。TLn低5位溢出 向THn进位,THn计数溢出置位TCON中的溢出标志位TFn(n=0,1)。GATE=0时,如TRn=1,则定时器计数。 GATE=1时,允许由外部输入INT1控制定时器1,INT0控制定时器0,这样可实现脉宽测量。TRn为TCON寄 存器内的控制位,TCON寄存器各位的具体功能描述见 TCON寄存器各位的具体功能描述表。 7 6 5 4 3 2 1 0 STC12C5410AD系列单片机定时器的使用及测试程序
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 44 表 寄存器 TCON各位的功能描述 TCON 地址:88H 可位寻址 复位值:00H 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 位 符 号 功 能 TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 定时器/计数器1溢出标志位。当T1被允许计数后,T1从初值开始加1计数,最 高位产生溢出时 ,置“1”TF1,并向 CPU请求中断,当CPU响应时,由硬件 定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时 就允许T1开始计数,TR1=0时禁止T1计数。当GATE(TMOD.7)=1,TR1=1且INT1输入 高电平时,才允许T1计数。 外部中断1中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件 自动将IE1位清0。 外部中断 1触发方式控制位。IT1=0时,外部中断 1为低电平触发方式,当INT1(P3. 3)输入低电平时,置位IE1。采用低电平触发方式时,外部中断源(输入到INT1)必须保 持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源 必须被清除(P3.3要变高),否则将产生另一次中断。当IT1=1时,则外部中断1(INT1) 该13位寄存器包含 THn全部8个位及 TLn的低5位。TLn的高3位不定,可将其忽略。置位运行标 志(TRn)不能清零此寄存器。模式0的操作对于定时器0及定时器1都是相同的。2个不同的GATE位(TMOD. 7和TMOD.3)分别分配给定时器 1及定时器0。 定时器/计数器0溢出标志位。当T0被允许计数后,T0从初值开始加 1计数,最高 TF0也可以由程序查询或清“0”。 定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时 就允许T0开始计数,TR1=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=1且INT0输入 高电平时,才允许T0计数。 外部中断0中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件 自动将IE0位清0。 外部中断 1触发方式控制位。IT0=0时,外部中断 0为低电平触发方式,当INT0(P3. 2)输入低电平时,置位IE0。采用低电平触发方式时,外部中断源(输入到INT0)必须保 持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源 必须被清除(P3.2要变高),否则将产生另一次中断。当IT0=1时,则外部中断0(INT0) OSC ÷d* C/T=1 TFn 控制 C/T=0 Tn 脚 TLn (低 5位) THn (8 位) 中断 TRn 定时器 n GATE 位 INTn 脚 * 在T0x12 = 0模式下,d=12(12时钟模式); 在T0x12 = 1模式下,d=1(1T)。 图 定时器 /计数器 0和定时器 /计数器 1的模式 0 : 13位定时 /计数器
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 45 3.模式 2 此模式下定时器 /计数器 0和1作为可自动重装载的 8位计数器(TLn),如下图所示。TLn的溢 出不仅置位TFn,而且将THn内容重新装入 TLn,THn内容由软件预置,重装时THn内容不变。模式2的操 作对于定时器 0及定时器 1是相同的。 2.模式 1 模式 1除了使用了 THn及TLn全部 16位外,其他与模式 0完全相同。 OSC ÷d* C/T=1 TFn 控制 C/T=0 Tn 脚 中断 TRn INTn 脚 TLn (8 位) THn (8 位) 重装 定时器 n GATE 位 * 在T0x12 = 0模式下,d=12(12时钟模式); 在T0x12 = 1模式下,d=1(1T)。 图 定时器 /计数器 0和1的模式 2 : 8位自动重装载 OSC ÷d* C/T=1 TFn 控制 C/T=0 Tn 脚 TLn (8位) THn (8 位) 中断 TRn 定时器 n GATE 位 INTn 脚 * 在T0x12 = 0模式下,d=12(12时钟模式); 在T0x12 = 1模式下,d=1(1T)。 图 定时器 /计数器 0和定时器 /计数器 1的模式 1 : 16位定时 /计数器
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 46 对定时器0,此模式下定时器 0的TL0及TH0作为2个独立的8位计数器。下图为模式3时的定时器 0逻辑图。TL0占用定时器0的控制位:C/T、GATE、TR0、INT0及TF0。TH0限定为定时器功能(计数器周 期),占用定时器 1的 TR1及 TF1。此时,TH0控制定时器 1中断。 模式 3是为了增加一个附加的 8位定时器 /计数器而提供的,使单片机具有三个定时器 /计数器。 模式3只适用于定时器 /计数器 0,定时器 T1处于模式 3时相当于 TR1=0,停止计数(此时T1可用来作 串行口波特率发生器),而T0可作为两个定时器用。 4.模式 3 对定时器 1,在模式 3时,定时器 1停止计数,效果与将 TR1设置为 0相同。 OSC ÷d* C/T=1 TF0 C/T=0 T0 脚 TR0 INT0 脚 TL0 (8 位) OSC ÷d* TF1TH0 (8 位) TR1 定时器 0 GATE 位 控制 控制 中断 中断 * 在T0x12 = 0模式下,d=12(12时钟模式); 在T0x12 = 1模式下,d=1(1T)。 图 定时 /计数器 0的模式 3 : 两个 8位计数器
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 47 定时器应用举例 【例1】 定时 /计数器编程,定时 /计数器的应用编程主要需考虑 :根据应用要求 ,通过程序初 始化,正确设置控制字,正确计算和计算计数初值,编写中断服务程序,适时设置控制位等。通常情况下, 设置顺序大致如下: 1)工作方式控制字(TMOD、T2CON)的设置; 2)计数初值的计算并装入 THx、TLx、RCAP2H、RCAP2L; 3)中断允许位 ETx、EA的设置,使主机开放中断; 4) 启/停位TRx的设置等。 现以定时 /计数器 0或1为例作一简要介绍。 8051系列单片机的定时器/计数器0或1是以不断加1进行计数的,即属加1计数器,因此,就不能 直接将实际的计数值作为计数初值送入计数寄存器 THx、TLx中去,而必须将实际计数值以 28、213、216为 模求补,以其补码作为计数初值设置 THx和TLx。 设:实际计数值为 X,计数器长度为 n(n=8、13、16),则应装入计数器 THx、TLx中的计数初值为 2n-x,式中 2n为取模值。例如,工作方式 0的计数长度为 13位,则n=13,以213为模,工作方式 1 的计数长度为 16,则n=16,以216为模等等。所以,计数初值为(x)= 2n-x。 对于定时模式,是对机器周期计数,而机器周期与选定的主频密切相关。因此,需根据应用系统所选 定的主频计算出机器周期值。现以主频 6MHz为例,则机器周期为: 一个机器周期 = 主振频率 6×106 μs =2μs 实际定时时间 Tc = x·Tp 式中 Tp为机器周期,Tc为所需定时时间 ,x为所需计数次数 。Tp和Tp一般为已知值 ,在求出 Tp后即可求得所需计数值 x,再将x求补码,即求得定时计数初值。即 (x)补= 2n - x 例如,设定时时间 Tc = 5ms,机器周期 TP = 2μs,可求得定时计数次数 5ms 2μsx = = 2500次 设选用工作方式 1,则n=16,则应设置的定时时间计数初值为:(x)补= 216 - x=65536-2500=63036, 还需将它分解成两个 8位十六进制数,分别求得低8位为3CH装入TLx,高8位为F6H装入THx中。 工作方式0、1、2的最大计数次数分别为 8192、65536和256。 对外部事件计数模式,只需根据实际计数次数求补后变换成两个十六进制码即可 。 【例2】 定时/计数器应用编程,设某应用系统,选择定时/计数器1定时模式,定时时间Tc = 10ms, 主频频率为12MHz,每10ms向主机请求处理。选定工作方式1。计算得计数初值:低8位初值为F0H,高8 位初值为D8H。 (1)初始化程序
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 48 所谓初始化,一般在主程序中根据应用要求对定时 /计数器进行功能选择及参数设定等预置程序 , 本例初始化程序如下: START: MOVSP,#60H ;设置堆栈区域 MOVTMOD,#10H ;选择 T1、定时模式 ,工作方式 1 MOVTH1,#0D8H ;设置高字节计数初值 MOVTL1,#0F0H ;设置低字节计数初值 SETBEA ; SETBET1 ; }开中断 其他初始化程序 ; SETBTR1 ;启动 T1开始计时 … 继续主程序 (2)中断服务程序 INTT1: PUSHA ; PUSH DPL ; PUSH DPH ; MOVTL1,#0F0H ; MOVTH1,#0D8H ; }重新置初值 … ;中断处理主体程序 POPDPH ; POPDPL ; POPA ; RETI ;返回 这里展示了中断服务子程序的基本格式 。8052系列单片机的中断属于矢量中断,每一个矢量中断源 只留有 8个字节单元,一般是不够用的,常需用转移指令转到真正的中断服务子程序区去执行 。 【例3】 对外部正脉冲测宽。选择定时/计数器2进行脉宽测试较方便,但也可选用定时/计数器0或 定时/计数器1进行测宽操作。本例选用定时/计数器0(T0)以定时模式,工作方式1对INT0引脚上的正 脉冲进行脉宽测试。 设置 GATE为1,机器周期 TP为1μs。本例程序段编制如下 : INTT0: MOVTMOD,#09H ;设T0为定时方式 1,GATE为1 INT0 引脚 T0计数 启动 停止 ;主程序段 }现场保护 }现场恢复
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 49 MOVTL0,#00H ; MOVTH0,#00H ; CLREX0 ;关INT0中断 LOP1: JB P3.2,LOP1 ;等待 INT0引低电平 LOP2: JNBP3.2,LOP2 ;等待 INT0引脚高电平 SETBTR0 ;启动 T0开始计数 LOP3: JB P3.2,LOP3 ;等待 INT0低电平 CLRTR0 ;停止 T0计数 MOVA,TL0 ;低字节计数值送 A MOVB,TH0 ;高字节计数值送 B ;计算脉宽和处理 【例4】 利用定时 /计数器 0或定时 /计数器 1的Tx端口改造成外部中断源输入端口的应用设计 。 在某些应用系统中常会出现原有的两个外部中断源 INT0和INT1不够用,而定时 /计数器有多余, 则可将 Tx用于增加的外部中断源 。现选择定时 /计数器 1为对外部事件计数模式工作方式 2(自动再装 入),设置计数初值为 FFH,则 T1端口输入一个负跳变脉冲 ,计数器即回 0溢出,置位对应的中断请 求标志位 TF1为1,向主机请求中断处理 ,从而达到了增加一个外部中断源的目的 。应用定时 /计数器 1(T1)的中断矢量转入中断服务程序处理 。其程序示例如下 : (1)主程序段 : ORG0000H AJMPMAIN ;转主程序 ORG001BH LJMPINTER ;转T1中断服务程序 ORG0100 ;主程序入口 MAIN:… MOVSP,#60H ;设置堆栈区 MOVTMOD,#60H ;设置定时 /计数器 1,计数方式 2 MOVTL1,#0FFH ;设置计数常数 MOVTH1,#0FFH SETBEA ;开中断 SETBET1 ;开定时/计数器1中断 SETBTR1 ;启动定时/计数器1计数 (2)中断服务程序(具体处理程序略) ORG1000H INTER: PUSHA ; PUSHDPL ; PUSHDPH ; … … }现场入栈保护 }TH0,TL0清0
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 50 【例5】 某应用系统需通过 P1.0和P1.1分别输出周期为 200μs和400μs的方波。为此,系统选用 定时器/计数器0(T0),定时方式3,主频为6MHz,TP=2μs,经计算得定时常数为 9CH和38H。 本例程序段编制如下: (1)初始化程序段 PLT0:MOVTMOD,#03H ;设置 T0定时方式 3 MOVTL0,#9CH ;设置TL0初值 MOVTH0,#38H ;设置TH0初值 SETBEA ; SETBET0 ; SETBET1 ; SETBTR0 ;启动 SETBTR1 ;启动 }开中断 (2)中断服务程序段 INT0P: MOVTL0,#9CH ;重新设置初值 CPLP1.0 ;对P1.0输出信号取反 RETI ;返回 INT1P MOVTH0,#38H ;重新设置初值 CPLP1.1 ;对P1.1输出信号取反 RETI ;返回 POPDPH ; POPDPL ; POPA ; RETI ;返回 …… ;}中断处理主体程序 }现场出栈复原 这是中断服务程序的基本格式 。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 51 在实际应用中应注意的问题如下 。 (1)定时/计数器的实时性 定时/计数器启动计数后,当计满回0溢出向主机请求中断处理,由内部硬件自动进行。但从回0溢 出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不同, 一般需延时 3个机器周期以上,这就给实时处理带来误差。大多数应用场合可忽略不计 ,但对某些要求实 时性苛刻的场合,应采用补偿措施。 这种由中断响应引起的时间延时,对定时/计数器工作于方式0或1而言有两种含义:一是由于中断 响应延时而引起的实时处理的误差 ;二是如需多次且连续不间断地定时 /计数,由于中断响应延时,则在 中断服务程序中再置计数初值时已延误了若干个计数值而引起误差 ,特别是用于定时就更明显 。 例如选用定时方式1设置系统时钟,由于上述原因就会产生实时误差。这种场合应采用动态补偿办法 以减少系统始终误差。所谓动态补偿,即在中断服务程序中对THx、TLx重新置计数初值时,应将THx、TLx 从回0溢出又重新从0开始继续计数的值读出,并补偿到原计数初值中去进行重新设置。可考虑如下补偿方 CLREA ;禁止中断 MOVA,TLx ;读TLx中已计数值 ADDA,#LOW ;LOW为原低字节计数初值 MOVTLx,A ;设置低字节计数初值 MOVA,#HIGH ;原高字节计数初值送 A ADDCA,THx ;高字节计数初值补偿 MOVTHx,A ;置高字节计数初值 SETBEA ;开中断 (2)动态读取运行中的计数值 在动态读取运行中的定时/计数器的计数值时,如果不加注意,就可能出错。这是因为不可能在同一 时刻同时读取THx和TLx中的计数值。比如,先读TLx后读THx,因为定时/计数器处于运行状态,在读TLx 时尚未产生向THx进位,而在读THx前已产生进位,这时读得的THx就不对了;同样,先读THx后读TLx也 可能出错。 一种可避免读错的方法是:先读THx,后读TLx,将两次读得的THx进行比较;若两次读得的值相等, 则可确定读的值是正确的 ,否则重复上述过程 ,重复读得的值一般不会再错 。此法的软件编程如下 : RDTM: MOV A,THx ;读取 THx存A中 MOV R0,TLx ;读取TLx存R0中 CJNEA,THx,RDTM ;比较两次 THx值,若相等,则读得的值正 ;确,程序往下执行,否则重读 MOV R1,A ;将THx存于R1中 … ……
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 52 ; 本程序演示 STC12C2052AD、STC12C5410AD 系列单片机用定时器 1作 RS-232 通信 ;波特率发生器的使用方法, 有关波特率自动重装数的计算请查看程序后面的内容 ; 本程序同时演示 STC89C51RC/STC89C52RC/STC89C53RC/STC89C54RD+/STC89C58RD+/ ;STC89C516RD+系列单片机用定时器 1作 RS-232 通信波特率发生器的使用方法。 ; STC12C2052AD、STC12C5410AD 系列是 "一个时钟 /机器周期 " 的 8051单片机。它 ;的定时器 0、定时器 1 有两种计数速率 ,一种是 12T模式:每12个时钟加 1,与普通的 ;8051单片机相同;另一种是 1T模式:每个时钟加 1,是普通 8051单片机的 12 倍。 ; STC89C51RC/RD+ 系列是 "12个时钟/机器周期" 的 8051单片机, 与普通的 8051单片 ;机相同 。 ; STC12C2052AD、STC12C5410AD 系列的单片机, 定时器0、定时器1 的计数速率由 ;特殊功能寄存器 AUXR 的 bit7, bit6 决定,bit7 的符号是 T0x12, 如果 T0x12=1, ;定时器0 就工作在 1T模式。bit6 的符号是 T1x12, 如果 T1x12=1,定时器1 就工作在 ;1T模式。有关详情请参考 STC12C5410AD 系列单片机器件手册(中文应用指南)。 ;使用方法: ; 1. 修改程序, 改变波特率参数或改变定时器 1的计数速率(1T模式/12T模式) ; 2. 汇编程序, 将代码下载到单片机中 ; 3. 调整串口调试助手的波特率与单片机的波特率相同 , 并打开调试助手的串口。STC ; 下载程序 STC-ISP.exe 版本 3.2 以上有串口调试助手功能。 ; 4. 打开单片机电源, 可以在串口调试助手的接收区看到单片机发出的数据 ; 5. 用串口调试助手发送单个字节到单片机, 单片机收到后会立即回发到串口调试助手 ; 6. 反复步骤 1-5, 检验波特率参数是否正确, 特别要观察定时器 1 工作在 1T模式 ; 的波特率。例如,先设置定时器 1 工作在 12T模式, 设置波特率为 9600,执行 ; 步骤 2-5, 检验波特率参数是否正确。然后仅仅将定时器 1 的计数速率改成 ; 1T模式,执行步骤 2-5,就会发现本程序的波特率变成了 115200,波特率是 ; 12T模式的 12 倍。 ;定义 STC12C5410AD 系列 MCU 特殊功能寄存器 AUXR EQU 8EH ;定义波特率自动重装数 ;以下是 Fosc = 22.1184MHz, 1T模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH ;Baud=1,382,400 bps ;RELOAD_COUNT EQU 0FEH ;Baud=691,200 bps ;RELOAD_COUNT EQU 0FDH ;Baud=460,800 bps ;RELOAD_COUNT EQU 0FCH ;Baud=345,600 bps ;RELOAD_COUNT EQU 0FBH ;Baud=276,480 bps ;RELOAD_COUNT EQU 0FAH ;Baud=230,400 bps ;RELOAD_COUNT EQU 0F4H ;Baud=115,200 bps 定时器1做波特率发生器
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 53 ;RELOAD_COUNT EQU 0E8H ;Baud=57,600 bps ;RELOAD_COUNT EQU 0DCH ;Baud=38,400 bps ;RELOAD_COUNT EQU 0B8H ;Baud=19,200 bps ;RELOAD_COUNT EQU 70H ;Baud=9,600 bps ;以上是 Fosc = 22.1184MHz, 1T模式, SMOD=1 时,计算出的自动重装数和波特率 ;以下是 Fosc = 1.8432MHz, 1T模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH ;Baud=115,200 bps ;RELOAD_COUNT EQU 0FEH ;Baud=57,600 bps ;RELOAD_COUNT EQU 0FDH ;Baud=38,400 bps ;RELOAD_COUNT EQU 0FCH ;Baud=28,800 bps ;RELOAD_COUNT EQU 0FAH ;Baud=19,200 bps ;RELOAD_COUNT EQU 0F4H ;Baud=9,600 bps ;RELOAD_COUNT EQU 0E8H ;Baud=4,800 bps ;RELOAD_COUNT EQU 0D0H ;Baud=2,400 bps ;RELOAD_COUNT EQU 0A0H ;Baud=1,200 bps ;以上是 Fosc = 1.8432MHz, 1T模式, SMOD=1 时,计算出的自动重装数和波特率 ;以下是 Fosc = 18.432MHz, 1T模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH ;Baud=1,152,000 bps ;RELOAD_COUNT EQU 0FEH ;Baud=576,000 bps ;RELOAD_COUNT EQU 0FDH ;Baud=288,000 bps ;RELOAD_COUNT EQU 0FCH ;Baud=144,000 bps ;RELOAD_COUNT EQU 0F6H ;Baud=115,200 bps ;RELOAD_COUNT EQU 0ECH ;Baud=57,600 bps ;RELOAD_COUNT EQU 0E2H ;Baud=38,400 bps ;RELOAD_COUNT EQU 0D8H ;Baud=28,800 bps ;RELOAD_COUNT EQU 0C4H ;Baud=19,200 bps ;RELOAD_COUNT EQU 088H ;Baud=9,600 bps ;以上是 Fosc = 18.432MHz, 1T模式, SMOD=1 时,计算出的自动重装数和波特率
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 54 ;以下是 Fosc = 18.432MHz, 1T模式, SMOD=0 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH ;Baud=576,000 bps ;RELOAD_COUNT EQU 0FEH ;Baud=288,000 bps ;RELOAD_COUNT EQU 0FDH ;Baud=144,000 bps ;RELOAD_COUNT EQU 0FCH ;Baud=115,200 bps ;RELOAD_COUNT EQU 0F6H ;Baud=57,600 bps ;RELOAD_COUNT EQU 0ECH ;Baud=38,400 bps ;RELOAD_COUNT EQU 0E2H ;Baud=28,800 bps ;RELOAD_COUNT EQU 0D8H ;Baud=19,200 bps ;RELOAD_COUNT EQU 0C4H ;Baud=9,600 bps ;RELOAD_COUNT EQU 088H ;Baud=4,800 bps ;以上是 Fosc = 18.432MHz, 1T模式, SMOD=0 时,计算出的自动重装数和波特率 ;以下是 Fosc = 18.432MHz, 12T模式, SMOD=0 时,计算出的自动重装数和波特率 RELOAD_COUNT EQU 0FBH ;Baud=9,600 bps ;RELOAD_COUNT EQU 0F6H ;Baud=4,800 bps ;RELOAD_COUNT EQU 0ECH ;Baud=2,400 bps ;RELOAD_COUNT EQU 0D8H ;Baud=1,200 bps ;以上是 Fosc = 18.432MHz, 12T模式, SMOD=0 时,计算出的自动重装数和波特率 ;以下是 Fosc = 18.432MHz, 12T模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FBH ;Baud=19,200 bps ;RELOAD_COUNT EQU 0F6H ;Baud=9,600 bps ;RELOAD_COUNT EQU 0ECH ;Baud=4,800 bps ;RELOAD_COUNT EQU 0D8H ;Baud=2,400 bps ;RELOAD_COUNT EQU 0B0H ;Baud=1,200 bps ;以上是 Fosc = 18.432MHz, 12T模式, SMOD=1 时,计算出的自动重装数和波特率
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 55 ;以下是 Fosc = 11.0592MHz, 12T模式, SMOD=0 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH ;Baud=28,800 bps ;RELOAD_COUNT EQU 0FEH ;Baud=14,400 bps ;RELOAD_COUNT EQU 0FDH ;Baud=9,600 bps ;RELOAD_COUNT EQU 0FAH ;Baud=4,800 bps ;RELOAD_COUNT EQU 0F4H ;Baud=2,400 bps ;RELOAD_COUNT EQU 0E8H ;Baud=1,200 bps ;以上是 Fosc = 11.0592MHz, 12T模式, SMOD=0 时,计算出的自动重装数和波特率 ;以下是 Fosc = 11.0592MHz, 12T模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH ;Baud=57,600 bps ;RELOAD_COUNT EQU 0FEH ;Baud=28,800 bps ;RELOAD_COUNT EQU 0FDH ;Baud=14,400 bps ;RELOAD_COUNT EQU 0FAH ;Baud=9,600 bps ;RELOAD_COUNT EQU 0F4H ;Baud=4,800 bps ;RELOAD_COUNT EQU 0E8H ;Baud=2,400 bps ;RELOAD_COUNT EQU 0D0H ;Baud=1,200 bps ;以上是 Fosc = 11.0592MHz, 12T模式, SMOD=1 时,计算出的自动重装数和波特率 ;定义指示灯 LED_MCU_START EQU P1.7 ;MCU工作指示灯 ORG 0000H AJMP MAIN ORG 0023H AJMP UART_Interrupt ;RS232 串口中断服务程序 NOP NOP MAIN: MOV SP, #7FH ;设置堆栈指针 CLR LED_MCU_START ;点亮 MCU 工作指示灯 ACALL Initial_UART ;初始化串口 MOV R0, #30H ;30H = 可打印字符 '0' 的ASCII码 MOV R2, #10 ;发送10个字符'0123456789'
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 56 LOOP: MOV A, R0 ACALL Send_One_Byte ;发送一个字节,可将PC串口调试助手设置成字符显示 ;如果是字符显示, 显示为 0123456789, ;如设置成 16 进制显示, 显示 30 31 32 33 34 35 36 37 38 39 INC R0 DJNZ R2, LOOP MAIN_WAIT: SJMP MAIN_WAIT ;跳转到本行, 无限循环 UART_Interrupt: ;串口中断服务程序 JB RI, Is_UART_Receive CLR TI ;清零串口发送中断标志 RETI ;发送时使用的是查询方式,不使用中断 Is_UART_Receive: CLR RI PUSH ACC MOV A, SBUF ;取接收到的字节 ACALL Send_One_Byte ;回发收到的字节 POP ACC RETI Initial_UART: ;初始化串口 ; SCON Bit: 7 6 5 4 3 2 1 0 ; SM0/FE SM1 SM2 REN TB8 RB8 TI RI MOV SCON, #50H ; 0101,0000 8位可变波特率, 无奇偶校验 MOV TMOD, #21H ;设置定时器1 为8位自动重装计数器 MOV TH1, #RELOAD_COUNT ;设置定时器1 自动重装数 MOV TL1, #RELOAD_COUNT ; ORL PCON, #80H ;若本行有效, 波特率可以加倍 ;以下两行指令只能有一行有效 ; ORL AUXR, #01000000B ;定时器1工作在1T模式,波特率可以快 12倍 ANL AUXR, #10111111B ;定时器1工作在12T模式,与普通的8051相同 ;以上两行指令只能有一行有效 SETB TR1 ;启动定时器1 SETB ES SETB EA RET
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 57 ;入口参数: A = 要发送的字节 Send_One_Byte: ;发送一个字节 CLR ES CLR TI ;清零串口发送中断标志 MOV SBUF, A Wait_Send_Finish: JNB TI, Wait_Send_Finish ;等待发送完毕 CLR TI ;清零串口发送中断标志 SETB ES RET END ;计算自动重装数 RELOAD (SMOD = 0, SMOD 是 PCON 特殊功能寄存器的最高位): ; 1. 计算 RELOAD (以下是 SMOD = 0 时的计算公式) ; a) 12T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32/12 + 0.5) ; b) 1T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32 + 0.5) ; 式中: INT() 表示取整运算即舍去小数, 在式中加 0.5 可以达到四舍五入的目的 ; Fosc = 晶振频率 ; Baud0 = 标准波特率 ; 2. 计算用 RELOAD 产生的波特率: ; a) Baud = Fosc/(256 - RELOAD)/32/12 12T 模式 ; b) Baud = Fosc/(256 - RELOAD)/32 1T 模式 ; 3. 计算误差 ; error = (Baud - Baud0)/Baud0 * 100% ; 4. 如果误差绝对值 > 4.5% 要更换波特率或者更换晶体频率, 重复步骤 1-4 ;例: Fosc = 22.1184MHz, Baud0 = 57600 (12T 模式) ; 1. RELOAD = 256 - INT( 22118400/57600/32/12 + 0.5) ; = 256 - 1 ; = 255 ; = 0FFH ; 2. Baud = 22118400/(256-255)/32/12 ; = 57600 ; 3. 误差等于零
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 58 ;例: Fosc = 18.432MHz, Baud0 = 57600 (12T 模式) ; 1. RELOAD = 256 - INT( 18432000/57600/32/12 + 0.5) ; = 256 - 1 ; = 255 ; = 0FFH ; 2. Baud = 18432000/(256-255)/32/12 ; = 48000 ; 3. error = (48000 - 57600)/57600 * 100% ; = -16.66% ; 4. 误差很大, 要更换波特率或者更换晶体频率, 重新计算请见下一例 ;例: Fosc = 18.432MHz, Baud0 = 9600 (12T 模式) ; 1. RELOAD = 256 - INT( 18432000/9600/32/12 + 0.5) ; = 256 - 5 ; = 251 ; = 0FBH ; 2. Baud = 18432000/(256-251)/32/12 ; = 9600 ; 3. 一目了然, 误差等于零 ;例: Fosc = 2.000MHz, Baud = 4800 (1T 模式) ; 1. RELOAD = 256 - INT( 2000000/4800/32 + 0.5) ; = 256 - 13 ; = 243 ; = 0F3H ; 2. Baud = 2000000/(256-243)/32 ; = 4808 ; 3. error = 0.16%
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 59 MnemonicAddName 7 6 5 4 3 2 1 0 Reset Value ADC_CONTRC5hA/D 转换控制寄存器 ADC_POWER SPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS00xx0,0000 ADC_DATAC6hA/D 转换结果寄存器 ,高8位 - - - - - - - - xxxx,xxxx ADC_LOW2BEhA/D 转换结果寄存器 ,低2位 - - - - - - - - xxxx,xxxx A/D 转换控制寄存器 ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS00xx0,0000 ADC_CONTR 特殊功能寄存器: A/D转换控制特殊功能寄存器 CHS2 CHS1 CHS0 Analog Input Channel Select 模拟输入通道选择 0 0 0 选择 P1.0 作为 A/D输入来用 0 0 1 选择 P1.1 作为 A/D输入来用 0 1 0 选择 P1.2 作为 A/D输入来用 0 1 1 选择 P1.3 作为 A/D输入来用 1 0 0 选择 P1.4 作为 A/D输入来用 1 0 1 选择 P1.5 作为 A/D输入来用 1 1 0 选择 P1.6 作为 A/D输入来用 1 1 1 选择 P1.7 作为 A/D输入来用 CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0 ADC_START: 模数转换器(ADC)转换启动控制位 ,设置为“1”时,开始转换,转换结束后为 0。 ADC_FLAG: 模数转换器转换结束标志位,当A/D转换完成后,ADC_FLAG = 1,要由软件清 0。 ADC_DATA / ADC_LOW2 特殊功能寄存器: A/D转换结果特殊功能寄存器 模拟/ 数字转换结果计算公式如下:结果 ( ADC_DATA[7:0],ADC_LOW2[1:0] ) = 1024 x Vin / Vcc Vin 为模拟输入通道输入电压 ,Vcc 为单片机实际工作电压 ,用单片机工作电压作为模拟参考电压 。 STC12C5410AD系列带A/D转换的单片机在 P1口,有8路10位高速A/D转换器, 速度可达 100KHz。 P1.7 - P1.0共8路电压输入型 A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位 后P1口为弱上拉型 I/O口,用户可以通过软件设置将 8路中的任何一路设置为 A/D转换,不需作为A/D使 用的口可继续作为 I/O口使用。需作为A/D使用的口需先将其设置为高阻输入或开漏模式。在P1M0、P1M1 中对相应的位进行设置。 A/D转换 及 A/D转换测试程序 P1M0【7:0】 地址 :91h P1M1【7:0】 地址 :92h I/O 口模式 (P1.x 如做 A/D 使用 ,需先将其设置成开漏或高阻输入 ) 0 0 准双向口 (传统 8051 I/O 口模式 ), 灌电流可达 20mA , 拉电流为 230µA 0 1 推挽输出 (强上拉输出 ,可达 20mA ,尽量少用 ) 1 0 仅为输入 (高阻 ), 如果该 I/O 口需作为 A/D 使用 ,可选此模式 1 1 开漏 (Open Drain) ,如果该 I/O 口需作为 A/D 使用 ,可选此模式 SPEED1,SPEED0:模数转换器转换速度控制位 SPEED1 SPEED0 A/D转换所需时间 1 1 210个时钟周期转换一次 , CPU工作频率 20MHz时 , A/D转换速度约 100KHz 1 0 420个时钟周期转换一次 0 1 630个时钟周期转换一次 0 0 840个时钟周期转换一次 ADC_POWER: ADC电源控制位。 0:关闭 ADC电源;1:打开 A/D转换器电源 启动 AD转换前一定要确认 AD电源已打开,AD转换结束后关闭 AD电源可降低功耗,也可不关闭。 初次打开内部 A/D转换模拟电源,需适当延时,等内部模拟电源稳定后 ,再启动 A/D转换 建议启动 A/D转换后,在A/D转换结束之前,不改变任何 I/O口的状态,有利于高精度 A/D转换 ADC_DATAC6hA/D 转换结果寄存器,全部8位有效,为10位A/D转换结果的高8位 - - - - - - - -xxxx,xxxx ADC_LOW2BEhA/D 转换结果寄存器,只有低2位有效,为10位A/D转换结果的低2位 x x x x xx - -xxxx,xxxx 取ADC_DATA的8位为ADC转换的高 8位,取ADC_LOW2的低2位为ADC转换的低2位,则为10位精度。 如果舍弃 ADC_LOW2的低2位,只用ADC_DATA寄存器的 8位,则A/D转换结果为 8位精度。 结果 ADC_DATA[7:0] = 256 x Vin / Vcc 不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位 A/D转换是否结束, 当A/D转换完成后,ADC_FLAG = 1,一定要软件清 0。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 60 A/D转换在P1口, P1.0 - P1.7共八路 10K 10K 1/2 Vcc 2/3 Vcc 3/4 Vcc Vcc 10K 10K 10K 4/5 Vcc A/D转换典型应用线路,按键扫描 DIP-28( 窄体 / SOP-28 P2.2 1 28 P2.1P2.3 2 27 P2.0/CEX2/PCA2/PWM2RST 3 26 VDD RxD/P3.04 25 P1.7/SCLK/ADC7 TxD/P3.15 24 P1.6/MISO/ADC6 XTAL2 6 23 P1.5/MOSI/ADC5 XTAL1 7 22 P1.4/SS/ADC4 INT0/P3.28 21 P1.3/ADC3 INT1/P3.39 20 P1.2/ADC2 ECI/T0/P3.410 19 P1.1/ADC1 PWM1/PCA1/CEX1/T1/P3.511 18 P1.0/ADC0 VSS 12 17 P3.7/CEX0/PCA0/PWM0PWM3/PCA3/CEX3/P2.4 13 16 P2.7P2.5 14 15 P2.6 47pF以上
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 61 ;/* --- 演示 STC12C5410AD 系列 MCU 的 A/D 转换功能- */ ;/* --- 演示 STC12C2052AD 系列 MCU 的 A/D 转换功能- */ ;ADC DEMO_5410_ASM.ASM 汇编程序演示 STC12C5410AD 系列 MCU 的 A/D 转换功能。 ;本演示程序在 STC-ISP Ver 3.0A.PCB的下载编程工具上测试通过,相关的A/D转换结果在P1口上显示 ;转换结果也以 16 进制形式输出到串行口,可以用串行口调试程序观察输出结果。 ;时钟 18.432MHz, 波特率 = 9600。 ;转换结果也在 P1 口利用 LED 显示出来, 方便观察。 LED_MCU_START EQU P3.7 ADC_CONTR EQU 0C5H ;A/D转换寄存器 ADC_DATA EQU 0C6H ;A/D转换结果寄存器, 为10位 A/D转换结果的高8位 ;ADC_LOW2 EQU 0BEH ;A/D转换结果寄存器, 低2位有效, 为10位 A/D转换结果的低2位 ;如果不用ADC_LOW2的低2位,只用ADC_DATA的8位,则为8位A/D转换 P1M0 EQU 91H ;P1口模式选择寄存器0 P1M1 EQU 92H ;P1口模式选择寄存器1 ADC_Power_On_Speed_Channel_0 EQU 11100000B ;P1.0作为A/D输入 ADC_Power_On_Speed_Channel_1 EQU 11100001B ;P1.1作为A/D输入 ADC_Power_On_Speed_Channel_2 EQU 11100010B ;P1.2作为A/D输入 ADC_Power_On_Speed_Channel_3 EQU 11100011B ;P1.3作为A/D输入 ADC_Power_On_Speed_Channel_4 EQU 11100100B ;P1.4作为A/D输入 ADC_Power_On_Speed_Channel_5 EQU 11100101B ;P1.5作为A/D输入 ADC_Power_On_Speed_Channel_6 EQU 11100110B ;P1.6作为A/D输入 ADC_Power_On_Speed_Channel_7 EQU 11100111B ;P1.7作为A/D输入 ;定义变量 ADC_Channel_0_Result EQU 30H ;0通道A/D转换结果 ADC_Channel_1_Result EQU 31H ;1通道A/D转换结果 ADC_Channel_2_Result EQU 32H ;2通道A/D转换结果 ADC_Channel_3_Result EQU 33H ;3通道A/D转换结果 ADC_Channel_4_Result EQU 34H ;4通道A/D转换结果 ADC_Channel_5_Result EQU 35H ;5通道A/D转换结果 ADC_Channel_6_Result EQU 36H ;6通道A/D转换结果 ADC_Channel_7_Result EQU 37H ;7通道A/D转换结果 A/D转换功能汇编程序示例
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 62 ORG 0000H LJMP MAIN ORG 0050H MAIN: CLR LED_MCU_START ;MCU工作指示灯 LED_MCU_START EQU P3.7 MOV SP, #7FH ;设置堆栈 ACALL Initiate_RS232 ;初始化串口 ACALL ADC_Power_On ;开ADC电源, 第一次使用时要打开内部模拟电源 ;开ADC电源, 可适当加延时,1mS以内就足够了 ACALL Set_P12_Open_Drain ;设置 P1.2 为开漏 ACALL Set_ADC_Channel_2 ;设置 P1.2 作为A/D转换通道 ACALL Get_AD_Result ;测量电压并且取A/D转换结果 ACALL Send_AD_Result ;发送转换结果到 PC 机 ACALL Set_P12_Normal_IO ;设置 P1.2 为普通IO MOV A, ADC_Channel_2_Result ;用 P1 口显示A/D转换结果 CPL A MOV P1, A Wait_Loop: SJMP Wait_Loop ;停机 Initiate_RS232: ;串口初始化 CLR ES ;禁止串口中断 MOV TMOD, #20H ;设置 T1 为波特率发生器 MOV SCON, #50H ;0101,0000 8位数据位, 无奇偶校验 MOV TH1, #0FBH ;18.432MHz 晶振, 波特率 = 9600 MOV TL1, #0FBH SETB TR1 ;启动 T1 RET Send_Byte: CLR TI MOV SBUF, A Send_Byte_Wait_Finish: JNB TI, Send_Byte_Wait_Finish CLR TI RET
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 63 ADC_Power_On: PUSH ACC ORL ADC_CONTR, #80H ;开A/D转换电源 MOV A, #20H ACALL Delay ;开A/D转换电源后要加延时,1mS以内就足够了 POP ACC RET ;设置P1.2,设置A/D通道所在的I/O为开漏模式 Set_P12_Open_Drain: PUSH ACC MOV A, #00000100B ORL P1M0, A ORL P1M1, A POP ACC RET ;设置 P1.2 为普通IO Set_P12_Normal_IO: PUSH ACC MOV A, #11111011B ANL P1M0, A ANL P1M1, A POP ACC RET Set_ADC_Channel_2: MOV ADC_CONTR, #ADC_Power_On_Speed_Channel_2 ;选择P1.2作为A/D转换通道 MOV A, #05H ;更换 A/D 转换通道后要适当延时, 使输入电压稳定 ;以后如果不更换 A/D 转换通道的话, 不需要加延时 ACALL Delay ;切换 A/D 转换通道,加延时20uS~200uS就可以了,与输入电压源的内阻有关 RET Send_AD_Result: PUSH ACC MOV A, ADC_Channel_2_Result ;取 AD 转换结果 ACALL Send_Byte ;发送转换结果到 PC 机 POP ACC RET
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 64 Get_AD_Result: PUSH ACC ;入栈保护 MOV ADC_DATA, #0 ORL ADC_CONTR, #00001000B ;启动 AD 转换 Wait_AD_Finishe: MOV A, #00010000B ;判断 AD 转换是否完成 ANL A, ADC_CONTR JZ Wait_AD_Finishe ;AD 转换尚未完成, 继续等待 ANL ADC_CONTR, #11100111B ;清0 ADC_FLAG, ADC_START 位, 停止A/D转换 MOV A, ADC_DATA MOV ADC_Channel_2_Result, A ;保存 AD 转换结果 POP ACC RET Delay: PUSH 02 ;将寄存器组0 的 R2 入栈 PUSH 03 ;将寄存器组0 的 R3 入栈 PUSH 04 ;将寄存器组0 的 R4 入栈 MOV R4, A Delay_Loop0: Delay_Loop1: ; | Delay_Loop: ; | 1002 CLOCK |200406 CLOCK DJNZ R2, Delay_Loop ;4 CLOCK | | POP 04 POP 03 POP 02 RET END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 65 STC12C5410AD系列 1T 8051 单片机 PCA/PWM 特殊功能寄存器 PCA/PWM SFRs STC12C5410系列单片机 PWM/PCA应用及测试程序 位 7 6 5 4 3 2 1 0 符号 CIDL - - - - CPS1 CPS0 ECF CMOD - PCA模式 寄存器的位分配 (地址:D9H) 位 符号 描述
7 CIDL 计数器阵列空闲控制 :CIDL=0时,空闲模式下 PCA计数器继续工作 。CIDL=1
时,空闲模式下 PCA计数器停止工作 。 6 - 3 - 保留为将来之用 。 2 - 1 CPS1,CPS0PCA计数脉冲选择 (见下表 )。
0 ECF PCA计数溢出中断使能 :ECF=1时,使能寄存器 CCON CF位的中断 。ECF=0时,
禁止该功能 。 CMOD - PCA模式 寄存器的位描述 (地址:D9H) MnemonicAddName 7 6 5 4 3 2 1 0 Reset value CCON D8hPCA Control RegisterCF CR - - CCF3CCF2CCF1CCF000xx,0000 CMOD D9hPCA Mode Register CIDL - - - - CPS1CPS0ECF0xxx,x000 CCAPM0DAhPCA Module 0 Mode Register- ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0x000,0000 CCAPM1DBhPCA Module 1 Mode Register- ECOM1CAPP1CAPN1MAT1TOG1PWM1ECCF1x000,0000 CCAPM2DChPCA Module 2 Mode Register- ECOM2CAPP2CAPN2MAT2TOG2PWM2ECCF2x000,0000 CCAPM3DDhPCA Module 3 Mode Register- ECOM3CAPP3CAPN3MAT3TOG3PWM3ECCF3x000,0000 CL E9hPCA Base Timer Low 0000,0000 CH F9hPCA Base Timer High 0000,0000 CCAP0LEAhPCA Module-0 Capture Register Low 0000,0000 CCAP0HFAhPCA Module-0 Capture Register High 0000,0000 CCAP1LEBhPCA Module-1 Capture Register Low 0000,0000 CCAP1HFBhPCA Module-1 Capture Register High 0000,0000 CCAP2LEChPCA Module-2 Capture Register Low 0000,0000 CCAP2HFChPCA Module-2 Capture Register High 0000,0000 CCAP3LEDhPCA Module-3 Capture Register Low 0000,0000 CCAP3HFDhPCA Module-3 Capture Register High 0000,0000 PCA_PWM0F2hPCA PWM Mode Auxiliary Register 0- - - - - - EPC0HEPC0Lxxxx,xx00 PCA_PWM1F3hPCA PWM Mode Auxiliary Register 1- - - - - - EPC1HEPC1Lxxxx,xx00 PCA_PWM2F4hPCA PWM Mode Auxiliary Register 2- - - - - - EPC2HEPC2Lxxxx,xx00 PCA_PWM3F5hPCA PWM Mode Auxiliary Register 3- - - - - - EPC3HEPC3Lxxxx,xx00
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 66 位 7 6 5 4 3 2 1 0 符号 CF CR - - - - CCF1 CCF0 CCON - PCA控制寄存器的位分配 (地址:D8H) 位 符号 描述 7 CF PCA计数器阵列溢出标志 。计数值翻转时该位由硬件置位 。如果 CMOD寄存器 的ECF位置位 ,CF标志可用来产生中断 。CF位可通过硬件或软件置位 ,但只 可通过软件清零 。
6 CR PCA计数器阵列运行控制位 。该位通过软件置位 ,用来起动 PCA计数器阵列计
数。该位通过软件清零 ,用来关闭 PCA计数器 。 5 - 2 - 保留位 ,保留为将来使用 。
1 CCF1 PCA模块 1中断标志 。当出现匹配或捕获时该位由硬件置位 。该位必须通过软
件清零 。
0 CCF0 PCA模块 0中断标志 。当出现匹配或捕获时该位由硬件置位 。该位必须通过软
件清零 。 CCON - PCA控制寄存器的位描述 (地址:D8H) 位 7 6 5 4 3 2 1 0 符号 - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn CCAPMn - PCA比较 /捕获模块寄存器的位分配 (CCAPM0地址:0DAH;CCAPM1地址:0DBH) 位 符号 描述 n : 0,1,2,3 7 - 保留为将来之用 。
6 ECOMn使能比较器 。ECOMn=1时使能比较器功能 。
5 CAPPn正捕获 。CAPPn=1时使能上升沿捕获 。
4 CAPNn负捕获 。CAPNn=1时使能下降沿捕获 。
3 MATn匹配 。当MATn=1时,PCA计数值与模块的比较 /捕获寄存器的值的匹配将置
位CCON寄存器的中断标志位 CCFn。
2 TOGn
翻转 。当TOGn=1时,工作在 PCA高速输出模式 ,PCA计数器的值与模块的比 较/捕获寄存器的值的匹配将使 CEXn脚翻转 。 (CEX0/P3.7,CEX1/P3.5,CEX2/P2.0,CEX3/P2.4)
1 PWMn脉宽调节模式 。当PWMn=1时,使能 CEXn脚用作脉宽调节输出 。
0 ECCFn使能 CCFn中断 。使能寄存器 CCON的比较 /捕获标志 CCFn,用来产生中断 。
CCAPMn - PCA比较/捕获模块寄存器的位描述 ( n:0,1,2,3 ) ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn 模块功能 0 0 0 0 0 0 0 无此操作 X 1 0 0 0 0 X 16位捕获模式 ,由CEXn的上升沿触发 X 0 1 0 0 0 X 16位捕获模式 ,由CEXn的下降沿触发 X 1 1 0 0 0 X 16位捕获模式 ,由CEXn的跳变触发 1 0 0 1 0 0 X 16位软件定时器 1 0 0 1 1 0 X 16位高速输出 1 0 0 0 0 1 0 8位PWM PCA模块工作模式(CCAPMn寄存器,n:0,1,2,3) CPS1 CPS0 选择 PCA时钟源输入 0 0 0, 内部时钟 , Fosc/12 0 1 1, 内部时钟 , Fosc/2 1 0 2, 定时器 0溢出 ,由于定时器 0可以工作在 1T方式 , 所以可以达 到计一个时钟就溢出 , 频率反而是最高的 , 可达到 Fosc 1 1 3, ECI/P3.4脚的外部时钟输入 ( 最大速率 = Fosc/2) CMOD - PCA计数器阵列的计数脉冲选择 (地址:D9H)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 67 STC12C5410AD系列单片机可编程计数器阵列 (PCA) PCA含有一个特殊的 16位定时器,有4个16位的捕获 /比较模块与之相连。每个模块可编程工作 在 4种模式下:上升 /下降沿捕获、软件定时器、高速输出或可调制脉冲输出 。模块 0连接到 P3.7 (CEX0/PCA0/PWM0),模块1连接到 P3.5(CEX1/PCA1/PWM1),模块2连接到 P2.0(CEX2/PCA2/ PWM2),模块3连接到 P2.4(CEX3/PCA3/PWM3)。寄存器 CH和CL的内容是正在自由递增计数的 16位 PCA定时器的值。PCA定时器是4个模块的公共时间基准,可通过编程工作在:1/12振荡频率、1/2振荡频 率、定时器0溢出或ECI脚的输入(P3.4)。定时器的计数源由CMOD SFR的CPS1和CPS0位来确定(见 CMOD特殊功能寄存器说明)。 Module 0 P3.7/CEX0/PCA0/PWM0 P2.4/CEX3/PCA3/PWM3 PCA Timer/Counter
16 Bit
Programmable Counter Array CH CL CF CR - - CCF3 CCF2 CCF1 CCF0 Fosc/12 IDLE 16-Bit counter TO PCA module PCA interrupt CMOD CCON PCA Timer/Counter Fosc/2 Timer 0 overflow External input ECI (P3.4) CIDL - - - - CPS1 CPS0 ECF Module 1 P3.5/CEX1/PCA1/PWM1 P2.0/CEX2/PCA2/PWM2Module 2
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 68 CMOD SFR还有 2个位与 PCA相关。它们分别是:CIDL,空闲模式下允许停止 PCA;ECF,置位 时,使能 PCA中断,当PCA定时器溢出将 PCA计数溢出标志 CF(CCON SFR)置位。 CCON SFR包含 PCA的运行控制位(CR)和PCA定时器标志(CF)以及各个模块的标志(CCF3/ CCF2/CCF1/CCF0)。通过软件置位 CR位(CCON.6)来运行 PCA。CR位被清零时 PCA关闭。当PCA 计数器溢出时,CF位(CCON.7)置位,如果 CMOD寄存器的 ECF位置位,就产生中断。CF位只可通过 软件清除。CCON寄存器的位 0~3是PCA各个模块的标志(位0对应模块 0,位1对应模块 1,位2对应 模块2,位3对应模块 3),当发生匹配或比较时由硬件置位。这些标志也只能通过软件清除。所有模块共 用一个中断向量。PCA的中断系统如图所示。 PCA的每个模块都对应一个特殊功能寄存器 。它们分别是:模块 0对应 CCAPM0,模块 1对应 CCAPM1,模块2对应CCAPM2,模块3对应CCAPM3.特殊功能寄存器包含了相应模块的工作模式控制位。 当模块发生匹配或比较时 ,ECCFn位(CCAPMn.0,n=0,1,2,3由工作的模块决定 )使能 CCON SFR的CCFn标志来产生中断。 PWM(CCAPMn.1)用来使能脉宽调制模式 。 当PCA计数值与模块的捕获 /比较寄存器的值相匹配时 ,如果 TOG位(CCAPMn.2)置位,模块的 CEXn输出将发生翻转。 当PCA计数值与模块的捕获 /比较寄存器的值相匹配时 ,如果匹配位 MATn(CCAPMn.3)置位, CCON寄存器的CCFn位将被置位。 CAPNn(CCAPMn.4)和CAPPn(CCAPMn.5)用来设置捕获输入的有效沿 。CAPNn位使能下降沿 有效,CAPPn位使能上升沿有效。如果两位都置位,则两种跳变沿都被使能,捕获可在两种跳变沿产生。 通过置位 CCAPMn寄存器的 ECOMn位(CCAPMn.6)来使能比较器功能。 每个 PCA模块还对应另外两个寄存器 ,CCAPnH和CCAPnL。当出现捕获或比较时,它们用来保存 16位的计数值。当PCA模块用在 PWM模式中时,它们用来控制输出的占空比。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 69 PCA捕获模式 要使一个 PCA模块工作在捕获模式 (下图),寄存器 CCAPMn的两位(CAPNn和CAPPn)或其中任 何一位必须置 1。对模块的外部 CEXn输入(CEX0/P3.7,CEX1/P3.5,CEX2/P2.0,CEX3/P2.4口)的 跳变进行采样。当采样到有效跳变时,PCA硬件就将 PCA计数器阵列寄存器(CH和CL)的值装载到模块 的捕获寄存器中(CCAPnL和CCAPnH)。 16位软件定时器模式 通过置位 CCAPMn寄存器的 ECOM和MAT位,可使 PCA模块用作软件定时器(下图)。PCA定时器的 值与模块捕获寄存器的值相比较 ,当两者相等时,如果位 CCFn(在CCON SFR中)和位 ECCFn(在 CCAPMn SFR中)都置位,将产生中断。 如果CCON SFR的位CCFn和CCAPMn SFR的位ECCFn位被置位,将产生中断。 CF CR – - CCF3CCF2CCF1CCF0 CCAPnH CH CL CCAPnL – ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn 0 0 0 0 CCON(C0h) PCA interrupt Capture CEXn CCAPMn,n=0,1 (地址:DAh和DBh) PCA Capture Mode (PCA捕获模式图) CF CR – - CCF3CCF2CCF1CCF0 – ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn CCON PCA Interrupt (To CCFn) CCAPMn 16-Bit Comparator CCAPnHCCAPnL CH CL MatchEnable Write to CCAPnH 0 1 PCA Software Timer Mode/软件定时器模式 /PCA比较模式 Write to CCAPnL 0 0 1 0 0 先写 后写
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 70 高速输出模式 该模式中(下图),当PCA计数器的计数值与模块捕获寄存器的值相匹配时 ,PCA模块的CEXn输出将 发生翻转。要激活高速输出模式,模块CCAPMn SFR的TOG,MAT和ECOM位必须都置位。 PCA Interupt PCA High-Speed Output Mode / PCA高速输出模式 CF CR – - CCF3CCF2CCF1CCF0 – ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn CCON (To CCFn) CCAPnHCCAPnL CH CL MatchEnable 0 1 CEXn Toggle CCAPMn Write to CCAPnHWrite to CCAPnL 0 0 1 1 0 16-Bit comparator 翻转 先写 后写 在使用 PCA高速输出模式时的特别应用注意事项 : 如果某一 PCA模块工作在高速脉冲输出模式,要用软件输出改变同一组其它普通 I/O口的状态,需先 做判断CH是否等于 CCAPnH,若不等,可自由修改,若相等,再判断CL>CCAPnL情况下才允许改变同一 组其它普通 I/O口的状态。如用P3.7/PCA0/PWM0做PCA高速脉冲输出,同时程序里面又要用软件输出 改变 P3.4口的状态时,就需要做判断 。 当某个具有 PCA高速脉冲输出功能的 I/O口工作在高速脉冲输出模式时,如果软件对同一组的其它 I/O口进行操作,如果遇上 PCA比较器匹配时,该操作有可能会改变此具有 PCA高速脉冲输出功能的 I/O 口的状态,所以同一组的其它 I/O口建议不要做输出用 ,如果做输出用时 ,要进行判断 。 具有 PCA高速脉冲输出 模式的 I/O口 同一组的其它 I/O口 当以上管脚用在 PCA高速脉 冲输出模式时 , 建议同一 组的其它 I/O口工作在输入 模式 , 如工作在 PCA高速输 出模式 , 而同一组的它 I/O口又必须工作在输出模 式 , 建议如右列所示 。 要用软件输出改变同一组其它普通 I/O口的状态 , 需先做判断 CH是否等于 CCAPnH, 若不等 , 可自由 修改 , 若相等 , 再判断 CL>CCAPnL情况下才允许改 变同一组其它普通 I/O口的状态 。 防止在 PCA比较 器匹配时做输出工作 。 其它几种工作模式无问题
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 71 脉宽调节模式 所有 PCA模块都可用作 PWM输出(下图)。输出频率取决于 PCA定时器的时钟源。 1 0 0 0 0 1 0 CL – ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn (0,CL) < (EPCnL,CCAPnL) (0,CL) >= (EPCnL,CCAPnL) 输出0 输出1 Enable CL overflow CEXn CCAPMn, n=0,1 CCAPnHEPCnH CCAPnLEPCnL 9-BIT COMPARATOR 由于所有模块共用仅有的 PCA定时器,所有它们的输出频率相同 。各个模块的输出占空比是独立变 化的,与使用的捕获寄存器{EPCnL,CCAPnL}有关。当 CL SFR的值小于{EPCnL,CCAPnL}时,输出 为低,当PCA CL SFR的值等于或大于{EPCnL,CCAPnL}时,输出为高。当CL的值由 FF变为 00 溢出时,{EPCnH,CCAPnH}的内容装载到{EPCnL,CCAPnL}中。这样就可实现无干扰地更新 PWM。要 使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。 PCA PWM mode / 可调制脉冲宽度输出模式
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 72 ;使用 STC12C2052AD 系列单片机 PCA 功能扩展外部中断的示例程序。 ;使用 STC12C5410AD 系列单片机 PCA 功能扩展外部中断的示例程序。 ;P3.7(PCA 模块0) 扩展为下降沿外部中断, ;P3.5(PCA 模块1) 扩展为上升沿 /下降沿都可触发的外部中断。 ;1) 汇编源程序, 把汇编程序产生的的程序代码下载到单片机中 , 上电运行本程序。 ;2) 将 P3.7/PCA0 短路到地, 这一动作产生一个下降沿,此时本演示程序对 P1.6 取反, ; P1.6 控制的 LED 灯将会变化一次。 ;3) 改变 P3.5/PCA1 的外部高低状态(由高到低--产生下降沿; 由低到高--产生上升沿), ; 本演示程序在 P3.5/PCA1 的下降沿/上升沿都产生中断,此时本演示程序对 P1.5 取反, ; P1.5 控制的 LED 灯状态将会发生变化。 ; 所谓 LED 灯状态发生变化是指 LED 由灭变亮或由亮变灭。 ;声明 STC12C2052AD和STC12C5410AD系列 MCU 特殊功能寄存器地址 IPH EQU 0B7H ;中断优先级高位寄存器 EPCA_LVD EQU IE.6 ;PCA 中断和 LVD(低压检测)中断共享的总中断控制位 CH EQU 0F9H ;PCA 计数器高8位。 CL EQU 0E9H ;PCA 计数器低8位。 CCON EQU 0D8H ;PCA 控制寄存器。 CCF0 EQU CCON.0 ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。 CCF1 EQU CCON.1 ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。 CCF2 EQU CCON.2 ;PCA 模块2 中断标志, 由硬件置位, 必须由软件清0。 CCF3 EQU CCON.3 ;PCA 模块3 中断标志, 由硬件置位, 必须由软件清0。 CCF4 EQU CCON.4 ;PCA 模块4 中断标志, 由硬件置位, 必须由软件清0。 CCF5 EQU CCON.5 ;PCA 模块5 中断标志, 由硬件置位, 必须由软件清0。 CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清0。 CF EQU CCON.7 ;PCA计数器溢出(CH,CL由 FFFFH 变为 0000H)标志, ;PCA计数器溢出后由硬件置位,必须由软件清0。 PCA 功能扩展外部中断的示例程序
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 73 CMOD EQU 0D9H ;PCA 工作模式寄存器。 ;CMOD.7 CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。 ;CMOD.2 CPS1: PCA 计数器计数脉冲源选择位 1。 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。 ; CPS1 CPS0 ; 0 0 外部晶体频率/12。 ; 0 1 外部晶体频率/2。 ; 1 0 Timer 0 溢出脉冲, ; Timer 0 还可通过 AUXR寄存器设置成工作在 12T 或 1T 模式。 ; 1 1 从 ECI/P3.4 脚输入的外部时钟。 ;CMOD.0 ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。 CCAP0H EQU 0FAH ;PCA 模块0的捕捉/比较寄存器高 8 位。 CCAP1H EQU 0FBH ;PCA 模块1的捕捉/比较寄存器高 8 位。 CCAP2H EQU 0FCH ;PCA 模块2的捕捉/比较寄存器高 8 位。 CCAP3H EQU 0FDH ;PCA 模块3的捕捉/比较寄存器高 8 位。 CCAP4H EQU 0FEH ;PCA 模块4的捕捉/比较寄存器高 8 位。 CCAP5H EQU 0FFH ;PCA 模块5的捕捉/比较寄存器高 8 位。 CCAP0L EQU 0EAH ;PCA 模块0的捕捉/比较寄存器低 8 位。 CCAP1L EQU 0EBH ;PCA 模块1的捕捉/比较寄存器低 8 位。 CCAP2L EQU 0ECH ;PCA 模块2的捕捉/比较寄存器低 8 位。 CCAP3L EQU 0EDH ;PCA 模块3的捕捉/比较寄存器低 8 位。 CCAP4L EQU 0EEH ;PCA 模块4的捕捉/比较寄存器低 8 位。 CCAP5L EQU 0EFH ;PCA 模块5的捕捉/比较寄存器低 8 位。 PCA_PWM0 EQU 0F2H ;PCA 模块0 PWM 寄存器。 PCA_PWM1 EQU 0F3H ;PCA 模块1 PWM 寄存器。 PCA_PWM2 EQU 0F4H ;PCA 模块2 PWM 寄存器。 PCA_PWM3 EQU 0F5H ;PCA 模块3 PWM 寄存器。 PCA_PWM4 EQU 0F6H ;PCA 模块4 PWM 寄存器。 PCA_PWM5 EQU 0F7H ;PCA 模块5 PWM 寄存器。 ;PCA_PWMn: 7 6 5 4 3 2 1 0 ; - - - - - - EPCnH EPCnL ;B7-B2: 保留 ;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。 ;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 74 CCAPM0 EQU 0DAH ;PCA 模块0的工作模式寄存器。 CCAPM1 EQU 0DBH ;PCA 模块1的工作模式寄存器。 CCAPM2 EQU 0DCH ;PCA 模块2的工作模式寄存器。 CCAPM3 EQU 0DDH ;PCA 模块3的工作模式寄存器。 CCAPM4 EQU 0DEH ;PCA 模块4的工作模式寄存器。 CCAPM5 EQU 0DFH ;PCA 模块5的工作模式寄存器。 ;CCAPMn: 7 6 5 4 3 2 1 0 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ;ECOMn = 1:允许比较功能。 ;CAPPn = 1:允许上升沿触发捕捉功能。 ;CAPNn = 1:允许下降沿触发捕捉功能。 ;MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。 ;TOGn = 1:当匹配情况发生时, CEXn 将翻转。 ;PWMn = 1:将 CEXn 设置为 PWM 输出。 ;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。 ;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ; 0 0 0 0 0 0 0 00H 未启用任何功能。 ; x 1 0 0 0 0 x 21H 16位CEXn上升沿触发捕捉功能。 ; x 0 1 0 0 0 x 11H 16位CEXn下降沿触发捕捉功能。 ; x 1 1 0 0 0 x 31H 16位CEXn边沿(上、下沿)触发捕捉功能。 ; 1 0 0 1 0 0 x 49H 16位软件定时器。 ; 1 0 0 1 1 0 x 4DH 16位高速脉冲输出。 ; 1 0 0 0 0 1 0 42H 8位 PWM。 ;定义单片机管脚 LED_MCU_START EQU P1.7 LED_PCA_INT0 EQU P1.6 LED_PCA_INT1 EQU P1.5 ORG 0000H LJMP MAIN ORG 0033H ;interrupt 6(0,1,2,3,4,5,6) LJMP PCA_Interrupt ORG 0050H MAIN: MOV SP, #7FH CLR LED_MCU_START ;点亮 LED_MCU_START LED, 表示程序正在运行 LCALL PCA_Initiate ;初始化 PCA WAIT: SJMP WAIT ;跳转到本行,无限循环。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 75 PCA_Initiate: MOV CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作 ;PCA 时钟源为fosc/12 ;禁止 PCA 计数器溢出(CH,CL由 FFFFH 变为 0000H 时)中断 MOV CCON, #00H ;CF = 0,清0 PCA 计数器溢出中断请求标志位 ;CR = 0, 不允许 PCA 计数器计数 ;清0 PCA 各模块中断请求标志位,如 CCF1,CCF0 MOV CL, #00H ;清0 PCA 计数器 MOV CH, #00H ;设置模块 0 MOV CCAPM0, #11H ;设置 PCA 模块0 下降沿触发捕捉功能。 ; MOV CCAPM0, #21H ;如果送的是 #21h, 则 PCA 模块0 为上升沿触发。 ;设置模块 1 MOV CCAPM1, #31H ;设置 PCA 模块1 上升沿/下降沿均可触发的捕捉功能。 SETB EPCA_LVD ;开 PCA 中断和 LVD(低压检测)中断共享的总中断控制位 SETB EA ;开整个单片机所有中断共享的总中断控制位 SETB CR ;启动 PCA 计数器(CH,CL)计数 RET PCA_Interrupt: PUSH ACC PUSH PSW JNB CCF0, Not_PCA0_Else_PCA1 ;如果 CCF0 不等于 1 就不是 PCA 模块0 中断 ;就直接去判是否是 PCA 模块1 中断 ;模块0 中断服务程序 CPL LED_PCA_INT0 ;P1.6 LED变化一次, 表示PCA模块0 发生了一次中断 CLR CCF0 ;清 PCA 模块0 中断标志 Not_PCA0_Else_PCA1: JNB CCF1, PCA_Interrupt_Exit ;如果 CCF1 不等于 1 就不是 PCA 模块1 中断 ;就立即退出 ;模块1 中断服务程序 CPL LED_PCA_INT1 ;P1.5 LED变化一次, 表示PCA模块1 发生了一次中断 CLR CCF1 ;清 PCA 模块1 中断标志 PCA_Interrupt_Exit: POP PSW POP ACC RETI END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 76 ;使用 STC12C2052AD 系列单片机 PCA 功能做定时器的示例程序 ;使用 STC12C5410AD 系列单片机 PCA 功能做定时器的示例程序 ;晶振频率 Fosc = 18.432MHz,在P1.5输出脉冲宽度为 1 秒钟的方波 ;声明 STC12C2052AD和STC12C5410AD系列 MCU 特殊功能寄存器地址 IPH EQU 0B7H ;中断优先级高位寄存器 EPCA_LVD EQU IE.6 ;PCA 中断和 LVD(低压检测)中断共享的总中断控制位 CH EQU 0F9H ;PCA 计数器高8位。 CL EQU 0E9H ;PCA 计数器低8位。 CCON EQU 0D8H ;PCA 控制寄存器。 CCF0 EQU CCON.0 ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。 CCF1 EQU CCON.1 ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。 CCF2 EQU CCON.2 ;PCA 模块2 中断标志, 由硬件置位, 必须由软件清0。 CCF3 EQU CCON.3 ;PCA 模块3 中断标志, 由硬件置位, 必须由软件清0。 CCF4 EQU CCON.4 ;PCA 模块4 中断标志, 由硬件置位, 必须由软件清0。 CCF5 EQU CCON.5 ;PCA 模块5 中断标志, 由硬件置位, 必须由软件清0。 CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清0。 CF EQU CCON.7 ;PCA计数器溢出(CH,CL由 FFFFH 变为 0000H)标志, ;PCA计数器溢出后由硬件置位,必须由软件清0。 CMOD EQU 0D9H ;PCA 工作模式寄存器。 ;CMOD.7 CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。 ;CMOD.2 CPS1: PCA 计数器计数脉冲源选择位 1。 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。 ; CPS1 CPS0 ; 0 0 外部晶体频率/12。 ; 0 1 外部晶体频率/2。 ; 1 0 Timer 0 溢出脉冲, ; Timer 0 还可通过 AUXR寄存器设置成工作在 12T 或 1T 模式。 ; 1 1 从 ECI/P3.4 脚输入的外部时钟。 ;CMOD.0 ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。 PCA 功能做定时器的示例程序
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 77 CCAP0H EQU 0FAH ;PCA 模块0的捕捉/比较寄存器高 8 位。 CCAP1H EQU 0FBH ;PCA 模块1的捕捉/比较寄存器高 8 位。 CCAP2H EQU 0FCH ;PCA 模块2的捕捉/比较寄存器高 8 位。 CCAP3H EQU 0FDH ;PCA 模块3的捕捉/比较寄存器高 8 位。 CCAP4H EQU 0FEH ;PCA 模块4的捕捉/比较寄存器高 8 位。 CCAP5H EQU 0FFH ;PCA 模块5的捕捉/比较寄存器高 8 位。 CCAP0L EQU 0EAH ;PCA 模块0的捕捉/比较寄存器低 8 位。 CCAP1L EQU 0EBH ;PCA 模块1的捕捉/比较寄存器低 8 位。 CCAP2L EQU 0ECH ;PCA 模块2的捕捉/比较寄存器低 8 位。 CCAP3L EQU 0EDH ;PCA 模块3的捕捉/比较寄存器低 8 位。 CCAP4L EQU 0EEH ;PCA 模块4的捕捉/比较寄存器低 8 位。 CCAP5L EQU 0EFH ;PCA 模块5的捕捉/比较寄存器低 8 位。 PCA_PWM0 EQU 0F2H ;PCA 模块0 PWM 寄存器。 PCA_PWM1 EQU 0F3H ;PCA 模块1 PWM 寄存器。 PCA_PWM2 EQU 0F4H ;PCA 模块2 PWM 寄存器。 PCA_PWM3 EQU 0F5H ;PCA 模块3 PWM 寄存器。 PCA_PWM4 EQU 0F6H ;PCA 模块4 PWM 寄存器。 PCA_PWM5 EQU 0F7H ;PCA 模块5 PWM 寄存器。 ;PCA_PWMn: 7 6 5 4 3 2 1 0 ; - - - - - - EPCnH EPCnL ;B7-B2: 保留 ;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。 ;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。 CCAPM0 EQU 0DAH ;PCA 模块0的工作模式寄存器。 CCAPM1 EQU 0DBH ;PCA 模块1的工作模式寄存器。 CCAPM2 EQU 0DCH ;PCA 模块2的工作模式寄存器。 CCAPM3 EQU 0DDH ;PCA 模块3的工作模式寄存器。 CCAPM4 EQU 0DEH ;PCA 模块4的工作模式寄存器。 CCAPM5 EQU 0DFH ;PCA 模块5的工作模式寄存器。 ;CCAPMn: 7 6 5 4 3 2 1 0 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ;ECOMn = 1:允许比较功能。 ;CAPPn = 1:允许上升沿触发捕捉功能。 ;CAPNn = 1:允许下降沿触发捕捉功能。 ;MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。 ;TOGn = 1:当匹配情况发生时, CEXn 将翻转。 ;PWMn = 1:将 CEXn 设置为 PWM 输出。 ;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 78 ;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ; 0 0 0 0 0 0 0 00H 未启用任何功能。 ; x 1 0 0 0 0 x 21H 16位CEXn上升沿触发捕捉功能。 ; x 0 1 0 0 0 x 11H 16位CEXn下降沿触发捕捉功能。 ; x 1 1 0 0 0 x 31H 16位CEXn边沿(上、下沿)触发捕捉功能。 ; 1 0 0 1 0 0 x 49H 16位软件定时器。 ; 1 0 0 1 1 0 x 4DH 16位高速脉冲输出。 ; 1 0 0 0 0 1 0 42H 8位 PWM。 ;定义单片机管脚 LED_MCU_START EQU P1.7 LED_5mS_Flashing EQU P1.6 LED_1S_Flashing EQU P1.5 ;定义常量 ;Channe0_5mS_H, Channe0_5mS_L 的计算方法见 PCA 中断服务程序内的注释 Channe0_5mS_H EQU 1EH ;模块0 5mS 定时常数高位 Channe0_5mS_L EQU 00H ;模块0 5mS 定时常数低位 ;定义变量 Counter EQU 30H ;声明一个计数器,用来计数中断的次数 ORG 0000H LJMP MAIN ORG 0033H ;interrupt 6(0,1,2,3,4,5,6) LJMP PCA_interrupt ORG 0050H MAIN: CLR LED_MCU_START ;点亮 MCU 开始工作指示灯 MOV SP, #7FH MOV Counter, #0 ;清Counter计数器 ACALL PCA_Initiate ;初始化 PCA WAIT: SJMP WAIT ;跳转到本行,无限循环。 PCA_Initiate: MOV CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作 ;PCA 时钟源为fosc/12 ;禁止 PCA 计数器溢出(CH,CL由 FFFFH 变为 0000H 时)中断 MOV CCON, #00H ;CF = 0,清0 PCA 计数器溢出中断请求标志位 ;CR = 0, 不允许 PCA 计数器计数 ;清0 PCA 各模块中断请求标志位,如 CCF1,CCF0 MOV CL, #00H ;清0 PCA 计数器 MOV CH, #00H
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 79 ;Channe0_5mS_H, Channe0_5mS_L 的计算方法见 PCA 中断服务程序内的注释 MOV CCAP0L, #Channe0_5mS_L ;给 PCA 模块0 的 CCAP0L 置初值 MOV CCAP0H, #Channe0_5mS_H ;给 PCA 模块0 的 CCAP0H 置初值 MOV CCAPM0, #49H ;设置 PCA 模块0 为16位软件定时器,ECCF0=1允许PCA模块0中断 ;当[CH,CL]==[CCAP0H,CCAP0L]时,产生中断请求,CCF0=1,请求中断 SETB EPCA_LVD ;开 PCA 中断和 LVD(低压检测)中断共享的总中断控制位 SETB EA ;开整个单片机所有中断共享的总中断控制位 SETB CR ;启动 PCA 计数器(CH,CL)计数 RET PCA_Interrupt: PUSH ACC PUSH PSW CPL LED_5mS_Flashing ;本程序PCA模块0每5mS中断一次, 每次进中断将该灯状态取反 ;在本程序中[CH,CL]每12个时钟脉冲加1, 当[CH,CL] 增加到等于 [CCAP0H,CCAP0L]时 ;CCF0=1, 产生中断请求。如果每次 PCA 模块0 中断后, 在中断服务程序中给 ;[CCAP0H,CCAP0L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相 ;同的。本程序中这个"相同的数值" 就是 Channe0_5mS_H, Channe0_5mS_L ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 1E00H 次才是 5mS。 ;计算PCA 计数器计数多少次: ; Channe0_5mS_H, Channe0_5mS_L = T/( (1/Fosc)*12 ) ; = 7680 (10进制数) ; = 1E00H (16进制数) ; 即 Channe0_5mS_H = 1EH, Channe0_5mS_L = 00H ; Channe0_5mS_H, Channe0_5mS_L:每次给 [CCAP0H,CCAP0L] 增加的数值(步长) MOV A, #Channe0_5mS_L ;给[CCAP0H,CCAP0L] 增加一个数值 ADD A, CCAP0L MOV CCAP0L, A MOV A, #Channe0_5mS_H ADDC A, CCAP0H MOV CCAP0H, A CLR CCF0 ;清 PCA 模块0 中断标志 INC Counter ;中断次数计数器 + 1 MOV A, Counter CLR C SUBB A, #200 ;检测是否中断了 200 次(1秒) JC PCA_Interrupt_Exit ;有借位,表示 Counter 小于 200,立即跳转退出
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 80 MOV Counter, #0 ;已中断了 200 次,清 0 中断次数计数器 CPL LED_1S_Flashing ;在LED_1S_Flashing输出脉冲宽度为 1 秒钟的方波 PCA_Interrupt_Exit: POP PSW POP ACC RETI END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 81 PWM输出C语言示例 #include<reg52.h> sfr CCON = 0xD8; sfr CMOD = 0xD9; sfr CL = 0xE9; sfr CH = 0xF9; sfr CCAP0L = 0xEA; sfr CCAP0H = 0xFA; sfr CCAPM0 = 0xDA; sfr CCAPM1 = 0xDB; sbit CR = 0xDE; void main(void) CMOD = 0x02; // Setup PCA timer CL = 0x00; CH = 0x00; CCAP0L = 0xc0; //Set the initial value same as CCAP0H CCAP0H = 0xc0; //25% Duty Cycle CCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in PWM mode CR = 1; //Start PCA Timer. while(1){}; STC12C5410AD 系列单片机 PWM输出C语言示例
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 82 STC12C5410AD系列单片机 PCA/PWM新增特殊功能寄存器声明 ;STC12C5410AD特殊功能寄存器头文件, STC12_PCA_SFR.ASM ;声明 STC12C2052AD和STC12C5410AD系列 MCU 特殊功能寄存器地址 IPH EQU 0B7H ;中断优先级高位寄存器 EPCA_LVD EQU IE.6 ;PCA 中断和 LVD(低压检测)中断共享的总中断控制位 CH EQU 0F9H ;PCA 计数器高8位。 CL EQU 0E9H ;PCA 计数器低8位。 CCON EQU 0D8H ;PCA 控制寄存器。 CCF0 EQU CCON.0 ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。 CCF1 EQU CCON.1 ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。 CCF2 EQU CCON.2 ;PCA 模块2 中断标志, 由硬件置位, 必须由软件清0。 CCF3 EQU CCON.3 ;PCA 模块3 中断标志, 由硬件置位, 必须由软件清0。 CCF4 EQU CCON.4 ;PCA 模块4 中断标志, 由硬件置位, 必须由软件清0。 CCF5 EQU CCON.5 ;PCA 模块5 中断标志, 由硬件置位, 必须由软件清0。 CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清0。 CF EQU CCON.7 ;PCA计数器溢出(CH,CL由 FFFFH 变为 0000H)标志, ;PCA计数器溢出后由硬件置位,必须由软件清0。 CMOD EQU 0D9H ;PCA 工作模式寄存器。 ;CMOD.7 CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。 ;CMOD.2 CPS1: PCA 计数器计数脉冲源选择位 1。 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。 ; CPS1 CPS0 ; 0 0 外部晶体频率/12。 ; 0 1 外部晶体频率/2。 ; 1 0 Timer 0 溢出脉冲, ; Timer 0 还可通过 AUXR寄存器设置成工作在 12T 或 1T 模式。 ; 1 1 从 ECI/P3.4 脚输入的外部时钟。 ;CMOD.0 ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。 CCAP0H EQU 0FAH ;PCA 模块0的捕捉/比较寄存器高 8 位。 CCAP1H EQU 0FBH ;PCA 模块1的捕捉/比较寄存器高 8 位。 CCAP2H EQU 0FCH ;PCA 模块2的捕捉/比较寄存器高 8 位。 CCAP3H EQU 0FDH ;PCA 模块3的捕捉/比较寄存器高 8 位。 CCAP4H EQU 0FEH ;PCA 模块4的捕捉/比较寄存器高 8 位。 CCAP5H EQU 0FFH ;PCA 模块5的捕捉/比较寄存器高 8 位。 CCAP0L EQU 0EAH ;PCA 模块0的捕捉/比较寄存器低 8 位。 CCAP1L EQU 0EBH ;PCA 模块1的捕捉/比较寄存器低 8 位。 CCAP2L EQU 0ECH ;PCA 模块2的捕捉/比较寄存器低 8 位。 CCAP3L EQU 0EDH ;PCA 模块3的捕捉/比较寄存器低 8 位。 CCAP4L EQU 0EEH ;PCA 模块4的捕捉/比较寄存器低 8 位。 CCAP5L EQU 0EFH ;PCA 模块5的捕捉/比较寄存器低 8 位。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 83 PCA_PWM0 EQU 0F2H ;PCA 模块0 PWM 寄存器。 PCA_PWM1 EQU 0F3H ;PCA 模块1 PWM 寄存器。 PCA_PWM2 EQU 0F4H ;PCA 模块2 PWM 寄存器。 PCA_PWM3 EQU 0F5H ;PCA 模块3 PWM 寄存器。 PCA_PWM4 EQU 0F6H ;PCA 模块4 PWM 寄存器。 PCA_PWM5 EQU 0F7H ;PCA 模块5 PWM 寄存器。 ;PCA_PWMn: 7 6 5 4 3 2 1 0 ; - - - - - - EPCnH EPCnL ;B7-B2: 保留 ;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。 ;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。 CCAPM0 EQU 0DAH ;PCA 模块0的工作模式寄存器。 CCAPM1 EQU 0DBH ;PCA 模块1的工作模式寄存器。 CCAPM2 EQU 0DCH ;PCA 模块2的工作模式寄存器。 CCAPM3 EQU 0DDH ;PCA 模块3的工作模式寄存器。 CCAPM4 EQU 0DEH ;PCA 模块4的工作模式寄存器。 CCAPM5 EQU 0DFH ;PCA 模块5的工作模式寄存器。 ;CCAPMn: 7 6 5 4 3 2 1 0 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ;ECOMn = 1:允许比较功能。 ;CAPPn = 1:允许上升沿触发捕捉功能。 ;CAPNn = 1:允许下降沿触发捕捉功能。 ;MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。 ;TOGn = 1:当匹配情况发生时, CEXn 将翻转。 ;PWMn = 1:将 CEXn 设置为 PWM 输出。 ;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。 ;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ; 0 0 0 0 0 0 0 00H 未启用任何功能。 ; x 1 0 0 0 0 x 21H 16位CEXn上升沿触发捕捉功能。 ; x 0 1 0 0 0 x 11H 16位CEXn下降沿触发捕捉功能。 ; x 1 1 0 0 0 x 31H 16位CEXn边沿(上、下沿)触发捕捉功能。 ; 1 0 0 1 0 0 x 49H 16位软件定时器。 ; 1 0 0 1 1 0 x 4DH 16位高速脉冲输出。 ; 1 0 0 0 0 1 0 42H 8位 PWM。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 84 ;STC12C5410AD 系列单片机 PCA 功能¢PPWM 示例程序,使用18.432MHz晶振。 #include <..\\STC12_PCA_SFR.ASM> ;定义 PCA 特殊功能寄存器 ;定义常量 ;pulse_width_MAX = pulse_width_MIN 时, 输出脉冲宽度不变。 pulse_width_MAX EQU 0F0H ;PWM 脉宽最大值, 占空比 = 93.75% pulse_width_MIN EQU 10H ;PWM 脉宽最小值, 占空比 = 6.25% step EQU 38H ;PWM 脉宽变化步长 ;定义变量 pulse_width EQU 30H ORG 0000H AJMP main ORG 0050H main: MOV SP, #0E0H ACALL PCA_init main_loop: ACALL PWM SJMP main_loop PCA_init: MOV CMOD, #80H; ;PCA 在空闲模式下停止 PCA 计数器工作 ;PCA 时钟模式为fosc/12 ;禁止 PCA 计数器溢出中断 MOV CCON, #00H ;禁止 PCA 计数器工作, 清除中断标志、计数器溢出标志 MOV CL, #00H ;清0计数器 MOV CH, #00H ;设置模块 0为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.7(第11脚)输出 MOV CCAPM0, #42H ;* 示例程序核心语句, ---->0100,0010 MOV PCA_PWM0, #00H ;* 示例程序核心语句 ; MOV PCA_PWM0, #03H ;释放本行注释, PWM 输出就一直是 0, 无脉冲。 ;设置模块 1为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.5(第9脚)输出 MOV CCAPM1, #42H ;* 示例程序核心语句, ---->0100,0010 MOV PCA_PWM1, #00H ;* 示例程序核心语句 STC12C5410AD系列单片机 PCA 功能 PWM 输出程序
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 85 ; MOV PCA_PWM1, #03H ;释放本行注释, PWM 输出就一直是 0, 无脉冲。 SETB EPCA_LVD ;开 PCA 中断 SETB EA ;开总中断 SETB CR ;将PCA 计数器打开 RET PWM: ;用示波器进行观察较为理想。 ;逐渐变亮。 MOV A, #pulse_width_MIN ;为输出脉冲宽度设置初值。 MOV pulse_width, A ;pulse_width 数字越大脉宽越窄,P3.5 的 LED 越亮。 PWM_loop1: MOV A, pulse_width ;判是否到达最大值。 CLR C SUBB A, #pulse_width_MAX JNC PWM_a ;到达最大值就转到逐渐变暗。 MOV A, pulse_width ;设置脉冲宽度。数字越大、脉宽越窄、LED 越亮。 MOV CCAP0H, A ;* 示例程序核心语句 MOV CCAP1H, A ;* 示例程序核心语句 CPL A ;用 P1 口的 LED 显示占空比, MOV P1, A ;占空比 = ( pulse_width/256 ) * 100% 。 MOV A, pulse_width ;计算下一次输出脉冲宽度数值。 ADD A, #step MOV pulse_width, A ACALL delay ;在一段时间内保持输出脉冲宽度不变。 SJMP PWM_loop1 PWM_a: ;逐渐变暗。 MOV A, #pulse_width_MAX ;为输出脉冲宽度设置初值。 MOV pulse_width, A ;pulse_width 数字越大脉宽越窄,P3.5 的 LED 越亮。 PWM_loop2: MOV A, pulse_width ;判是否到达最小值。 CLR C SUBB A, #pulse_width_MIN JC PWM_b ;到达最小值就返回。 JZ PWM_b ;到达最小值就返回。 MOV A, pulse_width ;设置脉冲宽度。数字越大、脉宽越窄、LED 越亮。 MOV CCAP0H, A ;* 示例程序核心语句 MOV CCAP1H, A ;* 示例程序核心语句 CPL A ;用 P1 口的 LED 显示占空比,
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 86 MOV P1, A ;占空比 = ( pulse_width/256 ) * 100% 。 MOV A, pulse_width ;计算下一次输出脉冲宽度数值。 CLR C SUBB A, #step MOV pulse_width, A ACALL delay ;在一段时间内保持输出脉冲宽度不变。 SJMP PWM_loop2 PWM_b: RET delay: CLR A MOV R1, A MOV R2, A MOV R3, #80H delay_loop: NOP NOP NOP DJNZ R1, delay_loop DJNZ R2, delay_loop DJNZ R3, delay_loop RET END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 87 ; 输出 125.0KHz 的脉冲(晶体频率 = 33.000MHz) ;示例程序: 使用 功能, 在P3.5(第9脚)输出 ; 125.0KHz 的方脉冲。 ; 程序中定义的常量 CCAPnL_Value 决定了 PCA 模块n 输出脉冲的频率 f: ; f = Fosc / (4 * CCAPnL_Value ) ; 式中 Fosc = 晶体频率 ; CCAPnL_Value = Fosc / (4 * f) ; 如算出的结果不是整数,则进行取整 CCAPnL_Value = INT(Fosc / (4 * f) + 0.5) ; INT() 为取整数运算, 直接去掉小数。 ;定义 STC12C5410 系列 MCU 特殊功能寄存器 IPH EQU 0B7H ;中断优先级高位寄存器 EPCA_LVD EQU IE.6 ;PCA/LVD 中断允许位。 ;要打开 PCA 中断还要打开相应的 ECF,ECCF0,ECCF1 位 ;要打开 LVD 中断还要打开相应的 ELVDI 位 CH EQU 0xF9 ;PCA 计数器高8位。 CL EQU 0xE9 ;PCA 计数器低8位。 CCON EQU 0D8H ;PCA 控制寄存器。 CCF0 EQU CCON.0 ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。 CCF1 EQU CCON.1 ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。 CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清0。 CF EQU CCON.7 ;PCA计数器溢出标志,由硬件或软件置位,必须由软件清0。 CMOD EQU 0D9H ;PCA 工作模式寄存器。 ;CMOD.7 CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。 ;CMOD.2 CPS1: PCA 计数器脉冲源选择位 1。 ;CMOD.1 CPS0: PCA 计数器脉冲源选择位 0。 ; CPS1 CPS0 ; 0 0 内部时钟, fosc/12。 ; 0 1 内部时钟, fosc/2。 ; 1 0 Timer0 溢出。 ; 1 1 由 ECI/P3.4 脚输入的外部时钟。 ;CMOD.0 ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。 STC12C5410AD 系列单片机 PCA 的高速脉冲输出
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 88 CCAP0H EQU 0FAH ;PCA 模块0的捕捉/比较寄存器高 8 位。 CCAP1H EQU 0FBH ;PCA 模块1的捕捉/比较寄存器高 8 位。 CCAP0L EQU 0EAH ;PCA 模块0的捕捉/比较寄存器低 8 位。 CCAP1L EQU 0EBH ;PCA 模块1的捕捉/比较寄存器低 8 位。 PCA_PWM0 EQU 0F2H ;PCA 模块0 PWM 寄存器。 PCA_PWM1 EQU 0F3H ;PCA 模块1 PWM 寄存器。 ;PCA_PWMn: 7 6 5 4 3 2 1 0 ; - - - - - - EPCnH EPCnL ;B7-B2: 保留 ;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。 ;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。 CCAPM0 EQU 0DAH ;PCA 模块0的工作模式寄存器。 CCAPM1 EQU 0DBH ;PCA 模块1的工作模式寄存器。 ;CCAPMn: 7 6 5 4 3 2 1 0 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ;ECOMn = 1:允许比较功能。 ;CAPPn = 1:允许上升沿触发捕捉功能。 ;CAPNn = 1:允许下降沿触发捕捉功能。 ;MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。 ;TOGn = 1:当匹配情况发生时, CEXn 将翻转。 ;PWMn = 1:将 CEXn 设置为 PWM 输出。 ;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。 ;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ; 0 0 0 0 0 0 0 0x00 未启用任何功能。 ; x 1 0 0 0 0 x 0x21 16位CEXn上升沿触发捕捉功能。 ; x 0 1 0 0 0 x 0x11 16位CEXn下降沿触发捕捉功能。 ; x 1 1 0 0 0 x 0x31 16位CEXn边沿(上、下沿)触发捕捉功能。 ; 1 0 0 1 0 0 x 0x49 16位软件定时器。 ; 1 0 0 1 1 0 x 0x4d 16位高速脉冲输出。 ; 1 0 0 0 0 1 0 0x42 8位 PWM。 ;定义常量 CCAPnL_Value ;CCAPnL_Value 决定了模块1 输出脉冲的频率 f: ; f = Fosc / (4 * CCAPnL_Value ) ; 式中 Fosc = 晶体频率 ; 或 CCAPnL_Value = INT(Fosc / (4 * f) + 0.5) ; INT() 为取整数运算。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 89 ; 假定 fosc = 20MHz时, 要求 PCA 高速脉冲输出 125KHz 的方波: ; CCAPnL_Value = INT( 20000000/4/125000 + 0.5) ; = INT( 40 + 0.5) ; = INT( 40.5 ) ; = 40 ; = 28H ; 输出脉冲的频率 f = 20000000/4/40 ; = 125000 (125.0KHz) ;CCAPnL_Value EQU 25H ;25H = 37, fosc = 18.432MHz时, 高速脉冲输出 = 124.540KHz ;CCAPnL_Value EQU 28H ;28H = 40, fosc = 20MHz时, 高速脉冲输出 = 125KHz CCAPnL_Value EQU 42H ;42H = 66, fosc = 33MHz时, 高速脉冲输出 = 125KHz ORG 0000H AJMP main ORG 0033H ;interrupt 6 PCA_interrupt: PUSH ACC ;4 Clock PUSH PSW ;4 Clock CLR CCF1 ;1 Clock, 清 PCA 模块 1 中断标志 MOV A, #CCAPnL_Value ;2 Clock ADD A, CCAP1L ;3 Clock MOV CCAP1L, A ;3 Clock CLR A ;1 Clock ADDC A, CCAP1H ;3 Clock MOV CCAP1H, A ;3 Clock POP PSW ;3 Clock POP ACC ;3 Clock RETI ;4 Clock ;此中断服务程序共用 34 Clock, 进入中断服务程序还要数个 Clock ORG 0060H main: MOV SP, #0E0H ;设置堆栈指针 ACALL PCA_init ;调用 PCA 初始化程序 main_loop: NOP NOP NOP SJMP main_loop
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 90 PCA_init: ;PCA 初始化程序 MOV CMOD, #00000010B ;02H,PCA 计数器在空闲模式下继续工作, CIDL = 0 ;PCA 计数器计数脉冲来源为系统时钟源 fosc/2, CPS1, CPS0 = (0,1) ;禁止PCA计数器(CH, CL)计数溢出(CH, CL=0000H)中断, ECF = 0 MOV CCON, #00H ;清除 PCA 计数器(CH, CL)计数溢出中断标志, CF = 0 ;停止 PCA 计数器(CH, CL)计数, CR = 0 ;清除 模块1 中断标志, CCF1 = 0 ;清除 模块0 中断标志, CCF0 = 0 MOV CH, #00H ;清0 PCA 计数器高 8 位 MOV CL, #00H ;清0 PCA 计数器低 8 位 ;设置模块1为高速脉冲输出模式, 脉冲在P3.5(第9脚)输出 MOV CCAPM1, #01001101B ;4DH, 设置 PCA 模块1为高速脉冲输出模式,允许触发中断 ;CCAPMn: 7 6 5 4 3 2 1 0 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ; 0 1 0 0 1 1 0 1 MOV CCAP1L, #CCAPnL_Value ;给模块1置初值, 此句不可少 MOV CCAP1H, #0 ;给模块1置初值, 此句不可少 ;其它中断服务可能会使模块 1 高速脉冲输出的某个周期突然变得很大 ,因此必须将 ;PCA 中断的优先级设置为唯一的最高级, 其它中断的优先级都要比它低。 MOV IPH, #01000000B ;PCA 中断的优先级设置为唯一的最高级 MOV IP, #01000000B SETB EPCA_LVD ;开 PCA 中断 SETB EA ;开总中断 SETB CR ;将PCA 计数器打开 RET END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 91 ;使用 定时器 0的溢出,作为 PCA模块的时钟输入源,利用 PCA模块的多种功能 ;实现了可调频率的 PWM输出(还可以改变占空比),同时利用 PCA模块再实现了定时器功能 ;使用 STC12C2052AD 系列单片机 PCA模块的模块0的PWM功能 做PWM输出的示例程序 ;使用 STC12C2052AD 系列单片机 PCA模块的模块1的16位软定时器功能做定时器的示例程序 ;使用 STC12C5410AD 系列单片机 PCA模块的模块0的PWM功能 做PWM输出的示例程序 ;使用 STC12C5410AD 系列单片机 PCA模块的模块1的16位软定时器功能做定时器的示例程序 ;晶振频率 Fosc = 18.432MHz,在P1.5输出脉冲宽度为 1 秒钟的方波 ;声明 STC12C2052AD和STC12C5410AD系列 MCU 特殊功能寄存器地址 IPH EQU 0B7H ;中断优先级高位寄存器 EPCA_LVD EQU IE.6 ;PCA 中断和 LVD(低压检测)中断共享的总中断控制位 CH EQU 0F9H ;PCA 计数器高8位。 CL EQU 0E9H ;PCA 计数器低8位。 CCON EQU 0D8H ;PCA 控制寄存器。 CCF0 EQU CCON.0 ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。 CCF1 EQU CCON.1 ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。 CCF2 EQU CCON.2 ;PCA 模块2 中断标志, 由硬件置位, 必须由软件清0。 CCF3 EQU CCON.3 ;PCA 模块3 中断标志, 由硬件置位, 必须由软件清0。 CCF4 EQU CCON.4 ;PCA 模块4 中断标志, 由硬件置位, 必须由软件清0。 CCF5 EQU CCON.5 ;PCA 模块5 中断标志, 由硬件置位, 必须由软件清0。 CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清0。 CF EQU CCON.7 ;PCA计数器溢出(CH,CL由 FFFFH 变为 0000H)标志, ;PCA计数器溢出后由硬件置位,必须由软件清0。 CMOD EQU 0D9H ;PCA 工作模式寄存器。 ;CMOD.7 CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。 ;CMOD.2 CPS1: PCA 计数器计数脉冲源选择位 1。 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。 ; CPS1 CPS0 ; 0 0 外部晶体频率/12。 ; 0 1 外部晶体频率/2。 ; 1 0 Timer 0 溢出脉冲, ; Timer 0 还可通过 AUXR寄存器设置成工作在 12T 或 1T 模式。 ; 1 1 从 ECI/P3.4 脚输入的外部时钟。 ;CMOD.0 ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。 利用定时器 0的溢出作为 PCA模块的时钟输入源 ---利用PCA模块0实现了可调频率的 PWM输出 ---利用PCA模块1重新实现了 16位定时器
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 92 CCAP0H EQU 0FAH ;PCA 模块0的捕捉/比较寄存器高 8 位。 CCAP1H EQU 0FBH ;PCA 模块1的捕捉/比较寄存器高 8 位。 CCAP2H EQU 0FCH ;PCA 模块2的捕捉/比较寄存器高 8 位。 CCAP3H EQU 0FDH ;PCA 模块3的捕捉/比较寄存器高 8 位。 CCAP4H EQU 0FEH ;PCA 模块4的捕捉/比较寄存器高 8 位。 CCAP5H EQU 0FFH ;PCA 模块5的捕捉/比较寄存器高 8 位。 CCAP0L EQU 0EAH ;PCA 模块0的捕捉/比较寄存器低 8 位。 CCAP1L EQU 0EBH ;PCA 模块1的捕捉/比较寄存器低 8 位。 CCAP2L EQU 0ECH ;PCA 模块2的捕捉/比较寄存器低 8 位。 CCAP3L EQU 0EDH ;PCA 模块3的捕捉/比较寄存器低 8 位。 CCAP4L EQU 0EEH ;PCA 模块4的捕捉/比较寄存器低 8 位。 CCAP5L EQU 0EFH ;PCA 模块5的捕捉/比较寄存器低 8 位。 PCA_PWM0 EQU 0F2H ;PCA 模块0 PWM 寄存器。 PCA_PWM1 EQU 0F3H ;PCA 模块1 PWM 寄存器。 PCA_PWM2 EQU 0F4H ;PCA 模块2 PWM 寄存器。 PCA_PWM3 EQU 0F5H ;PCA 模块3 PWM 寄存器。 PCA_PWM4 EQU 0F6H ;PCA 模块4 PWM 寄存器。 PCA_PWM5 EQU 0F7H ;PCA 模块5 PWM 寄存器。 ;PCA_PWMn: 7 6 5 4 3 2 1 0 ; - - - - - - EPCnH EPCnL ;B7-B2: 保留 ;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。 ;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。 CCAPM0 EQU 0DAH ;PCA 模块0的工作模式寄存器。 CCAPM1 EQU 0DBH ;PCA 模块1的工作模式寄存器。 CCAPM2 EQU 0DCH ;PCA 模块2的工作模式寄存器。 CCAPM3 EQU 0DDH ;PCA 模块3的工作模式寄存器。 CCAPM4 EQU 0DEH ;PCA 模块4的工作模式寄存器。 CCAPM5 EQU 0DFH ;PCA 模块5的工作模式寄存器。 ;CCAPMn: 7 6 5 4 3 2 1 0 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ;ECOMn = 1:允许比较功能。 ;CAPPn = 1:允许上升沿触发捕捉功能。 ;CAPNn = 1:允许下降沿触发捕捉功能。 ;MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。 ;TOGn = 1:当匹配情况发生时, CEXn 将翻转。 ;PWMn = 1:将 CEXn 设置为 PWM 输出。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 93 ;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。 ;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn ; 0 0 0 0 0 0 0 00H 未启用任何功能。 ; x 1 0 0 0 0 x 21H 16位CEXn上升沿触发捕捉功能。 ; x 0 1 0 0 0 x 11H 16位CEXn下降沿触发捕捉功能。 ; x 1 1 0 0 0 x 31H 16位CEXn边沿(上、下沿)触发捕捉功能。 ; 1 0 0 1 0 0 x 49H 16位软件定时器。 ; 1 0 0 1 1 0 x 4DH 16位高速脉冲输出。 ; 1 0 0 0 0 1 0 42H 8位 PWM。 ;定义单片机管脚 LED_MCU_START EQU P1.7 LED_5mS_Flashing EQU P1.6 LED_1S_Flashing EQU P1.5 ;定义常量 ;Channe1_5mS_H, Channe1_5mS_L 的计算方法见 PCA 中断服务程序内的注释 ;用定时器0 的溢出率作 PCA 计数器(CH,CL)的时钟源时 ;Channe1_5mS_H EQU 03H ;PCA 模块1 5mS 定时常数高位, Fosc = 18.432 Channe1_5mS_H EQU 01H ;PCA 模块1 5mS 定时常数高位, Fosc = 18.432 Channe1_5mS_L EQU 00H ;PCA 模块1 5mS 定时常数低位, Fosc = 18.432 ;Channe1_5mS_H EQU 03H ;PCA 模块1 5mS 定时常数高位, Fosc = 22.1184 ;Channe1_5mS_L EQU 099H ;PCA 模块1 5mS 定时常数低位, Fosc = 22.1184 ;内部时钟频率(fosc)/12 作 PCA 计数器(CH,CL)的时钟源 ;Channe1_5mS_H EQU 1EH ;PCA 模块1 5mS 定时常数高位 ;Channe1_5mS_L EQU 00H ;PCA 模块1 5mS 定时常数低位 Timer0_Reload_1 EQU 0F6H ;Timer0 自动重装数 = -10 Timer0_Reload_2 EQU 0ECH ;Timer0 自动重装数 = -20 PWM_PULSE_WIDTH EQU 0FFH ;数字越大脉宽越窄(占空比越小),P3.5 的 LED 越亮。 ;定义变量 Counter EQU 30H ;声明一个计数器,用来计数中断的次数 ORG 0000H LJMP MAIN ORG 0033H ;interrupt 6(0,1,2,3,4,5,6) LJMP PCA_interrupt
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 94 ORG 0050H MAIN: CLR LED_MCU_START ;点亮 MCU 开始工作指示灯 MOV SP, #7FH MOV Counter, #0 ;清Counter计数器 ACALL PCA_Initiate ;初始化 PCA ACALL Timer0_Initiate ;初始化 T0 MAIN_Loop: MOV TH0, #Timer0_Reload_1 ;T0溢出率高 MOV TL0, #Timer0_Reload_1 MOV A, #PWM_PULSE_WIDTH ;亮, 数字越大 PWM 占空比越小,P3.5 的 LED 越亮。 MOV CCAP0H, A ACALL delay ;请注意T0溢出率变低后定时器脉冲的 LED 闪烁速度变慢, 而 PWM 的 LED 亮度未改变 MOV TH0, #Timer0_Reload_2 ;T0溢出率低 MOV TL0, #Timer0_Reload_2 ACALL delay MOV TH0, #Timer0_Reload_1 ;T0溢出率高 MOV TL0, #Timer0_Reload_1 MOV A, #PWM_PULSE_WIDTH ACALL RL_A ;改变 PWM 占空比 ACALL RL_A MOV CCAP0H, A ;较亮, 数字越大 PWM 占空比越小,P3.5 的 LED 越亮 ACALL delay ;请注意T0溢出率变低后定时器脉冲的 LED 闪烁速度变慢, 而 PWM 的 LED 亮度未改变 MOV TH0, #Timer0_Reload_2 ;T0溢出率低 MOV TL0, #Timer0_Reload_2 ACALL delay MOV TH0, #Timer0_Reload_1 ;T0溢出率高 MOV TL0, #Timer0_Reload_1 MOV A, #PWM_PULSE_WIDTH ACALL RL_A ;改变 PWM 占空比 ACALL RL_A ACALL RL_A ACALL RL_A MOV CCAP0H, A ;暗, 数字越大 PWM 占空比越小,P3.5 的 LED 越亮 ACALL delay
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 95 ;请注意T0溢出率变低后定时器脉冲的 LED 闪烁速度变慢, 而 PWM 的 LED 亮度未改变 MOV TH0, #Timer0_Reload_2 ;T0溢出率低 MOV TL0, #Timer0_Reload_2 ACALL delay SJMP MAIN_Loop ;无限循环。 RL_A: CLR C RRC A RET Timer0_Initiate: ;初始化 T0, 其溢出脉冲作 PCA 计数器(CH,CL)的时钟源 MOV TMOD, #02H ;设置定时器0 为自动重装工作模式 MOV TH0, #Timer0_Reload_1 MOV TL0, #Timer0_Reload_1 SETB TR0 ;启动定时器0 RET PCA_Initiate: ; MOV CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作 ; ;PCA 时钟源为fosc/12 ; ;禁止 PCA 计数器溢出(CH,CL由 FFFFH 变为 0000H 时)中断 MOV CMOD, #10000100B ;PCA 在空闲模式下停止 PCA 计数器工作 ;PCA 时钟源为 定时器0 (T0) 的溢出率 ;禁止 PCA 计数器溢出(CH,CL由 FFFFH 变为 0000H 时)中断 MOV CCON, #00H ;CF = 0,清0 PCA 计数器溢出中断请求标志位 ;CR = 0, 不允许 PCA 计数器计数 ;清0 PCA 各模块中断请求标志位,如 CCF1,CCF0 MOV CL, #00H ;清0 PCA 计数器 MOV CH, #00H ;设置模块0为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.7(第11脚)输出 MOV CCAPM0, #42H ;* 示例程序核心语句, 设置模块0为 8 位 PWM输出模式 MOV PCA_PWM0, #00H ;* 示例程序核心语句, 清 0 PWM 模式下的第 9 位 ; MOV PCA_PWM0, #03H ;释放本行注释, PWM 输出就一直是 0, 无脉冲。 MOV CCAP0H, #PWM_PULSE_WIDTH ;*** 示例程序核心语句
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 96 ;设置 PCA 模块1 ;Channe1_5mS_H, Channe1_5mS_L 的计算方法见 PCA 中断服务程序内的注释 MOV CCAP1L, #Channe1_5mS_L ;给 PCA 模块1 的 CCAP1L 置初值 MOV CCAP1H, #Channe1_5mS_H ;给 PCA 模块1 的 CCAP1H 置初值 MOV CCAPM1, #49H ;设置 PCA 模块1 为16位软件定时器,ECCF1=1允许PCA模块1中断 ;当[CH,CL]==[CCAP1H,CCAP1L]时,产生中断请求,CCF1=1,请求中断 SETB EPCA_LVD ;开 PCA 中断和 LVD(低压检测)中断共享的总中断控制位 SETB EA ;开整个单片机所有中断共享的总中断控制位 SETB CR ;启动 PCA 计数器(CH,CL)计数 RET PCA_Interrupt: PUSH ACC PUSH PSW CPL LED_5mS_Flashing ;本程序PCA模块1每5mS中断一次, 每次进中断将该灯状态取反 ;用定时器0 的溢出率作 PCA 计数器(CH,CL)的时钟源时, 计算 Channe1_5mS_H, Channe1_5mS_L ;在本程序中定时器 0 每12个时钟脉冲加1, 定时器0每加 10 次后产生 1 次溢出, 即每 ;120 个时钟脉冲 PCA 计数器(CH,CL)加1。当[CH,CL] 增加到等于 [CCAP1H,CCAP1L]时 ;CCF0=1, PCA 模块1产生中断请求。如果每次 PCA 模块1 中断后, 在中断服务程序中给 ;[CCAP1H,CCAP1L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相 ;同的。本程序中这个"相同的数值" 就是 Channe1_5mS_H, Channe1_5mS_L ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 300H 次等于 5mS。 ; Channe1_5mS_H, Channe1_5mS_L = T/( (1/Fosc)*120 ) ; = 768 (10进制数) ; = 300H (16进制数) ; 即 Channe1_5mS_H = 03H, Channe1_5mS_L = 00H ; Channe1_5mS_H, Channe1_5mS_L:每次给 [CCAP1H,CCAP1L] 增加的数值(步长) ;内部时钟频率(fosc)/12 作 PCA 计数器(CH,CL)的时钟源,计算 Channe1_5mS_H,Channe1_5mS_L ;在本程序中[CH,CL]每12个时钟脉冲加1, 当[CH,CL] 增加到等于 [CCAP1H,CCAP1L]时 ;CCF0=1, PCA 模块1产生中断请求。如果每次 PCA 模块1 中断后, 在中断服务程序中给 ;[CCAP1H,CCAP1L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相 ;同的。本程序中这个"相同的数值" 就是 Channe1_5mS_H, Channe1_5mS_L ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 1E00H 次才是 5mS。 ; Channe1_5mS_H, Channe1_5mS_L = T/( (1/Fosc)*12 ) ; = 7680 (10进制数) ; = 1E00H (16进制数) ; 即 Channe1_5mS_H = 1EH, Channe1_5mS_L = 00H ; Channe1_5mS_H, Channe1_5mS_L:每次给 [CCAP1H,CCAP1L] 增加的数值(步长)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 97 MOV A, #Channe1_5mS_L ;给[CCAP1H,CCAP1L] 增加一个数值 ADD A, CCAP1L MOV CCAP1L, A MOV A, #Channe1_5mS_H ADDC A, CCAP1H MOV CCAP1H, A CLR CCF1 ;清 PCA 模块1 中断标志 INC Counter ;中断次数计数器 + 1 MOV A, Counter CLR C SUBB A, #100 ;检测是否中断了 100 次(0.5秒) JC PCA_Interrupt_Exit ;有借位,表示 Counter 小于 100,立即跳转退出 MOV Counter, #0 ;已中断了 100 次,清 0 中断次数计数器 CPL LED_1S_Flashing ;在LED_1S_Flashing输出脉冲宽度为 0.5 秒钟的方波 PCA_Interrupt_Exit: POP PSW POP ACC RETI delay: CLR A MOV R1, A MOV R2, A MOV R3, #80H delay_loop: NOP NOP NOP DJNZ R1, delay_loop DJNZ R2, delay_loop DJNZ R3, delay_loop RET END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 98 PCON寄存器的高级应用 ,上电复位标志 ,进入掉电模式 POF:上电复位标志位 ,单片机停电后 ,上电复位标志位为 1,可由软件清 0。 实际应用 :要判断是上电复位 (冷启动),还是外部复位脚输入复位信号产生的复位 ,还是内部看门 狗复位 ,可通过如下方法来判断 : PD:将其置 1时,进入 Power Down模式,可由外部中断低电平触发或下降沿触发中断模式唤醒 。 进入掉电模式时 ,外部时钟停振 ,CPU、定时器、串行口全部停止工作 ,只有外部中断继续工作 。 IDL:将其置1时,进入IDLE模式(空闲),除CPU不工作外,其余仍继续工作,可由任何一个中断唤醒。 现C版本开始大量供货,C版本IDLE模式可正常使用(原A版本和 B版本建议不要用 IDLE模式)。 MnemonicAddName 7 6 5 4 3 2 1 0 Reset value PCON 87hPower ControlSMOD SMOD0 LVDFPOF GF1GF0 PD IDL0011,0000 将POF清0 外部手动复位 或看门狗复位 是 POF=1 冷启动 上电复位 否 POF=0 在初始化程序 , 判POF是否为1
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 99 ;Wake Up Idle and Wake Up Power Down ORG 0000H AJMP MAIN ORG 0003H int0_interrupt: CLR P1.7 ;点亮 P1.7 LED 表示已响应 int0 中断 ACALL delay ;延时是为了便于观察, 实际应用不需延时 CLR EA ;关闭中断, 简化实验. 实际应用不需关闭中断 RETI ORG 0013H int1_interrupt: CLR P1.6 ;点亮 P1.6 LED 表示已响应 int1 中断 ACALL delay ;延时是为了便于观察, 实际应用不需延时 CLR EA ;关闭中断, 简化实验. 实际应用不需关闭中断 RETI ORG 0100H delay: CLR A MOV R0, A MOV R1, A MOV R2, #02 delay_loop: DJNZ R0, delay_loop DJNZ R1, delay_loop DJNZ R2, delay_loop RET main: MOV R3, #0 ;P1 LED 递增方式变化, 表示程序开始运行 main_loop: MOV A, R3 CPL A MOV P1, A ACALL delay STC12C5410AD系列1T单片机通过外部中断从掉电模式唤醒
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 100 INC R3 MOV A, R3 SUBB A, #18H JC main_loop MOV P1, #0FFH ;熄灭全部灯表示进入 Power Down 状态 CLR IT0 ;设置低电平激活外部中断 ; SETB IT0 SETB EX0 ;允许外部中断0 CLR IT1 ;设置低电平激活外部中断 ; SETB IT1 SETB EX1 ;允许外部中断1 ; SETB ET0 ;如果是STC12C2052AD系列A版本, ;要由外部中断 1唤醒,“ET0=1”是必须的,硬件就这样做的,C版本就不需要 ;外部中断0就无此必要,建议Powerdown用外部中断0唤醒 SETB EA ;开中断, 若不开中断就不能唤醒 Power Down ;下条语句将使 MCU 进入 idle 状态或 Power Down 状态 ;低电平激活外部中断可以将 MCU 从 Power Down 状态中唤醒 ;其方法为:将外部中断脚拉低 MOV A, PCON ;令 PD=1, 进入 Power Down 状态, PD = PCON.2 ORL A, #02H MOV PCON, A MOV PCON, #01H ;删除本语句前的";", 同时将前3条语句前加上注释符号 ";", ;令 IDL=1, 可进入 idle 状态, IDL = PCON.1 MOV P1, #0DFH ;请注意: ; 1.外部中断使MCU退出 Power Down 状态,执行本条指令后 ;响应中断, 表现为P1.5与P1.7的LED同时亮(INT0唤醒) ; 2.外部中断使MCU退出 idle 状态,先响应中断然后再执行本 ;条指令, 表现为P1.7的LED先亮(INT0唤醒)P1.5的LED后亮 WAIT1: SJMP WAIT1 ;跳转到本语句, 停机 END ;A版本和B版本建议不要用 IDLE模式,现C版本可以正常使用
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 101 ※STC12C5410AD系列单片机最新的 C版本已开始大量供货 ,已解决此问题,B版本 也无问题,只有 A版本需要注意 针对 A版本如下应用注意事项 : STC12Cxx 要Power Down < 0.1uA, 进入 Power Down 之前 如果您系统外部所接的口是输入 ,我们 STC12Cxx 是输出, 请将我们的该 I/O 设为 Push-Pull输出 外部是低,你就要为低; 外部是高,你就要为高, 否则就 > 0.1uA 如果是后续的版本 ,不一定要设置成 Push-Pull输出,用弱上拉就可以了 。 如果您系统外部所接的口是输出 ,我们 STC12Cxx 是输入, 请将我们的该 I/O 设为 Only-Input,高阻仅为输入 如果是后续的版本 ,不一定要设置成 Only-Input输出,用弱上拉就可以了 。 如果您系统外部所接的口是高阻 ,我们 STC12Cxx , 请将我们的该 I/O 设为 Push-Pull输出 请不要将我们的该 I/O 设为 Only-Input/高阻 如果是后续的版本 ,不一定要设置成 Push-Pull输出,用弱上拉就可以了 。 现在 C版本已开始供货 ,定货时指定 C版本就可以了 进入掉电模式前的 I/O设置特别注意事项 ---仅针对 A版本,现供货的是最新版本 C版本
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 102 Absolute Maximum Ratings Parameter Symbol MIN MAX UNIT Storage temperatureTST -55 +125 ℃ Operating Temperature(I)TA -40 +85 ℃ Operating Temperature(C)TA 0 +70 ℃ DC Power Supply(5V MCU)VDD - VSS -0.3 +6.0 V DC Power Supply(3V MCU)VDD - VSS -0.3 +4.0 V Voltage on any Pin -0.5 +5.5 V
ELECTRICAL CHARACTERISTICS
ConditionMin.Typ.Max.Unit VDD Operating Voltage3.4 5.0 5.5 V IPWDN Power Down Current <0.1 uA 5V IIDLE Idle Current 3.0 mA 5V ICC Operating Current 4 mA20 mA 5V VIL1 Input low voltage (P0,P1,P2,P3) 0.8 V 5V VIL2 Input low voltage (RESET,XTAL1) 1.5 V 5V VIH1 Input High voltage (P0,P1,P2,P3) 2.0 V 5V VIH2 Input High voltage (RESET) 3.0 V 5V IOL1 Sinking Current for Output Low (P0,P1,P2,P3) 20 mA 5V IOH1 Sourcing Current for Output High (P0,P1,P2,P3) 150 230 uA 5V IOH2 Sourcing Current for Output High (P0,P1,P2,P3) (Push-Pull) 20 mA 5V IIL Logic 0 input current (P0,P1,P2,P3) 18 50 uA VPIN=0V ITL Logic 1 to 0 transition current (P0,P1,P2,P3) 270 600 uA VPIN=2V DC Specification(5V MCU) STC12C5410AD系列单片机电气特性
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 103 DC Specification(3.3V MCU) SymbolParameter SpecificationTest ConditionMin.Typ.Max.Unit VDD Operating Voltage2.0 3.3 4.0 V IPWDN Power Down Current<0.1 uA 3.3V IIDLE Idle Current 2.0 mA 3.3V ICC Operating Current4 mA10 mA 3.3V VIL1 Input low voltage (P0,P1,P2,P3) 0.8 V 3.3V VIL2 Input low voltage (RESET,XTAL1) 1.5 V 3.3V VIH1 Input High voltage (P0,P1,P2,P3)2.0 V 3.3V VIH2 Input High voltage (RESET) 3.0 V 3.3V IOL1 Sinking Current for Output Low (P0,P1,P2,P3) 20 mA 3.3V IOH1 Sourcing Current for Output High (P0,P1,P2,P3) 40 70 uA 3.3V IOH2 Sourcing Current for Output High (P0,P1,P2,P3) (Push-Pull) 20 mA 3.3V IIL Logic 0 input current (P0,P1,P2,P3) 8 50 uA VPIN=0V ITL Logic 1 to 0 transition current (P0,P1,P2,P3) 110 600 uA VPIN=2V
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 104 STC12C5410AD系列单片机 ISP编程原理 使用说明 外部手动复位 ,看门狗复位 ,单片 机不会运行 ISP程序 PC机端的控制软件必需先发下载命令流 , 再给单片机上电复位 PC机端控制软件为 STC-ISP-V3.1及以后的版本从 www.MCU-Memory.com下载,如何使用,本文相关部 分有说明 单片机运行ISP程序,检测有无合法下载 命令流,占时几十 mS -几百 mS,如无 合法下载命令流 ,则立即跑用户程序 单片机彻底没电 给单片机上电复位 ,冷起动 冷起动,单片机运行系统 ISP监控程序 检测P3.0/RxD有没有合法下载命令流 下载用户程序进用户程序区 有 软复位到用户程序区 ,运行用户程序 无 如果已设置 P1.0/P1.1=0/0,才会判断是否下载 用户程序,则冷启动后,如P1.0/P1.1≠0/0, 则直接跑用户程序,只会占时50uS,可忽略不计。 建议用户选择P1.0/P1.1不同时为 0/0,则立即 跑用户程序,跨过系统 ISP监控程序。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 105 STC 12C5410AD 系列单片机在系统可编程的使用 ---将用户代码下载进单片机内部 ,不用编程器 STC12C5410AD系列单片机具有在系统可编程 (ISP)特性,ISP 的好处是:省去购买通用编程 器,单片机在用户系统上即可下载 /烧录用户程序,而无须将单片机从已生产好的产品上拆下 ,再用通用 编程器将程序代码烧录进单片机内部 。有些程序尚未定型的产品可以一边生产 ,一边完善,加快了产品进 入市场的速度,减小了新产品由于软件缺陷带来的风险 。由于可以在用户的目标系统上将程序直接下载进 单片机看运行结果对错,故无须仿真器。 STC12系列单片机内部固化有 ISP系统引导固件,配合PC端的控制程序即可将用户的程序代码下载进 单片机内部,故无须编程器(速度比通用编程器快,几秒一片)。 如何获得及使用 STC提供的 ISP下载工具(STC-ISP.exe软件): (1). 获得 STC提供的 ISP下载工具(软件) 登陆 www.MCU-Memory.com 网站,从STC半导体专栏下载 PC(电脑)端的 ISP程序,然后 将其自解压,再安装即可(执行setup.exe),注意随时更新软件。 (2). 使用STC-ISP下载工具(软件),请随时更新,目前已到 Ver3.1版本以上,支持*.bin, *.hex(Intel 16 进制格式)文件。 请随时注意升级 PC(电脑)端的 ISP程序。 (3).STC12C5410AD系列单片机出厂时就已完全加密。需要单片机内部的电放光后上电复位(冷起动)才运 行系统ISP程序,如从 P3.0/RxD 检测到合法的下载命令流就下载用户程序,如检测不到就系统复位到用 户程序区。 (4).如果用户板上 P3.0/RxD,P3.1/Txd接了RS-485等电路,下载时需要将其断开。用户系统接了 RS- 485等通信电路,推荐在选项中选择下次冷启动时需 P1.0/P1.1=0/0才判是否下载程序。 0.1uF PC_RxD (COM Pin2) PC /电脑 串口 STC3232,STC232,MAX232,SP232 U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND USB+5VT1OUT GNDR1IN USB1 2 RxD/P3.0 P1.7/SCLK/ADC7 19 3 TxD/P3.1 P1.6/MISO/ADC6 18 4 XTAL2 P1.5/MOSI/ADC5 17 6 INT0/P3.2 P1.3/ADC3 15 7 INT1/P3.3 P1.2/ADC2 14 8 ECI/T0/P3.4 P1.1/ADC1 13 9 PWM1/PCA1/T1/P3.5 P1.0/ADC0 12 10 Gnd P3.7/PCA0/PWM0 11 5 XTAL1 P1.4/SS/ADC4 16 1K1K Vcc Vin Power On SW1 电源开关 USB +5V 10K 10μF <33pF <33pF 通过电脑端的 STC-ISP软件 控制下载 “用户程序 ” 到 STC单片机建议用户在系统上 留此接口 ,可方便 在线下载用户程序 10μF0.1μF 10μF Vcc Vcc 0.1uF 0.1uF 晶振频率在20M以下时: 可以不用C1,R1可为0~10K
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 106 Step1/步骤1:选择你所使用的单片机型号,如STC12C5410,STC12C5410AD等 Step2/步骤2:打开文件,要烧录用户程序,必须调入用户的程序代码(*.bin, *.hex) Step3/步骤3:选择串行口,你所使用的电脑串口,如串行口 1--COM1, 串行口 2--COM2,... 有些新式笔记本电脑没有 RS-232串行口,可买一条 USB-RS232转接器,人民币 50元左右。 有些USB-RS232转接器,不能兼容,可让宏晶帮你购买经过测试的转换器。 Step4/步骤4:选择下次冷启动后,时钟源为“内部R/C振荡器”还是“外部晶体或时钟”。 Step5/步骤 5:选择“Download/下载”按钮下载用户的程序进单片机内部 ,可重复执行 Step5/步骤5, 也可选择“Re-Download/重复下载”按钮 下载时注意看提示 ,主要看是否要给单片机上电或复位 , 下载速度比一般通用编程器快 。 一定要先选择“Download/下载”按钮,然后再给单片机上电复位 (先彻底断电),而不要 先上电,先上电,检测不到合法的下载命令流,单片机就直接跑用户程序了。 关于硬件连接 : (1). MCU/单片机 RXD(P3.0) --- RS-232转换器 --- PC/电脑 TXD(COM Port Pin3) (2). MCU/单片机 TXD(P3.1) --- RS-232转换器 --- PC/电脑 RXD(COM Port Pin2) (4). 如果您的系统 P3.0/P3.1连接到 RS-485 电路,推荐 在选项里选则“下次冷启动需要 P1.0/P1.1 = 0,0才判P3.0/RxD有无合法下载命令流” 这样冷启动后如 P1.0, P1.1 不同时0,单片机直接运行用户程序,免得由于RS-485总线上 的乱码造成单片机反复判断乱码是否为合法 ,浪费几百 mS的时间 STC232/MAX232/SP232尽量选用SOP封装(窄体),STC3232尽量选用SOP封装(窄体). 大批量生产时使用开发调试时 ,可考虑选择此项 如P3.0/P3.1外接RS-485/RS-232等通 信电路,建议选择如P1.0/P1.1不同时 等于 0/0,则直接运行用户程序 ,跨过 系统ISP引导程序 新的设置冷启动 (彻底停电后再上电 ) 后才生效 除每次均要指定缓冲区起始地址外 ,第 二次及以后不能清缓冲区 第一次调文件进缓冲区 ,要清缓冲区 。 要调几个文件进缓冲区,如EEPROM里的 数据文件需要和应用程序文件 一次同时 ISP下载编程进单片机 : 如可将要写入 EEPROM区的数据文件调入 从缓冲区2800H开始的地方,并不清缓冲 区,然后和应用程序一起写入 用户根据实际使用效果选择限制最高通信 波特率,如57600,38400,19200
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 107 如用户系统没有 RS-232接口, 可使用 STC-ISP Ver 3.0A.PCB演示板作为编程工具 STC-ISP Ver 3.0APCB 板如焊接的是 STC12C5410AD的线路,则 可完成STC12C5410AD系列单片机的ISP下载编程/烧录用户程序的功能。 在STC-ISP Ver 3.0A PCB 板完成下载 /烧录: 关于硬件连接 : (1.) 根据单片机的工作电压选择单片机电源电压 A.5V单片机,短接JP1的MCU-VCC, +5V电源管脚 B.3V单片机,短接JP1的MCU-VCC, 3.3V电源管脚 (2.)连接线(宏晶提供) A.将一端有 9芯连接座的插头插入 PC/电脑RS-232串行接口插座用于通信 B.将同一端的USB插头插入PC/电脑USB接口用于取电 C.将只有一个USB插头的一端插入宏晶的 STC-ISP Ver 3.0A PCB板USB1插座用于RS-232通 信和供电,此时USB +5V Power灯亮(D43,USB接口有电) (3.)其他插座不需连接 (4.)SW1开关处于非按下状态,此时MCU-VCC Power灯不亮(D41), 没有给单片机通电 (5.)SW3开关 处于非按下状态,P1.0, P1.1 = 1, 1,不短接到地。 处于按下状态, P1.0, P1.1 = 0, 0,短接到地。 如果单片机已被设成“下次冷启动 P1.0/P1.1 = 0,0才判P3.0/RxD有无合法下载命令流” 就必须将 SW3开关处于按下状态,让单片机的 P1.0/P1.1短接到地 (6.)将单片机插进 U1-Socket锁紧座,锁紧单片机,注意单片机是 20-PIN,而U1-Socket锁紧座 是40-PIN,我们的设计是靠下插,靠近晶体的那一端插。 (7.)关于软件:选择“Download/下载”( 必须在给单片机上电之前让 PC先发一串合法下载命令) (8.)按下SW1开关,给单片机上电复位, 此时MCU-VCC Power灯亮(D41) 此时STC 单片机进入ISP 模式(STC12C5410AD系列冷启动进入ISP) (9.)下载成功后,再按SW1开关,此时SW1开关处于非按下状态,MCU-VCC Power灯不亮(D41), 给单片机断电,取下单片机。 利用STC-ISP Ver 3.0A PCB 板进行RS-232转换 单片机在用户自己的板上完成下载 /烧录: 1.U1-Socket锁紧座不得插入单片机 2.将用户系统上的电源(MCU-VCC,GND)及单片机的P3.0/RXD,P3.1/TXD接入转换板CN2插座 这样用户系统上的单片机就具备了与 PC/电脑进行通信的能力 3. 将用户系统的单片机的 P1.0,P1.1接入转换板CN2插座(如果需要的话) 用户系统上引到 STC-ISP Ver3.0A PCB 板上,将SW3开关按下,则P1.0/P1.1=0,0。 5.关于软件:选择“Download/下载” 6.给单片机系统上电复位(注意是从用户系统自供电,不要从电脑 USB取电,电脑USB座不插) 7.下载程序时,如用户板有外部看门狗电路,不得启动,单片机必须有正确的复位,但不能在ISP下 载程序时被外部看门狗复位,如有,可将外部看门狗电路 WDI端/或WDO端浮空 8. 如有RS-485晶片连到P3.0/Rxd,P3.1/Txd,或其他线路,在下载时应将其断开。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 108 STC12C5410AD系列编译器/汇编器,编程器,仿真器 STC 单片机应使用何种编译器 /汇编器: 1.任何老的编译器/汇编器都可以支持,流行用Keil C51 2.把STC单片机,当成Intel的8052/87C52/87C54/87C58,Philips的P87C52/P87C54/P87C58就可以了 3.如果要用到扩展的专用特殊功能寄存器,直接对该地址单元设置就行了,当然先声明特殊功能寄存器的 地址较好 编程烧录器: 我们有: STC12C5410AD 系列 ISP 经济型下载编程工具(人民币50元,可申请免费样品) 仿真器:如您已有老的仿真器,可仿真普通 8052的基本功能 STC12C5410AD系列单片机扩展功能如它仿不了 可以用 STC-ISP 直接下载用户程序看运行结果就可以了 无须添加新的设备 注意:有专门下载28PIN/20PIN的不同演示板, 28PIN是28PIN的演示板,20PIN是20PIN的演示板
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 109 内部数据 RAM存储器 STC12C5410AD系列单片机内部有 256字节常规的RAM,256字节的扩展RAM 器件的内部常规数据存储器由 3部分组成: 1.低128字节 RAM(00H~7FH),可直接和间接寻址,用“MOV”和“MOV @Ri” 由于高128字节RAM和SFR(特殊功能寄存器)占用相同的地址,因此高128字节RAM空间必须用间接寻址 和SFR的地址相同,但它们在物理上是独立的。 扩展数据 RAM STC12C5410AD系列有256字节的扩展RAM,称其为XRAM(附加RAM),用“MOVX”寻址。 扩展的 256字节 RAM(0000H~00FFH),通过 MOVX指令间接寻址。 00FFH 0000H FFH 80H 7FH FFH 80H 扩展RAM 256字节 (外部间接寻址 ) 高128字节内部RAM (间接寻址 ) 低128字节内部RAM (间接 &直接寻址 ) 特殊功能寄存器 (直接寻址 ) (SFR) 附录A: 内部数据RAM存储器 00H C语言中,可使用xdata声明存储类型即可,如: unsigned char xdata i = 0;
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 110 TEST_CONSTEQU5AH ;TEST_RAMEQU03H ORG0000H LJMPINITIAL ORG0050H INITIAL: MOVR0,#253 MOVR1,#3H TEST_ALL_RAM: MOVR2,#0FFH TEST_ONE_RAM: MOVA, R2 MOV@R1,A CLRA MOVA, @R1 CJNEA, 2H,ERROR_DISPLAY DJNZR2,TEST_ONE_RAM INCR1 DJNZR0,TEST_ALL_RAM OK_DISPLAY: MOVP1,#11111110B Wait1: SJMPWait1 ERROR_DISPLAY: MOVA, R1 MOVP1,A Wait2: SJMPWait2 END 内部常规 256字节RAM间接寻址测试程序
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 111 附录 B: 串行外围接口(SPI)及测试程序 STC12C5410AD系列单片机还提供另一种高速串行通信接口——SPI 接口。SPI是一种全双工、高速、同 步的通信总线,有两种操作模式:主模式和从模式。在主模式中支持高达 3Mbit/s 的速率(工作频率为 12MHz时,如果CPU主频采用20MHz到36MHz,则可更高,从模式时速度无法太快,Fosc/8以内较好),还 具有传输完成标志和写冲突标志保护 。 SPI 接口有4个管脚:SPICLK/P1.7, MOSI/P1.5, MISO/P1.6 和SS/P1.4。
- SPICLK, MOSI 和MISO 通常和两个或更多 SPI 器件连接在一起。数据通过MOSI由主机传送到从机,通 过MISO 由从机传送到主机 。SPICLK信号在主模式时为输出 ,在从模式时为输入 。如果 SPI系统被禁止,即 SPEN (SPCTL.6)=0(复位值),这些管脚都可作为 I/O 口使用。
- /SS为从机选择管脚。在典型的配置中,SPI主机使用 I/O 口选择一个 SPI器件作为当前的从机。 SPI从器件通过其 /SS脚确定是否被选择。如果满足下面的条件之一,/SS就被忽略: -如果SPI系统被禁止,即SPEN(SPCTL.6)=0(复位值) -如果SPI配置为主机,即MSTR(SPCTL.4)=1,并且P1.4 配置为输出(通过P1M0.4 和P1M1.4) -如果/SS脚被忽略,即SSIG(SPCTL.7)位=1,该脚配置用于I/O口功能。 注:即使SPI被配置为主机(MSTR=1),它仍然可以通过拉低 /SS 脚配置为从机(如果P1.4 配置为输 入且SSIG=0)。要使能该特性,应当置位SPIF(SPSTAT.7)。 典型连接如SPI图1~3所示。 8位移位寄存器 读数据缓冲区 CPU 时钟 分频器 4, 16, 64, 128 选择 SPI 控制 SPI 状态寄存器 时钟逻辑 SPI 控制寄存器 S M M S S M 管脚 控制 逻辑 MISO P1.6 MOSI P1.5 SPICLK P1.7 SS P1.4 SPI 中断请求 内部 数据 总线 SPI时钟(主机) clock MSTR SPEN SPR1 SPR0 SPIF SSIG SPEN DORD MSTR CPHA CPOL SPR1 SPR0 MSTR SPEN SPI 方框图 STC12C5410AD系列 1T 8051单片机SPI功能模块特殊功能寄存器 SPI Management SFRs MnemonicAddName 7 6 5 4 3 2 1 0 Reset value SPCTL85hSPI Control RegisterSSIG SPEN DORDMSTRCPOLCPHASPR1SPR00000,0000 SPSTAT84hSPI Status RegisterSPIF WCOL - - - - - - 00xx,xxxx SPDAT86hSPI Data Register 0000,0000 WCOL
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 112 位 符号 描 述
0 SPR0 SPR0/SPR1是SPI 时钟速率选择控制位。
1 SPR1
SPR1, SPR0: 0 0 -CPU_CLK/4 0 1 -CPU_CLK/16 1 0 -CPU_CLK/64 1 1 -CPU_CLK/128
2 CPHA
SPI 时钟相位选择(见SPI图4~图7): 1:数据在SPICLK 的前时钟沿驱动,并在后时钟沿采样。 0:数据在/SS 为低(SSIG=00)时被驱动,在SPICLK 的后时钟 沿被改变,并在前时钟沿被采样。 (注:SSIG=1 时的操作未定义)
3 CPOL
SPI 时钟极性(见SPI图4~图7): 1:SPICLK 空闲时为高电平。SPICLK 的前时钟沿为下降沿而后沿为上升沿 。 0:SPICLK 空闲时为低电平。SPICLK 的前时钟沿为上升沿而后沿为下降沿 。
4 MSTR 主/从模式选择(见SPI 主从选择表)。
5 DORD SPI 数据顺序:
1:数据字的LSB(最低位) 最先发送;0:数据字的MSB(最高位) 最先发送。
3 SPEN
SPI 使能。 1:SPI 使能。 0:SPI 被禁止,所有SPI 管脚都作为I/O 口使用。
7 SSIG
/SS 忽略。 1:MSTR(位4)确定器件为主机还是从机 。 0:/SS 脚用于确定器件为主机还是从机 。/SS 脚可作为I/O 口使用(见SPI 主 从选择表)。 SPI 控制寄存器的位描述 (SPCTL – 地址:85h) 位 7 6 5 4 3 2 1 0 符号 SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 复位 0 0 0 0 0 1 0 0 SPI 控制寄存器的位分配 (SPCTL-地址:85h)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 113 SPI 状态寄存器的位分配 (SPSTAT – 地址:84h) SPI 状态寄存器的位描述 (SPSTAT – 地址:84h) 位 7 6 5 4 3 2 1 0 符号 SPIFWCOL - - - - - - 复位 0 0 X X X X X X 位 符号 符号
7 SPIF
SPI 传输完成标志。当一次串行传输完成时,SPIF 置位,并当ESPI 和EA 都置位时产生中断。当SPI 处于主模式且SSIG=0 时,如果/SS 为输入 并被驱动为低电平,SPIF 也将置位。SPIF标志通过软件向其写入“1”清零。
6 WCOLSPI 写冲突标志。在数据传输的过程中如果对SPI 数据寄存器SPDAT 执行写
操作,WCOL 将置位。WCOL 标志通过软件向其写入“1”清零。 5 - 0 - 保留 SPI 数据寄存器的位分配 (SPDAT – 地址:86h) 位 7 6 5 4 3 2 1 0 符号 MSB LSB 复位 0 0 0 0 0 0 0 0 SPDAT.7 - SPDAT.0: 传输的数据位Bit7~Bit0
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 114 在上图 SPI图1中,从机的 SSIG(SPCTL.7)为0,/SS 用于选择从机。SPI 主机可使用任何端口 (包括P1.4/SS)来驱动/SS脚。 上图SPI图2所示为两个器件互为主从的情况 。当没有发生 SPI操作时,两个器件都可配置为主机 (MSTR=1),将SSIG清零并将P1.4(/SS)配置为准双向模式。当其中一个器件启动传输时,它可将P1.4 配置为输出并驱动为低电平 ,这样就强制另一个器件变为从机 。 在上图 SPI图3中,从机的 SSIG(SPCTL.7)为0,从机通过对应的 /SS 信号被选中。SPI主机可 使用任何端口(包括P1.4/SS)来驱动/SS 脚。 主机 从机 8位移位寄存器 SPI时钟发生器 8位移位寄存器 MISO MISO SPI图1 SPI 单主机-单从机 配置 MOSI MOSI SPICLK SPICLK Port /SS SPI图2 SPI 双器件配置(可器件可互为主从) 主机 从机 8位移位寄存器 SPI时钟发生器 8位移位寄存器 MISO MISO MOSI MOSI SPICLK SPICLK /SS/SS SPI时钟发生器 MISO MISO MOSI MOSI SPICLK SPICLK Port /SS Port /SS 8位移位寄存器 SPI时钟发生器 8位移位寄存器 8位移位寄存器 主机 从机 SPI 图3 SPI 单主机-多从机 配置
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 115 对SPI 进行配置 下表 所示为主 /从模式的配置以及模式的使用和传输方向 。 SPI 主从模式选择 作为从机时的额外注意事项 当CPHA=0时,SSIG必须为 0,/SS脚必须取反并且在每个连续的串行字节之间重新设置为高电 平。如果 SPDAT 寄存器在 /SS有效(低电平)时执行写操作 ,那么将导致一个写冲突错误 。 CPHA=0且SSIG=0时的操作未定义。 当CPHA=1时,SSIG可以置位。如果 SSIG=0,/SS脚可在连续传输之间保持低有效 (即一直 固定为低电平)。这种方式有时适用于具有单固定主机和单从机驱动 MISO数据线的系统。 作为主机时的额外注意事项 在SPI中,传输总是由主机启动的 。如果 SPI使能(SPEN=1)并选择作为主机,主机对 SPI数 据寄存器的写操作将启动 SPI时钟发生器和数据的传输。在数据写入 SPDAT之后的半个到一个 SPI位时 间后,数据将出现在 MOSI脚。 需要注意的是,主机可以通过将对应器件的 /SS脚驱动为低电平实现与之通信 。写入主机 SPDAT寄 存器的数据从 MOSI脚移出发送到从机的 MOSI脚。同时从机 SPDAT寄存器的数据从 MISO脚移出发送到主 机的MISO脚。 传输完一个字节后 ,SPI时钟发生器停止 ,传输完成标志 (SPIF)置位并产生一个中断 (如果 SPI中断使能)。主机和从机 CPU的两个移位寄存器可以看作是一个 16 循环移位寄存器。当数据从主机 移位传送到从机的同时,数据也以相反的方向移入 。这意味着在一个移位周期中 ,主机和从机的数据相 互交换。 SPENSSIG/SS 脚 P1.4 MSTR 主或从 模式 MISO P1.6 MOSI P1.5 SPICLK P1.7 备注 使用 1 0 0 0 从机模式 输出 输入 输入 选择作为从机 1 0 1 0 从机模式 未被选中 高阻 输入 输入 未被选中 。MISO 为高阻状态 ,以避免总线冲突 1 0 0 1—>0 从机模式 输出 输入 输入 P1.4/ SS 配置为输入或准双向口 。SSIG 为0。如 果择/SS 被驱动为低电平 ,则被选择作为从机 。 当SS 变为低电平时 ,MSTR将清零 。 注:当/SS处于输入模式时 ,如被驱动为低电平 且SSIG=0 时,MSTR 位自动清零 。 1 0 1 1 主(空闲) 输入 高阻 高阻 当主机空闲时 MOSI 和SPICLK 为高阻态以避免总线 冲突。用户必须将 SPICLK 上拉或下拉 (根 据CPOL-SPCTL.3 的取值 )以避免 SPICLK出现悬浮 状态。 主(激活) 输出 输出 作为主机激活时 ,MOSI 和SPICLK 为推挽输出 1 1 P1.4 0 从 输出 输入 输入 1 1 P1.4 1 主 输入 输出 输出
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 116 通过 /SS 改变模式 如果SPEN=1, SSIG=0且MSTR=1,SPI使能为主机模式。/SS脚可配置为输入或准双向模式。这 种情况下,另外一个主机可将该脚驱动为低电平 ,从而将该器件选择为 SPI 从机并向其发送数据 。 为了避免争夺总线,SPI系统执行以下动作: 1)MSTR清零并且 CPU变成从机。这样SPI就变成从机。MOSI和SPICLK强制变为输入模式,而 MISO则变为输出模式。 2)SPSTAT的SPIF标志位置位。如果 SPI中断已被使能,则产生 SPI中断。 用户软件必须一直对 MSTR位进行检测,如果该位被一个从机选择所清零而用户想继续将 SPI作为主 机,这时就必须重新置位 MSTR,否则就进入从机模式。 写冲突 SPI在发送时为单缓冲 ,在接收时为双缓冲 。这样在前一次发送尚未完成之前 ,不能将新的数据 写入移位寄存器。当发送过程中对数据寄存器进行写操作时 ,WCOL位(SPSTAT.6)将置位以指示数据冲 突。在这种情况下,当前发送的数据继续发送 ,而新写入的数据将丢失。 当对主机或从机进行写冲突检测时 ,主机发生写冲突的情况是很罕见的 ,因为主机拥有数据传输的 完全控制权。但从机有可能发生写冲突 ,因为当主机启动传输时,从机无法进行控制。 接收数据时,接收到的数据传送到一个并行读数据缓冲区 ,这样将释放移位寄存器以进行下一个数 据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据 ,否则,前一个接收数据 将丢失。 WCOL可通过软件向其写入 “1”清零。 数据模式 时钟相位位(CPHA)允许用户设置采样和改变数据的时钟边沿 。时钟极性位 CPOL允许用户设置时钟极 性。 SPI图4~图7 所示为时钟相位位 CPHA 的不同设定。 SPI 图4 SPI 从机传输格式(CPHA=0) 时钟周期 1 2 3 4 5 6 7 8 SPICLK (CPOL = 0) SPICLK (CPOL = 1) MOSI(输入) DORD = 0 DORD = 1 MSB 6 5 4 3 2 1 LSB LSB 1 2 3 4 5 6 MSB DORD = 0 MSB 6 5 4 3 2 1 LSB DORD = 1 LSB 1 2 3 4 5 6 MSBMISO(输出) SS(如果SSIG位=0) 未定义 (1) (1)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 117 SPI时钟预分频器选择 SPI时钟预分频器选择是通过 SPCTL寄存器中的SPR1-SPR0 位实现的 SS(如果SSIG位=0) 未定义(1) 时钟周期 1 2 3 4 5 6 7 8 SPICLK (CPOL = 0) SPICLK (CPOL = 1) MOSI(输入) DORD = 0 DORD = 1 MSB 6 5 4 3 2 1 LSB LSB 1 2 3 4 5 6 MSB DORD = 0 MSB 6 5 4 3 2 1 LSB DORD = 1 LSB 1 2 3 4 5 6 MSBMISO(输出) (1) SPI 图 5 SPI 从机传输格式(CPHA=1) SPICLK (CPOL = 1) LSB MSB LSB MSB 时钟周期 1 2 3 4 5 6 7 SPICLK (CPOL = 0) MISO(输入) DORD = 0 DORD = 1 MSB 6 5 4 3 2 1 LSB 1 2 3 4 5 6 DORD = 0MSB 6 5 4 3 2 1 DORD = 1LSB 1 2 3 4 5 6MOSI(输出) SS(如果SSIG位=0) SPI 图 7 SPI 主机传输格式(CPHA=1) SPI 图 6 SPI 主机传输格式(CPHA=0) LSB MSB LSB MSB 时钟周期 1 2 3 4 5 6 7 SPICLK (CPOL = 0) SPICLK (CPOL = 1) MISO(输入) DORD = 0 DORD = 1 MSB 6 5 4 3 2 1 LSB 1 2 3 4 5 6 DORD = 0 MSB 6 5 4 3 2 1 DORD = 1 LSB 1 2 3 4 5 6MOSI(输出) SS(如果SSIG位=0)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 118 ;1. 本示例程序演示 STC12C2052AD 和 STC12C5410AD 系列 MCU 的 SPI 功能, 适用于 ; 单主单从系统 ;2. 硬件连接:三线连接 ; 主单片机 I/O口 I/O口 从单片机 ; |8位移位寄存器 | |8位移位寄存器 | ; | | ; | SCLK SCLK | ; 除此之外,主单片机的 RS-232 串行口通过 RS-232 转换器与 PC 机的 RS-232 ;串行口相连接。 ;3. SPI 通讯过程: ; 主单片机与从单片机的 SPI 8位移位寄存器连接成一个循环的 16 位移位寄存器。 ;当主单片机程序向 SPDAT 写入一个字节时,立即启动一个连续的 8 位移位通讯过程: ;主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲,在这串脉冲的驱动下, 主 ;单片机 SPI 8位移位寄存器中的数据移到了从单片机的 SPI 8位移位寄存器中; 与此 ;同时,从单片机 SPI 8位移位寄存器中的数据移到了主单片机的 SPI 8位移位寄存器 ;中。利用这样的数据交换机制 ,主单片机既可向从单片机发送数据 ,又可读从单片机 ;中的数据。 ;4. 使用方法 ; a) 修改程序,使 MASTER EQU 1 的那行有效。汇编后的程序代码下载到主单片机中。 ; b) 修改程序,使 MASTER EQU 0 的那行有效。汇编后的程序代码下载到从单片机中 。 SPI 功能示例程序(适用于单主单从系统)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 119 ; c) 给主、从单片机上电。 ; d) 用串口调试助手(STC 的 ISP 下载程序 STC-ISP.exe 3.2 以上版本提供了该功能) ; 向主单片机发送一串数据。 ; 主单片机的 RS-232 串口每收到一个字节就立刻将收到的字节通过 SPI 口 ; 发送到从单片机中,与此同时主单片机会收到从单片机发回的一个字节 (见3. SPI ; 通讯过程),主单片机又立刻把这个字节通过 RS-232 口发送到 PC 机。 ; 从单片机的 SPI 口收到的数据后,把收到的数据放到自己的 SPDAT 寄存器 ; 中,当下一次主单片机发送一个字节时把数据发回到主单片机 。 ; e) 在串口调试助手接收区观察接收的数据 。 ;5. 怎样用巡测方式接收 SPI数据 ; 本示例为中断方式接收 SPI 口数据,若想用巡测方式接收 SPI数据可以用以下 ; 几行指令实现: ; Wait_SPI_Receive_Byte: ; MOV A, SPSTAT ;判收到从 SPI 发回的数据否 ; ANL A, #80H ; JZ Wait_SPI_Receive_Byte ;SPI 未收到数据, 继续等待 ; MOV A, SPDAT ;SPI 已收到数据, 将收到的数据送累加器 A ; ... ;6. 实验条件: MCU 晶振频率 Fosc = 18.432MHz, PC 机 RS232 串口波特率等于 57600 ; 实验结果: SPI 口传输数据无误。 ; 由于本程序的 RS232 接收,SPI 端口的接收都没有使用接收缓冲区,所以 RS232 ; 串口波特率不要高于 57600,若使用接收缓冲区,波特率可以到 115200 以上。 ;定义常量 ;定义功能常量 ,以下两行注释其中一行 ,取消另一行注释使之有效 ;MASTER EQU 1 ;汇编后的程序代码下载到主单片机中 MASTER EQU 0 ;汇编后的程序代码下载到从单片机中 ;定义波特率自动重装数常量 ;以下波特率是 PCON.7 = 0 时的数值, 若使 PCON.7 = 1 可将波特率加倍 ;RELOAD_8BIT_DATA EQU 0FFH ;Fosc=22.1184MHz, Baud = 57600 ;RELOAD_8BIT_DATA EQU 0FBH ;Fosc=18.432MHz, Baud=9600, 1T 运行时 Baud=115200 RELOAD_8BIT_DATA EQU 0F6H ;Fosc=18.432MHz, Baud=4800, 1T 运行时 Baud=57600 ;RELOAD_8BIT_DATA EQU 0FFH ;Fosc=11.059MHz, Baud = 28800、 ;定义特殊功能寄存器 AUXR EQU 8EH ;AUXR 特殊功能寄存器的 bit3 是 SPI 中断允许控制位 ESPI ;IE 特殊功能寄存器的 bit5 是ADC和SPI两个中断共享的总中断允许控制位 EADC_SPI ;要产生 SPI 中断, 需要 ESPI/EADC_SPI/EA 都为 1
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 120 ;定义 SPI 特殊功能寄存器, 详细说明见本程序的后部或 STC 12C5410AD 中文指南 SPCTL EQU 85H SPSTAT EQU 84H SPDAT EQU 86H EADC_SPI EQU IE.5 ;定义 SPI 脚 SCLK EQU P1.7 MISO EQU P1.6 MOSI EQU P1.5 SS EQU P1.4 ;定义单片机管脚 LED_MCU_START EQU P3.4 ;定义变量 Flags EQU 20H SPI_Receive EQU Flags.0 ;SPI 端口收到数据标志位 SPI_buffer EQU 30H ;该变量用于保存 SPI 端口收到的数据 ORG 0000H LJMP MAIN ORG 002BH ;ADC_SPI 中断服务程序入口 LJMP ADC_SPI_Interrupt_Routine ORG 0080H MAIN: CLR LED_MCU_START ;点亮 MCU 开始工作指示灯 MOV SP, #7FH ACALL Init_System ;系统初始化 if MASTER Check_RS232: JNB RI, Master_Check_SPI ;判 RS-232 串口中收到数据否 ;主单片机 RS-232 串口已收到新的数据 ACALL Get_Byte_From_RS232 ;主单片机将RS-232串口中收到的数据送到累加器 A ACALL SPI_Send_Byte ;主单片机将累加器 A 中的数据发送到从机 SPI SJMP Check_RS232 Master_Check_SPI: JNB SPI_Receive, Check_RS232 ;判收到从 SPI 发回的数据否 ;主单片机 SPI 端口已收到新的数据 MOV A, SPI_buffer ;将 "从 SPI 发回的数据"送到累加器 A CLR SPI_Receive ;清0 主单片机 SPI 端口收到数据标志位 ACALL RS232_Send_Byte ;将累加器 A 中的数据发送到 PC 机 SJMP Check_RS232
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 121 else Slave_Check_SPI: JNB SPI_Receive, Slave_Check_SPI ;判收到主 SPI 发回的数据否 ;从单片机 SPI 端口已收到新的数据 MOV A, SPI_buffer ;取 "主单片机 SPI 端口发的数据" CLR SPI_Receive ;清0 从单片机 SPI 端口收到数据标志位 MOV SPDAT, A ;将收到数据送 SPDAT, 准备下一次通讯时发回 SJMP Slave_Check_SPI endif ADC_SPI_Interrupt_Routine: ;ADC_SPI 中断服务程序 ;SPI 中断服务程序 MOV SPSTAT, #11000000B ;0C0H, 清0 标志位 SPIF 和 WCOL ;特别注意:是向标志位 SPIF/WCOL 写1,将 SPIF/WCOL 清成0 ;特别注意:不是向标志位 SPIF/WCOL 写0,将 SPIF/WCOL 清成0 MOV A, SPDAT ;保存收到的数据 MOV SPI_buffer, A SETB SPI_Receive ;树立 SPI 端口收到数据标志 RETI Init_System: ACALL Initial_UART ;初始化串口 ACALL Initial_SPI ;初始化 SPI MOV Flags, #0 ;清标志字 SETB EA ;开总中断 RET Initial_UART: ;初始化串口 ; SCON Bit: 7 6 5 4 3 2 1 0 ; SM0/FE SM1 SM2 REN TB8 RB8 TI RI MOV SCON, #50H ;0101,0000 8位可变波特率, 无奇偶校验 MOV TMOD, #21H ;T1 为自动重装模式 MOV TH1, #RELOAD_8BIT_DATA MOV TL1, #RELOAD_8BIT_DATA ; MOV PCON, #80H ;取消本行指令注释,波特率加倍。 ;使以下两行有效,波特率快12倍,即波特率 = 4800*12=57600 MOV A, #01000000B ;T1 以 1T 的速度计数,是普通8051的12倍 ORL AUXR, A SETB TR1 ;启动定时器1 开始计数 RET Initial_SPI: ;初始化 SPI ;SPI 控制寄存器
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 122 ; 7 6 5 4 3 2 1 0 ;SPCTL SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 if MASTER MOV SPCTL,#11111100B ;0FCH, 忽略 SS 脚, 设为主机 ;SSIG=1: 忽略SS脚 ;SPEN=1:允许 SPI 工作 ;DORD=1:先传低位 LSB ;MSTR=1:设为主机 ;CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。 ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 else MOV SPCTL,#11101100B ;0ECH, 忽略 SS 脚, 设为从机 ;SSIG=1: 忽略SS脚 ;SPEN=1:允许 SPI 工作 ;DORD=1:先传低位 LSB ;MSTR=0:设为从机 ;CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。 ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 endif MOV SPSTAT,#11000000B ;清0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6) ;向该两个标志位写"1" 会将它们清0 MOV A, #00001000B ORL AUXR, A ;令ESPI(AUXR.3)=1,允许SPIF(SPSTAT.7)产生中断 SETB EADC_SPI ;开 ADC 中断和 SPI 中断共享的总中断控制位 RET RS232_Send_Byte: ;RS232 串口发送一个字节 CLR TI ;清零串口发送中断标志 MOV SBUF, A RS232_Send_Wait: JNB TI, RS232_Send_Wait ;等待发送完毕, 未发送完毕跳回本行 CLR TI ;清零串口发送中断标志 RET ;此段程序只有主 MCU 调用 SPI_Send_Byte: ;SPI 发送一个字节 CLR EADC_SPI ;关 ADC 中断和 SPI 中断共享的总中断控制位 MOV SPDAT, A ;SPI 发送数据 SPI_Send_Byte_Wait: MOV A, SPSTAT ;等待 SPIF=1 即等待 SPI 发送完毕 ANL A, #80H
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 123 JZ SPI_Send_Byte_Wait SETB EADC_SPI ;开 ADC 中断和 SPI 中断共享的总中断控制位 RET Get_Byte_From_RS232: ;取 RS-232 串口中收到的数据送累加器 A MOV A, SBUF CLR RI RET END ;更详细的资料可以参阅 STC12C5410AD.pdf (中文使用说明)。 ;SPI 控制寄存器 ; 7 6 5 4 3 2 1 0 ;SPCTL SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 ;SSIG: 忽略SS脚, 如果 SSIG=1, 由 MSTR 位决定 SPI 主模式或从模式, ; 如果 SSIG=0, 由 SS 脚决定 SPI 主模式或从模式。 ;SPEN:SPI使能位。如果 SPEN=0,SPI功能被禁止,SPI 脚用作普通IO口 ;DORD:SPI 数据传输顺序。 ; 1:先传低位 LSB ; 0:先传高位 MSB ;MSTR:SPI 主/从模式选择位 ;CPOL:SPI 时钟信号极性选择位 ; 1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ; 0:SPI 空闲时 SPICLK = 0,前跳变沿是上升沿,后跳变沿是下降沿。 ;CPHA:SPI 时钟信号相位选择位 ; 1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。 ; 0:当 SS 脚为低(SSIG=0)时数据被驱动到口线,并且在 SPICLK 后跳变沿数据 ; 被改变(被驱动到口线),在 SPICLK 前跳变沿数据被采样。注意:SSIG = 1 ; 时操作未定义。 ;SPR1-SPR0:主模式时 SPI 时钟源选择 ; 00:fosc/4 ; 01:fosc/16 ; 10:fosc/64 ; 11:fosc/128 ; 当 CPHA=0,SSIG 必须等于零并且在传输时 SS 脚也必须一直保持为低。当 SS 有效 ;(=0)时向 SPDATA 寄存器写数据就会发生写冲突错误,WCOL 标志被置 1。 ; 当 CPHA=1,SSIG 可以等于 0 或 1。如果 SSIG=0,SS 脚在连续的传输时为 0(可以 ;一直保持为 0)。当系统中只有一个主和一个从 SPI 时,这是首选配置。 ;SPI 状态寄存器 ; 7 6 5 4 3 2 1 0 ;SPSTAT SPIF WCOL - - - - - -
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 124 ;SPIF:SPI 传输结束标志。当一次传输结束时, SPIF 被置 1,如果 SPI 中断被打开: ; ESPI(AUXR.3)=1,EADC_SPI(IE.5)=1,EA(IE.7)=1, 就引起中断。如果原来 SPI ; 由 SS 脚确定为是主模式(SSIG=0,SS=1),当 SS 变成 0 时,SPIF 也会被置 1, ; 表示"模式改变 "。向 SPIF 位写 1 将该标志清 0。 ;WCOL:SPI 写冲突标志。当一个数据还在传输时 ,又向数据寄存器 SPDAT 写入数据,WCOL ; 就会被被置 1。向 WCOL 位写 1 将该标志清 0。 ;SPI 主/从模式选择 ;SPEN SSIG SS MATR 模式 MISO MOSI SPICLK 注释 ; 0 X X X 禁止SPI 输入 输入 输入 禁止 SPI 功能 ; 1 0 0 0 从 输出 输入 输入 被选为从 ; 1 0 1 0 未选从 输入 输入 输入 从,但没有被选中 ; 1 0 0 1->0 从 输出 输入 输入 由主变为从 ; 1 0 1 1 主 输入 输出 输出 ; 1 1 X 0 从 输出 输入 输入 从 ; 1 1 X 1 主 输入 输出 输出 主
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 125 ;1. 本示例程序演示 STC12C2052AD 和 STC12C5410AD 系列 MCU 的 SPI 功能, 适用于 ; 单主多从系统 ;2. 硬件连接: ; 主单片机 从单片机 #1 ; | | | | ; 除此之外,主单片机的 RS-232 串行口通过 RS-232 转换器与 PC 机的 RS-232 ;串行口相连接。 SPI 功能示例程序(适用于单主多从系统)
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 126 ;3. SPI 通讯过程: ; 主单片机与从单片机的 SPI 8位移位寄存器连接成一个循环的 16 位移位寄存器。 ;当主单片机程序向 SPDAT 写入一个字节时,立即启动一个连续的 8 位移位通讯过程: ;主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲,在这串脉冲的驱动下, 主 ;单片机 SPI 8位移位寄存器中的数据移到了从单片机的 SPI 8位移位寄存器中; 与此 ;同时,从单片机 SPI 8位移位寄存器中的数据移到了主单片机的 SPI 8位移位寄存器 ;中。利用这样的数据交换机制 ,主单片机既可向从单片机发送数据 ,又可读从单片机 ;中的数据 。 ;4. 使用方法 ; a) 修改程序,使 MASTER_SLAVE EQU 0 的那行有效。汇编后的程序代码下载到 ; 主单片机中。 ; b) 修改程序,使 MASTER_SLAVE EQU 1 的那行有效。汇编后的程序代码下载到 ; 从单片机 #1 中。 ; c) 修改程序,使 MASTER_SLAVE EQU 2 的那行有效。汇编后的程序代码下载到 ; 从单片机 #2 中。 ; d) 给主、从单片机上电。 ; e) 主单片机用 Slave1_SS 和 Slave2_SS 口线选择当前选中的从单片机, 每一时刻 ; 只有一个从单片机被选中。当 Slave1_SS 的 LED 灯亮时,从单片机 #1 被选中; ; 当 Slave2_SS 的 LED 灯亮时,从单片机 #2 被选中。 ; 用串口调试助手(STC 的 ISP 下载程序 STC-ISP.exe 3.2 以上版本提供了 ; 该功能)向主单片机发送一串数据。主单片机每收到一个字节就立刻将收到的字节 ; 通过 SPI 口发送到当前选中的从单片机中。从单片机 #1 将 SPI 口收到的数据 ; 再放到自己的 SPDAT 寄存器中,当下一次主单片机发送一个字节时把数据发回到 ; 主单片机; 从单片机 #2 将 SPI 口收到的数据加 1 以后再放到自己的 SPDAT ; 寄存器中,当下一次主单片机发送一个字节时把数据发回到主单片机 。 ; f) 在串口调试助手接收区观察接收的数据 。 ;5. 用巡测方式接收 SPI数据 ; 本示例为中断方式接收 SPI 口数据,若想用巡测方式接收 SPI数据可以用以下 ; 几行指令实现: ; Wait_SPI_Receive_Byte: ; MOV A, SPSTAT ;判收到从 SPI 发回的数据? ; ANL A, #80H ; JZ Wait_SPI_Receive_Byte ;SPI 未收到数据, 继续等待 ; ... ;SPI 已收到数据 ; ... ;6. 实验条件: MCU 晶振频率 Fosc = 18.432MHz, PC 机 RS232 串口波特率等于 57600 ; 实验结果: SPI 口传输数据无误。 ;定义常量 ;定义功能常量,以下 3 行注释其中 2 行,使一行有效
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 127 MASTER_SLAVE EQU 0 ;汇编后的程序代码下载到主单片机中 ;MASTER_SLAVE EQU 1 ;汇编后的程序代码下载到从单片机 #1 中 ;MASTER_SLAVE EQU 2 ;汇编后的程序代码下载到从单片机 #2 中 ;定义波特率自动重装数常量 ;以下波特率是 PCON.7 = 0 时的数值, 若使 PCON.7 = 1 可将波特率加倍 ;RELOAD_8BIT_DATA EQU 0FFH ;Fosc=22.1184MHz, Baud = 57600 ;RELOAD_8BIT_DATA EQU 0FBH ;Fosc=18.432MHz, Baud=9600, 1T 运行时 Baud=115200 RELOAD_8BIT_DATA EQU 0F6H ;Fosc=18.432MHz, Baud=4800, 1T 运行时 Baud=57600 ;RELOAD_8BIT_DATA EQU 0FFH ;Fosc=11.059MHz, Baud = 28800、 ;定义特殊功能寄存器 AUXR EQU 8EH ;AUXR 特殊功能寄存器的 bit3 是 SPI 中断允许控制位 ESPI ;IE 特殊功能寄存器的 bit5 是ADC和SPI两个中断共享的总中断允许控制位 EADC_SPI ;要产生 SPI 中断, 需要 ESPI/EADC_SPI/EA 都为 1 ;定义 SPI 特殊功能寄存器, 详细说明见本程序的后部 SPCTL EQU 85H SPSTAT EQU 84H SPDAT EQU 86H EADC_SPI EQU IE.5 ;定义 SPI 脚 SCLK EQU P1.7 MISO EQU P1.6 MOSI EQU P1.5 SS EQU P1.4 Slave1_SS EQU P1.2 Slave2_SS EQU P1.3 ;定义单片机管脚 LED_MCU_START EQU P3.4 ;定义变量 Flags EQU 20H SPI_Receive EQU Flags.0 ;SPI 端口收到数据标志位 T0_10mS_count EQU 30H ;该变量用于保存 10 毫秒计数(T0 中断次数) SPI_buffer EQU 31H ;该变量用于保存 SPI 端口收到的数据 ORG 0000H AJMP MAIN
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 128 ORG 000BH ;定时器0 中断服务程序入口 AJMP timer0_Routine ORG 002BH ;ADC_SPI 中断服务程序入口 AJMP ADC_SPI_Interrupt_Routine ORG 0080H MAIN: CLR LED_MCU_START ;点亮 MCU 开始工作指示灯 MOV SP, #7FH ACALL Initial_System ;系统初始化 if MASTER_SLAVE == 0 CLR Slave1_SS ;选择从单片机 #1 为当前的从单片机 Check_RS232: JNB RI, Master_Check_SPI ;判 RS-232 串口中收到数据否 ;主单片机 RS-232 串口已收到新的数据 ACALL Get_Byte_From_RS232 ;主单片机将RS-232串口中收到的数据送到累加器 A ; ACALL RS232_Send_Byte ;调试用, 将累加器 A 中的数据发送到 PC 机 ; SJMP Check_RS232 ;调试用 ACALL SPI_Send_Byte ;主单片机将累加器 A 中的数据发送到从机 SPI SJMP Check_RS232 Master_Check_SPI: JNB SPI_Receive, Check_RS232 ;判收到从 SPI 发回的数据否 ;主单片机 SPI 端口已收到新的数据 MOV A, SPI_buffer ;将 "从 SPI 发回的数据"送到累加器 A CLR SPI_Receive ;清0 主单片机 SPI 端口收到数据标志位 ACALL RS232_Send_Byte ;将累加器 A 中的数据发送到 PC 机 SJMP Check_RS232 else Slave_Check_SPI: JNB SPI_Receive, Slave_Check_SPI ;判收到主 SPI 发回的数据否 ;从单片机 SPI 端口已收到新的数据 MOV A, SPI_buffer ;取 "主单片机 SPI 端口发的数据" CLR SPI_Receive ;清0 从单片机 SPI 端口收到数据标志位 if MASTER_SLAVE == 2 ADD A, #1 ;如果是从单片机 #2,就把收到的数据加 1 endif MOV SPDAT, A ;将收到数据送 SPDAT, 准备下一次通讯时发回 SJMP Slave_Check_SPI endif if MASTER_SLAVE == 0 timer0_Routine: PUSH PSW ;保存断点现场 PUSH ACC
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 129 MOV TH0, #0C4H ;重装数 = 65536-15360 = 50176 = C400H ;晶振频率=18.432MHz时, 每 10mS 中断 1 次 INC T0_10mS_count ;10 毫秒计数(T0 中断次数) + 1 MOV A, #0C7H ;0C8H = 199, 检测是否中断了 200 次(2秒) CLR C SUBB A, T0_10mS_count JNC timer0_Exit CPL Slave1_SS ;改变当前选择的从单片机 CPL Slave2_SS MOV T0_10mS_count, #0 ;清0 10 毫秒计数(T0 中断次数) timer0_Exit: POP ACC ;恢复断点现场 POP PSW RETI else timer0_Routine: ;本程序中从单片机不需要使用定时器 0 RETI endif ADC_SPI_Interrupt_Routine: ;ADC_SPI 中断服务程序 ;SPI 中断服务程序 MOV SPSTAT, #11000000B ;0C0H, 清0 标志位 SPIF 和 WCOL ;特别注意:是向标志位 SPIF/WCOL 写1,将 SPIF/WCOL 清成0 ;特别注意:不是向标志位 SPIF/WCOL 写0,将 SPIF/WCOL 清成0 MOV A, SPDAT ;保存收到的数据 MOV SPI_buffer, A SETB SPI_Receive ;树立 SPI 端口收到数据标志 RETI Initial_System: ACALL Initial_UART ;初始化串口 ACALL Initial_SPI ;初始化 SPI SETB TR0 ;启动 T0 SETB ET0 ;开 T0 中断 MOV Flags, #0 ;清标志字 SETB EA ;开总中断 RET Initial_UART: ;初始化串口 ; SCON Bit: 7 6 5 4 3 2 1 0 ; SM0/FE SM1 SM2 REN TB8 RB8 Tl Rl MOV SCON, #50H ;0101,0000 8位可变波特率, 无奇偶校验
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 130 MOV TMOD, #21H ;T1 为自动重装模式 MOV TH1, #RELOAD_8BIT_DATA MOV TL1, #RELOAD_8BIT_DATA ; MOV PCON, #80H ;取消本行指令注释,波特率加倍。 ;使以下两行有效,波特率快 12倍,即波特率 = 4800*12=57600 MOV A, #01000000B ;T1 以 1T 的速度计数,是普通8051的12倍 ORL AUXR, A SETB TR1 ;启动定时器1 开始计数 RET Initial_SPI: ;初始化 SPI if MASTER_SLAVE == 0 MOV SPCTL,#11111100B ;0FCH, 忽略 SS 脚, 设为主机 ;SSIG=1: 忽略SS脚 ;SPEN=1:允许 SPI 工作 ;DORD=1:先传低位 LSB ;MSTR=1:设为主机 ;CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。 ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 else MOV SPCTL,#01101100B ;6CH, 设为从机, 由 SS 脚决定是否已被选中 ;SSIG=0: 由 SS 脚决定主模式或从模式。 ;SPEN=1:允许 SPI 工作 ;DORD=1:先传低位 LSB ;MSTR=0:设为从机 ;CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。 ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 endif MOV SPSTAT,#11000000B ;清0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6) ;向该两个标志位写"1" 会将它们清0 MOV A, #00001000B ORL AUXR, A ;令ESPI(AUXR.3)=1,允许SPIF(SPSTAT.7)产生中断 SETB EADC_SPI ;开 ADC 中断和 SPI 中断共享的总中断控制位 RET RS232_Send_Byte: ;RS232 串口发送一个字节 CLR TI ;清零串口发送中断标志 MOV SBUF, A RS232_Send_Wait: JNB TI, RS232_Send_Wait ;等待发送完毕, 未发送完毕跳回本行
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 131 CLR TI ;清零串口发送中断标志 RET ;此段程序只有主 MCU 调用 SPI_Send_Byte: ;SPI 发送一个字节 CLR EADC_SPI ;关 ADC 中断和 SPI 中断共享的总中断控制位 MOV SPDAT, A ;SPI 发送数据 SPI_Send_Byte_Wait: MOV A, SPSTAT ;等待 SPIF=1 即等待 SPI 发送完毕 ANL A, #80H JZ SPI_Send_Byte_Wait SETB EADC_SPI ;开 ADC 中断和 SPI 中断共享的总中断控制位 RET Get_Byte_From_RS232: ;取 RS-232 串口中收到的数据累加器 A MOV A, SBUF CLR RI RET END ;更详细的资料可以参阅 STC12C5410AD.pdf (中文使用说明)。 ;SPI 控制寄存器 ; 7 6 5 4 3 2 1 0 ;SPCTL SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 ;SSIG: 忽略SS脚, 如果 SSIG=1, 由 MSTR 位决定主模式或从模式, ; 如果 SSIG=0, 由 SS 脚决定主模式或从模式。 ;SPEN:SPI使能位。如果 SPEN=0,SPI功能被禁止,SPI 脚用作普通IO口 ;DORD:SPI 数据传输顺序。 ; 1:先传低位 LSB ; 0:先传高位 MSB ;MSTR:主/从模式选择位 ;CPOL:SPI 时钟信号极性选择位 ; 1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ; 0:SPI 空闲时 SPICLK = 0,前跳变沿是上升沿,后跳变沿是下降沿。 ;CPHA:SPI 时钟信号相位选择位 ; 1:数据由 SPICLK 前跳变沿驱动到口线,后跳变沿采样。 ; 0:当 SS 脚为低(SSIG=0)时数据被驱动到口线,并且在 SPICLK 后跳变沿数据 ; 被改变(被驱动到口线),在 SPICLK 前跳变沿数据被采样。注意:SSIG = 1 ; 时操作未定义。 ;SPR1-SPR0:主模式时 SPI 时钟速率选择 ; 00:fosc/4 ; 01:fosc/16 ; 10:fosc/64
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 132 ; 11:fosc/128 ; 当 CPHA=0,SSIG 必须等于零并且在传输时 SS 脚也必须一直保持为低。当 SS 有效 ;(=0)时向 SPDATA 寄存器写数据就会发生写冲突错误 ,WCOL 标志被置 1。 ; 当 CPHA=1,SSIG 可以等于 0 或 1。如果 SSIG=0,SS 脚在连续的传输时为 0(可以 ;一直保持为 0)。当系统中只有一个主和一个从 SPI 时,这是首选配置。 ;SPI 状态寄存器 ; 7 6 5 4 3 2 1 0 ;SPSTAT SPIF WCOL - - - - - - ;SPIF:SPI 传输结束标志。当一次传输结束时, SPIF 被置 1,如果 SPI 中断被打开: ; ESPI(AUXR.3)=1,EADC_SPI(IE.5)=1,EA(IE.7)=1, 就引起中断。如果原来 SPI ; 由 SS 脚确定为是主模式(SSIG=0,SS=1),当 SS 变成 0 时,SPIF 也会被置 1, ; 表示"模式改变 "。向 SPIF 位写 1 将该标志清 0。 ;WCOL:SPI 写冲突标志。当一个数据还在传输时 ,又向数据寄存器 SPDAT 写入数据,WCOL ; 就会被被置 1。向 WCOL 位写 1 将该标志清 0。 ;SPI 主/从模式选择 ;SPEN SSIG SS MATR 模式 MISO MOSI SPICLK 注释 ; 0 X X X 禁止SPI 输入 输入 输入 禁止SPI ; 1 0 0 0 从 输出 输入 输入 被选为从 ; 1 0 1 0 未选从 输入 输入 输入 从,但没有被选中 ; 1 0 0 1->0 从 输出 输入 输入 由主变为从 ; 1 0 1 1 主 输入 输出 输出 ; 1 1 X 0 从 输出 输入 输入 从 ; 1 1 X 1 主 输入 输出 输出 主
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 133 附录C: 用串行口扩展 I/O接口 STC12Cxxxx串行口的方式 0可用于 I/O扩展。如果在应用系统中,串行口未被占用,那么将它用 来扩展并行 I/O口是一种经济、实用的方法。 在操作方式 0时,串行口作同步移位寄存器 ,其波特率是固定的,为fosc/12(fosc为振荡器频 率)。数据由RXD端(P3.0)出入,同步移位时钟由TXD端(P3.1)输出。发送、接收的是8位数据,低位 在先。 一、用74LS165扩展并行输入口 下图是利用两片 74LS165扩展二个 8位并行输入口的接口电路图。 H G F E D C B A 5 4 3 141312116 QH QH S/L CP VCC SIN 74LS165 15 8 16 12Cxxxx P3.0 P3.1 P1.0 H G F E D C B A 5 4 3 141312116 QH QH S/L CP SIN 74LS165 152 2 74LS165是8位并行置入移位寄存器。当移位/置入端(S/L)由高到低跳变时,并行输入端的数据置 入寄存器;当 S/L=1,且时钟禁止端 (第 15脚)为低电平时 ,允许时钟输入 ,这时在时钟脉冲的作 用下,数据将由 QA到 QH方向移位。 上图中,TXD(P3.1)作为移位脉冲输出端与所有 74LS165的移位脉冲输入端 CP相连;RXD(P3.0) 作为串行输入端与 74LS165的串行输出端 QH相连;P1.0用来控制 74LS165的移位与置入而同 S/L相连; 74LS165的时钟禁止端(15脚)接地,表示允许时钟输入 。当扩展多个 8位输入口时,两芯片的首尾 (QH与 SIN)相连。 下面的程序是从 16位扩展口读入 5组数据(每组二个字节),并把它们转存到内部 RAM 20H开始的 单元中。 MOVR7,#05H ;设置读入组数 MOVRO,#20H ;设置内部 RAM数据区首址 START: CLRP1.0 ;并行置入数据 ,S/L=0 SETB P1.0 ;允许串行移位 S/L=1 MOVR1,#02H ;设置每组字节数,即外扩 74LS165的个数 RXDATA: MOVSCON,#00010000B ;设串行方式 0,允许接收 ,启动接收过程 WAIT: JNBRI,WAIT ;未接收完一帧 ,循环等待 CLRRI ;清 RI标志,准备下次接收 MOVA,SBUF ;读入数据 MOV@R0,A ;送至 RAM缓冲区 INCR0 ;指向下一个地址 DJNZR1,RXDATA ;为读完一组数据 ,继续 DJNZR7,START ;5组数据未读完重新并行置入 …… ;对数据进行处理 10 9 1 1 VCC 8 16 104 104
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 134 上面的程序对串行接收过程采用的是查询等待的控制方式 ,如有必要,也可改用中断方式。从理论 上讲,按上图方法扩展的输入口几乎是无限的 ,但扩展的越多,口的操作速度也就越慢。 二、用74LS164扩展并行输出口 74LS164是8位串入并出移位寄存器。下图是利用 74LS164扩展二个 8位输出口的接口电路。 QA 4 5 6 101112133 A,B GNDCLR CP 74LS164 12Cxxxx P3.0 P3.1 P1.0 1,2 VCC14 QB QC QD QE QF QG QH QA 4 5 6 101112133 A,B GNDCLR CP 74LS164 1,2 VCC14 QB QC QD QE QF QG QH 当单片机串行口工作在方式 0的发送状态时,串行数据由 P3.0(RXD)送出,移位时钟由 P3.1 (TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入 74LS164中。需要指出的是, 由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场 合,在74LS164的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据 。 下面是将 RAM缓冲区 30H、31H的内容串行口由 74LS164并行输出的子程序。 START: MOV R7,#02H ;设置要发送的字节个数 MOV R0,#30H ;设置地址指针 MOV SCON,#00H ;设置串行口方式 0 SEND: MOV A,@R0 MOV SBUF,A ;启动串行口发送过程 WAIT: JNB TI,WAIT ;一帧数据未发送完 ,循环等待 CLR TI INC R0 ;取下一个数 DJNZ R7,SEND RET 104 104
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 135 附录D: STC12C2052AD系列 1T 单片机简介 STC12C2052系列单片机是单时钟 /机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代 8051单片机,全新的流水线 /精简指令集结构,内部集成 MAX810专用复位电路。 特点 : 现已大批量供货(PDIP-20/SOP-20),欢迎提前定货。 STC12C5410AD系列是STC12C2052AD系列的后续产品 供货 : 1. 增强型 1T 流水线/精简指令集结构 8051 CPU 3. 工作频率范围:0 - 35 MHz,相当于普通 8051的 0~420MHz.实际工作频率可达 48MHz. 4. 用户应用程序空间512 / 1K / 2K / 3K / 4K / 5K 字节 5. 片上集成 256 字节 RAM 6. 通用 I/O口(15个),复位后为: 准双向口 /弱上拉(普通 8051传统 I/O口) 可设置成四种模式 :准双向口 /弱上拉,推挽 /强上拉,仅为输入 /高阻,开漏 每个I/O口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA 7.ISP(在系统可编程 )/IAP(在应用可编程 ),无需专用编程器 可通过串口(P3.0/P3.1)直接下载用户程序,2秒 ~ 3秒即可完成一片 8. EEPROM 功能 9. 看门狗 10.内部集成MAX810专用复位电路 11.时钟源:高精度外部晶体 /时钟,内部 R/C 振荡器 用户在下载用户程序时,可选择是使用内部 R/C振荡器还是外部晶体 /时钟 常温下内部R/C 振荡器频率为:5.65MHz ~ 5.95MHz 精度要求不高时,可选择使用内部时钟,但因为有温漂,应认为是 4MHz ~ 8MHz 12.共2个16位定时器/计数器 13.外部中断2路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒 14.PWM(2路)/PCA(可编程计数器阵列 ) ---也可用来再实现 2个定时器或2个外部中断(上升沿中断/下降沿中断均可支持) 15.ADC, 8路8位精度 16.通用异步串行口(UART) 17.SPI同步通信口, 主模式/从模式 19.封装: PDIP-20,SOP-20(宽体),TSSOP-20(超小封状,定货) 1.内部 RAM 增加到 512 字节 2.内部 I/O 口 增加到 23 个(PDIP-28/SOP-28), PLCC-32 为27个 3.内部 PCA/PWM 模块 增加到 4 个 4.内部 A/D 模块 提升到 10位 精度 5.内部 Flash 程序空间为 2K / 4K / 6K / 8K / 10K / 12K 6.封装:PDIP-28(窄体),SOP-28,PLCC-32,PDIP-20,SOP-20,TSSOP-20 7.供货:2005-12-5开始提供样品(PDIP-28/SOP28/PLCC32),2005年12月底批量供货
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 136 RST 1 20 VCC RxD/P3.0 2 19 P1.7/SCLK/ADC7 TxD/P3.1 3 18 P1.6/MISO/ADC6 XTAL2 4 17 P1.5/MOSI/ADC5 INT0/P3.2 6 15 P1.3/ADC3 INT1/P3.3 7 14 P1.2/ADC2 ECI/T0/P3.4 8 13 P1.1/ADC1 PWM1/CEX1/T1/P3.5 9 12 P1.0/ADC0 Gnd 10 11 P3.7/CEX0/PWM0 XTAL1 5 16 P1.4/SS/ADC4 RST 1 20 VCC RxD/P3.0 2 19 P1.7/SCLK TxD/P3.1 3 18 P1.6/MISO XTAL2 4 17 P1.5/MOSI INT0/P3.2 6 15 P1.3 INT1/P3.3 7 14 P1.2 ECI/T0/P3.4 8 13 P1.1 PWM1/CEX1/T1/P3.5 9 12 P1.0 Gnd 10 11 P3.7/CEX0/PWM0 XTAL1 5 16 P1.4/SS STC12C2052AD系列单片机管脚图及封装尺寸 STC12C2052 STC12C2052AD 20P3, 20-lead, 0.300" Wide, Plastic Dual Inline Package (PDIP-20) Dimensions in Inches and (Millimeters) JEDEC STANDARD MS-001 AD 20S, 20-lead, 0.300" Wide, Plastic Gull WIng Small Outline (SOIC-20 / SOP-20) Dimensions in Inches and (Millimeters) PIN1 0.020 (0.508) 0.013 (0.330) 0.299 (7.60) 0.291 (7.39) 0.420 (10.7) 0.393 (9.98) 0.050 (1.27) 0.513 (13.0) 0.092 (2.34) 0.012 (0.305) 0.003 (0.076) 0.013 (0.330) 0.009 (0.229) 0.035 (0.889) 0.015 (0.381) 8REF PIN1 1.060 (26.9) 0.980 (24.9) 0.280 (7.11) 0.240 (6.10) 0.090(2.29) MAX 0.005(0.127) MIN 0.900(22.86) REF 0.210(5.33) MAX 0.150 (3.81) 0.115 (2.92) 0.045(1.13) 0.022 (0.559) 0.014 (0.356) 0.015(0.381)MIN 0.325(8.26) 0.300(7.62) 0.014(0.356) 0.008(0.203) 0.430(10.92)MAX 15REF SEATING PLANE
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 137 PACKAGE:PLASTIC SHRINK SMALL OUTLINE(TSSOP-20,6.4mm× 6.4mm) 20-PIN A B D E e L Φ DIMENSIONS in inches (mm) Minimum/Maximum - /0.043 (- /1.10) 0.002/0.006 (0.05/0.15mm) 0.007/0.012 (0.19/0.30mm) 0.252/0.260 (6.40/6.60mm) 0.169/0.177 (4.30/4.50mm) (0.65mm BSC) (3.20mm BSC) 0.020/0.030 (0.50/0.75mm) 0°/8° E(4.5mm) E2(3.2mm) STC12LE4052AD提供TSSOP-20封装 6.4mm A Φ D(6.40mm~6.60mm) STC12C4052AD提供TSSOP-20封装
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 138 附录E: STC单片机普通 I/O口驱动LCD显示 P1.5 P1.6 P1.7 RST P3.0 P4.3 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 XTAL1 VSS P4.0 P2.0 P2.1 P2.2 P2.3 P2.4 P0.4 P0.5 P0.6 P0.7 EA P4.1 ALE PSEN P2.7 P2.6 P2.5 P1.4 P1.3 P1.2 P1.1 P1.0 P4.2 VDD P0.0 P0.1 P0.2 P0.3
6 Seg12
5 Seg11
4 Seg10
3 Seg9
2 Seg8
43 Seg0
42 Seg1
41 Seg2
5.6K R2 Seg13 Seg14 Seg15 Seg16 Seg17 Seg18 Seg19 Seg20 Seg23 Seg22 Seg21 Com0 0Com0 Com1 Seg0 Com1 1 Seg0 2 Seg1Seg1 3 Seg2Seg2 4 Seg3Seg3 5 Seg4Seg4 6 Seg5Seg5 7 Seg6Seg6 8 Seg7Seg7 9 Seg8Seg8 10 Seg9Seg9 11 Seg10Seg10 12 Seg11Seg11 13 Seg12Seg12 14 Seg13Seg13 15 Seg14Seg14 16 Seg15Seg15 17 Seg16Seg16 18 Seg17Seg17 19 Seg18Seg18 20 Seg19Seg19 21 Seg20Seg20 22 Seg21Seg21 23 Seg22Seg22 24 Seg23Seg23 25 Com2Com2 26 STC89C58RD+ Seg4 Seg5 Seg6 Seg7 VCC 10K 10uF VCC 21K VCC PLCC-44 <33pF<33pF 本资料不提供技术支持 ,请自行消化吸收 5.6K R3 5.6K R4 5.6K R5 5.6K R6 5.6K R7
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 139 NAME LcdDriver $include(STC89C51RC.h) ;the LCD is 1/3 duty and 1/3 bias; 3Com*24Seg; 9 display RAM; ; Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ;Com0: Com0Data0: Seg7 Seg6 Seg5 Seg4 Seg3 Seg2 Seg1 Seg0 ; Com0Data1: Seg15 Seg14 Seg13 Seg12 Seg11 Seg10 Seg9 Seg8 ; Com0Data2: Seg23 Seg22 Seg21 Seg20 Seg19 Seg18 Seg17 Seg16 ;Com1: Com1Data0: Seg7 Seg6 Seg5 Seg4 Seg3 Seg2 Seg1 Seg0 ; Com1Data1: Seg15 Seg14 Seg13 Seg12 Seg11 Seg10 Seg9 Seg8 ; Com1Data2: Seg23 Seg22 Seg21 Seg20 Seg19 Seg18 Seg17 Seg16 ;Com2: Com2Data0: Seg7 Seg6 Seg5 Seg4 Seg3 Seg2 Seg1 Seg0 ; Com2Data1: Seg15 Seg14 Seg13 Seg12 Seg11 Seg10 Seg9 Seg8 ; Com2Data2: Seg23 Seg22 Seg21 Seg20 Seg19 Seg18 Seg17 Seg16 ;Com0: P3^0,P3^1 when P3^0 = P3^1 = 1 then Com0=VCC(=5V); ; P3^0 = P3^1 = 0 then Com0=GND(=0V); ; P3^0 = 1, P3^1=0 then Com0=1/2 VCC; ;Com1: P3^2,P3^3 the same as the Com0 ;Com2: P3^4,P3^5 the same as the Com0 sbit SEG0 =P0^0 sbit SEG1 =P0^1 sbit SEG2 =P0^2 sbit SEG3 =P0^3 sbit SEG4 =P0^4 sbit SEG5 =P0^5 sbit SEG6 =P0^6 sbit SEG7 =P0^7 sbit SEG8 =P1^0 sbit SEG9 =P1^1 sbit SEG10 =P1^2 sbit SEG11 =P1^3 sbit SEG12 =P1^4 sbit SEG13 =P1^5 sbit SEG14 =P1^6 sbit SEG15 =P1^7 sbit SEG16 =P2^0 sbit SEG17 =P2^1 sbit SEG18 =P2^2 sbit SEG19 =P2^3
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 140 sbit SEG20 =P2^4 sbit SEG21 =P2^5 sbit SEG22 =P2^6 sbit SEG23 =P2^7 CSEG AT 0000H LJMP start CSEG AT 000BH LJMP int_t0 lcdd_bit SEGMENT BIT RSEG lcdd_bit OutFlag: DBIT 1 ;the output display reverse flag lcdd_data SEGMENT DATA RSEG lcdd_data Com0Data0: DS 1 Com0Data1: DS 1 Com0Data2: DS 1 Com1Data0: DS 1 Com1Data1: DS 1 Com1Data2: DS 1 Com2Data0: DS 1 Com2Data1: DS 1 Com2Data2: DS 1 TimeS: DS 1 ;======Interrupt Code========================== t0_int SEGMENT CODE RSEG t0_int USING 1 ;Time0 interrupt ;ths system crystalloid is 22.1184MHz ;the time to get the Time0 interrupr is 2.5mS ;the whole duty is 2.5mS*6=15mS, including reverse int_t0: ORL TL0,#00H MOV TH0,#0EEH PUSH ACC PUSH PSW
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 141 MOV PSW,#08H ACALL OutData POP PSW POP ACC RETI uart_sub SEGMENT CODE RSEG uart_sub USING 0 ;initial the display RAM data ;if want to display other,then you may add other data to this RAM ;Com0: Com0Data0,Com0Data1,Com0Data2 ;Com1: Com1Data0,Com1Data1,Com1Data2 ;Com2: Com2Data0,Com0Data1,Com0Data2 InitComData: ;it will display "11111111" MOV Com0Data0,#24H MOV Com0Data1,#49H MOV Com0Data2,#92H MOV Com1Data0,#92H MOV Com1Data1,#24H MOV Com1Data2,#49H MOV Com2Data0,#00H MOV Com2Data1,#00H MOV Com2Data2,#00H RET ;reverse the display data RetComData: MOV R0,#Com0Data0 ;get the first data address MOV R7,#9 RetCom_0: MOV A,@R0 CPL A MOV @R0,A INC R0 DJNZ R7,RetCom_0 RET
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 142 ;get the display Data and send to Output register OutData: INC TimeS MOV A,TimeS MOV P3,#11010101B ;clear display,all Com are 1/2VCC and invalidate CJNE A,#01H,OutData_1 ;judge the duty MOV P0,Com0Data0 MOV P1,Com0Data1 MOV P2,Com0Data2 JNB OutFlag,OutData_00 MOV P3,#11010111B ;Com0 is work and is VCC RET OutData_00: MOV P3,#11010100B ;Com0 is work and is GND RET OutData_1: CJNE A,#02H,OutData_2 MOV P0,Com1Data0 MOV P1,Com1Data1 MOV P2,Com1Data2 JNB OutFlag,OutData_10 MOV P3,#11011101B ;Com1 is work and is VCC RET OutData_10: MOV P3,#11010001B ;Com1 is work and is GND RET OutData_2: MOV P0,Com2Data0 MOV P1,Com2Data1 MOV P2,Com2Data2 JNB OutFlag,OutData_20 MOV P3,#11110101B ;Com2 is work and is VCC SJMP OutData_21 OutData_20: MOV P3,#11000101B ;Com2 is work and is GND OutData_21: MOV TimeS,#00H ACALL RetComData CPL OutFlag RET
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 143 uart_main SEGMENT CODE RSEG uart_main USING 0 start: MOV SP,#40H CLR OutFlag MOV TimeS,#00H MOV TL0,#00H MOV TH0,#0EEH MOV TMOD,#01H MOV IE,#82H ACALL InitComData SETB TR0 Main: NOP SJMP Main END
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 144 附录F: 一个I/O口驱动发光二极管并扫描按键 P1.7 P1.6 P1.5 P1.4 利用STC12C5410系列单片机的I/O口可设置成弱上拉,强上拉(推挽)输出,仅为输入(高阻),开漏四种模式 当驱动发光二极管时 ,将该 I/O口设置成强上拉推挽输出 ,输出高即可点亮发光二极管 当检测按键时,将该 I/O口设置成弱上拉,然后输出 1,再读外部口的状态,即可检测按键 的特性,可以利用 STC12C5410系列单片机的 I/O口同时作为发光二极管驱动及按键检测用 ,可以大幅节 省I/O口。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 145 GND MR uC / DSP 10K <1.25V 时 STC6342 PFO=0 PFI PFO Interrupt VCC RESET RESET VCC 电源稳压 PFI PFO Interrupt STC813L 100K GND WDI I/O MR WDO VCC RESET RESET 电源稳压 VCC STC89C54RD+ <1.25V 时 PFO=0 STC89C52RC STC89C51RC STC89C53RC STC89C58RD+ STC89C516RD+ PFI PFO Interrupt STC706S 100K GND WDI I/O MR WDO VCC RESET RESET VCC uC / DSP <1.25V 时 PFO=0 电源稳压 GND MR 单片机100K <1.25V 时 STC6344 PFO=0 PFI PFO Interrupt VCC RESET RESET VCC 电源稳压 附录G: 典型 MCU/DSP/uC复位、电源监控、外部看门狗专用电路 上电复位, 掉电复位 1.高电平复位信号输出 上电复位, 掉电复位,外部手动复位,稳压块前端掉电检测 上电复位, 掉电复位 电源稳压块前端掉电检测, 高/低电平2路复位信号输出 上电复位, 掉电复位,外部手动复位, 电源稳压块前端掉电检测, 外部硬件看门狗 2.低电平复位信号输出 上电复位, 掉电复位 上电复位, 掉电复位,外部手动复位,稳压块前端掉电检测 上电复位, 掉电复位,外部手动复位, 电源稳压块前端掉电检测, 外部硬件看门狗 上电复位, 掉电复位,外部手动复位, 电源稳压块前端掉电检测, 高/低电平2路复位信号输出 STC810 *推荐 VCC 3
1 GND
2 RESETRESET
STC809 *推荐 VCC 3 GND RESET 单片机 10K <1.25V 时 STC6345 PFO=0 PFI PFO Interrupt VCC RESET RESET RESET uC / DSP VCC 电源稳压 MR RESET PFI PFO Interrupt STC708 100K GND NC VCC RESET VCC RESET <1.25V 时 PFO=0 电源稳压 RESET uC / DSP 单片机 使用外部专用复位电路的好处 :(推荐使用 STC6344,STC6345,STC810) 1.确保上电时 ,在用户设定的电源电压之上 ,时钟振荡稳定后 ,单片机才开始工作 2.确保掉电时 ,在用户设定的电源电压之下 ,立即让单片机复位 ,以免单片机误动作 3.具有电源稳压块前端掉电检测的专用复位电路 ,确保掉电前有充分的时间保存数据 人民币2元 人民币2元 人民币
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 146 附录H: STC 高性能SRAM选型一览表 STC62WV1024 A11 1 32 OE A14 11 22 DQ1 A12 12 21 DQ0 A7 13 20 A0 A6 14 19 A1 A5 15 18 A2 A4 16 17 A3 A16 10 23 DQ2 NC 9 24 GND VCC 8 25 DQ3 A15 7 26 DQ4 CE2 6 27 DQ5 WE 5 28 DQ6 A13 4 29 DQ7 A8 3 30 CE1 A9 2 31 A10 TSOP / STSOP-32 A14 11 22 DQ1 A12 12 21 DQ0 A7 13 20 A0 A6 14 19 A1 A5 15 18 A2 A4 16 17 A3 A11 1 32 OE A16 10 23 DQ2 A9 2 31 A10 A8 3 30 CE A13 4 29 DQ7 WE 5 28 DQ6 A17 6 27 DQ5 VCC 8 25 DQ3 A15 7 26 DQ4 A18 9 24 GND STC62WV5128 STSOP-32 STC62WV1M8 DQ2 13 32 DQ5 DQ3 14 31 DQ4 NC 15 30 NC NC 16 29 NC A15 22 23 A14 A16 21 24 A13 A17 20 25 A12 A18 19 26 A11 A19 18 27 A10 WE 17 28 A9 GND 12 33 VCC DQ1 10 35 DQ6 A1 4 41 OE VCC 11 34 GNDTSOP-Ⅱ-44 A4 1 44 A5 A3 2 43 A6 A2 3 42 A7 A0 5 40 CE2 CE1 6 39 A8 NC 7 38 NC NC 8 37 NC DQ0 9 36 DQ7 STC62WV25616 DQ4 13 32 DQ11 DQ5 14 31 DQ10 DQ6 15 30 DQ9 DQ7 16 29 DQ8 A13 22 23 A12 A14 21 24 A11 A15 20 25 A10 A16 19 26 A9 A17 18 27 A8 WE 17 28 NC GND 12 33 VCC DQ3 10 35 DQ12 A1 4 41 OE VCC 11 34 GND TSOP-Ⅱ-44 A4 1 44 A5 A3 2 43 A6 A2 3 42 A7 A0 5 40 UB CE 6 39 LB DQ0 7 38 DQ15 DQ1 8 37 DQ14 DQ2 9 36 DQ13 STC62WV12816 DQ4 13 32 DQ11 DQ5 14 31 DQ10 DQ6 15 30 DQ9 DQ7 16 29 DQ8 A12 22 23 NC A13 21 24 A11 A14 20 25 A10 A15 19 26 A9 A16 18 27 A8 WE 17 28 NC GND 12 33 VCC DQ3 10 35 DQ12 A1 4 41 OE VCC 11 34 GND TSOP-Ⅱ-44 A4 1 44 A5 A3 2 43 A6 A2 3 42 A7 A0 5 40 UB CE 6 39 LB DQ0 7 38 DQ15 DQ1 8 37 DQ14 DQ2 9 36 DQ13 STC62WV51216 DQ4 13 32 DQ11 DQ5 14 31 DQ10 DQ6 15 30 DQ9 DQ7 16 29 DQ8 A14 22 23 A13 A15 21 24 A12 A16 20 25 A11 A17 19 26 A10 A18 18 27 A9 WE 17 28 A8 VSS 12 33 VCC DQ3 10 35 DQ12 A1 4 41 OE VCC 11 34 VSS TSOP-Ⅱ-44 A4 1 44 A5 A3 2 43 A6 A2 3 42 A7 A0 5 40 UB CE 6 39 LB DQ0 7 38 DQ15 DQ1 8 37 DQ14 DQ2 9 36 DQ13 STC62WV1024 A7 5 28 A13 A12 4 29 WE A14 3 30 CE2 NC 1 32 VCC A3 9 24 OE A4 8 25 A11 A2 10 23 A10 A1 11 22 CE1 A0 12 21 DQ7 DQ0 13 20 DQ6 DQ1 14 19 DQ5 DQ2 15 18 DQ4 GND 16 17 DQ3 A5 7 26 A9 A16 2 31 A15 A6 6 27 A8 SOP-32 型号 容量 工作电压 温度 速度 推荐封状 供货 STC62WV256 32K x 82.4 - 5.5V-40℃~85℃ 70nSSOP/TSOP/DIP现货 STC62WV1024128K x 82.4 - 5.5V-40℃~85℃ 70nSSOP/STSOP/TSOP现货 STC62WV2568256K x 82.4 - 5.5V-40℃~85℃ 70nSSTSOP-32现货 STC62WV5128512K x 82.4 - 5.5V-40℃~85℃ 70nSSTSOP/SOP-32现货 STC62WV1M8 1M x 82.4 - 5.5V-40℃~85℃ 70nSTSOP2-44订货 STC62WV6416 64K x 82.4 - 5.5V-40℃~85℃ 70nSTSOP2-44现货 STC62WV12816128K x 162.4 - 5.5V-40℃~85℃ 70nSTSOP2-44现货 STC62LV12816128K x 162.4 - 3.6V-40℃~85℃ 70nSTSOP2-44现货 STC62WV25616256K x 162.4 - 5.5V-40℃~85℃ 70nSTSOP2-44现货 STC62WV51216512K x 162.4 - 5.5V-40℃~85℃ 70nSTSOP2-44现货 STC62WV256 SOP-28 DQ2 13 16 DQ4 GND 14 15 DQ3 DQ1 12 17 DQ5 A0 10 19 DQ7 A6 4 25 A8 DQ0 11 18 DQ6 A14 1 28 VCC A12 2 27 WE A7 3 26 A13 A5 5 24 A9 A4 6 23 A11 A3 7 22 OE A2 8 21 A10 A1 9 20 CE
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 147 附录I: 超强抗干扰测试数据,过4000V快速脉冲干扰 ---在权威的 SGS电气实验室测试 SGS WORKSHEET: EFT Test(EN 61000-4-4) EUT NAME:STC12C5410AD Development Tool Environmental conditions Set-Up EUT for Compliance Test Test Requirement Standard EN 61000-4-4Set up the EUT as Table-top Operating mode during testON MODE Detail EUT monitor system: STC12C5410AD control LED flashing function Compliance-Test Record Compliance Test Result On AC Cable ( 2 wire ) Lead under testLevel EUT operating modeObservations L +/-4kV ON MODE NLOF N +/-4kV ON MODE NLOF L+N +/-4kV ON MODE NLOF Test Conclusion and Reason Test Conclusion: Pass Reason(explain why? ): Class A Note: This sample pass the Class A(2kV) According to the customer’s require up to 4kV,test result: PASS 4kV 我们提供过 4000V快速脉冲干扰辅导服务 ,陪同在权威的 SGS电气实验室测试 , 1小时收取人民币 3000元,提前一周预约 。 Iss Date Jan 06,2006 Air Temperature (℃) 20Relative Humidity(%RH) 56Air Pressure (mBar) 1003
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 148 附录J: STC12C5410AD系列单片机应用注意事项 关于复位电路 : 晶振频率在 20M以下时:可以不用外部复位电路 ,原复位电路可以保留 ,也可以不用,不用时复位脚可 直接短到地。不过建议设计时 PCB板上保留 R/C复位电路,实际使用时再决定用或不用 。 关于时钟 : 如果使用内部 R/C振荡器时钟(4MHz~8MHz,制造误差加温漂),XTAL1和XTAL2脚浮空. 如果外部时钟频率在 33MHz以上时,建议直接使用外部有源石英晶体振荡器,时钟从XTAL1脚输入,XTAL2脚 必须浮空. A版 /B版,老版本应用注意事项 (现新版本 C版本已经改好 ,并开始大量供货 ): ★空闲模式(IDLE)不要用,新版本 C版本已修改好 ★对普通可位寻址的RAM(20H - 2FH)的位(位地址: 00H - 7FH),用JBC RAM_Bit 无任何问题 ★对可位寻址的特殊功能寄存器的位(80H - FFH) 不要用 JBC SFR_Bit 指令 用 JB SFR_Bit / CLR SFR_Bit 指令取代 举例: 定时器0、定时器1使用时建议直接用中断方式,与普通8051单片机完全兼容 但如不用中断,而用查询方式,建议用 JB TF0 查询/ 再CLR TF0;JB TF1查询 / 再CLR TF1。 不要用 JBC TF0 / JBC TF1 此问题新版本正在修正中 ,但实际并不影响用户使用 。 原因 : 主要是特殊功能寄存器的整个 8位值被读出后,如在我们判断该位为 1后,将该位清零,并将整个 8位值再一 起写回之前,它的部分其它位如已由硬件设置发生变化 ,而我们JBC判断后再写回时,新的值被破坏,被写成 了老的值。 如果该位是 0,则不会再写回,就不会发生此事。 如果该位变成了 1,该特殊功能寄存器的其它位在此瞬间未发生变化 ,再一起写回,也无问题。 如果该位变成了 1,该特殊功能寄存器的其它位在此瞬间发生变化 ,其它在此瞬间发生变化的位就会被破坏, 又被写成老的值。
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南 149 附录K: 资料升级历史备忘录 ※STC12C5410AD系列单片机新的 C版本已开始大量供货 2006-4-15版本在 2006-3-25版本的基础上 : 部分目录和内容做了调整 通知新版本 C版本已经大量供货 2006-3-25版本在 2006-2-6版本的基础上: 在 PWM/PCA的应用部分增加了在使用 PCA高速输出模式时的特别应用注意事项 2006-2-6版本在 2005-1-16版本的基础上: 增加了定时器 1做波特率发生器的程序 增加了如何用软件实现系统复位 增加了附录 I典型 MCU/DSP/uC复位、电源监控 、外部看门狗专用电路 增加了附录 J STC高性能 SRAM选型一览表 增加了附录 L: 超强抗干扰测试数据 ,过 4000V快速脉冲干扰 对 EEPROM测试程序的解释说明部分做了加强 对看门狗测试程序的解释说明部分做了加强 2006-1-16版本在 2005-12-31版本的基础上: 1.A/D转换程序做了简化 2.PCA/PWM模块增加了新的演示程序 (扩展软件定时器 ,扩展外部中断 ) 2005-12-31版本在 2005-12-24版本的基础上 : 1.修正了 PCA/PWM部分笔误,4路 PCA/PWM原有些部分笔误为 2路 2.原A/D转换结果计算公式 :笔误 结果(ADC_DATA[7:0],ADC_LOW2[1:0])=256 x Vin / Vcc 现改为 结果 ( ADC_DATA[7:0],ADC_LOW2[1:0] ) = 1024 x Vin / Vcc 3.增加了 STC单片机普通 I/O口驱动 LCD显示的参考电路及演示程序 4.增加了一个 I/O口驱动发光二极管并扫描按键 5.增加了 STC12C5410系列单片机应用注意事项