24-bitDeltaSigmaA/DFlash单片机内置2个触控按键&LCD驱动器BH67F5235版本:V1.
10日期:2019-11-04Rev.
1.
1022019-11-04目录特性6CPU特性6周边特性6应用领域7概述7方框图7引脚图8引脚说明9极限参数10直流电气特性10工作电压特性10待机电流特性11工作电流特性11交流电气特性12内部高速振荡器–HIRC–频率精确度.
12内部低速振荡器电气特性–LIRC.
12工作频率电气特性曲线图12系统上电时间电气特性13输入/输出口电气特性14存储器电气特性15LVR电气特性1524-bitDeltaSigmaA/D转换器电气特性.
16有效位数(ENOB)18LCD电气特性.
18上电复位特性19系统结构20时序和流水线结构20程序计数器21堆栈21算术逻辑单元–ALU21Flash程序存储器.
22结构22特殊向量22查表22查表范例23在线烧录–ICP.
24片上调试–OCDS.
24数据存储器25结构25Rev.
1.
1032019-11-04通用数据存储器25特殊功能数据存储器26特殊功能寄存器27间接寻址寄存器–IAR0,IAR127存储器指针–MP0,MP1.
27存储区指针–BP27累加器–ACC28程序计数器低字节寄存器–PCL.
28表格寄存器–TBLP,TBHP,TBLH.
28状态寄存器–STATUS.
28模拟EEPROM数据存储器.
30模拟EEPROM数据存储器结构.
30模拟EEPROM寄存器.
30擦除模拟EEPROM数据.
33写数据到模拟EEPROM.
33从模拟EEPROM中读取数据.
34编程注意事项34振荡器36振荡器概述36系统时钟配置36内部高速RC振荡器–HIRC36内部32kHz振荡器–LIRC37工作模式和系统时钟37系统时钟37系统工作模式37控制寄存器39工作模式切换40待机电流的注意事项43唤醒43看门狗定时器44看门狗定时器时钟源44看门狗定时器控制寄存器44看门狗定时器操作45复位和初始化46复位功能46复位初始状态49输入/输出端口52上拉电阻52PA口唤醒52输入/输出端口控制寄存器.
53输入/输出端口源电流选择.
53引脚共用功能54输入/输出引脚结构.
55编程注意事项55Rev.
1.
1042019-11-04定时器模块–TM.
56简介56TM操作56TM时钟源56TM中断56TM外部引脚56编程注意事项57简易型TM–CTM.
58简易型TM操作58简易型TM寄存器介绍58简易型TM工作模式62A/D转换器.
68A/D转换器简介68内部电源68A/D转换器数据传输率的定义69A/D转换器寄存器介绍70A/D转换器操作74A/D转换步骤76编程注意事项77A/D转换器传输功能77A/D转换数据78A/D转换数据转为电压值78温度传感器78A/D转换应用范例79LCD驱动.
80LCD显示数据存储器80LCD时钟源80LCD寄存器80LCD充电泵82LCD电压源和偏压82LCD复位状态83LCD驱动输出83编程注意事项86触控按键功能87触控按键结构87触控按键寄存器说明87触控按键操作91触控按键中断92编程注意事项92中断92中断寄存器92中断操作95外部中断96A/D转换器中断96Rev.
1.
1052019-11-04多功能中断96时基中断97TM中断98触控按键模块中断99中断唤醒功能99编程注意事项99应用电路100指令集101简介101指令周期101数据的传送101算术运算101逻辑和移位运算101分支和控制转换102位运算102查表运算102其它运算102指令集概要103惯例103指令定义105封装信息11724-pinSSOP(150mil)外形尺寸11828-pinSSOP(150mil)外形尺寸119SAWType32-pinQFN(4mm*4mm*0.
75mm)外形尺寸.
120Rev.
1.
1062019-11-04特性CPU特性工作电压fSYS=8MHz:2.
2V~5.
5VVDD=5V,系统时钟为8MHz时,指令周期为0.
5μs暂停和唤醒功能,以降低功耗振荡器类型内部高速8MHzRC振荡器–HIRC内部低速32kHzRC振荡器–LIRC多种工作模式:快速模式、低速模式、空闲模式和休眠模式内部集成的振荡器,无需外接元件所有指令都可在1或2个指令周期内完成查表指令63条功能强大的指令系统4层硬件堆栈位操作指令周边特性Flash程序存储器:3K*16RAM数据存储器:192*8模拟EEPROM存储器:32*16看门狗定时器功能多达5个双向I/O口可编程I/O口源电流用于LED驱动应用两个与I/O口复用的外部中断输入1个定时器模块用于时间测量、比较匹配输出或PWM输出双时基功能,用于产生固定时间的中断信号低电压复位功能1组差分通道或2个单端通道24位分辨精度的DeltaSigmaA/D转换器LCD驱动功能SEG*COM:16*4占空比类型:1/4Duty偏压电平:1/3bias偏压类型:R型波形类型:A型或B型2个触控按键功能–内部集成,无需外接元件封装类型:24/28-pinSSOP、32-pinQFNRev.
1.
1072019-11-04应用领域厨房秤其它量测类产品概述BH67F5235是一款8位具有高性能精简指令集且内置一个多通道24-bitDeltaSigmaA/D转换器的A/DFlash单片机,专门为需直接连接至模拟信号且要求低噪声,高精度A/D转换器的应用而设计.
该单片机具有一系列功能和特性,其Flash存储器可多次编程的特性给客户提供了极大的方便.
除了Flash程序存储器,还包括RAM数据存储器和用于存储序列数据、校准数据等非易失性数据的模拟EEPROM存储器.
在模拟特性方面,该单片机包含一个带差分和单端输入的多通道24-bitDeltaSigmaA/D转换器.
LCD驱动器和触摸按键功能完全集成于单片机内部,无需外部元件.
其具有使用灵活的定时器模块,可提供定时功能、脉冲产生功能及PWM产生功能.
内部看门狗定时器、低电压复位和低电压检测等内部保护特性,外加优秀的抗干扰和ESD保护性能,确保单片机在恶劣的电磁干扰环境下可靠地运行.
该单片机提供了内部高速和低速振荡器功能选项,且内建完整的系统振荡器,无需外接元器件.
其在不同工作模式之间动态切换的能力,为用户提供了一个优化单片机操作和减少功耗的手段.
包含I/O使用灵活、时基功能和其它特性确保了该单片机可以广泛应用于各种产品中,例如体重秤或其它量测类产品.
方框图InterruptControllerBusMUXSYSCLKResetCircuitLVRStack4-levelRAM192*8ROM3K*16EmulatedEEPROM32*16WatchdogTimerPortADriverHIRC8MHzLIRC32kHzPin-SharedFunctionINT0~INT1Pin-SharedWithPortATimeBasesPA0~PA4TimerDigitalPeripheralsVIN/5VTSOP:Pin-SharedNodeSINCFIlterVDD/VINBandgapLDO24-bitADCVREFPVOREG/VREFPAN0VIN/6AN1VTSONVSS/AVSS/VREFNVREFNEMIFilterEMIFilterPGAPin-SharedWithPortAKEY1TouchKeyFunctionTouchKeyModule0MUXC/FCircuitKEY2AnalogPeripheralsClockSystemI/OLCDLCDDriverLCDRAMCOM0~COM3SEG0~SEG15HT8MCUCorePLCDMUXMUXRev.
1.
1082019-11-04引脚图242322212019181716151413123456789101112VDD/VINPA0/INT1/CTP/ICPDA/OCDSDAPA2/INT0/ICPCK/OCDSCKPA1/CTPB/KEY1PA3/CTCK/KEY2COM0COM1COM2COM3PLCDSEG13SEG12VOREG/VREFPVSS/AVSS/VREFNAN0AN1SEG4SEG5SEG6SEG7SEG8SEG9SEG10SEG11BH67F5235/BH67V523524SSOP-A28272625242322212019181716151234567891011121314VDD/VINPA0/INT1/CTP/ICPDA/OCDSDAPA2/INT0/ICPCK/OCDSCKPA1/CTPB/KEY1PA3/CTCK/KEY2COM0COM1COM2COM3PLCDSEG13SEG12SEG11SEG10VOREG/VREFPVSS/AVSS/VREFNAN0AN1SEG0SEG1SEG2SEG3SEG4SEG5SEG6SEG7SEG8SEG9BH67F5235/BH67V523528SSOP-ABH67F5235BH67V523532QFN-A9101112131415162526272829303132123456782423222120191817PA1/CTPB/KEY1PA3/CTCK/KEY2COM0SEG15COM1COM2COM3PLCDSEG14SEG13SEG12SEG11SEG10SEG9SEG8SEG7SEG6SEG5SEG4SEG3SEG2SEG1SEG0AN1AN0AVSS/VREFNVOREG/VREFPVDD/VINVSSPA4PA0/INT1/CTP/ICPDA/OCDSDAPA2/INT0/ICPCK/OCDSCK注:1.
所需引脚共用功能通过相关引脚共用控制位决定.
2.
在较小封装中可能含有未引出的引脚,需合理设置其状态以避免输入浮空造成额外耗Rev.
1.
1092019-11-04电,详见"待机电流注意事项"和"输入/输出端口"章节.
3.
OCDSDA和OCDSCK引脚为片上调试功能专用引脚,仅存在于BH67F5235的OCDSEV芯片BH67V5235.
引脚说明每个引脚的功能如下表所述,而引脚配置的详细内容见规格书其它章节.
引脚名称功能OPTI/TO/T说明PA0/INT1/CTP/ICPDA/OCDSDAPA0PAWUPAPUPASSTCMOS通用I/O口,可通过寄存器设置上拉电阻和唤醒功能INT1PASINTEGINTC0ST—外部中断输入CTPPAS—CMOSCTM输出ICPDA—STCMOSICP数据/地址OCDSDA—STCMOSOCDS数据/地址,仅用于EV芯片PA1/CTPB/KEY1PA1PAWUPAPUPASSTCMOS通用I/O口,可通过寄存器设置上拉电阻和唤醒功能CTPBPAS—CMOSCTM反相输出KEY1PASAN—触控引脚输入PA2/INT0/ICPCK/OCDSCKPA2PAWUPAPUSTCMOS通用I/O口,可通过寄存器设置上拉电阻和唤醒功能INT0INTEGINTC0ST—外部中断输入ICPCK—ST—ICP时钟OCDSCK—ST—OCDS时钟,仅用于EV芯片PA3/CTCK/KEY2PA3PAWUPAPUPASSTCMOS通用I/O口,可通过寄存器设置上拉电阻和唤醒功能CTCKPASST—CTM输入KEY2PASAN—触控引脚输入PA4PA4PAWUPAPUSTCMOS通用I/O口,可通过寄存器设置上拉电阻和唤醒功能VOREG/VREFPVOREG——PWRLDO输出引脚PWR—ADC和PGA正电源电压VREFP—AN—ADC外部参考电压输入正端AN0~AN1AN0~AN1—AN—A/D转换器外部通道VDD/VINVDD—PWR—正电源电压VIN—PWR—LDO输入引脚VSS/AVSS/VREFNAVSS—PWR—ADC和PGA负电源电压VSS—PWR—负电源电压VREFN—AN—ADC外部参考电压输入负端COM0~COM3COM——ANLCDCOM输出Rev.
1.
10102019-11-04引脚名称功能OPTI/TO/T说明SEG0~SEG15SEG——ANLCDSEG输出PLCDPLCD—PWRANLCD电源电压注:I/T:输入类型;O/T:输出类型;OPT:通过寄存器选项来配置;PWR:电源;AN:模拟信号;ST:施密特触发输入;CMOS:CMOS输出极限参数电源供应电压.
VSS-0.
3V~6.
0V输入电压.
VSS-0.
3V~VDD+0.
3V储存温度.
50°C~125°C工作温度.
40°C~85°CIOL总电流.
80mAIOH总电流80mA总功耗.
500mW注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性.
直流电气特性以下表格中参数测量结果可能受多个因素影响,如振荡器类型、工作电压、工作频率、引脚负载状况、温度和程序指令等等.
工作电压特性Ta=-40°C~85°C符号参数测试条件最小典型最大单位VDD工作电压–HIRCfSYS=8MHz2.
2—5.
5V工作电压–LIRCfSYS=32kHz2.
2—5.
5Rev.
1.
10112019-11-04待机电流特性Ta=-40°C~85°C,除非另有说明符号待机模式测试条件最小典型最大最大@85℃单位VDD条件ISTB休眠模式2.
2VWDTo—0.
20.
60.
7μA3V—0.
20.
81.
05V—0.
51.
01.
22.
2VWDTon—1.
22.
42.
9μA3V—1.
53.
03.
65V—3.
05.
06.
0空闲模式0–LIRC2.
2VfSUBon—2.
44.
04.
8μA3V—3.
05.
06.
05V—51012空闲模式1–HIRC2.
2VfSUBon,fSYS=8MHz—288400480μA3V—3605006005V—600800960注:当使用该表格电气特性数据时,以下几点需注意:1.
任何数字输入都设置为非浮空的状态.
2.
所有测量都在无负载且所有外围功能关闭的条件下进行.
3.
无直流电流路径.
4.
所有待机电流数值都是在HALT指令执行后测得,因此HALT后停止执行所有指令.
工作电流特性Ta=-40°C~85°C符号工作模式测试条件最小典型最大单位VDD条件IDD低速模式–LIRC2.
2VfSYS=32kHz—816μA3V—10205V—3050快速模式–HIRC2.
2VfSYS=8MHz—0.
61.
0mA3V—0.
81.
25V—1.
62.
4注:当使用该表格电气特性数据时,以下几点需注意:1.
任何数字输入都设置为非浮空的状态.
2.
所有测量都在无负载且所有外围功能关闭的条件下进行.
3.
无直流电流路径.
4.
所有工作电流数值通过一个连续的NOP指令循环程序测得.
Rev.
1.
10122019-11-04交流电气特性以下表格中参数测量结果可能受多个因素影响,如振荡器类型、工作电压、工作频率和温度等等.
内部高速振荡器–HIRC–频率精确度程序烧录时,烧录器会调整HIRC振荡器使其工作在用户选择的HIRC频率和工作电压(3V或5V)条件下.
符号参数测试条件最小典型最大单位VDD温度fHIRC通过烧录器调整后的8MHzHIRC频率3V/5V25°C-1%8+1%MHz-40°C~85°C-2%8+2%2.
2V~5.
5V25°C-2.
5%8+2.
5%-40°C~85°C-3%8+3%注:1.
烧录器可在3V/5V这两个可选的固定电压下对HIRC频率进行调整,在此提供VDD=3V/5V时的参数值.
2.
3V/5V表格列下面提供的是全压条件下的参数值.
当应用电压范围是2.
2V~3.
6V时,建议烧录器电压固定在3V;当应用电压范围是3.
3V~5.
5V时,建议烧录器电压固定在5V.
内部低速振荡器电气特性–LIRC符号参数测试条件最小典型最大单位VDD温度fLIRCLIRC频率2.
2V~5.
5V25°C-5%32+5%kHz-40°C~85°C-10%32+10%tSTARTLIRC启动时间—-40°C~85°C——100μs工作频率电气特性曲线图SystemOperatingFrequencyOperatingVoltage8MHz2.
2V~~5.
5V~~~~Rev.
1.
10132019-11-04系统上电时间电气特性Ta=-40°C~85°C符号参数测试条件最小典型最大单位VDD条件tSST系统启动时间(从fSYSo的状态下唤醒)—fSYS=fH~fH/64,fH=fHIRC—16—tHIRC—fSYS=fSUB=fLIRC—2—tLIRC系统启动时间(从fSYSon的状态下唤醒)—fSYS=fH~fH/64,fH=fHIRC—2—tH—fSYS=fSUB=fLIRC—2—tSUB系统速度切换时间(快速模式→低速模式或低速模式→快速模式)—fHIRCo→on—16—tHIRCtRSTD系统复位延迟时间(上电复位或LVR硬件复位)—RRPOR=5V/ms424854ms系统复位延迟时间(LVRC/WDTC/RSTC软件复位)——系统复位延迟时间(WDT溢出)——141618mstSRESET软件复位最小延迟脉宽——4590120μs注:1.
系统启动时间里提到的fSYSon/o状态取决于工作模式类型以及所选的系统时钟振荡器.
更多相关细节请参考系统工作模式章节.
2.
tHIRC等符号所表示的时间单位,是对应频率值的倒数,相关频率值在前面表格有说明.
例如,tHIRC=1/fHIRC,tSYS=1/fSYS等等.
3.
若LIRC被选择作为系统时钟源且在休眠模式下LIRC关闭,则上面表格中对应tSST数值还需加上LIRC频率表格里提供的LIRC启动时间tSTART.
4.
系统速度切换时间实际上是指新使能的振荡器的启动时间.
Rev.
1.
10142019-11-04输入/输出口电气特性Ta=-40°C~85°C符号参数测试条件最小典型最大单位VDD条件VILI/O口低电平输入电压5V—0—1.
5V——0—0.
2VDDVIHI/O口高电平输入电压5V—3.
5—5.
0V——0.
8VDD—VDDIOLI/O口灌电流3VVOL=0.
1VDD1632—mA5V3265—IOHI/O口源电流3VVOH=0.
9VDD,SLEDC[m+1,m]=00B(m=0,2)-0.
7-1.
5—mA5V-1.
5-2.
9—mA3VVOH=0.
9VDD,SLEDC[m+1,m]=01B(m=0,2)-1.
3-2.
5—mA5V-2.
5-5.
1—mA3VVOH=0.
9VDD,SLEDC[m+1,m]=10B(m=0,2)-1.
8-3.
6—mA5V-3.
6-7.
3—mA3VVOH=0.
9VDD,SLEDC[m+1,m]=11B(m=0,2)-4-8—mA5V-8-16—mARPHI/O口上拉电阻(注)3V—2060100kΩ5V—103050ILEAK输入漏电流3VVIN=VDD或VIN=VSS——±1μA5V——±1tTCKCTM时钟输入最小脉宽——0.
3——μstINT外部中断引脚最小输入脉宽——10——μs注:RPH内部上拉电阻值的计算方法是:将引脚接地并设置为输入且使能上拉电阻功能,然后在特定电源电压下测量该引脚上电流,最后电压除以测量的电流值从而得到此上拉电阻值.
Rev.
1.
10152019-11-04存储器电气特性Ta=-40°C~85°C,除非另有说明符号参数测试条件最小典型最大单位VDD条件Flash程序存储器/模拟EEPROM存储器tDEW擦除/写时间–Flash程序存储器5.
0VTa=25°C—23ms擦除/写时间–模拟EEPROM存储器—EWRTS[1:0]=00B—23ms—EWRTS[1:0]=01B—46—EWRTS[1:0]=10B—812—EWRTS[1:0]=11B–1624EP电容耐久性——10K–—E/WtRETDROM数据保存时间—Ta=25°C—40—YearRAM数据存储器VDD读/写工作电压——VDDmin—VDDmaxVVDRRAM数据保存电压—单片机处于休眠模式1.
0——V注:模拟EEPROM擦/写操作只有在fSYS时钟频率大于等于2MHz时才可执行.
LVR电气特性Ta=-40°C~85°C符号参数测试条件最小典型最大单位VDD条件VLVR低电压复位电压—LVR使能-5%2.
1+5%VtLVR产生LVR复位的低电压最短保持时间——120240480μsILVRBG工作电流3VLVR使能,VBGEN=0——18μA5V—2025μA3VLVR使能,VBGEN=1——150μA5V—180200μAILVRLVR使能的额外电流—VBGEN=0——24μARev.
1.
10162019-11-0424-bitDeltaSigmaA/D转换器电气特性VDD=VIN,Ta=25°C,LDO测试条件:MCU进入休眠模式,其它功能除能符号参数测试条件最小典型最大单位VDD条件VINLDO输入电压——2.
6—5.
5VIQLDO静态电流—LDOVS[1:0]=00B,VIN=3.
6V,无负载—400520μAVOUT_LDOLDO输出电压—LDOVS[1:0]=00B,VIN=3.
6V,ILOAD=0.
1mA-5%2.
4+5%VLDOVS[1:0]=01B,VIN=3.
6V,ILOAD=0.
1mA2.
6LDOVS[1:0]=10B,VIN=3.
6V,ILOAD=0.
1mA2.
9LDOVS[1:0]=11B,VIN=3.
6V,ILOAD=0.
1mA3.
3ΔVLOADLDO负载调整率(1)—LDOVS[1:0]=00B,VIN=VOUT_LDO+0.
2V,0mA≤ILOAD≤10mA—0.
1050.
210%/mAVDROP_LDOLDO压降(2)—LDOVS[1:0]=00B,VIN=3.
6V,ILOAD=10mA,ΔVOUT_LDO=2%——220mVLDOVS[1:0]=01B,VIN=3.
6V,ILOAD=10mA,ΔVOUT_LDO=2%——200mVLDOVS[1:0]=10B,VIN=3.
6V,ILOAD=10mA,ΔVOUT_LDO=2%——180mVLDOVS[1:0]=11B,VIN=3.
6V,ILOAD=10mA,ΔVOUT_LDO=2%——160mVTCLDOLDO温度系数—Ta=-40℃~85℃,LDOVS[1:0]=00B,VIN=3.
6V,ILOAD=100μA—200—ppm/℃ΔVLINE_LDOLDO线性调整率—LDOVS[1:0]=00B,2.
6V≤VIN≤5.
5V,ILOAD=100μA——0.
7%/VLDOVS[1:0]=00B,2.
6V≤VIN≤3.
6V,ILOAD=100μA——0.
2%/VADC&ADC内部参考电压(DeltaSigmaA/D转换器)VOREGADC和PGA的电源电压—LDOEN=02.
4—3.
3VLDOEN=12.
4—3.
3VIADCADC使能的额外电流———400550μAIADSTB待机电流—MCU进入休眠模式,无负载——1μANR分辨率————24BitRev.
1.
10172019-11-04符号参数测试条件最小典型最大单位VDD条件INL非线性积分误差—VOREG=3.
3V,VREF=1.
25V,ΔSI=±450mV,PGAgain=1—±50±200ppmNFB无噪音位—PGAgain=128Datarate=10Hz—15.
4—BitENOB有效位数—PGAgain=128Datarate=10Hz—18.
1—BitfADCKADC时钟频率——40.
0409.
6440.
0kHzfADOADC输出数据传输速率—fMCLK=4MHz,FLMS[2:0]=000B4—521HzfMCLK=4MHz,FLMS[2:0]=010B10—1302HzVREFP参考输入电压——VREFN+0.
8—VOREGVVREFN—0—VREFP-0.
8VVREFVREF=(VREFP–VREFN)*VREFGN0.
80—1.
75VPGAVCM_PGA共模电压范围——0.
4—VOREG-0.
95VΔDI差分输入电压范围—Gain=PGAGN*ADGN-VREF/Gain—+VREF/GainV温度传感器TCTS温度传感器的温度系数—Ta=-40℃~85℃,—175—μV/℃注:1.
负载调整率是在恒结温条件下使用一个低ON时间的脉冲测得,测量时确保达到最大的功耗.
功耗由输入/输出差分电压和输出电流决定.
确保的最大功耗不允许超出全输入/输出范围.
任何环境温度下的最大可允许功耗为PD=(TJ(MAX)-Ta)/θJA.
2.
压降的定义:是指将输出电压维持在2%以内所需的输入电压VIN与输出电压VOUT的差值.
Rev.
1.
10182019-11-04有效位数(ENOB)VOREG=2.
4V,VREF=2.
4V,FLMS[2:0]=000数据传输速率(SPS)PGAGain1248163264128419.
719.
819.
619.
719.
719.
619.
218.
6819.
419.
319.
319.
319.
319.
118.
718.
11619.
018.
818.
718.
918.
818.
618.
217.
53318.
418.
318.
318.
318.
318.
117.
717.
06518.
117.
918.
017.
917.
917.
617.
216.
513017.
617.
417.
417.
417.
317.
116.
615.
926015.
815.
815.
915.
815.
915.
915.
815.
352114.
114.
014.
014.
114.
114.
014.
114.
4VOREG=2.
4V,VREF=2.
4V,FLMS[2:0]=010数据传输速率(SPS)PGAGain12481632641281019.
418.
818.
718.
818.
818.
718.
918.
12019.
018.
318.
318.
318.
318.
217.
917.
34118.
517.
817.
817.
817.
917.
717.
416.
88118.
218.
218.
118.
218.
117.
817.
216.
416317.
917.
817.
817.
817.
617.
316.
715.
932617.
417.
217.
217.
217.
116.
816.
215.
465116.
216.
116.
116.
116.
115.
915.
514.
8130214.
514.
514.
514.
414.
514.
514.
314.
0LCD电气特性Ta=25°C符号参数测试条件最小典型最大单位VDD条件VINLCD工作电压—PLCD引脚提供LCD电源,LCDPR=03.
0—5.
5VILCDLCD使能的额外电流(R型),LCD时钟为4kHz5V无负载,VA=VPLCD=VDD,LCDPR=0,LCDIS[1:0]=00B—2537.
5μA无负载,VA=VPLCD=VDD,LCDPR=0,LCDIS[1:0]=01B—5075μA无负载,VA=VPLCD=VDD,LCDPR=0,LCDIS[1:0]=10B—100150μA无负载,VA=VPLCD=VDD,LCDPR=0,LCDIS[1:0]=11B—200300μARev.
1.
10192019-11-04符号参数测试条件最小典型最大单位VDD条件ILCDOLLCDCOM和SEG灌电流3VVOL=0.
1VDD210420—μA5V350700—μAILCDOHLCDCOM和SEG源电流3VVOH=0.
9VDD-80-160—μA5V-180-360—μAVLCD充电泵提供LCD电源2.
2V~5.
5VLCDPR=1,CPVS[1:0]=00B,LCDIS[1:0]=11B-10%3.
3+10%V2.
2V~5.
5VLCDPR=1,CPVS[1:0]=01B,LCDIS[1:0]=11B3.
02.
2V~5.
5VLCDPR=1,CPVS[1:0]=10B,LCDIS[1:0]=11B2.
72.
7V~5.
5VLCDPR=1,CPVS[1:0]=11B,LCDIS[1:0]=11B4.
5上电复位特性Ta=25°C符号参数测试条件最小典型最大单位VDD条件VPOR上电复位电压————100mVRRPOR上电复位电压速率——0.
035——V/mstPORVDD保持为VPOR的最小时间——1——msVDDtPORRRPORVPORTimeRev.
1.
10202019-11-04系统结构内部系统结构是Holtek单片机具有良好性能的主要因素.
由于采用RISC结构,该单片机具有高运算速度和高性能的特点.
通过流水线的方式,指令的获取和执行同时进行,此举使得除了跳转和调用指令需多一个指令周期外,其它大部分指令都能分别在一个指令周期内完成.
8位ALU参与指令集中所有的运算,它可完成算术运算、逻辑运算、移位、递增、递减和分支等功能,而内部的数据路径则是以通过累加器和ALU的方式加以简化.
有些寄存器在数据存储器中被实现,且可以直接或间接寻址.
简单的寄存器寻址方式和结构特性,确保了在提供具有最大可靠度和灵活性的I/O和A/D控制系统时,仅需要少数的外部器件.
使得该单片机适用于低成本和大量生产的控制应用.
时序和流水线结构主系统时钟由HIRC或LIRC振荡器提供,它被细分为T1~T4四个内部产生的非重叠时序.
在T1时间,程序计数器自动加一并抓取一条新的指令.
剩下的时间T2~T4完成译码和执行功能,因此,一个T1~T4时钟周期构成一个指令周期.
虽然指令的抓取和执行发生在连续的指令周期,但单片机流水线结构会保证指令在一个指令周期内被有效执行.
除非程序计数器的内容被改变,如子程序的调用或跳转,在这种情况下指令将需要多一个指令周期的时间去执行.
FetchInst.
(PC)(SystemClock)fSYSPhaseClockT1PhaseClockT2PhaseClockT3PhaseClockT4ProgramCounterPCPC+1PC+2PipeliningExecuteInst.
(PC-1)FetchInst.
(PC+1)ExecuteInst.
(PC)FetchInst.
(PC+2)ExecuteInst.
(PC+1)系统时序和流水线如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成指令执行.
需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外周期的问题,尤其是在执行时间要求较严格的时候.
FetchInst.
11MOVA,[12H]2CALLDELAY3CPL[12H]4:5:6DELAY:NOPExecuteInst.
1FetchInst.
2ExecuteInst.
2FetchInst.
3FlushPipelineFetchInst.
6ExecuteInst.
6FetchInst.
7指令捕捉Rev.
1.
10212019-11-04程序计数器在程序执行期间,程序计数器用来指向下一个要执行的指令地址.
除了"JMP"和"CALL"指令需要跳转到一个非连续的程序存储器地址之外,它会在每条指令执行完成以后自动加一.
只有较低的8位,即所谓的程序计数器低字节寄存器PCL,可以被用户直接读写.
当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或复位等,单片机通过加载所需要的地址到程序寄存器来控制程序,对于条件跳转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而由一个空指令周期来取代.
程序计数器高字节低字节(PCL寄存器)PC11~PC8PCL7~PCL0程序计数器程序计数器的低字节,即程序计数器的低字节寄存器PCL,可以通过程序控制,且它是可以读取和写入的寄存器.
通过直接写入数据到这个寄存器,一个程序短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的当前页中,即256个存储器地址范围内,当这样一个程序跳转要执行时,会插入一个空指令周期.
程序计数器的低字节可由程序直接进行读取,PCL的使用可能引起程序跳转,因此需要额外的指令周期.
堆栈堆栈是一个特殊的存储空间,用来存储程序计数器中的内容.
该单片机有4层堆栈,堆栈既不是数据部分也不是程序空间部分,而且它既不是可读取也不是可写入的.
当前层由堆栈指针(SP)加以指示,同样也是不可读写的.
在子程序调用或中断响应服务时,程序计数器的内容被压入到堆栈中.
当子程序或中断响应结束时,返回指令(RET或RETI)使程序计数器从堆栈中重新得到它以前的值.
当一个芯片复位后,堆栈指针将指向堆栈顶部.
如果堆栈已满,且有非屏蔽的中断发生,中断请求标志会被置位,但中断响应将被禁止.
当堆栈指针减少(执行RET或RETI),中断将被响应.
这个特性提供程序设计者简单的方法来预防堆栈溢出.
然而即使堆栈已满,CALL指令仍然可以被执行,而造成堆栈溢出.
使用时应避免堆栈溢出的情况发生,因为这可能导致不可预期的程序分支指令执行错误.
若堆栈溢出,则首个存入堆栈的程序计数器数据将会丢失.
StackPointerStackLevel2StackLevel1StackLevel3StackLevel4ProgramMemoryProgramCounterBottomofStackTopofStack算术逻辑单元–ALU算术逻辑单元是单片机中很重要的部分,执行指令集中的算术和逻辑运算.
ALU连接到单片机的数据总线,在接收相关的指令码后执行需要的算术与逻辑操作,并将结果存储在指定的寄存器,当ALU计算或操作时,可能导致进位、Rev.
1.
10222019-11-04借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变,ALU所提供的功能如下:算术运算:ADD,ADDM,ADC,ADCM,SUB,SUBM,SBC,SBCM,DAA逻辑运算:AND,OR,XOR,ANDM,ORM,XORM,CPL,CPLA移位运算:RRA,RR,RRCA,RRC,RLA,RL,RLCA,RLC递增和递减:INCA,INC,DECA,DEC分支判断:JMP,SZ,SZA,SNZ,SIZ,SDZ,SIZA,SDZA,CALL,RET,RETIFlash程序存储器程序存储器用来存放用户代码即储存程序.
程序存储器为Flash类型意味着可以多次重复编程,方便用户使用同一芯片进行程序的修改.
使用适当的单片机编程工具,此单片机提供用户灵活便利的调试方法和项目开发规划及更新.
结构程序存储器的容量为3K*16位,程序存储器用程序计数器来寻址,其中也包含数据、表格和中断入口.
数据表格可以设定在程序存储器的任何地址,由表格指针来寻址.
000HInitialisationVector004HBFFH16bitsInterruptVectors01CHLook-upTablen00HnFFH程序存储器结构特殊向量程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途.
地址000H是芯片复位后的程序起始地址.
在芯片复位之后,程序将跳到这个地址并开始执行.
查表程序存储器中的任何地址都可以定义成一个表格,以便储存固定的数据.
使用表格时,表格指针必须先行设定,其方式是将表格的地址放在表格指针寄存器TBLP和TBHP中.
这两个寄存器定义表格总的地址.
在设定完表格指针后,表格数据可以使用如"TABRD[m]"或"TABRDL[m]"等指令分别从程序存储器查表读取.
当这些指令执行时,程序存储器中表格数据低字节,将被传送到使用者所指定的数据存储器[m],程序存储器中表格数Rev.
1.
10232019-11-04据的高字节,则被传送到TBLH特殊寄存器.
下图是查表中寻址/数据流程:LastPageorTBHPRegisterAddressTBLPRegisterData16bitsProgramMemoryRegisterTBLHUserSelectedRegisterHighByteLowByte查表范例以下范例说明表格指针和表格数据如何被定义和执行.
这个例子使用的表格数据用ORG伪指令储存在存储器中.
ORG指令的值"B00H"指向的地址是3K程序存储器中最后一页的起始地址.
表格指针低字节寄存器的初始值设为06H,这可保证从数据表格读取的第一笔数据位于程序存储器地址B06H,即最后一页起始地址后的第六个地址.
值得注意的是,假如"TABRD[m]"指令被使用,则表格指针指向TBLP和TBHP寄存器所指定的地址.
在这个例子中,表格数据的高字节等于零,而当"TABRD[m]"指令被执行时,此值将会自动的被传送到TBLH寄存器.
TBLH寄存器为只读寄存器,不能重新储存,若主程序和中断服务程序都使用表格读取指令,应该注意它的保护.
使用表格读取指令,中断服务程序可能会改变TBLH的值,若随后在主程序中再次使用这个值,则会发生错误,因此建议避免同时使用表格读取指令.
然而在某些情况下,如果同时使用表格读取指令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除能,另外要注意的是所有与表格相关的指令,都需要两个指令周期去完成操作.
表格读取程序范例tempreg1db;temporaryregister#1tempreg2db;temporaryregister#2::mova,06h;initialiselowtablepointer-notethatthisaddress;isreferencedmovtblp,a;tothelastpageorthepagethattbhppointedmova,0Bh;initialisehightablepointermovtbhp,a::tabrdtempreg1;transfersvalueintablereferencedbytablepointer,;dataatprogrammemoryaddress"0B06H"transferredto;tempreg1andTBLHdectblp;reducevalueoftablepointerbyonetabrdtempreg2;transfersvalueintablereferencedbytablepointer,;dataatprogrammemoryaddress"0B05H"transferredto;tempreg2andTBLH;inthisexamplethedata"1AH"istransferredto;tempreg1anddata"0FH"toregistertempreg2;thevalue"00H"willbetransferredtothehighbyte;registerTBLHRev.
1.
10242019-11-04::org0B00h;setsinitialaddressofprogrammemorydc00Ah,00Bh,00Ch,00Dh,00Eh,00Fh,01Ah,01Bh:在线烧录–ICPFlash型程序存储器提供用户便利地对同一芯片进行程序的更新和修改.
另外,Holtek单片机提供4线接口的在线烧录方式.
用户可将进行过烧录或未经过烧录的单片机芯片连同电路板一起制成,最后阶段进行程序的更新和程序的烧录,在无需去除或重新插入芯片的情况下方便地保持程序为最新版.
Holtek烧录器引脚名称MCU在线烧录引脚名称引脚说明ICPDAPA0串行数据/地址烧录ICPCKPA2时钟烧录VDDVDD电源VSSVSS地程序存储器可以通过4线的接口在线进行烧录.
其中一条线用于数据串行下载或上传、一条线用于串行时钟、剩下两条用于提供电源.
芯片在线烧写的详细使用说明超出此文档的描述范围,将由专门的参考文献提供.
烧录过程中,用户必须确保ICPDA和ICPCK这两个引脚没有连接至其它输出脚.
**Writer_VDDICPDAICPCKWriter_VSSTootherCircuitVDDPA0PA2VSSWriterConnectorSignalsMCUProgrammingPins注:*可能为电阻或电容.
若为电阻则其值必须大于1kΩ,若为电容则其必须小于1nF.
片上调试–OCDSEV芯片BH67V5235用于BH67F5235单片机仿真.
此EV芯片提供片上调试功能(OCDS)用于开发过程中的单片机调试.
除了片上调试功能,实际单片机和EV芯片在功能上几乎是兼容的.
用户可将OCDSDA和OCDSCK引脚连接至HoltekHT-IDE开发工具,从而实现EV芯片对单片机的仿真.
OCDSDA引脚为OCDS数据/地址输入/输出脚,OCDSCK引脚为OCDS时钟输入脚.
当用户用EV芯片进行调试时,单片机OCDSDA和OCDSCK引脚上的其它共用功能对EV芯片无效.
关于OCDS功能的详细描述,请参考"Holteke-Linkfor8-bitMCUOCDS用户手册"文件.
Rev.
1.
10252019-11-04Holteke-Link引脚名称EV芯片引脚名称引脚说明OCDSDAOCDSDA片上调试串行数据/地址输入/输出OCDSCKOCDSCK片上调试时钟输入VDDVDD电源VSSVSS地数据存储器数据存储器是内容可更改的8位RAM内部存储器,用来储存临时数据.
结构数据存储器分为两种类型,第一种是特殊功能数据存储器.
这些寄存器有固定的地址且与单片机的正确操作密切相关.
大多特殊功能寄存器都可在程序控制下直接读取和写入,但有些被加以保护.
第二种数据存储器是做一般用途使用,都可在程序控制下进行读取和写入.
数据存储器被分为三个Bank,Bank0,Bank1和Bank4,都位于8位存储器中.
切换不同数据存储器区域可通过合理设置存储区指针来实现.
特殊功能数据存储器地址范围为Bank000H~7FH,而通用数据存储器区域为Bank0和Bank1.
LCD显示数据存储器位于Bank4的00H~0FH.
特殊功能数据存储器通用数据存储器LCD显示数据存储器位于Bank容量Bank:地址Bank:地址Bank0192*8Bank0:80H~FFHBank1:80H~BFHBank4:00H~0FH数据存储器结构00H7FH80HFFHSpecialPurposeDataMemoryGeneralPurposeDataMemoryBank0Bank1(Bank0)(Bank0~Bank1)LCDDisplayDataMemory(Bank4)00H0FH80HBFH通用数据存储器所有的单片机程序需要一个读/写的存储区,让临时数据可以被储存和再使用,该RAM区域就是通用数据存储器.
这个数据存储区可让使用者进行读取和写入的操作.
使用位操作指令可对个别的位做置位或复位的操作,极大地方便了用户在数据存储器内进行位操作.
Rev.
1.
10262019-11-04特殊功能数据存储器这个区域的数据存储器是存放特殊寄存器的,这些寄存器与单片机的正确操作密切相关,大多数的寄存器可进行读取和写入,只有一些是被写保护而只能读取的,相关细节的介绍请参看有关特殊功能寄存器的部分.
要注意的是,任何读取指令对存储器中未定义的地址进行读取将返回"00H".
:Unused,readas00HPASTB1CTB0CPSCRINTC1INTC0INTEGWDTCMFIVBGCLVRCRSTCPAWUPAPUPACPARSTFCSTATUSTBHPTBLHTBLPPCLACCBPMP1IAR1MP0IAR0ECREARCTMAHCTMDHCTMDLCTMC1CTMC0TKM0ROHTKM0ROLTKM016DHTKM016DLTKM0C1TKM0C0TK16DHTK16DLED3HED3LED2HED2LED1HED1LED0H40H41H42H43H44H45H46H47H48H49H4AH4BH4CH4DH4EH4FH50H51H52HBank000H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH10H11H12H19H18H1BH1AH1DH1CH1FH13H14H15H16H17H1EH20H21H22H29H28H2BH2AH2DH2CH2FH2EH23H24H25H26H27H30H31H32H38H3CH33H34H35H36H37H3BH39H3AH3DH3FH3EHCTMALED0LBank0SCCHIRCC53H54H55H56H57H58H59H5AH5BH5CH5DH5EH5FHTKTMRTKC0TKC160H61H62H63H64H65H66H67H68H69H6AH6BH6CH6DH6EH6FHADCSADCR0ADCR1PWRCPGAC0PGAC1PGACSADRLADRMADRH70H71H72H73H74H75H76H77H78H79H7AH7BH7CH7DH7EH7FHSLEDCLCDCLCDCP:Reserved,cannotbechanged特殊功能数据存储器结构Rev.
1.
10272019-11-04特殊功能寄存器大部分特殊功能寄存器的细节将在相关功能章节描述,但有几个寄存器需在此章节单独描述.
间接寻址寄存器–IAR0,IAR1间接寻址寄存器IAR0和IAR1虽位于数据存储器寄存器区域,但不同于正常寄存器,它们没有实际的物理地址.
与定义实际存储器地址的直接存储器寻址不同,间接寻址是使用间接寻址寄存器和存储器指针来执行存储器数据操作.
在间接寻址寄存器IAR0和IAR1上的任何动作,将对存储器指针MP0和MP1所指定的存储器地址产生对应的读/写操作.
它们总是成对出现,IAR0和MP0可以访问Bank0,而IAR1和MP1可以访问任何Bank.
因为这些间接寻址寄存器不是实际存在的,直接读取将返回"00H"的结果,而直接写入这些寄存器则不做任何操作.
存储器指针–MP0,MP1该单片机提供两个存储器指针,即MP0和MP1.
由于这些指针在数据存储器中能像普通的寄存器一般被操作,因此提供了一个寻址和数据追踪的有效方法.
当对间接寻址寄存器进行任何操作时,单片机指向的实际地址是由存储器指针所指定的地址.
MP0、IAR0用于访问Bank0,而MP1和IAR1可根据BP寄存器访问所有的Bank.
直接寻址仅可用于Bank0,其它Bank必须使用MP1和IAR1进行间接寻址.
以下例子说明如何清空一个具有4个RAM地址的区块,它们已事先定义成地址adres1到adres4.
间接寻址程序举例data.
sectiondataadres1dbadres2dbadres3dbadres4dbblockdbcode.
sectionat0codeorg00hstart:mova,04h;setsizeofblockmovblock,amova,offsetadres1;AccumulatorloadedwithfirstRAMaddressmovmp0,a;setmemorypointerwithfirstRAMaddressloop:clrIAR0;clearthedataataddressdefinedbymp0incmp0;incrementmemorypointersdzblock;checkiflastmemorylocationhasbeenclearedjmploopcontinue:在上面的例子中有一点值得注意,即并没有确定RAM地址.
存储区指针–BP该单片机数据存储器被分为多个Bank.
可以通过存储区指针来选择数据存储区.
存储区指针的Bit2~0用于选择数据存储器Bank.
复位后,数据存储器会初始化到Bank0,但是在空闲或休眠模式下的WDT溢Rev.
1.
10282019-11-04出复位不会改变数据存储器的存储区号.
应该注意的是特殊功能数据存储器不受存储区的影响,也就是说,不论是在哪一个存储区,都能对特殊功能寄存器进行读写操作.
数据存储器的直接寻址总是访问Bank0,不受存储区指针值的影响.
要访问Bank0以外的Bank则必须要使用间接寻址方式.
BP寄存器Bit76543210NameDMBP2DMBP1DMBP0R/WR/WR/WR/WPOR000Bit7~3未定义,读为"0"Bit2~0DMBP2~DMBP0:数据存储区选择000:Bank0001:Bank1100:Bank4其它值:保留累加器–ACC对任何单片机来说,累加器是相当重要的,且与ALU所完成的运算有密切关系,所有ALU得到的运算结果都会暂时存在ACC累加器里.
若没有累加器,ALU必须在每次进行如加法、减法和移位的运算时,将结果写入到数据存储器,这样会造成程序编写和时间的负担.
另外数据传送也常常牵涉到累加器的临时储存功能,例如在使用者定义的一个寄存器和另一个寄存器之间传送数据时,由于两寄存器之间不能直接传送数据,因此必须通过累加器来传送数据.
程序计数器低字节寄存器–PCL为了提供额外的程序控制功能,将程序计数器低字节规划在数据存储器的特殊功能区域内,通过对此寄存器进行操作,便可直接跳转到其它程序地址.
直接给PCL寄存器赋值将导致程序直接跳转到程序存储器的某一地址,然而由于寄存器只有8位长度,因此只允许在本页的程序存储器范围内进行跳转.
注意,当执行此操作时,会插入一个空指令周期.
表格寄存器–TBLP,TBHP,TBLH这三个特殊功能寄存器用于对存储在程序存储器中的表格进行操作.
TBLP和TBHP为表格指针,指向表格数据存储的地址.
它们的值必须在任何表格读取指令执行前预先设定,由于它们的值可以被如"INC"或"DEC"的指令所改变,这就提供了一种简便的方法对表格数据进行读取.
表格读取数据指令执行之后,表格数据高字节存储在TBLH中.
其中要注意的是,表格数据低字节会被传送到使用者指定的地址.
状态寄存器–STATUS该8-bit的状态寄存器由零标志位(Z)、进位标志位(C)、辅助进位标志位(AC)、溢出标志位(OV)、暂停标志位(PDF)和看门狗定时器溢出标志位(TO)组成.
这些算术/逻辑操作和系统运行标志位是用来记录单片机的运行状态.
除了TO和PDF标志外,状态寄存器中的位像其它大部分寄存器一样可以被改变.
任何数据写入到状态寄存器将不会改变TO或PDF标志位.
另外,执行不同的指令后,与状态寄存器有关的运算可能会得到不同的结果.
TO标志位只会受系统上电、看门狗溢出或执行"CLRWDT"或"HALT"指令影响.
PDF标Rev.
1.
10292019-11-04志位只会受执行"HALT"或"CLRWDT"指令或系统上电影响.
Z、OV、AC和C标志位通常反映最近运算的状态.
C:当加法运算的结果产生进位,或减法运算的结果没有产生借位时,则C被置位,否则C被清零,同时C也会被带进位的移位指令所影响.
AC:当低半字节加法运算的结果产生进位,或低半字节减法运算的结果没有产生借位时,AC被置位,否则AC被清零.
Z:当算术或逻辑运算结果是零时,Z被置位,否则Z被清零.
OV:当运算结果高两位的进位状态异或结果为1时,OV被置位,否则OV被清零.
PDF:系统上电或执行"CLRWDT"指令会清零PDF,而执行"HALT"指令则会置位PDF.
TO:系统上电或执行"CLRWDT"或"HALT"指令会清零TO,而当WDT溢出则会置位TO.
另外,当进入一个中断程序或执行子程序调用时,状态寄存器不会自动压入到堆栈保存.
假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话,则需谨慎的去做正确的储存.
STATUS寄存器Bit76543210Name——TOPDFOVZACCR/W——RRR/WR/WR/WR/WPOR——00xxxx"x":未知Bit7~6未定义,读为"0"Bit5TO:看门狗溢出标志位0:系统上电或执行"CLRWDT"或"HALT"指令后1:看门狗溢出发生Bit4PDF:暂停标志位0:系统上电或执行"CLRWDT"指令后1:执行"HALT"指令Bit3OV:溢出标志位0:无溢出1:运算结果高两位的进位状态异或结果为1Bit2Z:零标志位0:算术或逻辑运算结果不为01:算术或逻辑运算结果为0Bit1AC:辅助进位标志位0:无辅助进位1:在加法运算中低四位产生了向高四位进位,或减法运算中低四位不发生从高四位借位Bit0C:进位标志位0:无进位1:如果在加法运算中结果产生了进位,或在减法运算中结果不发生借位进位标志位C也受循环移位指令的影响.
Rev.
1.
10302019-11-04模拟EEPROM数据存储器该单片机内建模拟EEPROM数据存储器.
由于其非易失可重复编程的存储结构,即使在电源掉电的情况下存储器内的数据仍然保存完好.
这种存储区扩展了存储器空间,对设计者来说增加了许多新的应用机会.
模拟EEPROM可以用来存储产品编号、校准值、用户特定数据、系统配置参数或其它产品信息等.
模拟EEPROM数据存储器结构该单片机的模拟EEPROM数据存储器容量为32*16位.
该模拟EEPROM以页为单位进行擦操作,以4字为单位进行写操作,以字为单位进行读操作.
每页的大小为16字.
注意,在执行写入操作之前必须先执行擦除操作.
操作格式擦除1页/次写入4字/次读出1字/次注:1页=16字模拟EEPROM擦/写/读格式擦除页EAR4EAR[3:0]00xxxx11xxxx"x":无关擦除页序号及选择写单位EAR[4:2]EAR[1:0]0000xx1001xx2010xx3011xx4100xx5101xx6110xx7111xx"x":无关写入单位序号及选择模拟EEPROM寄存器内部模拟EEPROM数据存储器总的操作可通过一系列寄存器控制,分别为一个地址寄存器EAR、四对数据寄存器ED0L&ED0H~ED3L&ED3H和一个控制寄存器ECR.
Rev.
1.
10312019-11-04寄存器名称位76543210EAR———EAR4EAR3EAR2EAR1EAR0ED0LD7D6D5D4D3D2D1D0ED0HD15D14D13D12D11D10D9D8ED1LD7D6D5D4D3D2D1D0ED1HD15D14D13D12D11D10D9D8ED2LD7D6D5D4D3D2D1D0ED2HD15D14D13D12D11D10D9D8ED3LD7D6D5D4D3D2D1D0ED3HD15D14D13D12D11D10D9D8ECREWRTS1EWRTS0EERENEEREWRENEWRERDENERD模拟EEPROM寄存器列表EAR寄存器Bit76543210Name———EAR4EAR3EAR2EAR1EAR0R/W———R/WR/WR/WR/WR/WPOR———00000Bit7~5未定义,读为"0"Bit4~0EAR4~EAR0:模拟EEPROM地址bit4~bit0ED0L寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D7~D0:第一个模拟EEPROM数据bit7~bit0ED0H寄存器Bit76543210NameD15D14D13D12D11D10D9D8R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D15~D8:第一个模拟EEPROM数据bit15~bit8ED1L寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D7~D0:第二个模拟EEPROM数据bit7~bit0Rev.
1.
10322019-11-04ED1H寄存器Bit76543210NameD15D14D13D12D11D10D9D8R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D15~D8:第二个模拟EEPROM数据bit15~bit8ED2L寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D7~D0:第三个模拟EEPROM数据bit7~bit0ED2H寄存器Bit76543210NameD15D14D13D12D11D10D9D8R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D15~D8:第三个模拟EEPROM数据bit15~bit8ED3L寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D7~D0:第四个模拟EEPROM数据bit7~bit0ED3H寄存器Bit76543210NameD15D14D13D12D11D10D9D8R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D15~D8:第四个模拟EEPROM数据bit15~bit8ECR寄存器Bit76543210NameEWRTS1EWRTS0EERENEEREWRENEWRERDENERDR/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~6EWRTS1~EWRTS0:模拟EEPROM擦/写周期时间选择00:2ms01:4ms10:8ms11:16msRev.
1.
10332019-11-04Bit5EEREN:模拟EEPROM擦使能位0:除能1:使能此位为模拟EEPROM擦使能位,向模拟EEPROM执行擦操作之前需将此位置高.
擦周期结束后,硬件自动将此位清零.
将此位清零时,则禁止向模拟EEPROM执行擦操作.
Bit4EER:模拟EEPROM擦控制位0:擦周期结束1:开始擦周期此位为模拟EEPROM擦控制位,由应用程序将此位置高将激活擦周期.
擦周期结束后,硬件自动将此位清零.
当EEREN未先置高时,此位置高无效.
Bit3EWREN:模拟EEPROM写使能位0:除能1:使能此位为模拟EEPROM写使能位,向模拟EEPROM执行写操作之前需将此位置高.
写周期结束后,硬件自动将此位清零.
将此位清零时,则禁止向模拟EEPROM执行写操作.
Bit2EWR:模拟EEPROM写控制位0:写周期结束1:开始写周期此位为模拟EEPROM写控制位,由应用程序将此位置高将激活写周期.
写周期结束后,硬件自动将此位清零.
当EWREN未先置高时,此位置高无效.
Bit1ERDEN:模拟EEPROM读使能位0:除能1:使能此位为模拟EEPROM读使能位,向模拟EEPROM执行读操作之前需将此位置高.
将此位清零时,则禁止向模拟EEPROM执行读操作.
Bit0ERD:模拟EEPROM读控制位0:读周期结束1:开始读周期此位为模拟EEPROM读控制位,由应用程序将此位置高将激活读周期.
读周期结束后,硬件自动将此位清零.
当ERDEN未首先置高时,此位置高无效.
注:1.
在同一条指令中EEREN、EER、EWREN、EWR、ERDEN和ERD不能同时置为"1".
2.
应注意,当读/写/擦操作成功启动后,CPU将停止运行.
3.
在执行擦或写操作之前,先确保fSYS时钟频率大于等于2MHz且fSUB时钟已稳定.
4.
需确保读/写/擦操作已执行完毕后才可执行其它操作.
擦除模拟EEPROM数据擦除模拟EEPROM中的数据,要擦除的页地址需先放入EAR寄存器中.
需注意的是擦除操作每次擦除一页,每页包含16个字,因此擦除页地址仅由EAR寄存器中的EAR4位来指定,与EAR3~EAR0值无关.
之后将ECR寄存器中的擦使能位EEREN先置为高以使能擦功能,然后ECR寄存器中的EER位需立即置高以开始擦操作,这两条指令必须在两个指令周期内连续执行.
总中断位EMI在擦周期开始前应当被清零,在一个有效的擦启动步骤完成之后再将其使能.
注意当擦操作成功启动,CPU将停止运行.
当擦周期结束,CPU将恢复执行应用程序.
而EER位将自动被硬件清零,以告知用户数据已被擦除.
执行完擦操作后,模拟EEPROM被擦除页的内容将全为"0".
写数据到模拟EEPROM写数据至模拟EEPROM,要写入数据的起始地址需先放入EAR寄存器中,要写入的数据需依序存入ED0L/ED0H~ED3L/ED3H寄存器对中.
需注意的是写Rev.
1.
10342019-11-04入操作每次写入4字,因此每次写入地址仅由EAR寄存器中的EAR4~EAR2位来指定,与EAR1~EAR0值无关.
之后将ECR寄存器中的写使能位EWREN先置为高以使能写功能,然后ECR寄存器中的EWR位需立即置高以开始写操作,这两条指令必须在两个指令周期内连续执行.
总中断位EMI在写周期开始前应当被清零,在一个有效的写启动步骤完成之后再将其使能.
注意当写操作成功启动,CPU将停止运行.
当写周期结束,CPU将恢复执行应用程序.
而EWR位将自动被硬件清零,以告知用户数据已被写入模拟EEPROM.
从模拟EEPROM中读取数据从模拟EEPROM中读取数据,模拟EEPROM中读取数据的地址要先放入EAR寄存器中.
ECR寄存器中的读使能位ERDEN先置为高以使能读功能.
若ECR寄存器中的ERD位被置高,一个读周期将开始.
注意当读操作成功启动,CPU将停止运行.
当读周期结束,CPU将恢复执行应用程序.
而ERD位将自动被硬件清零,以告知用户已从模拟EEPROM中读取到数据.
读到的数据在其它读、写或擦操作执行前将一直保留在ED0H/ED0L寄存器对中.
编程注意事项必须注意的是数据不会无意写入模拟EEPROM.
在没有写动作时写使能位被正常清零可以增强保护功能.
尽管没有必要,写一个简单的读回程序以检查新写入的数据是否正确还是应该考虑的.
EWREN或EEREN位置位后,ECR寄存器中的EWR或EER位需立即置位,以确保写或擦周期正确地执行.
总中断位EMI在写或擦周期开始前应当被清零,在一个有效的写或擦启动步骤完成之后再将其使能.
注意,单片机不应在模拟EEPROM执行读、写或擦操作完全完成之前进入空闲或休眠模式,否则模拟EEPROM读、写或擦操作将失败.
程序举例擦除模拟EEPROM的一个数据页–轮询法MOVA,EEPROM_ADRES;user-definedpageMOVEAR,AMOVA,00H;Erasetime=2ms(40Hfor4ms,80Hfor8ms,;C0Hfor16ms)MOVECR,ACLREMISETEEREN;setEERENbit,enableeraseoperationSETEER;startEraseCycle-setEERbit–executedimmediatelyaftersettingEERENbitSETEMIBACK:SZEER;checkforerasecycleendJMPBACK:写数据到模拟EEPROM–轮询法MOVA,EEPROM_ADRES;user-definedaddressMOVEAR,AMOVA,EEPROM_DATA0_L;user-defineddataMOVED0L,AMOVA,EEPROM_DATA0_HMOVED0H,AMOVA,EEPROM_DATA1_LMOVED1L,AMOVA,EEPROM_DATA1_HRev.
1.
10352019-11-04MOVED1H,AMOVA,EEPROM_DATA2_LMOVED2L,AMOVA,EEPROM_DATA2_HMOVED2H,AMOVA,EEPROM_DATA3_LMOVED3L,AMOVA,EEPROM_DATA3_HMOVED3H,AMOVA,00H;Writetime=2ms(40Hfor4ms,80Hfor8ms,;C0Hfor16ms)MOVECR,ACLREMISETEWREN;setEWRENbit,enablewriteoperationSETEWR;startWriteCycle-setEWRbit–executedimmediatelyaftersetEWRENbitSETEMIBACK:SZEWR;checkforwritecycleendJMPBACK:从模拟EEPROM中读取数据–轮询法MOVA,EEPROM_ADRES;user-definedaddressMOVEAR,ASETERDEN;setERDENbit,enablereadoperationSETERD;startReadCycle-setERDbitBACK:SZERD;checkforreadcycleendJMPBACKCLRECR;disableEmulatedEEPROMreadifnomoreread;operationsarerequiredMOVA,ED0L;movereaddatawhichisplacedintheED0L/ED0Htouser-definedregistersMOVREAD_DATA_L,AMOVA,ED0HMOVREAD_DATA_H,A注:即使目标地址是连续的,每次执行读操作仍需重新定义地址寄存器,接着置位ERD以启动一个读周期.
Rev.
1.
10362019-11-04振荡器不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能.
振荡器的灵活性使得在速度和功耗方面可以达到最优化.
振荡器选择及操作是通过应用程序和相关控制寄存器共同完成的.
振荡器概述振荡器除了作为系统时钟源,还作为看门狗定时器和时基功能的时钟源.
两个集成的内部振荡器不需要任何外围器件.
它们提供的高速和低速系统振荡器具有较宽的频率范围.
振荡器选项是通过相关的控制寄存器完成的.
较高频率的振荡器提供更高的性能,但要求有更高的功率,反之亦然.
动态切换快慢系统时钟的能力使单片机具有灵活而优化的性能/功耗比,此特性对功耗敏感的应用领域尤为重要.
类型名称频率内部高速RCHIRC8MHz内部低速RCLIRC32kHz振荡器类型系统时钟配置该单片机有两个系统振荡器,包括一个高速振荡器和一个低速振荡器.
高速振荡器为内部8MHzRC振荡器,HIRC,低速振荡器为内部32kHzRC振荡器,LIRC.
使用高速或低速振荡器作为系统时钟的选择是通过设置SCC寄存器中的CKS2~CKS0位决定的.
请注意,两个振荡器必须做出选择,即一个高速和一个低速振荡器.
HighSpeedOscillatorPrescalerHIRCfHfH/2fH/4fH/8fH/16fH/32fH/64CKS2~CKS0fSYSLowSpeedOscillatorLIRCfLIRCIDLE0SLEEPIDLE2SLEEPfSUBfSUB系统时钟配置内部高速RC振荡器–HIRC内部RC振荡器是一个集成的系统振荡器,无需其它外部器件.
内部RC振荡器固定的频率为8MHz.
芯片在制造时进行调整且内部含有频率补偿电路,使得振荡频率因电源电压、温度以及芯片制成工艺不同的影响减至最低程度.
Rev.
1.
10372019-11-04内部32kHz振荡器–LIRC内部32kHz系统振荡器是一个完全集成的低频RC振荡器,它的典型频率值为32kHz且无需外部元件.
芯片在制造时进行调整且内部含有频率补偿电路,使得振荡器因电源电压、温度及芯片制成工艺不同的影响减至最低.
工作模式和系统时钟现今的应用要求单片机具有较高的性能及尽可能低的功耗,这种矛盾的要求在便携式电池供电的应用领域尤为明显.
高性能所需要的高速时钟将增加功耗,反之亦然.
此单片机提供高、低速两种时钟源,它们之间可以动态切换,用户可通过优化单片机操作来获得最佳性能/功耗比.
系统时钟单片机为CPU和外围功能操作提供了多种不同的时钟源.
用户使用寄存器编程可获取多种时钟,进而使系统时钟获取最大的应用性能.
主系统时钟可来自高频时钟源fH或低频时钟源fSUB,通过SCC寄存器中的CKS2~CKS0位进行选择.
高频时钟来自HIRC振荡器.
低频系统时钟源来自LIRC振荡器.
其它系统时钟还有高速系统振荡器的分频fH/2~fH/64.
HighSpeedOscillatorPrescalerHIRCfHfH/2fH/4fH/8fH/16fH/32fH/64CKS2~CKS0fSYSLowSpeedOscillatorLIRCIDLE0SLEEPIDLE2SLEEPfSUBfSUBfSUBfSYS/4fSYSCLKSEL[1:0]fPSCPrescalerTimeBase0TimeBase1TB0ONTB1ONTB1[2:0]TB0[2:0]WDTfLIRC单片机时钟选项注:当系统时钟源fSYS由fH到fSUB转换时,可以通过设置相应的高速振荡器使能控制位,选择停止以节省耗电,或者继续振荡,为外围电路提供fH~fH/64频率的时钟源.
系统工作模式单片机有6种不同的工作模式,每种有它自身的特性,根据应用中不同的性能和功耗要求可选择不同的工作模式.
单片机正常工作有两种模式:快速模式和低速模式.
剩余的4种工作模式:休眠模式、空闲模式0、空闲模式1和空闲模式2用于单片机CPU关闭时以节省耗电.
Rev.
1.
10382019-11-04工作模式CPU寄存器设置fSYSfHfSUBfLIRCFHIDENFSIDENCKS2~CKS0快速模式Onxx000~110fH~fH/64OnOnOn低速模式Onxx111fSUBOn/O(1)OnOn空闲模式0O01000~110OOOnOn111On空闲模式1O11xxxOnOnOnOn空闲模式2O10000~110OnOnOOn111O休眠模式O00xxxOOOOn/O(2)"x":无关注:1.
在低速模式中,fH开启或关闭由相应的HIRC振荡器使能位控制.
2.
在休眠模式中,fLIRC开启或关闭由WDT功能使能或除能控制.
快速模式这是主要的工作模式之一,单片机的所有功能均可在此模式中实现且系统时钟由一个高速振荡器提供.
该模式下单片机正常工作的时钟源来自HIRC振荡器.
高速振荡器频率可被分为1~64的不等比率,实际的比率由SCC寄存器中的CKS2~CKS0位选择.
单片机使用高速振荡器分频作为系统时钟可减少工作电流.
低速模式此模式的系统时钟虽为较低速时钟源,但单片机仍能正常工作.
该低速时钟源可来自fSUB,而fSUB来自LIRC振荡器.
休眠模式执行HALT指令后且SCC寄存器中的FHIDEN和FSIDEN位都为低时,系统进入休眠模式.
在休眠模式中,CPU停止运行,fSUB停止为外围功能提供时钟.
若看门狗定时器功能使能,fLIRC继续运行.
空闲模式0执行HALT指令后且SCC寄存器中的FHIDEN位为低、FSIDEN位为高时,系统进入空闲模式0.
在空闲模式0中,CPU停止,但低速振荡器会开启以驱动一些外围功能.
空闲模式1执行HALT指令后且SCC寄存器中的FHIDEN和FSIDEN位都为高时,系统进入空闲模式1.
在空闲模式1中,CPU停止,但高速和低速振荡器都会开启以确保一些外围功能继续工作.
空闲模式2执行HALT指令后且SCC寄存器中的FHIDEN位为高、FSIDEN位为低时,系统进入空闲模式2.
在空闲模式2中,CPU停止,但高速振荡器会开启以确保一些外围功能继续工作.
Rev.
1.
10392019-11-04控制寄存器寄存器SCC和HIRCC用于控制系统时钟和相应的振荡器配置.
寄存器名称位76543210SCCCKS2CKS1CKS0———FHIDENFSIDENHIRCCHIRCFHIRCEN系统工作模式控制寄存器列表SCC寄存器Bit76543210NameCKS2CKS1CKS0———FHIDENFSIDENR/WR/WR/WR/W———R/WR/WPOR000———00Bit7~5CKS2~CKS0:系统时钟选择位000:fH001:fH/2010:fH/4011:fH/8100:fH/16101:fH/32110:fH/64111:fSUB这三位用于选择系统时钟源.
除了fH或fSUB提供的系统时钟源外,也可使用高频振荡器的分频作为系统时钟.
Bit4~2未定义,读为"0"Bit1FHIDEN:CPU关闭时高频振荡器控制位0:除能1:使能此位用来控制在CPU执行HALT指令关闭后高速振荡器是被激活还是停止.
Bit0FSIDEN:CPU关闭时低频振荡器控制位0:除能1:使能此位用来控制在CPU执行HALT指令关闭后低速振荡器是被激活还是停止.
HIRCC寄存器Bit76543210NameHIRCFHIRCENR/WRR/WPOR01Bit7~2未定义,读为"0"Bit1HIRCF:HIRC振荡器稳定标志位0:HIRC未稳定1:HIRC稳定此位用于表明HIRC振荡器是否稳定.
HIRCEN位置高使能HIRC振荡器,HIRCF位会先被清零,在HIRC稳定后会被置高.
Bit0HIRCEN:HIRC振荡器使能控制位0:除能1:使能Rev.
1.
10402019-11-04工作模式切换单片机可在各个工作模式间自由切换,使得用户可根据所需选择最佳的性能/功耗比.
用此方式,对单片机工作的性能要求不高的情况下,可使用较低频时钟以减少工作电流,在便携式应用上延长电池的使用寿命.
简单来说,快速模式和低速模式间的切换仅需设置SCC寄存器中的CKS2~CKS0位即可实现,而快速模式/低速模式与休眠模式/空闲模式间的切换经由HALT指令实现.
当HALT指令执行后,单片机是否进入空闲模式或休眠模式由SCC寄存器中的FHIDEN和FSIDEN位决定的.
FASTfSYS=fH~fH/64fHonCPUrunfSYSonfSUBonSLOWfSYS=fSUBfSUBonCPUrunfSYSonfHon/offIDLE0HALTinstructionexecutedCPUstopFHIDEN=0FSIDEN=1fHofffSUBonIDLE1HALTinstructionexecutedCPUstopFHIDEN=1FSIDEN=1fHonfSUBonIDLE2HALTinstructionexecutedCPUstopFHIDEN=1FSIDEN=0fHonfSUBoffSLEEPHALTinstructionexecutedCPUstopFHIDEN=0FSIDEN=0fHofffSUBoff快速模式切换到低速模式系统运行在快速模式时使用高速系统振荡器,因此较为耗电.
可通过设置SCC寄存器中的CKS2~CKS0位为"111"使系统时钟切换至运行在低速模式下.
此时将使用低速系统振荡器以节省耗电.
用户可在对性能要求不高的操作中使用此方法以减少耗电.
低速模式的系统时钟源自LIRC振荡器,因此要求此振荡器在所有模式切换动作发生前稳定下来.
Rev.
1.
10412019-11-04FASTModeSLOWModeCKS2~CKS0=111SLEEPModeFHIDEN=0,FSIDEN=0HALTinstructionisexecutedIDLE0ModeFHIDEN=0,FSIDEN=1HALTinstructionisexecutedIDLE1ModeFHIDEN=1,FSIDEN=1HALTinstructionisexecutedIDLE2ModeFHIDEN=1,FSIDEN=0HALTinstructionisexecuted低速模式切换到快速模式在低速模式时系统时钟来自fSUB.
切换回快速模式时,需设置CKS2~CKS0位为"000"~"110"使系统时钟从fSUB切换到fH~fH/64.
然而,如果在低速模式下fH因未使用而关闭,那么从低速模式切换到快速模式时,它需要一定的时间来重新起振和稳定,可通过检测HIRCC寄存器中的HIRCF位进行判断,所需的高速系统振荡器稳定时间在系统上电时间电气特性中有说明.
FASTModeSLOWModeCKS2~CKS0=000~110SLEEPModeFHIDEN=0,FSIDEN=0HALTinstructionisexecutedIDLE0ModeFHIDEN=0,FSIDEN=1HALTinstructionisexecutedIDLE1ModeFHIDEN=1,FSIDEN=1HALTinstructionisexecutedIDLE2ModeFHIDEN=1,FSIDEN=0HALTinstructionisexecutedRev.
1.
10422019-11-04进入休眠模式进入休眠模式的方法仅有一种,即应用程序中执行"HALT"指令前需设置SCC寄存器中的FHIDEN和FSIDEN位都为"0".
在这种模式下,除了WDT以外的所有时钟和功能都将关闭.
在上述条件下执行该指令后,将发生的情况如下:系统时钟停止运行,应用程序停止在"HALT"指令处.
数据存储器中的内容和寄存器将保持当前值.
输入/输出口将保持当前值.
状态寄存器中暂停标志PDF将被置起,看门狗溢出标志TO将被清零.
如果WDT功能使能,WDT将被清零并重新开始计数.
如果WDT功能除能,WDT将被清零并停止计数.
进入空闲模式0进入空闲模式0的方法仅有一种,即应用程序中执行"HALT"指令前需设置SCC寄存器中的FHIDEN位为"0"且FSIDEN位为"1".
在上述条件下执行该指令后,将发生的情况如下:fH时钟停止运行,应用程序停止在"HALT"指令处,但fSUB时钟将继续运行.
数据存储器中的内容和寄存器将保持当前值.
输入/输出口将保持当前值.
状态寄存器中暂停标志PDF将被置起,看门狗溢出标志TO将被清零.
如果WDT功能使能,WDT将被清零并重新开始计数.
如果WDT功能除能,WDT将被清零并停止计数.
进入空闲模式1进入空闲模式1的方法仅有一种,即应用程序中执行"HALT"指令前需设置SCC寄存器中的FHIDEN和FSIDEN位都为"1".
在上述条件下执行该指令后,将发生的情况如下:fH和fSUB时钟开启,应用程序停止在"HALT"指令处.
数据存储器中的内容和寄存器将保持当前值.
输入/输出口将保持当前值.
状态寄存器中暂停标志PDF将被置起,看门狗溢出标志TO将被清零.
如果WDT功能使能,WDT将被清零并重新开始计数.
如果WDT功能除能,WDT将被清零并停止计数.
进入空闲模式2进入空闲模式2的方法仅有一种,即应用程序中执行"HALT"指令前需设置SCC寄存器中的FHIDEN位为"1"且FSIDEN位为"0".
在上述条件下执行该指令后,将发生的情况如下:fH时钟开启,fSUB时钟关闭,应用程序停止在"HALT"指令处.
数据存储器中的内容和寄存器将保持当前值.
输入/输出口将保持当前值.
状态寄存器中暂停标志PDF将被置起,看门狗溢出标志TO将被清零.
Rev.
1.
10432019-11-04如果WDT功能使能,WDT将被清零并重新开始计数.
如果WDT功能除能,WDT将被清零并停止计数.
待机电流的注意事项由于单片机进入休眠或空闲模式的主要原因是将单片机的电流降低到尽可能低,可能到只有几个微安的级别(空闲模式1和空闲模式2除外),所以如果要将电路的电流降到最低,电路设计者还应有其它的考虑.
应该特别注意的是单片机的输入/输出引脚.
所有高阻抗输入脚都必须连接到固定的高或低电平,因为引脚浮空会造成内部振荡并导致耗电增加.
这也应用于有不同封装的单片机,因为它们可能含有未引出的引脚,这些引脚也必须设为输出或带有上拉电阻的输入.
另外还需注意单片机设为输出的I/O引脚上的负载.
应将它们设置在有最小拉电流的状态或将它们和其它的CMOS输入一样接到没有拉电流的外部电路上.
还应注意的是,如果选择LIRC振荡器,会导致耗电增加.
在空闲模式1和空闲模式2中,高速振荡器开启.
若外围功能时钟源来自高速振荡器,额外的待机电流也可能会有几百微安.
唤醒单片机进入休眠模式或空闲模式后,系统时钟将停止以降低功耗.
然而单片机再次唤醒,原来的系统时钟重新起振、稳定且恢复正常工作需要一定的时间.
系统进入休眠或空闲模式之后,可以通过以下几种方式唤醒:PA口下降沿系统中断WDT溢出若执行HALT指令,PDF将被置位.
系统上电或执行清除看门狗的指令,PDF将被清零.
若由WDT溢出唤醒,则会发生看门狗定时器复位.
看门狗计数器溢出将会置位TO标志并唤醒系统,这种复位会重置程序计数器和堆栈指针,其它标志保持原有状态.
PA口中的每个引脚都可以通过PAWU寄存器使能下降沿唤醒功能.
PA端口唤醒后,程序将在"HALT"指令后继续执行.
如果系统是通过中断唤醒,则有两种可能发生.
第一种情况是:相关中断除能或是中断使能且堆栈已满,则程序会在"HALT"指令之后继续执行.
这种情况下,唤醒系统的中断会等到相关中断使能或有堆栈层可以使用之后才执行.
第二种情况是:相关中断使能且堆栈未满,则中断可以马上执行.
如果在进入休眠或空闲模式之前中断标志位已经被设置为"1",则相关中断的唤醒功能将无效.
Rev.
1.
10442019-11-04看门狗定时器看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件,所造成的程序不正常动作或跳转到未知的地址.
看门狗定时器时钟源WDT定时器时钟源fLIRC由内部低速振荡器LIRC提供.
内部振荡器LIRC的频率大约为32kHz,这个特殊的内部时钟周期会随VDD、温度和制成的不同而变化.
看门狗定时器的时钟源可分频为28~218以提供更大的溢出周期,分频比由WDTC寄存器中的WS2~WS0位来决定.
看门狗定时器控制寄存器WDTC寄存器用于控制WDT功能的使能/除能、选择溢出周期以及软件复位单片机.
WDTC寄存器Bit76543210NameWE4WE3WE2WE1WE0WS2WS1WS0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR01010011Bit7~3WE4~WE0:WDT软件控制10101:除能01010:使能其它值:单片机复位如果由于不利的环境因素使这些位变为其它值,单片机将复位.
复位动作发生在一段延迟时间tSRESET后,且RSTFC寄存器的WRF位将置为"1".
Bit2~0WS2~WS0:WDT溢出周期选择位000:28/fLIRC001:210/fLIRC010:212/fLIRC011:214/fLIRC100:215/fLIRC101:216/fLIRC110:217/fLIRC111:218/fLIRC这三位控制WDT时钟源的分频比,从而实现对WDT溢出周期的控制.
RSTFC寄存器Bit76543210Name————RSTFLVRFLRFWRFR/W————R/WR/WR/WR/WPOR————0x00"x":未知Bit7~4未定义,读为"0"Bit3RSTF:复位控制寄存器软件复位标志位具体描述见内部复位控制章节.
Bit2LVRF:LVR复位标志位具体描述见低电压复位章节.
Rev.
1.
10452019-11-04Bit1LRF:LVR控制寄存器软件复位标志位具体描述见低电压复位章节.
Bit0WRF:WDT控制寄存器软件复位标志位0:未发生1:发生当WDT控制寄存器软件复位发生时,此位被置为"1",且只能通过应用程序清零.
看门狗定时器操作当WDT溢出时,它产生一个单片机复位的动作.
这也就意味着正常工作期间,用户需在应用程序中看门狗溢出前有策略地清看门狗定时器以防止其产生复位,可使用清除看门狗指令实现.
无论什么原因,程序失常跳转到一个未知的地址或进入一个死循环,清除指令都不能被正确执行,此种情况下,看门狗将溢出以使单片机复位.
看门狗定时器控制寄存器WDTC中的WE4~WE0位可提供使能/除能控制以及控制看门狗定时器复位操作.
当WE4~WE0设置为"10101B"时除能WDT功能,而当设置为"01010B"时使能WDT功能.
如果WE4~WE0设置为除"01010B"和"10101B"以外的值时,单片机将在一段延迟时间tSRESET后复位.
上电后这些位初始化为"01010B".
WE4~WE0位WDT功能10101B除能01010B使能其它值单片机复位看门狗定时器使能/除能控制程序正常运行时,WDT溢出将导致单片机复位,并置位状态标志位TO.
若系统处于休眠或空闲模式,当WDT发生溢出时,状态寄存器中的TO应置位,仅PC和堆栈指针复位.
有三种方法可以用来清除WDT的内容.
第一种是WDTC软件复位,即将WE4~WE0位设置成除了01010B和10101B外的任意值;第二种是通过软件清除指令,而第三种是通过"HALT"指令.
该单片机只使用一条清看门狗指令"CLRWDT".
因此只要执行"CLRWDT"便清除WDT.
当设置分频比为218时,溢出周期最大.
例如,时钟源为32kHzLIRC振荡器,分频比为218时最大溢出周期约8s,分频比为28时最小溢出周期约8ms.
"CLRWDT"InstructionWE4~WE0bitsWDTCRegisterResetMCUfLIRCCLR"HALT"InstructionLIRC8-stageDividerWDTPrescalerfLIRC/288-to-1MUXWS2~WS0WDTTime-out(28/fLIRC~218/fLIRC)看门狗定时器Rev.
1.
10462019-11-04复位和初始化复位功能是任何单片机中基本的部分,使得单片机可以设定一些与外部参数无关的先置条件.
最重要的复位条件是在单片机首次上电以后,经过短暂的延迟,内部硬件电路使得单片机处于预期的稳定状态并开始执行第一条程序指令.
上电复位以后,在程序执行之前,部分重要的内部寄存器将会被设定为预先设定的状态.
程序计数器就是其中之一,它会被清为零,使得单片机从最低的程序存储器地址开始执行程序.
除了上电复位外,另一种复位为低电压复位即LVR复位,在电源供应电压低于LVR设定值时,系统会产生LVR复位.
还有一种复位为看门狗溢出单片机复位,不同方式的复位操作会对寄存器产生不同的影响.
复位功能单片机的几种内部复位方式将在此处做具体介绍.
上电复位这是最基本且不可避免的复位,发生在单片机上电后.
除了保证程序存储器从开始地址执行,上电复位也使得其它寄存器被设定在预设条件.
所有的输入/输出端口控制寄存器在上电复位时会保持高电平,以确保上电后所有引脚被设定为输入状态.
VDDPower-onResetSSTTime-outtRSTD上电复位时序图内部复位控制内部复位控制寄存器RSTC用于为单片机在受到环境噪声干扰而异常工作时提供复位.
如果RSTC寄存器的内容被设置为除01010101B或10101010B以外的任何值,则经过延迟时间tSRESET后单片机复位.
上电后寄存器的值为01010101B.
RSTC7~RSTC0位复位功能01010101B无操作10101010B无操作其它值单片机复位内部复位功能控制Rev.
1.
10472019-11-04RSTC寄存器Bit76543210NameRSTC7RSTC6RSTC5RSTC4RSTC3RSTC2RSTC1RSTC0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR01010101Bit7~0RSTC7~RSTC0:复位功能控制01010101:无操作10101010:无操作其它值:MCU复位如果由于不利的环境因素使这些位发生改变,单片机将复位.
复位动作发生在一段延迟时间tSRESET后,且RSTFC寄存器的RSTF位将置为"1".
RSTFC寄存器Bit76543210Name————RSTFLVRFLRFWRFR/W————R/WR/WR/WR/WPOR————0x00"x":未知Bit7~4未定义,读为"0"Bit3RSTF:复位控制寄存器软件复位标志位0:未发生1:发生当RSTC控制寄存器软件复位发生时,此位被置为"1",且只能通过应用程序清零.
Bit2LVRF:LVR复位标志位具体描述见低电压复位章节.
Bit1LRF:LVRC寄存器软件复位标志位具体描述见低电压复位章节.
Bit0WRF:WDTC寄存器软件复位标志位具体描述见看门狗定时器控制寄存器章节低电压复位–LVR单片机具有低电压复位电路,用来监测它的电源电压.
当电源电压低于某一预定值时,它将复位单片机.
寄存器LVRC可提供LVR功能使能/除能控制以及控制单片机复位操作.
当LVRC寄存器设置为10100101B时,LVR功能将除能,当LVRC寄存器设置为01011010B时,在快速模式和低速模式下,低电压复位功能总是使能于固定的电压值2.
1V.
例如在更换电池的情况下,单片机供应的电压可能会在0.
9V~VLVR之间,这时LVR将会自动复位单片机且RSTFC寄存器中的LVRF标志位置位.
LVR包含以下的规格:有效的LVR信号,即在0.
9V~VLVR的低电压状态的时间,必须超过LVR电气特性中tLVR参数的值.
如果低电压存在不超过tLVR参数的值,则LVR将会忽略它且不会执行复位功能.
若LVS7~LVS0位的值由于不利的环境因素如噪声而发生改变,单片机将在一段延迟时间tSRESET后复位.
此时RSTFC寄存器的LRF位被置位.
上电后寄存器的值为01011010B.
需注意的是,即使LVRC寄存器设置为01011010B,LVR功能在进入休眠或空闲模式时也会自动除能.
Rev.
1.
10482019-11-04LVRInternalResettRSTD+tSST低电压复位时序图VBGC寄存器Bit76543210Name————VBGEN———R/W————R/W———POR————0———Bit7~4未定义,读为"0"Bit3VBGEN:Bandgap缓冲器使能控制位0:除能1:使能需注意的是,当LVR功能使能或VBGEN位置1时,Bandgap电路使能.
Bit2~0未定义,读为"0"LVRC寄存器Bit76543210NameLVS7LVS6LVS5LVS4LVS3LVS2LVS1LVS0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR01011010Bit7~0LVS7~LVS0:LVR功能使能控制01011010:使能,选择2.
1V10100101:除能其它值:单片机复位–寄存器复位为POR值若低电压情况发生且VDD电压降至2.
1V,则单片机复位.
当低电压状态保持时间大于tLVR后响应复位.
此时复位后的寄存器内容保持不变.
除了01011010和10100101外其它寄存器值也能导致单片机复位.
复位操作会在tSRESET时间后执行.
注意的是此处单片机复位后,寄存器的值将恢复到上电复位值.
RSTFC寄存器Bit76543210Name————RSTFLVRFLRFWRFR/W————R/WR/WR/WR/WPOR————0x00"x":未知Bit7~4未定义,读为"0"Bit3RSTF:复位控制寄存器软件复位标志位具体描述见内部复位控制章节.
Bit2LVRF:LVR复位标志位0:未发生1:发生当特定的低电压复位条件发生时,此位被置为"1",且只能通过应用程序清零.
Rev.
1.
10492019-11-04Bit1LRF:LVR控制寄存器软件复位标志位0:未发生1:发生如果LVRC寄存器包含任何非定义的LVR电压值,此位被置为"1",这类似于软件复位功能,且只能通过应用程序清零.
Bit0WRF:WDT控制寄存器软件复位标志位具体描述见看门狗定时器控制寄存器章节.
正常运行时看门狗溢出复位在正常运行时发生看门狗溢出复位,看门狗溢出标志位TO将被设为"1".
WDTTime-outInternalResettRSTD+tSST正常运行时看门狗溢出复位时序图休眠或空闲时看门狗溢出复位休眠或空闲模式时看门狗溢出复位和其它种类的复位有些不同,除了程序计数器与堆栈指针将被清零及TO位被设为"1"外,绝大部份的条件保持不变.
图中tSST的详细说明请参考系统上电时间电气特性.
WDTTime-outInternalResettSST休眠或空闲时看门狗溢出复位时序图复位初始状态不同的复位形式以不同的方式影响复位标志位.
这些标志位,即PDF和TO位存放在状态寄存器中,由休眠或空闲模式功能或看门狗计数器等几种控制器操作控制.
复位标志位如下所示:TOPDF复位条件00上电复位uu快速模式或低速模式时的LVR复位1u快速模式或低速模式时的WDT溢出复位11空闲或休眠模式时的WDT溢出复位"u":不改变在单片机上电复位之后,各功能单元初始化的情形,列于下表.
项目复位后情况程序计数器清除为零中断所有中断被除能看门狗定时器,时基都清为零,且WDT重新计数定时器模块定时器模块停止输入/输出口I/O口设为输入模式堆栈指针堆栈指针指向堆栈顶端Rev.
1.
10502019-11-04不同的复位形式对单片机内部寄存器的影响是不同的.
为保证复位后程序能正常执行,了解寄存器在特定条件复位后的设置是非常重要的.
下表即为不同方式复位后内部寄存器的状况.
注意对于存在多种封装的单片机,下表反映的是较大封装类型的情况.
寄存器名称上电复位LVR复位(正常运行)WDT溢出(正常运行)WDT溢出(空闲/休眠)IAR0xxxxxxxx0000000000000000uuuuuuuuMP0xxxxxxxx0000000000000000uuuuuuuuIAR1xxxxxxxx0000000000000000uuuuuuuuMP1xxxxxxxx0000000000000000uuuuuuuuBP000000000uuuACCxxxxxxxxuuuuuuuuuuuuuuuuuuuuuuuuPCL00000000000000000000000000000000TBLPxxxxxxxxuuuuuuuuuuuuuuuuuuuuuuuuTBLHxxxxxxxxuuuuuuuuuuuuuuuuuuuuuuuuTBHP----xxxx----uuuu----uuuu----uuuuSTATUS--00xxxx--uuuuuu--1uuuuu--11uuuuRSTFC----0x00----u1uu----uuuu----uuuSCC000---00000---00000---00uuu---uuHIRCC010101uuPA---11111---11111---11111---uuuuuPAC---11111---11111---11111---uuuuuPAPU---00000---00000---00000---uuuuuPAWU---00000---00000---00000---uuuuuRSTC010101010101010101010101uuuuuuuuLVRC01011010uuuuuuuu01011010uuuuuuuuVBGC----000u---MFI--00--00--00--00--00--00--uu--uuWDTC010100110101001101010011uuuuuuuuINTEG----0000----0000----0000----uuuuINTC0-0000000-0000000-0000000-uuuuuuuINTC1000000000000000000000000uuuuuuuuPSCR000000uuTB0C0----0000----0000----000u----uuuTB1C0----0000----0000----000u----uuuPAS00--000000--000000--0000uu--uuuuECR000000000000000000000000uuuuuuuuEAR---00000---00000---00000---uuuuuED0L000000000000000000000000uuuuuuuuED0H000000000000000000000000uuuuuuuuED1L000000000000000000000000uuuuuuuuED1H000000000000000000000000uuuuuuuuED2L000000000000000000000000uuuuuuuuRev.
1.
10512019-11-04寄存器名称上电复位LVR复位(正常运行)WDT溢出(正常运行)WDT溢出(空闲/休眠)ED2H000000000000000000000000uuuuuuuuED3L000000000000000000000000uuuuuuuuED3H000000000000000000000000uuuuuuuuTKTMR000000000000000000000000uuuuuuuuTKC0-0000-00-0000-00-0000-00-uuuu-uuTKC1111111uuTK16DL000000000000000000000000uuuuuuuuTK16DH000000000000000000000000uuuuuuuuTKM0C0000000000000000000000000uuuuuuuuTKM0C10-00--000-00--000-00--00u-uu--uuTKM016DL000000000000000000000000uuuuuuuuTKM016DH000000000000000000000000uuuuuuuuTKM0ROL000000000000000000000000uuuuuuuuTKM0ROH000000uuCTMC0000000000000000000000000uuuuuuuuCTMC1000000000000000000000000uuuuuuuuCTMDL000000000000000000000000uuuuuuuuCTMDH000000uuCTMAL000000000000000000000000uuuuuuuuCTMAH000000uuADCS---00000---00000---00000---uuuuuADCR0001000--001000--001000--uuuuuu-ADCR1000--00-000--00-000--00-uuu--uuPWRC0----0000----0000----000u----uuuPGAC0-0000000-0000000-0000000-uuuuuuuPGAC1-000000--000000--000000--uuuuuu-PGACS000000000000000000000000uuuuuuuuADRLxxxxxxxxxxxxxxxxxxxxxxxxuuuuuuuuADRMxxxxxxxxxxxxxxxxxxxxxxxxuuuuuuuuADRHxxxxxxxxxxxxxxxxxxxxxxxxuuuuuuuuSLEDC----0000----0000----0000----uuuuLCDC0----0000----0000----000u----uuuLCDCP----0-00----0-00----0-00----u-uu注:"u"表示不改变"x"表示未知"-"表示未定义Rev.
1.
10522019-11-04输入/输出端口Holtek单片机的输入/输出口控制具有很大的灵活性.
大部分引脚可在用户程序控制下被设定为输入或输出.
所有引脚的上拉电阻设置以及指定引脚的唤醒设置也都由软件控制,这些特性也使得此类单片机在广泛应用上都能符合开发的需求.
该单片机提供PA双向输入/输出口.
这些寄存器在数据存储器有特定的地址.
所有I/O口用于输入输出操作.
作为输入操作,输入引脚无锁存功能,也就是说输入数据必须在执行"MOVA,[m]",T2的上升沿准备好,m为端口地址.
对于输出操作,所有数据都是被锁存的,且保持不变直到输出锁存被重写.
寄存器名称位76543210PA———PA4PA3PA2PA1PA0PAC———PAC4PAC3PAC2PAC1PAC0PAPU———PAPU4PAPU3PAPU2PAPU1PAPU0PAWU———PAWU4PAWU3PAWU2PAWU1PAWU0"—":未定义,读为"0"I/O逻辑功能寄存器列表上拉电阻许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功能.
为了免去外部上拉电阻,当引脚规划为数字输入时,可由内部连接到一个上拉电阻.
这些上拉电阻可通过PAPU寄存器来设置,它用一个PMOS晶体管来实现上拉电阻功能.
需要注意的是,当I/O引脚设为数字输入或NMOS输出时,上拉功能才会受PAPU控制开启,其它状态下上拉功能不可用.
PAPU寄存器Bit76543210Name———PAPU4PAPU3PAPU2PAPU1PAPU0R/W———R/WR/WR/WR/WR/WPOR———00000Bit7~5未定义,读为"0"Bit4~0PAPU4~PAPU0:PA4~PA0引脚上拉电阻控制位0:除能1:使能PA口唤醒当使用暂停指令"HALT"迫使单片机进入休眠或空闲模式,单片机的系统时钟将会停止以降低功耗,此功能对于电池及低功耗应用很重要.
唤醒单片机有很多种方法,其中之一就是使PA口的其中一个引脚从高电平转为低电平.
这个功能特别适合于通过外部开关来唤醒的应用.
PA口的每个引脚可以通过设置PAWU寄存器来单独选择是否具有唤醒功能.
需要注意的是,只有当引脚功能为通用输入功能且单片机处于空闲/休眠模式时,唤醒功能才会受PAWU控制开启,其它状态下此唤醒功能不可用.
Rev.
1.
10532019-11-04PAWU寄存器Bit76543210Name———PAWU4PAWU3PAWU2PAWU1PAWU0R/W———R/WR/WR/WR/WR/WPOR———00000Bit7~5未定义,读为"0"Bit4~0PAWU4~PAWU0:PA4~PA0引脚唤醒功能控制位0:除能1:使能输入/输出端口控制寄存器每一个输入/输出口都具有各自的控制寄存器,即PAC,用来控制输入/输出状态.
从而每个I/O引脚都可以通过软件控制,动态的设置为CMOS输出或输入.
所有的I/O端口的引脚都各自对应于I/O端口控制的某一位.
若I/O引脚要实现输入功能,则对应的控制寄存器的位需要设置为"1".
这时程序指令可以直接读取输入脚的逻辑状态.
若控制寄存器相应的位被设定为"0",则此引脚被设置为CMOS输出.
当引脚设置为输出状态时,程序指令读取的是输出端口寄存器的内容.
注意,如果对输出口做读取动作时,程序读取到的是内部输出数据锁存器中的状态,而不是输出引脚上实际的逻辑状态.
PAC寄存器Bit76543210Name———PAC4PAC3PAC2PAC1PAC0R/W———R/WR/WR/WR/WR/WPOR———11111Bit7~5未定义,读为"0"Bit4~0PAC4~PAC0:PA4~PA0引脚类型选择位0:输出1:输入输入/输出端口源电流选择该单片机的每个I/O口都支持不同的源电流驱动能力.
通过设置相应的选择寄存器SLEDC,每个I/O口可以支持四个级别的源电流驱动能力.
仅当对应的引脚被设为CMOS输出时,其源电流选择位才有效.
否则,这些选择位无效.
用户可参考输入/输出口电气特性章节为不同应用选择所需的源电流.
SLEDC寄存器Bit76543210Name————SLEDC3SLEDC2SLEDC1SLEDC0R/W————R/WR/WR/WR/WPOR————0000Bit7~4未定义,读为"0"Bit3~2SLEDC3~SLEDC2:PA4源电流选择00:Level0(最小)01:Level110:Level211:Level3(最大)Rev.
1.
10542019-11-04Bit1~0SLEDC1~SLEDC0:PA3~PA0源电流选择00:Level0(最小)01:Level110:Level211:Level3(最大)引脚共用功能引脚的多功能可以增加单片机应用的灵活性.
有限的引脚个数将会限制设计者,而引脚的多功能将会解决很多此类问题.
此外,这些引脚功能可以通过一系列寄存器进行设定.
引脚共用功能选择寄存器封装中有限的引脚个数会对某些单片机功能造成影响.
然而,引脚功能共用和引脚功能选择,使得小封装单片机具有更多不同的功能.
单片机包含一个端口A输出功能选择寄存器PAS,可以用来选择共用引脚的特定功能.
要注意的最重要一点是,确保所需的引脚共用功能被正确地选择和取消.
对于大部分共用功能,要选择所需的引脚共用功能,首先应通过相应的引脚共用控制寄存器正确地选择该功能,然后再配置相应的外围功能设置以使能外围功能.
但是,在设置相关引脚控制字段时,一些数字输入引脚如INTn、CTCK,与对应的通用I/O口共用同一个引脚共用设置选项.
要选择这个引脚功能,除了上述的必要的引脚共用控制和外围功能设置外,还必须将其对应的端口控制寄存器位设置为输入.
要正确地取消引脚共用功能,首先应除能外围功能,然后再修改相应的引脚共用控制寄存器以选择其它的共用功能.
PAS寄存器Bit76543210NamePAS7PAS6——PAS3PAS2PAS1PAS0R/WR/WR/W——R/WR/WR/WR/WPOR00——0000Bit7~6PAS7~PAS6:PA3引脚共用功能选择00:PA3/CTCK01:PA3/CTCK10:KEY211:PA3/CTCKBit5~4未定义,读为"0"Bit3~2PAS3~PAS2:PA1引脚共用功能选择00:PA101:CTPB10:KEY111:PA1Bit1~0PAS1~PAS0:PA0引脚共用功能选择00:PA0/INT101:CTP10:PA0/INT111:PA0/INT1Rev.
1.
10552019-11-04输入/输出引脚结构下图为输入/输出引脚逻辑功能的内部结构图.
输入/输出引脚的准确逻辑结构图可能与此图不同,这里只是为了方便对I/O引脚逻辑功能的理解提供一个参考.
由于存在诸多的引脚共用结构,在此不方便提供所有类型引脚功能结构图.
MUXVDDControlBitDataBitDataBusWriteControlRegisterChipResetReadControlRegisterReadDataRegisterWriteDataRegisterSystemWake-upwake-upSelectI/OpinWeakPull-upPull-highRegisterSelectQDCKQDCKQQSSPAonly逻辑功能输入/输出端口结构编程注意事项在编程中,最先要考虑的是端口的初始化.
复位之后,所有的输入/输出数据及端口控制寄存器都将被设为逻辑高.
所有输入/输出引脚默认为输入状态,而其电平则取决于其它相连接电路以及是否选择了上拉电阻.
如果端口控制寄存器将某些引脚设定为输出状态,这些输出引脚会有初始高电平输出,除非端口数据寄存器在程序中被预先设定.
设置哪些引脚是输入及哪些引脚是输出,可通过设置正确的值到对应的端口控制寄存器,或使用指令"SET[m].
i"及"CLR[m].
i"来设定端口控制寄存器中个别的位.
注意,当使用这些位控制指令时,系统即将产生一个读-修改-写的操作.
单片机需要先读入整个端口上的数据,修改个别的位,然后重新把这些数据写入到输出端口.
PA口的每个引脚都带唤醒功能.
单片机处于休眠或空闲模式时,有很多方法可以唤醒单片机,其中之一就是通过PA任一引脚电平从高到低转换的方式,可以设置PA口一个或多个引脚具有唤醒功能.
Rev.
1.
10562019-11-04定时器模块–TM控制和测量时间在任何单片机中都是一个很重要的部分.
该单片机提供单个定时器模块(简称TM),来实现和时间有关的功能.
该定时器模块是包括多种操作的定时单元,提供的操作有:定时/事件计数器,比较匹配输出以及PWM输出等功能.
该定时器模块有两个独立中断.
其外加的输入输出引脚,扩大了定时器的灵活性,便于用户使用.
简介该单片机包含一个简易型TM单元,即CTM,其主要特性见下表.
功能CTM定时/计数器√比较匹配输出√PWM输出√PWM对齐方式边沿对齐PWM调节周期&占空比占空比或周期CTM功能概要TM操作简易型TM提供从简单的定时操作到PWM信号产生等多种功能.
理解TM操作的关键是比较TM内独立运行的计数器的值与内部比较器的预置值.
当计数器的值与比较器的预置值相同时,则比较匹配,TM中断信号产生,清零计数器并改变TM输出引脚的状态.
用户选择内部时钟或外部时钟来驱动内部TM计数器.
TM时钟源驱动TM计数器的时钟源很多.
通过设置CTM控制寄存器的CTCK2~CTCK0位可选择所需的时钟源.
该时钟源来自系统时钟fSYS或内部高速时钟fH或fSUB时钟源或外部CTCK引脚的分频比.
CTCK引脚时钟源用于允许外部信号作为TM时钟源或用于事件计数.
TM中断简易型TM有两个内部中断,即内部比较器A和比较器P,当发生比较匹配时比较器将产生一个TM中断.
中断产生时将清除计数器,并改变TM输出引脚的状态.
TM外部引脚简易型TM有一个输入引脚CTCK.
CTM输入引脚也作为CTM的时钟源输入脚,通过设置CTMC0寄存器中的CTCK2~CTCK0位进行选择.
外部时钟源可通过该引脚来驱动内部TM.
外部TM输入脚与其它功能共用引脚,但是,如果设置适当值给CTCK2~CTCK0位,该引脚会连接到内部TM.
CTM输入引脚可以选择上升沿或下降沿.
简易型TM有两个输出引脚CTP和CTPB.
CTPB是CTP输出的反相信号.
当CTM工作在比较匹配输出模式且比较匹配发生时,这些引脚会由TM控制切换到高电平或低电平或翻转.
外部CTP和CTPB输出引脚也被TM用来产生PWM输出波形.
当CTM输入和输出引脚与其它功能共用时,TM输入和输出功能需要事先通过Rev.
1.
10572019-11-04相关引脚共用功能选择寄存器先被设置.
更多引脚共用功能选择详见引脚共用功能章节.
CTM输入输出CTCKCTP,CTPBCTM外部引脚CTMCTCKCTPCCROutputCTPBClockInputCTM功能引脚框图编程注意事项TM计数寄存器和比较寄存器CCRA寄存器,都是10位,含有低字节和高字节结构.
高字节可直接访问,低字节则仅能通过一个内部8-bit的缓存器进行访问.
读写这些成对的寄存器需通过特殊的方式.
值得注意的是8-bit缓存器的存取数据及相关低字节的读写操作仅在其相应的高字节读取操作执行时发生.
由于CCRA寄存器按照下图方式执行,具体存取这些寄存器对的方式如上所述,建议使用"MOV"指令,通过以下步骤访问CCRA低字节寄存器CTMAL.
若不采用以下步骤访问CCRA低字节寄存器将导致不可预期的结果.
DataBus8-bitBufferCTMAHCTMALCTMCounterRegister(Readonly)CTMCCRARegister(Read/Write)CTMDHCTMDL读写流程如下步骤所示:写数据至CCRA步骤1.
写数据至低字节寄存器CTMAL–注意,此时数据仅写入8-bit缓存器.
步骤2.
写数据至高字节寄存器CTMAH–注意,此时数据直接写入高字节寄存器,同时锁存在8-bit缓存器中的数据写入低字节寄存器.
从计数器寄存器和CCRA中读取数据步骤1.
从高字节寄存器CTMDH和CTMAH中读取数据–注意,此时高字节寄存器中的数据直接读取,同时由低字节寄存器读取的数据锁存至8-bit缓存器中.
步骤2.
从低字节寄存器CTMDL和CTMAL中读取数据–注意,此时读取8-bit缓存器中的数据.
Rev.
1.
10582019-11-04简易型TM–CTM尽管简易型TM是三种TM类型中最简单的形式,它仍包括三种工作模式、即比较匹配输出、定时/事件计数器和PWM输出模式.
简易型TM也可由一个外部输入脚控制并驱动两个外部输出脚.
fSYSfSYS/4fH/64fH/16fSUBCTCK000001010011100101110111CTCK2~CTCK010-bitCount-upCounter3-bitComparatorPCCRPb7~b9b0~b910-bitComparatorACTONCTPAUComparatorAMatchComparatorPMatchCounterClear01OutputControlPolarityControlCTPCTOCCTM1,CTM0CTIO1,CTIO0CTMAFInterruptCTMPFInterruptCTPOLCCRACTCCLRfSUBCTPB注:1.
CTPB为CTP的反相输出.
2.
CTM外部引脚为其它功能共用引脚,因此在使用CTM之前应该合理配置相应引脚共用功能选择寄存器以选择所需的CTM引脚功能.
简易型TM方框图简易型TM操作简易型TM核心是一个由用户选择的内部或外部时钟源驱动的10位向上计数器,它还包括两个内部比较器即比较器A和比较器P.
这两个比较器将计数器的值与CCRP和CCRA寄存器中的值进行比较.
CCRP是3位的,与计数器的高3位比较;而CCRA是10位的,与计数器的所有位比较.
通过应用程序改变10位计数器值的唯一方法是使CTON位发生上升沿跳变清除计数器.
此外,计数器溢出或比较匹配也会自动清除计数器.
上述条件发生时,通常情况下会产生CTM中断信号.
简易型TM可工作在不同的模式,可由包括来自输入脚的不同时钟源驱动,也可以控制两个输出脚.
所有工作模式的设定都是通过设置相关内部寄存器来实现的.
简易型TM寄存器介绍简易型TM的所有操作由一系列寄存器控制.
包含一对只读寄存器用来存放10位计数器的值,一对读/写寄存器存放10位CCRA的值.
剩下两个控制寄存器设置不同的操作和控制模式以及CCRP的3个位.
寄存器名称位76543210CTMC0CTPAUCTCK2CTCK1CTCK0CTONCTRP2CTRP1CTRP0CTMC1CTM1CTM0CTIO1CTIO0CTOCCTPOLCTDPXCTCCLRCTMDLD7D6D5D4D3D2D1D0CTMDHD9D8CTMALD7D6D5D4D3D2D1D0CTMAHD9D810-bit简易型TM寄存器列表Rev.
1.
10592019-11-04CTMC0寄存器Bit76543210NameCTPAUCTCK2CTCK1CTCK0CTONCTRP2CTRP1CTRP0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7CTPAU:CTM计数器暂停控制位0:运行1:暂停通过设置此位为高可暂停计数器.
此位清零可恢复正常计数器操作.
在暂停情况下CTM将保持上电并继续产生功耗.
当此位由低到高转换,计数器将保留其剩余值,当其电平再变为低时从此值开始继续计数.
Bit6~4CTCK2~CTCK0:CTM计数器时钟选择位000:fSYS/4001:fSYS010:fH/16011:fH/64100:fSUB101:fSUB110:CTCK上升沿时钟111:CTCK下降沿时钟此三位用于选择CTM的时钟源.
外部引脚时钟源能被选择在上升沿或下降沿有效.
fSYS是系统时钟,fH和fSUB是其它的内部时钟源,细节方面请参考振荡器章节.
Bit3CTON:CTM计数器On/O控制位0:O1:On此位控制CTM的总开关功能.
设置此位为高可使能计数器使其运行,清零此位则除能CTM.
清零此位将停止计数器并关闭CTM减少功耗.
当此位经由低到高转换时,内部计数器将复位清零,当此位由高到低转换时,内部计数器将保持其剩余值直到此位再次转变为高.
若CTM处于比较匹配输出模式或PWM输出模式,当CTON位经由低到高转换时,CTM输出脚将复位至CTOC位指定的初始值.
Bit2~0CTRP2~CTRP0:CTMCCRP3-bit寄存器,与CTM计数器bit9~bit7比较比较器P匹配周期000:1024个CTM时钟001:128个CTM时钟010:256个CTM时钟011:384个CTM时钟100:512个CTM时钟101:640个CTM时钟110:768个CTM时钟111:896个CTM时钟此三位设定内部CCRP3-bit寄存器的值,然后与内部计数器的高三位进行比较.
如果CTCCLR位设定为0时,选中该比较结果清除内部计数器.
CTCCLR位设为0,内部计数器在比较器P比较匹配发生时被重置;由于CCRP只与计数器高三位比较,比较结果是128时钟周期的倍数.
CCRP被清零时,会使得计数器在最大值溢出.
Rev.
1.
10602019-11-04CTMC1寄存器Bit76543210NameCTM1CTM0CTIO1CTIO0CTOCCTPOLCTDPXCTCCLRR/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~6CTM1~CTM0:CTM工作模式选择位00:比较匹配输出模式01:未定义10:PWM输出模式11:定时/计数器模式这两个位为CTM设置所需的工作模式.
为保证操作的可靠性,在此位段发生任何改变之前需先关闭CTM.
在定时/计数器模式下,CTM输出引脚状态未定义.
Bit5~4CTIO1~CTIO0:CTP输出功能选择位比较匹配输出模式00:未改变01:输出低10:输出高11:输出翻转PWM输出模式00:PWM输出无效状态01:PWM输出有效状态10:PWM输出11:未定义定时/计数器模式未使用这两位用于确定在达到某些条件时CTM外部引脚状态应如何改变.
这些位的功能选择取决于当下CTM的工作模式.
在比较匹配输出模式下,CTIO1和CTIO0位决定当比较器A比较匹配输出发生时CTM输出脚如何改变状态.
当比较器A比较匹配输出发生时CTM输出脚能设为切换高、切换低或翻转当前状态.
若此两位同时为0时,输出将不会改变.
CTM输出脚的初始值通过CTOC位设置取得.
注意,由CTIO1和CTIO0位得到的输出电平必须与通过CTOC位设置的初始值不同,否则当比较匹配发生时,CTM输出脚将不会发生变化.
在CTM输出脚改变状态后,通过CTON位由低到高电平的转换可复位至初始值.
在PWM输出模式,CTIO1和CTIO0用于决定比较匹配条件发生时怎样改变CTM输出脚的状态.
PWM输出功能通过这两位的变化进行更新.
仅在CTM关闭时改变CTIO1和CTIO0位的值是很有必要的.
若在CTM运行时改变CTIO1和CTIO0的值,PWM输出的值将无法预料.
Bit3CTOC:CTP输出控制位比较匹配输出模式0:初始低1:初始高PWM输出模式0:低有效1:高有效此位为CTM输出脚的输出控制位.
它取决于CTM此时正运行于比较匹配输出模式还是PWM输出模式.
若CTM处于定时/计数器模式,则其不受影响.
在比较匹配输出模式时,比较匹配发生前其决定CTM输出脚的逻辑电平值.
在PWM输出模式时,其决定PWM信号是高有效还是低有效.
Rev.
1.
10612019-11-04Bit2CTPOL:CTMCTP输出极性控制位0:同相1:反相此位控制CTP输出脚的极性.
此位为高时CTP输出脚反相,为低时CTP输出脚同相.
若CTM处于定时/计数器模式时,此位无效.
Bit1CTDPX:CTMPWM周期/占空比控制位0:CCRP–周期;CCRA–占空比1:CCRP–占空比;CCRA–周期此位决定CCRA与CCRP寄存器哪个被用于PWM波形的周期和占空比控制.
Bit0CTCCLR:选择CTM计数器清零条件位0:CTM比较器P匹配1:CTM比较器A匹配此位用于选择清除计数器的方法.
简易型TM包括两个比较器-比较器A和比较器P.
这两个比较器每个都可以用于清除内部计数器.
CTCCLR位设为高,计数器在比较器A比较匹配发生时被清除;此位设为低,计数器在比较器P比较匹配发生或计数器溢出时被清除.
计数器溢出清除的方法仅在CCRP的位都被清除为0时才能生效.
CTCCLR位在PWM输出模式时未使用.
CTMDL寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WRRRRRRRRPOR00000000Bit7~0CTM计数器低字节寄存器bit7~bit0CTM10-bit计数器bit7~bit0CTMDH寄存器Bit76543210NameD9D8R/WRRPOR00Bit7~2未定义,读为"0"Bit1~0CTM计数器高字节寄存器bit1~bit0CTM10-bit计数器bit9~bit8CTMAL寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0CTMCCRA低字节寄存器bit7~bit0CTM10-bitCCRAbit7~bit0Rev.
1.
10622019-11-04CTMAH寄存器Bit76543210NameD9D8R/WR/WR/WPOR00Bit7~2未定义,读为"0"Bit1~0CTMCCRA高字节寄存器bit1~bit0CTM10-bitCCRAbit9~bit8简易型TM工作模式简易型TM有三种工作模式,即比较匹配输出模式、PWM输出模式或定时/计数器模式.
通过设置CTMC1寄存器的CTM1和CTM0位选择任意工作模式.
比较匹配输出模式要工作在此模式,CTMC1寄存器中的CTM1和CTM0位需要设置为"00".
当工作在该模式,一旦计数器使能并开始计数,有三种方法来清零,分别是:计数器溢出,比较器A比较匹配发生和比较器P比较匹配发生.
当CTCCLR位为低,有两种方法清除计数器.
一种是比较器P比较匹配发生,另一种是CCRP所有位设置为零并使得计数器溢出.
此时,比较器A和比较器P的请求标志位CTMAF和CTMPF将分别置起.
如果CTMC1寄存器的CTCCLR位设置为高,当比较器A比较匹配发生时计数器被清零.
此时,即使CCRP寄存器的值小于CCRA寄存器的值,仅CTMAF中断请求标志产生.
所以当CTCCLR为高时,不产生CTMPF中断请求标志.
如果CCRA位都清除为零,当计数器的值达到10位最大值3FFH时将溢出,但此时不会产生CTMAF中断请求标志.
正如该模式名所言,当比较匹配发生后,CTM输出脚状态改变.
当比较器A比较匹配发生后CTMAF标志产生时,CTM输出脚状态改变.
比较器P比较匹配发生时产生的CTMPF标志不影响CTM输出脚.
CTM输出脚状态改变方式由CTMC1寄存器中CTIO1和CTIO0位决定.
当比较器A比较匹配发生时,CTIO1和CTIO0位决定CTM输出脚输出高,低或翻转当前状态.
CTM输出脚初始值,在CTON位由低到高电平的变化后通过CTOC位设置.
注意,若CTIO1和CTIO0位同时为0时,引脚输出不变.
Rev.
1.
10632019-11-04CounterValue0x3FFCCRPCCRACTONCTPAUCTPOLCCRPInt.
FlagCTMPFCCRAInt.
FlagCTMAFCTMO/PPinTimeCCRP=0CCRP>0CounteroverflowCCRP>0CounterclearedbyCCRPvaluePauseResumeStopCounterRestartCTCCLR=0;CTM[1:0]=00OutputpinsettoinitialLevelLowifCTOC=0OutputTogglewithCTMAFflagNoteCTIO[1:0]=10ActiveHighOutputselectHereCTIO[1:0]=11ToggleOutputselectOutputnotaffectedbyCTMAFflag.
RemainsHighuntilresetbyCTONbitOutputPinResettoInitialvalueOutputcontrolledbyotherpin-sharedfunctionOutputInvertswhenCTPOLishigh比较匹配输出模式–CTCCLR=0注:1.
CTCCLR=0时,比较器P匹配将清除计数器2.
CTM输出引脚仅由CTMAF标志位控制3.
输出引脚通过CTON位上升沿复位为初始值Rev.
1.
10642019-11-04CounterValue0x3FFCCRPCCRACTONCTPAUCTPOLCTMO/PPinTimeCCRA=0CCRA=0CounteroverflowCCRA>0CounterclearedbyCCRAvaluePauseResumeStopCounterRestartOutputpinsettoinitialLevelLowifCTOC=0OutputTogglewithCTMAFflagNoteCTIO[1:0]=10ActiveHighOutputselectHereCTIO[1:0]=11ToggleOutputselectOutputnotaffectedbyCTMAFflag.
RemainsHighuntilresetbyCTONbitOutputPinResettoInitialvalueOutputcontrolledbyotherpin-sharedfunctionOutputInvertswhenCTPOLishighCTMPFnotgeneratedNoCTMAFflaggeneratedonCCRAoverflowOutputdoesnotchangeCTCCLR=1;CTM[1:0]=00CCRAInt.
FlagCTMAFCCRPInt.
FlagCTMPF比较匹配输出模式–CTCCLR=1注:1.
CTCCLR=1时,比较器A匹配将清除计数器2.
CTM输出引脚控制仅由CTMAF标志位控制3.
输出引脚通过CTON上升沿复位至初始值4.
当CTCCLR=1时不产生CTMPF标志位Rev.
1.
10652019-11-04定时/计数器模式要工作在此模式,CTMC1寄存器中的CTM1和CTM0位需要设置为"11".
定时/计数器模式与比较输出模式操作方式相同,并产生同样的中断请求标志.
不同的是,在定时/计数器模式下CTM输出脚未使用.
因此,比较匹配输出模式中的描述和时序图可以帮助理解此功能.
该模式中未使用的CTM输出脚可用作普通I/O脚或其它功能.
PWM输出模式要工作在此模式,CTMC1寄存器中的CTM1和CTM0位需要设置为"10".
TM的PWM功能在马达控制,加热控制,照明控制等方面十分有用.
给TM输出脚提供一个频率固定但占空比可调的信号,将产生一个有效值等于DC均方根的AC方波.
由于PWM波形的周期和占空比可控,其波形的选择就极其灵活.
在PWM输出模式中,CTCCLR位不影响PWM操作.
CCRA和CCRP寄存器决定PWM波形,一个用来清除内部计数器并控制PWM波形的频率,另一个用来控制占空比.
哪个寄存器控制频率或占空比取决于CTMC1寄存器的CTDPX位.
所以PWM波形频率和占空比由CCRA和CCRP寄存器共同决定.
当比较器A或比较器P比较匹配发生时,将产生CCRA或CCRP中断标志.
CTMC1寄存器中的CTOC位决定PWM波形的极性,CTIO1和CTIO0位使能PWM输出或将CTM输出脚置为逻辑高或逻辑低.
CTPOL位对PWM输出波形的极性取反.
10-bitCTM,PWM输出模式,边沿对齐模式,CTDPX=0CCRP1~70PeriodCCRP*1281024DutyCCRA若fSYS=8MHz,CTM时钟源选择fSYS/4,CCRP=2,CCRA=128,CTMPWM输出频率=(fSYS/4)/(2*128)=fSYS/1024=7.
812kHz,duty=128/(2*128)=50%.
若由CCRA寄存器定义的Duty值等于或大于Period值,PWM输出占空比为100%.
10-bitCTM,PWM输出模式,边沿对齐模式,CTDPX=1CCRP1~70PeriodCCRADutyCCRP*1281024PWM的输出周期由CCRA寄存器的值与CTM的时钟共同决定,PWM的占空比由CCRP寄存器的值决定.
Rev.
1.
10662019-11-04CounterValueCCRPCCRACTONCTPAUCTPOLCTMO/PPin(CTOC=1)TimeCounterclearedbyCCRPPauseResumeCounterStopifCTONbitlowCounterResetwhenCTONreturnshighPWMDutyCyclesetbyCCRAPWMresumesoperationOutputcontrolledbyotherpin-sharedfunctionOutputInvertswhenCTPOL=1PWMPeriodsetbyCCRPCTMO/PPin(CTOC=0)CCRAInt.
FlagCTMAFCCRPInt.
FlagCTMPFCTDPX=0;CTM[1:0]=10PWM输出模式–CTDPX=0注:1.
CTDPX=0,计数器由CCRP清除2.
计数器清零设置PWM周期3.
即使当CTIO[1:0]=00或01,内部PWM功能不变4.
CTCCLR位对PWM操作没有影响Rev.
1.
10672019-11-04CounterValueCCRPCCRACTONCTPAUCTPOLCCRPInt.
FlagCTMPFCCRAInt.
FlagCTMAFCTMO/PPin(CTOC=1)TimeCounterclearedbyCCRAPauseResumeCounterStopifCTONbitlowCounterResetwhenCTONreturnshighPWMDutyCyclesetbyCCRPPWMresumesoperationOutputcontrolledbyotherpin-sharedfunctionOutputInvertswhenCTPOL=1PWMPeriodsetbyCCRACTMO/PPin(CTOC=0)CTDPX=1;CTM[1:0]=10PWM输出模式–CTDPX=1注:1.
CTDPX=1,计数器由CCRA清除2.
计数器清除设置PWM周期3.
即使当CTIO[1:0]=00或01,内部PWM功能不变4.
CTCCLR位对PWM操作无影响Rev.
1.
10682019-11-04A/D转换器对于大多数电子系统而言,处理现实世界的模拟信号是共同的需求.
为了完全由单片机来处理这些信号,首先需要通过A/D转换器将模拟信号转换成数字信号.
将A/D转换器电路集成入单片机,可有效的减少外部器件,随之而来,具有降低成本和减少器件空间需求的优势.
A/D转换器简介此单片机包含一个高精度多通道的24位DeltaSigmaA/D转换器,它们可以直接接入外部模拟信号(来自传感器或其它控制信号)并直接将这些信号转换成24位的数字量.
另外,A/D转换器输入信号的放大增益由PGA增益控制、A/D转换器增益控制和A/D转换器参考电压增益控制共同确定.
设计者可以选择最佳增益组合为输入信号提供所需的放大增益.
下面的方框图说明了A/D转换器的基本操作功能.
A/D转换器输入通道由2个单端A/D转换器输入通道或1组差分输入通道组成.
在输入信号进入24位DeltaSigmaA/D转换器之前,会先通过PGA进行放大.
DeltaSigmaA/D转换调制器将1-bit转换后的数据输出到SINC滤波器,然后会转换成24-bit的数据,并将它们存储到专门的数据寄存器.
此外,单片机还提供了一个温度传感器来补偿A/D转换器由温度引起的偏差.
这种高精度和高性能的特点,使得该单片机非常适用于体重秤及相关产品.
VREFPPGAOPINISDCSET[2:0]DISINCFilterVREFPVREFNCHSP[3:0]CHSN[3:0]DI+24-bitΔΣA/DConverterPGAONVREFNPGS[2:0]VGS[1:0]AGS[1:0]fADCKADOR[2:0]FLMS[2:0]24ADRHADRMADRLADCDLEOCADCinterruptDividerfSYSADCK[4:0]fMCLKIN1IN2INXINX[1:0]AN0VTSOPADRSTAN1VTSONEMIFilterEMIFilterR1R2R3VIN/5VIN/6VINPGAA/D转换器结构内部电源该单片机包含一个LDO,用于产生稳定的电源电压,其基本功能操作如下图所示.
内部的LDO电路为PGA、A/D转换器或外部器件提供了一个固定电压.
LDO可提供2.
4V、2.
6V、2.
9V或3.
3V四个输出电压,通过PWRC寄存器中的LDOVS1~LDOVS0位选择.
LDO功能可由LDOEN位控制,可将其关闭以降低功耗.
Rev.
1.
10692019-11-04VINLDOEN2.
4V2.
6V2.
9V3.
3VLDOVS[1:0]LDOBPSVOREG(SupplyvoltageforADC&PGA)LDOBandgapADOFF1.
25V内部电源方框图控制位输出电压ADOFFLDOENBandgapVOREG10O除能11On使能00On除能01On使能电源控制表PWRC寄存器Bit76543210NameLDOEN————LDOBPSLDOVS1LDOVS0R/WR/W————R/WR/WR/WPOR0————000Bit7LDOEN:LDO功能控制位0:除能1:使能如果LDO除能,将不产生功耗,LDO会由一个内部弱下拉电阻固定在低电平.
Bit6~3未定义,读为"0"Bit2LDOBPS:LDO旁路功能控制位0:除能1:使能Bit1~0LDOVS1~LDOVS0:LDO输出电压选择位00:2.
4V01:2.
6V10:2.
9V11:3.
3VA/D转换器数据传输率的定义DeltaSigmaA/D转换器的数据传输率可以通过下面的公式计算:数据传输率=CHOP*OSRfADCK=CHOP*OSRfMCLK/N=N*CHOP*OSRfMCLKfADCK:A/D转换器时钟输入,来自fMCLK/N;Rev.
1.
10702019-11-04fMCLK:A/D转换器时钟源,来自fSYS或fSYS/2/(ADCK[4:0]+1),通过ADCK[4:0]位选择和设置;N:除数因子,可为12或30,通过FLMS[2:0]位选择;CHOP:采样数据量加倍功能控制位,可以为1或2,通过FLMS[2:0]位选择;OSR:过采样率,通过ADOR[2:0]位选择.
例如,若需要一个8Hz的数据传输率,可以选择A/D时钟源fMCLK为4MHz,然后设置FLMS[2:0]=000B,即获得A/D转换时钟为A/D时钟源的30分频且CHOP=2,最后设置ADOR[2:0]=001B,选择过采样率为8192.
因此,可以得到一个数据传输率=4MHz/(30*2*8192)=8Hz.
需注意的是当数据传输率为10Hz,A/D转换器对于频率为50Hz或60Hz交流电源有陷波抑制功能.
A/D转换器寄存器介绍A/D转换器的所有工作由一系列寄存器控制.
3个只读寄存器用来存放24位A/D转换数据的值.
一个控制寄存器PWRC用于控制PGA和A/D转换器偏压及电源相关设置可参考"内部电源"章节介绍.
剩下的寄存器用于设置增益及A/D转换器的功能控制.
寄存器名称位76543210PWRCLDOEN————LDOBPSLDOVS1LDOVS0PGAC0—VGS1VGS0AGS1AGS0PGS2PGS1PGS0PGAC1—INISINX1INX0DCSET2DCSET1DCSET0—PGACSCHSN3CHSN2CHSN1CHSN0CHSP3CHSP2CHSP1CHSP0ADRLD7D6D5D4D3D2D1D0ADRMD15D14D13D12D11D10D9D8ADRHD23D22D21D20D19D18D17D16ADCR0ADRSTADSLPADOFFADOR2ADOR1ADOR0——ADCR1FLMS2FLMS1FLMS0——ADCDLEOC—ADCS———ADCK4ADCK3ADCK2ADCK1ADCK0A/D转换器寄存器列表可编程增益放大器寄存器–PGAC0,PGAC1,PGACS有三个与可编程增益相关的控制寄存器,PGAC0、PGAC1和PGACS.
PGAC0寄存器用于选择PGA增益、A/D转换器增益和A/D转换器参考电压增益.
PGAC1寄存器用于定义输入端连接和差分输入偏置电压调整控制.
PGACS寄存器用于选择PGA的输入端信号.
因此,必须通过CHSP3~CHSP0和CHSN3~CHSN0位来选择模拟输入通道、温度检测输入或内部电源中的哪些被连接到内部差分A/D转换器.
Rev.
1.
10712019-11-04PGAC0寄存器Bit76543210Name—VGS1VGS0AGS1AGS0PGS2PGS1PGS0R/W—R/WR/WR/WR/WR/WR/WR/WPOR—0000000Bit7未定义,读为"0"Bit6~5VGS1~VGS0:VREFP/VREFN差分参考电压增益选择位00:VREFGN=101:VREFGN=1/210:VREFGN=1/411:保留位Bit4~3AGS1~AGS0:A/D转换器PGAOP/PGAON差分输入信号增益选择位00:ADGN=101:ADGN=210:ADGN=411:保留位Bit2~0PGS2~PGS0:PGADI+/DI-差分通道输入增益选择位000:PGAGN=1001:PGAGN=2010:PGAGN=4011:PGAGN=8100:PGAGN=16101:PGAGN=32110:PGAGN=64111:PGAGN=128PGAC1寄存器Bit76543210Name—INISINX1INX0DCSET2DCSET1DCSET0—R/W—R/WR/WR/WR/WR/WR/W—POR—000000—Bit7未定义,读为"0"Bit6INIS:选择输入端IN1和IN2内部连接控制位0:不连接1:连接Bit5~4INX1~INX0:选择输入端IN1/IN2以及PGA差分输入端DI+/DI-连接控制位IN2IN1DI+DI-IN2IN1DI+DI-IN2IN1DI+DI-IN2IN1DI+DI-INX[1,0]=00INX[1,0]=01INX[1,0]=10INX[1,0]=11Bit3~1DCSET2~DCSET0:差分输入信号PGAOP/PGAON偏置选择位000:DCSET=+0V001:DCSET=+0.
25*ΔVR_I010:DCSET=+0.
5*ΔVR_I011:DCSET=+0.
75*ΔVR_I100:DCSET=+0V101:DCSET=-0.
25*ΔVR_IRev.
1.
10722019-11-04110:DCSET=-0.
5*ΔVR_I111:DCSET=-0.
75*ΔVR_IΔVR_I为差分参考电压,可在输入信号的基础上选择一定的增益放大.
Bit0未定义,读为"0"PGACS寄存器Bit76543210NameCHSN3CHSN2CHSN1CHSN0CHSP3CHSP2CHSP1CHSP0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~4CHSN3~CHSN0:反相输入端IN2输入信号选择位0000:AN10110:VIN/60111:温度传感器输出–VTSON其它值:保留位这些位用于选择反相端IN2输入信号.
为便于操作更合理,若选择VTSON信号作为反相端输入,建议选择VTSOP信号为正相端输入.
Bit3~0CHSP3~CHSP0:正相输入端IN1输入信号选择位0000:AN00110:VIN/50111:温度传感器输出–VTSOP其它值:保留位这些位用于选择正相端IN1输入信号.
为便于操作更合理,若选择VTSOP信号作为正相端输入,建议选择VTSON信号为反相端输入.
A/D转换器数据寄存器–ADRL,ADRM,ADRH对于具有24位DeltaSigmaA/D转换器的单片机,需要3个数据寄存器存放转换结果,一个高字节寄存器ADRH、一个中间字节寄存器ADRM和一个低字节寄存器ADRL.
在A/D转换完毕后,单片机可以直接读取这些寄存器以获得转换结果.
D0~D23是A/D换转数据结果位.
ADRL寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WRRRRRRRRPORxxxxxxxx"x":未知Bit7~0A/D转换数据寄存器bit7~bit0ADRM寄存器Bit76543210NameD15D14D13D12D11D10D9D8R/WRRRRRRRRPORxxxxxxxx"x":未知Bit7~0A/D转换数据寄存器bit15~bit8Rev.
1.
10732019-11-04ADRH寄存器Bit76543210NameD23D22D21D20D19D18D17D16R/WRRRRRRRRPORxxxxxxxx"x":未知Bit7~0A/D转换数据寄存器bit23~bit16A/D转换器控制寄存器–ADCR0,ADCR1,ADCS寄存器ADCR0、ADCR1和ADCS用来控制A/D转换器的功能和操作.
这些8位的寄存器定义包括选择A/D转换器时钟源,A/D转换过采样数据传输率,并控制和监视A/D转换器的开始和转换结束状态等.
ADCR0寄存器Bit76543210NameADRSTADSLPADOFFADOR2ADOR1ADOR0——R/WR/WR/WR/WR/WR/WR/W——POR001000——Bit7ADRST:A/D转换器软件复位控制位0:除能1:使能此位可用来复位A/D转换器内部数字SINC滤波器.
此位为低,A/D转换正常工作,若将此位从低设为高,将复位内部数字SINC滤波器同时当前A/D转换的数据失效.
再清零此位,将开始一次新的A/D转换.
Bit6ADSLP:A/D转换器休眠模式控制位0:正常模式1:休眠模式此位用于控制当通过设置ADOFF位为低开启A/D转换器后,A/D转换器是否进入休眠模式.
当A/D转换器开启后且此位为低时,A/D转换器正常工作,反之若开启后此位为高则进入休眠模式.
在休眠模式下,除PGA和内部Bandgap电路外的其它A/D转换电路都将关闭以减少整体功耗.
Bit5ADOFF:A/D转换器模块电源开/关控制位0:A/D转换器模块电源开1:A/D转换器模块电源关此位控制A/D内部功能的电源.
该位被清零将使能A/D转换器.
如果该位设为高将关闭A/D转换器以降低功耗.
由于A/D转换器在不执行转换动作时都会产生一定的功耗,所以这在电源敏感的电池应用中需要多加注意.
建议在进入空闲/休眠模式前,设置ADOFF=1以减少功耗.
无论ADSLP和ADRST位如何设置,ADOFF=1将关闭A/D转换器模块的电源.
Bit4~2ADOR2~ADOR0:A/D转换器过采样率(OSR)选择位000:OSR=16384001:OSR=8192010:OSR=4096011:OSR=2048100:OSR=1024101:OSR=512110:OSR=256111:OSR=128Bit1~0未定义,读为"0"Rev.
1.
10742019-11-04ADCR1寄存器Bit76543210NameFLMS2FLMS1FLMS0——ADCDLEOC—R/WR/WR/WR/W——R/WR/W—POR000——00—Bit7~5FLMS2~FLMS0:A/D转换器时钟(fADCK)分频比选择及采样数据加倍功能(CHOP)控制位000:CHOP=2,fADCK=fMCLK/30010:CHOP=2,fADCK=fMCLK/12100:CHOP=1,fADCK=fMCLK/30110:CHOP=1,fADCK=fMCLK/12其它值:保留位若CHOP=2,为正常转换模式,采样数据量加倍.
若CHOP=1,则可视为低延迟转换模式,采样数据加倍功能关闭.
Bit4~3未定义,读为"0"Bit2ADCDL:A/D转换器数据锁存功能控制位0:除能数据锁存功能1:使能数据锁存功能如果使能A/D转换数据锁存功能,最新转换的数据将被锁存,且不会更新后面的转换结果直到该功能被除能.
虽然转换后的数据被锁存到数据寄存器,A/D转换电路仍正常运行,但并不产生中断,EOC也不改变.
建议在读取ADRL、ADRM和ADRH寄存器中的转换数据之前先将该位置高.
读取后该位会被清零以除能A/D数据锁存功能,以便下一笔转换结果的存储.
这样可以防止在A/D转换过程中得到不需要的数据.
Bit1EOC:A/D转换结束标志0:A/D转换中1:A/D转换结束此位必须通过软件清除.
Bit0未定义,读为"0"ADCS寄存器Bit76543210Name———ADCK4ADCK3ADCK2ADCK1ADCK0R/W———R/WR/WR/WR/WR/WPOR———00000Bit7~5未定义,读为"0"Bit4~0ADCK4~ADCK0:A/D转换器时钟源(fMCLK)选择00000~11110:fMCLK=fSYS/2/(ADCK[4:0]+1)11111:fMCLK=fSYSA/D转换器操作该A/D转换器提供了四种工作模式,正常模式、暂停模式、休眠模式和复位模式,分别由ADCR0寄存器中的ADOFF、ADSLP和ADRST位控制.
下表列出了工作模式的选择.
Rev.
1.
10752019-11-04控制位工作模式说明LDOENADOFFADSLPADRST01xx暂停模式Bandgapo,LDOo,PGAo,ADCo,温度传感器o,SINC滤波器off11xx暂停模式Bandgapon,LDOon,PGAo,ADCo,温度传感器o,SINC滤波器off001x休眠模式(外部电压接到LDO输出引脚)Bandgapon,LDOo,PGAon,ADCo,温度传感器o,SINC滤波器on0000正常模式(外部电压接到LDO输出引脚)Bandgapon,LDOo,PGAon,ADCon,温度传感器on/o(1),SINC滤波器on0001复位模式(外部电压接到LDO输出引脚)Bandgapon,LDOo,PGAon,ADCon,温度传感器on/o(1),SINC滤波器复位101x休眠模式Bandgapon,LDOon,PGAon,ADCo,温度传感器o,SINC滤波器on1000正常模式Bandgapon,LDOon,PGAon,ADCon,温度传感器on/o(1),SINC滤波器on1001复位模式Bandgapon,LDOon,PGAon,ADCon,温度传感器on/o(1),SINC滤波器复位注:1.
可以通过设置CHSN[3:0]或CHSP[3:0]位控制温度传感器on/o.
2.
"x"为未知.
A/D工作模式选择要打开A/D转换器,首先应清零ADOFF和ADSLP位除能A/D转换器的暂停和休眠模式,以确保A/D转换器可以通电.
ADCR0寄存器中的ADRST位,用于上电后打开和复位A/D转换器.
当单片机设定此位从逻辑低到逻辑高,然后再到逻辑低,一个模数转换后的数据就会开始在SINC滤波器中进行转换.
设置完成后,A/D转换器可以开始工作.
这三位用于控制内部模数转换器的开启动作.
ADCR1寄存器中的EOC位用于表明模数转换过程的完成.
在转换周期结束后,EOC位会被单片机自动地置为"1".
此外,也会置位中断控制寄存器内相应的A/D中断请求标志位,如果中断使能,就会产生对应的内部中断信号.
A/D内部中断信号将引导程序到相应的A/D内部中断入口.
如果A/D内部中断被禁止,Rev.
1.
10762019-11-04可以让单片机轮询ADCR0寄存器中的EOC位,检查此位是否被置高,以作为另一种侦测A/D转换周期结束的方法.
A/D转换数据将不断更新,如果A/D转换数据锁存功能使能,最新的转换数据会被锁存,这样后面再转换的数据不会被保存,直到该功能被关闭.
A/D转换器的时钟源通常固定在4MHz,来自系统时钟fSYS或其分频,分频系数由ADCS寄存器中的ADCK4~ADCK0位决定,以获得固定4MHz的A/D转换器时钟源.
A/D转换器差分参考电压可来自外部参考源引脚VREFP和VREFN.
A/D转换步骤下面概述实现A/D转换过程的各个步骤.
步骤1使能LDO,以提供电源给PGA和ADC.
步骤2通过PGAC0寄存器,选择PGA、ADC和参考电压的增益.
步骤3通过PGAC1寄存器,选择PGA的输入引脚连接.
步骤4通过ADCS寄存器中的ADCK4~ADCK0位,选择所需的A/D转换时钟.
步骤5通过ADCR0寄存器中的ADOR2~ADOR0位及ADCR1寄存器中的FLMS2~FLMS0位,选择过采样数据传输率.
步骤6通过PGACS寄存器中的CHSP3~CHSP0和CHSN3~CHSN0位,选择连接至内部PGA的通道.
步骤7通过ADCR0寄存器中的ADOFF和ADSLP位,关闭暂停和休眠模式.
步骤8通过置高ADCR0寄存器中的ADRST位来复位A/D转换器,清除该位来释放复位状态.
步骤9如果要使用A/D转换器中断,则相关的中断控制寄存器需要正确地设置,以确保A/D转换中断功能是激活的.
总中断控制位EMI需要置位为"1",以及A/D转换器中断位ADE也需要置位为"1".
步骤10可以轮询ADCR1寄存器中的EOC位,检查模数转换过程是否完成.
当此位成为逻辑高时,表示转换过程已经完成.
转换完成后,可读取A/D数据寄存器ADRL、ADRM和ADRH获得转换后的值.
另一种方法是,若A/D转换器中断和总中断使能且堆栈未满,则程序等待A/D转换器中断发生.
注:若使用轮询ADCR1寄存器中EOC位的状态的方法来检查转换过程是否结束时,则中断使能的步骤可以省略.
Rev.
1.
10772019-11-04编程注意事项在编程时,如果A/D转换器未使用,通过设置ADCR0寄存器中的ADOFF为高,关闭A/D内部电路以减少电源功耗.
此时,不考虑输入脚的模拟电压,内部A/D转换器电路不产生功耗.
A/D转换器传输功能该单片机含有一组24位的DeltaSigmaA/D转换器,它的转换范围为-8388608~8388607(十进制).
转换后的数据以二进制补码的形式表示,最高位是转换数据的符号位.
由于模拟输入最大值差分参考输入电压放大后的电压值ΔVR_I,因此每一位可表示ΔVR_I/8388608的模拟输入值.
1LSB=ΔVR_I/8388608通过下面的等式可估算A/D转换器输入电压值:ΔSI_I=(PGAGN*ADGN*ΔDI±)+DCSETΔVR_I=VREFGN*ΔVR±A/D转换数据=(ΔSI_I/ΔVR_I)*K其中,K=223注:1.
PGAGN、ADGN和VREFGN的值由PGS[2:0]、AGS[1:0]、VGS[1:0]控制位决定.
2.
ΔSI_I:经过放大和偏置校准后的差分输入信号3.
PGAGN:PGA增益4.
ADGN:A/D转换器增益5.
VREFGN:参考电压增益6.
ΔDI±:差分输入信号,来自外部通道或内部信号7.
DCSET:偏置电压8.
ΔVR±:差分参考电压9.
ΔVR_I:放大后的差分参考输入电压由于DeltaSigmaA/D转换器的数字系统设计,其转换的最大值为8388607,最小值为-8388608,因此有一个中间值0.
A/D转换数据公式说明了转换值的变化范围.
A/D转换数据(二进制补码,十六进制值)十进制值0x7FFFFF83886070x800000-8388608上面的A/D转换数据表说明了A/D转换值的范围.
下图显示直流输入电压值和A/D转换数据(以二进制补码形式表示)之间的关系.
Rev.
1.
10782019-11-0424DigitaloutputTwo'scomplementDCinputvalue0111111111111111111111111000000000000000000000000(DI+-DI-)*PGAGN*ADGN+DCSET(VREFP-VREFN)*VREFGNA/D转换数据A/D转换数据与输入电压和PGA的设置有关.
A/D转换输出数据以二进制补码的形式表示,代码的长度为24位,最高位为符号位.
最高位"0"表示输出为正数,最高位"1"表示输出为负数.
最大值是8388607,最小值是-8388608.
如果输入信号大于最大值,转换后的数据最大不超过8388607;如果输入信号小于最小值,转换后的数据最小不低于-8388608.
A/D转换数据转为电压值设计者可以通过下面的公式来由转换后的数据推导电压值.
如果MSB=0(转换数据为正数):输入电压=(转换数据*LSB-DCSET)/(PGAGN*ADGN)如果MSB=1(转换数据为负数):输入电压=(转换数据的补码*LSB-DCSET)/(PGAGN*ADGN)注:补码=反码+1温度传感器该单片机提供了一个内部温度传感器以完善其性能.
PGA输入通道通过选择连接到VTSOP或VTSON,A/D转换器可以获得温度信息,设计者可以对A/D转换数据做一些调整.
下图说明了温度传感器的功能操作.
AVSSIVOREGADCVTSOPVTSONPGA温度传感器结构Rev.
1.
10792019-11-04A/D转换应用范例范例:使用查询EOC的方式来检测转换结束#includeBH67f5235.
incdata.
section'data'adc_result_data_ldbadc_result_data_mdbadc_result_data_hdbcode.
section'code'start:clrADE;disableADCinterruptmova,083H;PowercontrolforPGA,ADCmovPWRC,a;PWRC=10000011,LDOenable,LDOBypassdisable,LDOoutputvoltage:3.
3Vmova,000HmovPGAC0,a;PGAgain=1,ADCgain=1,VREFgain=1mova,000HmovPGAC1,a;INIS,INX,DCSETindefaultvalueclrADOR2;for10Hzoutputdatarate,ADOR[2:0]=001,FLMS[2:0]=000clrADOR1setADOR0clrFLMS2clrFLMS1clrFLMS0clrADOFF;ADCexitpowerdownmode.
setADRST;ADCinresetmodeclrADRST;ADCinconversion(continuousmode)clrEOC;Clear"EOC"flagloop:snzEOC;Polling"EOC"flagjmploop;Waitforreaddataclradc_result_data_hclradc_result_data_mclradc_result_data_lsetADCDL;enabledatalatchmova,ADRLmovadc_result_data_l,a;GetLowbyteADCvaluemova,ADRMmovadc_result_data_m,a;GetMiddlebyteADCvaluemova,ADRHmovadc_result_data_h,a;GetHighbyteADCvalueget_adc_value_ok:clrADCDL;disabledatalatchclrEOC;Clearingreadflagjmploop;fornextdatareadendRev.
1.
10802019-11-04LCD驱动对于设计中带有LCD功能的大批量应用,选择定制而非较昂贵的基于字符的显示方式可以有效地降低成本.
然而,驱动此类定制的显示器需要振幅及时间可变的COM和SEG信号,且需很多特殊的考虑以正确地操作LCD.
该单片机有内部LCD信号产生电路,可以自动地产生时间与振幅可变的信号直接驱动LCD,与用户LCD的接口连接也相当容易.
驱动数目占空比偏压电平偏压类型波形类型16*41/41/3RA或BLCD显示数据存储器数据存储器中有一部分区域是专门为LCD的显示数据而保留,即LCD显示数据存储器.
单片机内部显示驱动电路会自动读取任何写入此处的数据并据此产生LCD驱动信号.
因此任何写入LCD存储器的数据,会立即映射到连接单片机的LCD显示器上.
LCD数据存储区域位于独立的Bank4.
要用到的数据存储器Bank通过使用特殊的功能寄存器BP指定.
当要存取LCD存储器时,首先要将BP寄存器的值设为"04H"来选择对Bank4操作.
此后,用户可以通过存储器指针MP1使用间接寻址方式来对存储区进行操作.
选择了Bank4之后,使用MP1可以对地址范围"00H"开始的存储器操作,就可以直接对显示存储区进行读或者写的操作了.
下方的LCD存储器映射图显示了内部LCD存储如何映射到单片机显示的SEG和COM引脚.
COM2COM1COM0COM3SEG0SEG101H00Hb0b1b2b30EHSEG14:Unusedbit,readas00FHSEG15b4b5b6b7LCD存储器映射图LCD时钟源LCD时钟是由内部时钟源fSUB通过内部分频电路进行8分频获得,其中,fSUB的时钟源来自内部LIRC振荡器.
该方法可产生理想的4kHz频率的LCD时钟,以获得更好的LCD显示效果.
LCD寄存器LCD控制寄存器LCDC与LCDCP位于数据存储器,用于设置LCD驱动器的各种特性.
LCDC寄存器中的位用于控制LCD波形类型,偏置电流选择以及整个LCD的Rev.
1.
10812019-11-04使能/除能控制.
控制LCD使能/除能功能的LCDEN位仅在单片机工作在快速模式,低速模式或空闲模式时有效.
若单片机处于休眠模式,则显示器将始终除能.
LCDC寄存器中的TYPE位用于选择A型或B型的LCD波形信号.
LCDCP寄存器中的LCDPR位用于选择PLCD或内部充电泵稳压器来提供电源给R型LCDCOM和SEG引脚.
CPVS1~CPVS0位用于选择一个合适的充电泵稳压器输出电压电平给R型LCD.
寄存器名称位76543210LCDCTYPE————LCDIS1LCDIS0LCDENLCDCP————LCDPR—CPVS1CPVS0LCD寄存器列表LCDC寄存器Bit76543210NameTYPE————LCDIS1LCDIS0LCDENR/WR/W————R/WR/WR/WPOR0————000Bit7TYPE:LCD波形类型选择0:A型1:B型Bit6~3未定义,读为"0"Bit2~1LCDIS1~LCDIS0:R型LCD偏压电流选择(VA=VPLCD=VDD,1/3bias)00:25μA01:50μA10:100μA11:200μABit0LCDEN:LCD使能控制0:除能1:使能在快速、低速和空闲模式下,LCD使能/除能可由此位控制.
在休眠模式下,LCD始终关闭.
LCDCP寄存器Bit76543210Name————LCDPR—CPVS1CPVS0R/W————R/W—R/WR/WPOR————0—00Bit7~4未定义,读为"0"Bit3LCDPR:R型LCD电源选择0:PLCD引脚1:内部充电泵当此位为0,R型LCD电源来自PLCD引脚,其内部充电泵除能.
Bit2未定义,读为"0"Bit1~0CPVS1~CPVS0:R型内部充电泵输出电压选择00:3.
3V01:3.
0V10:2.
7V11:4.
5VRev.
1.
10822019-11-04LCD充电泵通过LCDCP寄存器中的LCDPR位可以选择COM和SEG引脚电源来自PLCD引脚输入或内部充电泵稳压器输出.
若设置LCDPR位为低,将选择PLCD引脚为LCD驱动器提供电压源.
VMAX引脚未引出,且内部连接至PLCD引脚,因此单片机电压源VDD应等于或小于PLCD引脚输入的电压值.
若设置LCDPR位为高,将选择内部充电泵提供LCD电压源.
内部充电泵可提供四种电压输出,通过LCDCP寄存器中的CPVS[1:0]位选择.
若选择内部充电泵提供LCD电压源,建议在外部PLCD引脚上连接4.
7μF的电容,确保稳定的输出电压.
ChargePumpLCDCOM/SEGPLCDSEGsCOMsVDDCPVS[1:0]LCDPRLCDENPLCD注:1.
当LCDPR位为高时,应该在PLCD引脚上连接4.
7μF的外部电容;当LCDPR位为低时,可移除电容.
2.
只有当LCDEN和LCDPR位都为高时,内部电荷泵才能使能.
LCD内部充电泵电路LCDENLCDPRCPVS[1:0]LCD供电电源0xxxLCD驱动器关闭10xx来自PLCD引脚1100充电泵电路输出,3.
3V01充电泵电路输出,3.
0V10充电泵电路输出,2.
7V11充电泵电路输出,4.
5VLCD驱动供电电源LCD电压源和偏压对于R型1/3偏压的结构,要用到VSS、VA、VB和VC四种电压值.
LCD电压源可通过LCDCP寄存器中的LCDPR位选择来自PLCD引脚或内部充电泵稳压器,以产生内部偏压电压VA.
VB等于VA*2/3,VC等于VA*1/3.
Rev.
1.
10832019-11-04VAVC=1/3*VAVB=2/3*VARRRLCDEN注:当R型LCD除能时,其直流路径将被关闭.
R型偏压产生示意图LCD复位状态LCD具有内部复位功能,通过对LCDC寄存器中LCDEN位状态的反码与休眠功能执行或运算确定.
清零LCDEN位将复位LCD功能.
当单片机进入休眠模式,即使LCDEN位被置位以使能LCD驱动功能,LCD仍将被复位.
当LCDEN被置位以使能LCD驱动功能,若此时发生单片机复位,则LCD将被复位,复位期间COM与SEG输出将处于浮空状态.
复位操作将持续一个tRSTD+tSST时间.
tRSTD+tSST的详细信息参考系统上电时间特性表.
MCU复位休眠模式LCDENLCD复位COM&SEG电平NoO1No正常工作NoO0Yes低电平NoOnxYes低电平YesxxYes浮空"x":无关注:这里所说的MCU复位情况不包含WDT在空闲或休眠模式时的溢出复位.
LCD复位状态LCD驱动输出LCD驱动的输出结构为16*4.
LCD驱动类型为R型,且偏压值固定为1/3.
由于LCD基本性质的缘故,它们的像素点只能加上AC电压,如果加上DC电压,将会引起永久性的损害.
因此LCD显示器的对比度由提供到每个像素的实际RMS电压控制,这个值等于COM引脚上的电压值减去SEG引脚上电压值的结果的RMS值.
RMS电压必须大于LCD的饱和电压,以便能打开像素点,但同时也要小于阈值电压,以便能关闭像素点.
因为要将DC电压限制为0且以最少的连接数来控制尽可能多的像素点,因此需要产生时间振幅可变的信号供给LCD使用.
这些时间与振幅都可变的信号由单片机内的LCD驱动电路自动产生.
占空比决定使用COM口的个数,也称为底板或COM.
例如,占空比为1/4,表示COM的数目为4,因此该值定义了每个LCD信号帧内的时间片数.
单片机提供两种类型的信号即A型和B型,通过寄存器LCDC0中的TYPE位加以选择.
B型提供较低频率的信号,然而,较低的频率可能引起闪烁,从而影响显示的清晰度.
Rev.
1.
10842019-11-04R型,4COM,1/3BiasLCDDisplayOffModeCOM0~COM3VAAllsegmentoutputsNormalOperationModeCOM0COM1COM2COM3AllsegmentsareOFFCOM0sidesegmentsareONAllsegmentsareON(othercombinationsareomitted)VBVCVSS1FrameCOM1sidesegmentsareONCOM2sidesegmentsareONCOM3sidesegmentsareONCOM0,1sidesegmentsareONCOM0,2sidesegmentsareONCOM0,3sidesegmentsareONVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSLCD驱动输出–A型,1/4Duty,1/3BiasRev.
1.
10852019-11-04LCDDisplayOffModeCOM0~COM3VAAllsegmentoutputsNormalOperationModeCOM0COM1COM2COM3AllsegmentsareOFFCOM0sidesegmentsareONAllsegmentsareON(othercombinationsareomitted)VBVCVSS1FrameCOM1sidesegmentsareONCOM2sidesegmentsareONCOM3sidesegmentsareONCOM0,1sidesegmentsareONCOM0,2sidesegmentsareONCOM0,3sidesegmentsareONVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSVAVBVCVSSLCD驱动输出–B型,1/4Duty,1/3BiasRev.
1.
10862019-11-04编程注意事项LCD编程时要注意几点,其中之一就是在单片机上电后,要保证LCD存储器正确地初始化.
与通用数据存储器一样,在上电后,LCD存储器的内容是未知的.
由于LCD存储器的内容会映射到实际的LCD,所以在上电后,为获得正确的显示图形,初始化此存储器内容是非常重要的.
在实际应用中,必须要考虑LCD的实际容性负载.
对于单片机来说,LCD的像素点一般可以看作电容性的负载,要确保所连接的像素点不能过多.
这点对可以连接多个LCD像素点的COM口来说尤为重要.
接下来的流程图描述LCD的等效电路.
另外还有一个要注意的就是当单片机进入空闲模式或休眠模式后所发生的变化.
LCDC控制寄存器中的LCD使能控制位LCDEN会清零以降低功耗.
当此位被清零,就会停止产生显示的驱动信号,并处于一种低功耗的空白显示的状态.
要注意当上电复位后,LCDEN位会被清零,显示功能关闭.
SEG0SEG1SEG2SEGnCOM0COM1COM2COMnLCD面板等效电路Rev.
1.
10872019-11-04触控按键功能该单片机提供2个触控按键功能.
该触控按键功能完全内部集成不需外接元件,通过内部寄存器对其进行简单的操作.
触控按键结构触控按键引脚与I/O引脚PA1和PA3共用.
通过对应的引脚共用功能控制寄存器的位来选择此功能.
按键被分成一个组,称为模块0,M0.
该模块为独立的一组包含两个触控按键且每个模块有各自的振荡器.
该模块具有单独的控制逻辑电路和配套的寄存器系列.
按键总数触控按键共用I/O引脚2KEY1,KEY2PA1,PA3触控按键结构触控按键寄存器说明触控按键模块0包含2个触控按键功能,且都有其配套的寄存器.
以下表格显示了触控按键模块0的寄存器系列.
寄存器名称说明TKTMR触控按键8-bit时隙计数器预载寄存器TKC0计数器On/O,清除控制/参考时钟控制/起始位TK16DL触控按键功能16-bit计数器低字节TK16DH触控按键功能16-bit计数器高字节TKC1触控按键振荡器频率选择TKM016DL触控按键模块0的16-bitC/F计数器低字节TKM016DH触控按键模块0的16-bitC/F计数器高字节TKM0ROL触控按键模块0参考振荡器电容选择低字节TKM0ROH触控按键模块0参考振荡器电容选择高字节TKM0C0触控按键模块0控制寄存器0–按键选择TKM0C1触控按键模块0控制寄存器1–按键振荡器控制/参考振荡器控制/触控按键控制触控按键功能寄存器定义寄存器名称位76543210TKTMRD7D6D5D4D3D2D1D0TKC0—TKRCOVTKSTTKCFOVTK16OV—TK16S1TK16S0TKC1TKFS1TKFS0TK16DLD7D6D5D4D3D2D1D0TK16DHD15D14D13D12D11D10D9D8TKM0C0M0MXS1M0MXS0M0DFENM0FILENM0SOFCM0SOF2M0SOF1M0SOF0TKM0C1M0TSS—M0ROENM0KOEN——M0K2ENM0K1ENTKM016DLD7D6D5D4D3D2D1D0TKM016DHD15D14D13D12D11D10D9D8TKM0ROLD7D6D5D4D3D2D1D0TKM0ROHD9D8触控按键功能寄存器列表Rev.
1.
10882019-11-04TKTMR寄存器Bit76543210NameD7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~0D7~D0:触控按键8-bit时隙计数器预载寄存器触控按键时隙计数器预载寄存器用于确定触控按键时隙溢出时间.
时隙单元周期为32个时隙时钟周期,通过一个5-bit计数器获得.
因此,时隙计数器溢出时间可由下面的等式算出.
时隙计数器溢出时间=(256-TKTMR[7:0])*32tTSC,此处的tTSC为时隙计数器时钟周期.
TKC0寄存器Bit76543210Name—TKRCOVTKSTTKCFOVTK16OV—TK16S1TK16S0R/W—R/WR/WR/WR/W—R/WR/WPOR—0000—00Bit7未定义,读为"0"Bit6TKRCOV:触控按键时隙计数器溢出标志位0:无溢出1:溢出此位可通过应用程序读/写.
当触控按键时隙计数器溢出将此位置为"1"时,相应的触控按键中断请求标志位也会同时置位.
然而若是通过应用程序将此位设置为"1"时,相应的触控按键中断请求标志位不会受到影响.
因此,该位不能通过应用程序置位,但必须通过应用程序清零.
如果时隙计数器溢出,TKRCOV位及触控按键中断请求标志位TKMF将被置位同时所有模块按键振荡器和参考振荡器自动停止.
触控按键模块0的16位C/F计数器、触控按键功能16位计数器、5位时隙单位周期计数器和8位时隙定时计数器也都会自动关闭.
Bit5TKST:触控按键检测开启控制位0:检测停止或无操作0→1:启动检测当该位为"0"时,触控按键模块0的16位C/F计数器、触控按键功能16位计数器和5位时隙单位周期计数器会自动清零但8位可编程时隙定时计数器不会被清零.
当该位由0→1时,触控按键模块0的16位C/F计数器、触控按键功能16位计数器、5位时隙单位周期计数器和8位时隙定时计数器都会自动开启,并使能按键振荡器和参考振荡器以驱动相应的计数器.
Bit4TKCFOV:触控按键模块0的16位C/F计数器溢出标志位0:无溢出1:溢出该位由触控按键模块0的16位C/F计数器溢出置位,必须通过应用程序清零.
Bit3TK16OV:触控按键功能16位计数器溢出标志位0:无溢出1:溢出该位由触控按键功能16位计数器溢出置位,必须通过应用程序清零.
Bit2未定义,读为"0"Bit1~0TK16S1~TK16S0:触控按键功能16-bit计数器时钟源选择位00:fSYS01:fSYS/210:fSYS/411:fSYS/8Rev.
1.
10892019-11-04TKC1寄存器Bit76543210NameTKFS1TKFS0R/WR/WR/WPOR11Bit7~2未定义,读为"0"Bit1~0TKFS1~TKFS0:触控按键振荡器频率选择位00:1MHz01:3MHz10:7MHz11:11MHzTK16DH/TK16DL–触控按键功能的16-bit计数器寄存器对寄存器TK16DHTK16DLBit7654321076543210NameD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0R/WRRRRRRRRRRRRRRRRPOR0000000000000000该寄存器对用于存储触控按键功能16-bit计数器值.
该16-bit计数器用于校准参考振荡器或按键振荡器频率.
如果触控按键时隙计数器溢出,此16-bit计数器将停止,但不会改变当前值.
当TKST位为"0"时,该寄存器对被清零.
TKM016DH/TKM016DL–触控按键模块0的16-bitC/F计数器寄存器对寄存器TKM016DHTKM016DLBit7654321076543210NameD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0R/WRRRRRRRRRRRRRRRRPOR0000000000000000该寄存器对用于存储触控按键模块0的16-bitC/F计数器值.
如果触控按键时隙计数器溢出,该16-bitC/F计数器将停止,但不会改变当前值.
当TKST位为"0"时,该寄存器对被清零.
TKM0ROH/TKM0ROL–触控按键模块0的参考振荡器内部电容选择寄存器对寄存器TKM0ROHTKM0ROLBit7654321076543210NameD9D8D7D6D5D4D3D2D1D0R/WR/WR/WR/WR/WR/WR/WR/WR/WR/WR/WPOR0000000000该寄存器对用于存储触控按键模块0的参考振荡器电容值.
参考振荡器内接电容值=(TKM0RO[9:0]*50pF)/1024Rev.
1.
10902019-11-04TKM0C0寄存器Bit76543210NameM0MXS1M0MXS0M0DFENM0FILENM0SOFCM0SOF2M0SOF1M0SOF0R/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7~6M0MXS1~M0MXS0:触控按键模块0多路复用按键选择00:KEY101:KEY210:保留位11:保留位Bit5M0DFEN:触控按键模块0倍频功能控制位0:除能1:使能此位用于控制触控按键振荡器频率的倍频功能.
当此位置"1",按键振荡器频率将为原来的倍频.
Bit4M0FILEN:触控按键模块0滤波器功能控制0:除能1:使能Bit3M0SOFC:触控按键模块0的C/F振荡器跳频功能选择位0:软件处理跳频功能,由M0SOF2~M0SOF0位决定1:硬件处理跳频功能,M0SOF2~M0SOF0位无作用该位用来选择触控按键振荡器跳频功能控制方式,当此位置1,按键振荡器跳频功能由硬件电路控制,而不受M0SOF2~M0SOF0位影响.
Bit2~0M0SOF2~M0SOF0:触控按键模块0参考和按键振荡器跳频选择位(M0SOFC=0)000:1.
020MHz001:1.
040MHz010:1.
059MHz011:1.
074MHz100:1.
085MHz101:1.
099MHz110:1.
111MHz111:1.
125MHz这些位用于为跳频功能选择触控按键振荡器频率.
应注意的是这些位仅在M0SOFC位清零时有效.
上述频率会随着外部或内部电容值的不同而变化.
若触控按键振荡器频率选择1MHz,用户选择其它频率时,可依此比例调整.
TKM0C1寄存器Bit76543210NameM0TSS—M0ROENM0KOEN——M0K2ENM0K1ENR/WR/W—R/WR/W——R/WR/WPOR0—00——00Bit7M0TSS:触控按键模块0时隙计数器时钟源选择位0:触控按键模块0参考振荡器1:fSYS/4Bit6未定义,读为"0"Bit5M0ROEN:触控按键模块0参考振荡器使能控制位0:除能1:使能Rev.
1.
10912019-11-04Bit4M0KOEN:触控按键模块0按键振荡器使能控制位0:除能1:使能Bit3~2未定义,读为"0"Bit1M0K2EN:触控按键模块0的KEY2使能控制0:除能1:使能Bit0M0K1EN:触控按键模块0的KEY1使能控制0:除能1:使能触控按键操作手指接近或接触到触控面板时,面板的电容量会增大,电容量的变化会轻微改变内部感应振荡器的频率,通过测量频率的变化可以感知触控动作.
参考时钟通过内部可编程分频器能够产生一个固定的时间周期.
在这个时间周期内,通过在此固定时间周期内对感应振荡器产生的时钟周期计数,可确定触控按键的动作.
TKSTM0KOENM0ROENKEYOSCCLKReferenceOSCCLKfCFTMCKEnablefCFTMCK(M0DFEN=0)fCFTMCK(M0DFEN=1)TKRCOVClearedbyhardwareSetTouchKeyinterruptrequestflagTimeslotcounteroverflowtime触控按键扫描模式时序图触控按键模块0包含两个与I/O引脚共用的触控按键KEY1~KEY2.
通过相关的引脚共用功能控制寄存器位可选择触控按键引脚功能.
触控按键具有独立的感应振荡器,因此触控按键模块0包含两个感应振荡器.
在参考时钟固定的时间间隔内,感应振荡器产生的时钟周期数是可以测量的.
测到的周期数可以用于判断触控动作是否有效发生.
在此固定的时间间隔最后,会产生一个触控按键中断信号.
当TKST位被清零时,触控按键模块0的16位C/F计数器、16位计数器和5位时隙单位周期计数器会自动清零,而8位可编程时隙计数器不清零,由用户设置溢出时间.
当TKST位置高时,16位C/F计数器、16位计数器、5位时隙单位周期计数器和8位时隙定时计数器会自动开启.
如果时隙计数器溢出,触控按键模块0的按键振荡器和参考振荡器都会自动停止且16位C/F计数器、16位计数器、5位时隙单位周期计数器和8位时隙定Rev.
1.
10922019-11-04时计数器会自动停止.
时隙计数器时钟源可通过TKM0C1寄存器M0TSS位选择来自参考振荡器或fSYS/4.
通过设置TKM0C1寄存器中的M0ROEN位和M0KOEN为"1",可使能参考振荡器和按键振荡器.
当触控按键模块0的时隙计数器溢出,产生触控按键中断.
这里所有的触控按键是指已使能的触控按键.
触控按键中断触控按键只有一个中断.
当触控按键模块0的时隙计数器溢出时,才会产生触控按键中断,注意,此处提到的触控按键是指已被使能的触控按键.
此时16位C/F计数器、16位计数器,5位时隙单位周期计数器和8位时隙定时计数器会自动清零.
触控按键中断的详细说明见中断部分.
编程注意事项相关寄存器设置后,将TKST位由低电平变为高电平会启动触控按键检测程序初始化.
此时所有相关的振荡器将同步使能.
当计数器溢出时,时隙计数器标志位TKRCOV将变为高电平.
计数器溢出发生时,会产生一个中断信号.
TKRCOV标志位不会自动复位,必须通过应用程序将其清零.
若触控按键模块0的16位C/F计数器溢出,16位C/F计数器溢出标志位TKCFOV位将置高,此中断标志位不会自动复位,必须通过应用程序将其清零.
若16位计数器溢出,16位计数器溢出标志位TK16OV将置高,此中断标志位不会自动复位,必须通过应用程序将其清零.
当外部触控按键的大小和布局确定时,其相关的电容将决定感应振荡器的频率.
中断中断是单片机一个重要功能.
当外部事件或内部功能如定时器模块或A/D转换器有效,并且产生中断时,系统会暂时中止当前的程序而转到执行相对应的中断服务程序.
此单片机提供多个外部中断和内部中断功能,外部中断由INT0~INT1引脚动作产生,而内部中断由各种内部功能产生,如定时器模块、时基、触控按键功能和A/D转换器.
中断寄存器中断控制基本上是在一定单片机条件发生时设置请求标志位,应用程序中中断使能位的设置是通过位于专用数据存储器中的一系列寄存器控制的.
寄存器总的分为三类.
第一类是INTC0~INTC1寄存器,用于设置基本的中断;第二类是MFI寄存器,用于设置多功能中断;第三类是INTEG寄存器,用于设置外部中断边沿触发类型.
寄存器中含有中断控制位和中断请求标志位.
中断控制位用于使能或除能各种中断,中断请求标志位用于存放当前中断请求的状态.
它们都按照特定的模式命名,前面表示中断类型的缩写,紧接着的字母"E"代表使能/除能位,"F"代表请求标志位.
Rev.
1.
10932019-11-04功能使能位请求标志注释总中断EMI——外部中断INTnEINTnFn=0~1A/D转换器ADEADF—多功能MFEMFF—时基TBnETBnFn=0~1触控按键TKMETKMF—CTMCTMPECTMPF—CTMAECTMAF中断寄存器位命名模式寄存器名称位76543210INTEG————INT1S1INT1S0INT0S1INT0S0INTC0—ADFINT1FINT0FADEINT1EINT0EEMIINTC1TKMFTB1FTB0FMFFTKMETB1ETB0EMFEMFI——CTMAFCTMPF——CTMAECTMPE中断寄存器列表INTEG寄存器Bit76543210Name————INT1S1INT1S0INT0S1INT0S0R/W————R/WR/WR/WR/WPOR————0000Bit7~4未定义,读为"0"Bit3~2INT1S1~INT1S0:INT1脚中断边沿控制位00:除能中断01:上升沿中断10:下降沿中断11:双沿中断Bit1~0INT0S1~INT0S0:INT0脚中断边沿控制位00:除能中断01:上升沿中断10:下降沿中断11:双沿中断INTC0寄存器Bit76543210Name—ADFINT1FINT0FADEINT1EINT0EEMIR/W—R/WR/WR/WR/WR/WR/WR/WPOR—0000000Bit7未定义,读为"0"Bit6ADF:A/D转换器中断请求标志位0:无请求1:中断请求Rev.
1.
10942019-11-04Bit5INT1F:INT1中断请求标志位0:无请求1:中断请求Bit4INT0F:INT0中断请求标志位0:无请求1:中断请求Bit3ADE:A/D转换器中断控制位0:除能1:使能Bit2INT1E:INT1中断控制位0:除能1:使能Bit1INT0E:INT0中断控制位0:除能1:使能Bit0EMI:总中断控制位0:除能1:使能INTC1寄存器Bit76543210NameTKMFTB1FTB0FMFFTKMETB1ETB0EMFER/WR/WR/WR/WR/WR/WR/WR/WR/WPOR00000000Bit7TKMF:触控按键模块中断请求标志位0:无请求1:中断请求Bit6TB1F:时基1中断请求标志位0:无请求1:中断请求Bit5TB0F:时基0中断请求标志位0:无请求1:中断请求Bit4MFF:多功能中断请求标志位0:无请求1:中断请求Bit3TKME:触控按键模块中断控制位0:除能1:使能Bit2TB1E:时基1中断控制位0:除能1:使能Bit1TB0E:时基0中断控制位0:除能1:使能Bit0MFE:多功能中断控制位0:除能1:使能Rev.
1.
10952019-11-04MFI寄存器Bit76543210Name——CTMAFCTMPF——CTMAECTMPER/W——R/WR/W——R/WR/WPOR——00——00Bit7~6未定义,读为"0"Bit5CTMAF:CTMCCRA比较器中断请求标志位0:无请求1:中断请求Bit4CTMPF:CTMCCRP比较器中断请求标志位0:无请求1:中断请求Bit3~2未定义,读为"0"Bit1CTMAE:CTMCCRA比较器中断控制位0:除能1:使能Bit0CTMPE:CTMCCRP比较器中断控制位0:除能1:使能中断操作若中断事件条件产生,如一个TM比较器P、比较器A匹配或A/D转换结束等等,相关中断请求标志将置起.
中断标志产生后程序是否会跳转至相关中断向量执行是由中断使能位的条件决定的.
若使能位为"1",程序将跳至相关中断向量中执行;若使能位为"0",即使中断请求标志置起中断也不会发生,程序也不会跳转至相关中断向量执行.
若总中断使能位为"0",所有中断都将除能.
当中断发生时,下条指令的地址将被压入堆栈.
相应的中断向量地址加载至PC中.
系统将从此向量取下条指令.
中断向量处通常为"JMP"指令,以跳转到相应的中断服务程序.
中断服务程序必须以"RETI"指令返回至主程序,以继续执行原来的程序.
各个中断使能位以及相应的请求标志位,以优先级的次序显示在下图.
一旦中断子程序被响应,系统将自动清零EMI位,所有其它的中断将被屏蔽,这个方式可以防止任何进一步的中断嵌套.
其它中断请求可能发生在此期间,虽然中断不会立即响应,但是中断请求标志位会被记录.
如果某个中断服务子程序正在执行时,有另一个中断要求立即响应,那么EMI位应在程序进入中断子程序后置位,以允许此中断嵌套.
如果堆栈已满,即使此中断使能,中断请求也不会被响应,直到SP减少为止.
如果要求立刻动作,则堆栈必须避免成为储满状态.
请求同时发生时,执行优先级如下流程图所示.
所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒,若要防止唤醒动作发生,在单片机进入休眠或空闲模式前应将相应的标志置起.
Rev.
1.
10962019-11-04InterruptNameRequestFlagsEnableBitsMasterEnableVectorEMIautodisabledinISRPriorityHighLowInterruptscontainedwithinMulti-FunctionInterruptxxEEnableBitsxxFRequestFlag,autoresetinISRLegendxxFRequestFlag,noautoresetinISRTouchKeyTKMFTKMECTMPCTMPFCTMPE04HINT0PinINT0FINT0EEMI1CHTimeBase0TB0FTB0EEMIEMI08HINT1PinINT1FINT1EInterruptNameRequestFlagsEnableBitsEMI0CHA/DConverterADFADEEMI10HMulti.
Funct.
MFFMFEEMI14HTimeBase1TB1FTB1ECTMACTMAFCTMAE18HEMI中断结构外部中断通过INT0~INT1引脚上的信号变化可控制外部中断.
当触发沿选择位设置好触发类型,INT0~INT1引脚的状态发生变化,外部中断请求标志INT0F~INT1F被置位时外部中断请求产生.
若要跳转到相应中断向量地址,总中断控制位EMI和相应中断使能位INT0E~INT1E需先被置位.
此外,必须使用INTEG寄存器使能外部中断功能并选择触发沿类型.
外部中断引脚和普通I/O口共用,如果相应寄存器中的中断使能位被置位,并且通过引脚共用寄存器选择外部中断脚,此引脚将被作为外部中断脚使用.
此时该引脚必须通过设置控制寄存器,将该引脚设置为输入口.
当中断使能,堆栈未满并且外部中断脚状态改变,将调用外部中断向量子程序.
当响应外部中断服务子程序时,中断请求标志位INT0F~INT1F会自动复位且EMI位会被清零以除能其它中断.
注意,即使此引脚被用作外部中断输入,其上拉电阻选择仍保持有效.
寄存器INTEG被用来选择有效的边沿类型,来触发外部中断.
可以选择上升沿还是下降沿或双沿触发都产生外部中断.
注意INTEG也可以用来除能外部中断功能.
A/D转换器中断A/D转换器中断由A/D转换动作的结束来控制.
当A/D转换器中断请求标志被置位,即A/D转换过程完成时,中断请求发生.
若要跳转到相应中断向量地址,总中断控制位EMI和A/D转换器中断使能位ADE需先被置位.
当中断使能,堆栈未满且A/D转换动作结束时,将调用A/D转换器中断向量子程序.
当响应中断服务子程序时,相应的中断请求标志位ADF会自动复位且EMI位会被清零以除能其它中断.
多功能中断该单片机具有1个多功能中断.
与其它中断不同,这些没有独立源,但由其它现有的中断源构成,即TM中断.
当多功能中断请求标志MFF被置位,多功能中断请求产生.
当所包含的任一功能产生中断请求标志,多功能中断标志将置位.
若要跳转到相应的中断向量地址,当多功能中断使能,堆栈未满,包括在多功能中断发生时,将调用多功能Rev.
1.
10972019-11-04中断向量中的一个子程序.
当响应中断服务子程序时,相关的多功能请求标志位会自动复位且EMI位会自动清零以除能其它中断.
但必须注意的是,在中断响应时,虽然多功能中断标志会自动复位,但多功能中断源的请求标志位必须由应用程序清零.
时基中断时基中断提供一个固定周期的中断信号,由各自的定时器功能产生溢出信号控制.
当各自的中断请求标志TB0F或TB1F被置位时,中断请求发生.
当总中断使能位EMI和时基使能位TB0E或TB1E被置位,允许程序跳转到各自的中断向量地址.
当中断使能,堆栈未满且时基溢出时,将调用它们各自的中断向量子程序.
当响应中断服务子程序时,相应的中断请求标志位TB0F或TB1F会自动复位且EMI位会被清零以除能其它中断.
时基中断的目的是提供一个固定周期的中断信号.
其时钟源fPSC来自内部时钟源fSYS、fSYS/4或fSUB.
fPSC输入时钟首先经过分频器,分频率由程序设置TB0C和TB1C寄存器相关位获取合适的分频值以提供更长的时基中断周期.
相应的控制时基中断周期的时钟源可分别通过PSCR寄存器的CLKSEL1~CLKSEL0位选择.
MUXfSYS/4fSYSfSUBPrescalerCLKSEL[1:0]fPSCfPSC/28~fPSC/215MUXMUXTB0[2:0]TB1[2:0]TimeBase0InterruptTimeBase1InterruptTB0ONTB1ONfPSC/28~fPSC/215时基中断PSCR寄存器Bit76543210NameCLKSEL1CLKSEL0R/WR/WR/WPOR00Bit7~2未定义,读为"0"Bit1~0CLKSEL1~CLKSEL0:分频器时钟源fPSC选择00:fSYS01:fSYS/41x:fSUBRev.
1.
10982019-11-04TB0C寄存器Bit76543210NameTB0ON————TB02TB01TB00R/WR/W————R/WR/WR/WPOR0————000Bit7TB0ON:时基0使能/除能控制位0:除能1:使能Bit6~3未定义,读为"0"Bit2~0TB02~TB00:选择时基0溢出周期位000:28/fPSC001:29/fPSC010:210/fPSC011:211/fPSC100:212/fPSC101:213/fPSC110:214/fPSC111:215/fPSCTB1C寄存器Bit76543210NameTB1ON————TB12TB11TB10R/WR/W————R/WR/WR/WPOR0————000Bit7TB1ON:时基1使能/除能控制位0:除能1:使能Bit6~3未定义,读为"0"Bit2~0TB12~TB10:选择时基1溢出周期位000:28/fPSC001:29/fPSC010:210/fPSC011:211/fPSC100:212/fPSC101:213/fPSC110:214/fPSC111:215/fPSCTM中断简易型TM有两个中断,分别来自比较器P、A匹配.
TM有两个中断请求标志位及两个使能位.
当TM比较器P、A匹配情况发生时,相应TM中断请求标志被置位,TM中断请求产生.
若要程序跳转到相应中断向量地址,总中断控制位EMI和TM中断使能位需先被置位.
当中断使能,堆栈未满且TM比较器匹配情况发生时,可跳转至相关中断向量子程序中执行.
当TM中断响应,TM中断请求标志位会自动复位且EMI将被自动清零以除能其它中断.
Rev.
1.
10992019-11-04触控按键模块中断要使触控按键中断发生,总中断控制位EMI和触摸按键中断使能位TKME必须先被置位.
当触控按键模块中的时隙计数器溢出时,触摸按键中断请求标志TKMF将被置位,触控按键中断产生.
中断使能,堆栈未满,当触控按键时隙计数器溢出发生时,将调用相应中断向量处的子程序.
当响应中断服务子程序时,中断请求标志位TKMF会被自动复位且EMI位会被清零以除能其它中断.
中断唤醒功能每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力.
当中断请求标志由低到高转换时唤醒动作产生,其与中断是否使能无关.
因此,尽管单片机处于休眠或空闲模式且系统振荡器停止工作,如有外部中断脚上产生外部边沿跳变可能导致其相应的中断标志被置位,由此产生中断,因此必须注意避免伪唤醒情况的发生.
若中断唤醒功能被除能,单片机进入休眠或空闲模式前相应中断请求标志应被置起.
中断唤醒功能不受中断使能位的影响.
编程注意事项通过禁止相关中断使能位,可以屏蔽中断请求,然而,一旦中断请求标志位被设定,它们会被保留在中断控制寄存器内,直到相应的中断服务子程序执行或请求标志位被软件指令清零.
建议在中断服务子程序中不要使用"CALL子程序"指令.
中断通常发生在不可预料的情况或是需要立刻执行的某些应用.
假如只剩下一层堆栈且没有控制好中断,当"CALL子程序"在中断服务子程序中执行时,将破坏原来的控制序列.
所有中断在休眠或空闲模式下都具有唤醒功能,当中断请求标志发生由低到高的转变时都可产生唤醒功能.
若要避免相应中断产生唤醒动作,在单片机进入休眠或空闲模式前需先将相应请求标志置为高.
当进入中断服务程序,系统仅将程序计数器的内容压入堆栈,如果中断服务程序会改变状态寄存器或其它的寄存器的内容而破坏控制流程,应事先将这些数据保存起来.
若从中断子程序中返回可执行RET或RETI指令.
除了能返回至主程序外,RETI指令还能自动设置EMI位为高,允许进一步中断.
RET指令只能返回至主程序,清零EMI位,除能进一步中断.
Rev.
1.
101002019-11-04应用电路C124-bitADCVOREGAN0AN1C31K1K1K1KLoadCellSensorVOREG/VREFPAVSS/VSS/VREFNKEY1KEY2LCDPanelPLCDCOM3~0SEG15~0VDD/VINVDDR1R2C4C5(1)Back-Light(Directlydriving)PA0PA0(2)Back-Light(Transistor)0.
1FIN5819IN58191F0.
2F2FLED20ΩPA3/CTP(3)Back-Light(Constantcurrent)SchottkyDiodePA0VDDVDDVDDVOREGVOREGRev.
1.
101012019-11-04指令集简介任何单片机成功运作的核心在于它的指令集,此指令集为一组程序指令码,用来指导单片机如何去执行指定的工作.
在Holtek单片机中,提供了丰富且灵活的指令,共超过六十条,程序设计者可以事半功倍地实现它们的应用.
为了更加容易理解各种各样的指令码,接下来按功能分组介绍它们.
指令周期大部分的操作均只需要一个指令周期来执行.
分支、调用或查表则需要两个指令周期.
一个指令周期相当于四个系统时钟周期,因此如果在8MHz的系统时钟振荡器下,大部分的操作将在0.
5μs中执行完成,而分支或调用操作则将在1μs中执行完成.
虽然需要两个指令周期的指令通常指的是JMP、CALL、RET、RETI和查表指令,但如果牵涉到程序计数器低字节寄存器PCL也将多花费一个周期去加以执行.
即指令改变PCL的内容进而导致直接跳转至新地址时,需要多一个周期去执行,例如"CLRPCL"或"MOVPCL,A"指令.
对于跳转指令必须注意的是,如果比较的结果牵涉到跳转动作将多花费一个周期,如果没有则需一个周期即可.
数据的传送单片机程序中数据传送是使用最为频繁的操作之一,使用三种MOV的指令,数据不但可以从寄存器转移至累加器(反之亦然),而且能够直接移动立即数到累加器.
数据传送最重要的应用之一是从输入端口接收数据或传送数据到输出端口.
算术运算算术运算和数据处理是大部分单片机应用所必需具备的能力,在Holtek单片机内部的指令集中,可直接实现加与减的运算.
当加法的结果超出255或减法的结果少于0时,要注意正确的处理进位和借位的问题.
INC、INCA、DEC和DECA指令提供了对一个指定地址的值加一或减一的功能.
逻辑和移位运算标准逻辑运算例如AND、OR、XOR和CPL全都包含在Holtek单片机内部的指令集中.
大多数牵涉到数据运算的指令,数据的传送必须通过累加器.
在所有逻辑数据运算中,如果运算结果为零,则零标志位将被置位,另外逻辑数据运用形式还有移位指令,例如RR、RL、RRC和RLC提供了向左或向右移动一位的方法.
不同的移位指令可满足不同的应用需要.
移位指令常用于串行端口的程序应用,数据可从内部寄存器转移至进位标志位,而此位则可被检验,移位运算还可应用在乘法与除法的运算组成中.
Rev.
1.
101022019-11-04分支和控制转换程序分支是采取使用JMP指令跳转至指定地址或使用CALL指令调用子程序的形式,两者之不同在于当子程序被执行完毕后,程序必须马上返回原来的地址.
这个动作是由放置在子程序里的返回指令RET来实现,它可使程序跳回CALL指令之后的地址.
在JMP指令中,程序则只是跳到一个指定的地址而已,并不需如CALL指令般跳回.
一个非常有用的分支指令是条件跳转,跳转条件是由数据存储器或指定位来加以决定.
遵循跳转条件,程序将继续执行下一条指令或略过且跳转至接下来的指令.
这些分支指令是程序走向的关键,跳转条件可能是外部开关输入,或是内部数据位的值.
位运算提供数据存储器中单个位的运算指令是Holtek单片机的特性之一.
这特性对于输出端口位的设置尤其有用,其中个别的位或端口的引脚可以使用"SET[m].
i"或"CLR[m].
i"指令来设定其为高位或低位.
如果没有这特性,程序设计师必须先读入输出口的8位数据,处理这些数据,然后再输出正确的新数据.
这种读入-修改-写出的过程现在则被位运算指令所取代.
查表运算数据的储存通常由寄存器完成,然而当处理大量固定的数据时,它的存储量常常造成对个别存储器的不便.
为了改善此问题,Holtek单片机允许在程序存储器中建立一个表格作为数据可直接存储的区域,只需要一组简易的指令即可对数据进行查表.
其它运算除了上述功能指令外,其它指令还包括用于省电的"HALT"指令和使程序在极端电压或电磁环境下仍能正常工作的看门狗定时器控制指令.
这些指令的使用则请查阅相关的章节.
Rev.
1.
101032019-11-04指令集概要下表中说明了按功能分类的指令集,用户可以将该表作为基本的指令参考.
惯例x:立即数m:数据存储器地址A:累加器i:第0~7位addr:程序存储器地址助记符说明指令周期影响标志位算术运算ADDA,[m]ACC与数据存储器相加,结果放入ACC1Z,C,AC,OVADDMA,[m]ACC与数据存储器相加,结果放入数据存储器1注Z,C,AC,OVADDA,xACC与立即数相加,结果放入ACC1Z,C,AC,OVADCA,[m]ACC与数据存储器、进位标志相加,结果放入ACC1Z,C,AC,OVADCMA,[m]ACC与数据存储器、进位标志相加,结果放入数据存储器1注Z,C,AC,OVSUBA,xACC与立即数相减,结果放入ACC1Z,C,AC,OVSUBA,[m]ACC与数据存储器相减,结果放入ACC1Z,C,AC,OVSUBMA,[m]ACC与数据存储器相减,结果放入数据存储器1注Z,C,AC,OVSBCA,[m]ACC与数据存储器、进位标志的反相减,结果放入ACC1Z,C,AC,OVSBCMA,[m]ACC与数据存储器、进位标志相减,结果放入数据存储器1注Z,C,AC,OVDAA[m]将加法运算中放入ACC的值调整为十进制数,并将结果放入数据存储器1注C逻辑运算ANDA,[m]ACC与数据存储器做"与"运算,结果放入ACC1ZORA,[m]ACC与数据存储器做"或"运算,结果放入ACC1ZXORA,[m]ACC与数据存储器做"异或"运算,结果放入ACC1ZANDMA,[m]ACC与数据存储器做"与"运算,结果放入数据存储器1注ZORMA,[m]ACC与数据存储器做"或"运算,结果放入数据存储器1注ZXORMA,[m]ACC与数据存储器做"异或"运算,结果放入数据存储器1注ZANDA,xACC与立即数做"与"运算,结果放入ACC1ZORA,xACC与立即数做"或"运算,结果放入ACC1ZXORA,xACC与立即数做"异或"运算,结果放入ACC1ZCPL[m]对数据存储器取反,结果放入数据存储器1注ZCPLA[m]对数据存储器取反,结果放入ACC1Z递增和递减INCA[m]递增数据存储器,结果放入ACC1ZINC[m]递增数据存储器,结果放入数据存储器1注ZDECA[m]递减数据存储器,结果放入ACC1ZDEC[m]递减数据存储器,结果放入数据存储器1注Z移位RRA[m]数据存储器右移一位,结果放入ACC1无RR[m]数据存储器右移一位,结果放入数据存储器1注无RRCA[m]带进位将数据存储器右移一位,结果放入ACC1CRRC[m]带进位将数据存储器右移一位,结果放入数据存储器1注CRLA[m]数据存储器左移一位,结果放入ACC1无Rev.
1.
101042019-11-04助记符说明指令周期影响标志位RL[m]数据存储器左移一位,结果放入数据存储器1注无RLCA[m]带进位将数据存储器左移一位,结果放入ACC1CRLC[m]带进位将数据存储器左移一位,结果放入数据存储器1注C数据传送MOVA,[m]将数据存储器送至ACC1无MOV[m],A将ACC送至数据存储器1注无MOVA,x将立即数送至ACC1无位运算CLR[m].
i清除数据存储器的位1注无SET[m].
i置位数据存储器的位1注无转移JMPaddr无条件跳转2无SZ[m]如果数据存储器为零,则跳过下一条指令1注无SZA[m]数据存储器送至ACC,如果内容为零,则跳过下一条指令1注无SZ[m].
i如果数据存储器的第i位为零,则跳过下一条指令1注无SNZ[m].
i如果数据存储器的第i位不为零,则跳过下一条指令1注无SIZ[m]递增数据存储器,如果结果为零,则跳过下一条指令1注无SDZ[m]递减数据存储器,如果结果为零,则跳过下一条指令1注无SIZA[m]递增数据存储器,将结果放入ACC,如果结果为零,则跳过下一条指令1注无SDZA[m]递减数据存储器,将结果放入ACC,如果结果为零,则跳过下一条指令1注无CALLaddr子程序调用2无RET从子程序返回2无RETA,x从子程序返回,并将立即数放入ACC2无RETI从中断返回2无查表TABRD[m]读取特定页或者当前页的ROM内容,并送至数据存储器和TBLH2注无TABRDL[m]读取最后页的ROM内容,并送至数据存储器和TBLH2注无其它指令NOP空指令1无CLR[m]清除数据存储器1注无SET[m]置位数据存储器1注无CLRWDT清除看门狗定时器1TO,PDFCLRWDT1预清除看门狗定时器1TO,PDFCLRWDT2预清除看门狗定时器1TO,PDFSWAP[m]交换数据存储器的高低字节,结果放入数据存储器1注无SWAPA[m]交换数据存储器的高低字节,结果放入ACC1无HALT进入暂停模式1TO,PDF注:1.
对跳转指令而言,如果比较的结果牵涉到跳转即需多达2个周期,如果没有发生跳转,则只需一个周期.
2.
任何指令若要改变PCL的内容将需要2个周期来执行.
3.
对于"CLRWDT1"或"CLRWDT2"指令而言,TO和PDF标志位也许会受执行结果影响,"CLRWDT1"和"CLRWDT2"被连续地执行后,TO和PDF标志位会被清除,否则TO和PDF标志位保持不变Rev.
1.
101052019-11-04指令定义ADCA,[m]AddDataMemorytoACCwithCarry指令说明将指定的数据存储器、累加器内容以及进位标志相加,结果存放到累加器.
功能表示ACC←ACC+[m]+C影响标志位OV、Z、AC、CADCMA,[m]AddACCtoDataMemorywithCarry指令说明将指定的数据存储器、累加器内容和进位标志位相加,结果存放到指定的数据存储器.
功能表示[m]←ACC+[m]+C影响标志位OV、Z、AC、CADDA,[m]AddDataMemorytoACC指令说明将指定的数据存储器和累加器内容相加,结果存放到累加器.
功能表示ACC←ACC+[m]影响标志位OV、Z、AC、CADDA,xAddimmediatedatatoACC指令说明将累加器和立即数相加,结果存放到累加器.
功能表示ACC←ACC+x影响标志位OV、Z、AC、CADDMA,[m]AddACCtoDataMemory指令说明将指定的数据存储器和累加器内容相加,结果存放到指定的数据存储器.
功能表示[m]←ACC+[m]影响标志位OV、Z、AC、CANDA,[m]LogicalANDDataMemorytoACC指令说明将累加器中的数据和指定数据存储器内容做逻辑与,结果存放到累加器.
功能表示ACC←ACC"AND"[m]影响标志位ZRev.
1.
101062019-11-04ANDA,xLogicalANDimmediatedatatoACC指令说明将累加器中的数据和立即数做逻辑与,结果存放到累加器.
功能表示ACC←ACC"AND"x影响标志位ZANDMA,[m]LogicalANDACCtoDataMemory指令说明将指定数据存储器内容和累加器中的数据做逻辑与,结果存放到数据存储器.
功能表示[m]←ACC"AND"[m]影响标志位ZCALLaddrSubroutinecall指令说明无条件地调用指定地址的子程序,此时程序计数器先加1获得下一个要执行的指令地址并压入堆栈,接着载入指定地址并从新地址继续执行程序,由于此指令需要额外的运算,所以为一个2周期的指令.
功能表示Stack←ProgramCounter+1ProgramCounter←addr影响标志位无CLR[m]ClearDataMemory指令说明将指定数据存储器的内容清零.
功能表示[m]←00H影响标志位无CLR[m].
iClearbitofDataMemory指令说明将指定数据存储器的i位内容清零.
功能表示[m].
i←0影响标志位无CLRWDTClearWatchdogTimer指令说明WDT计数器、暂停标志位PDF和看门狗溢出标志位TO清零.
功能表示WDTclearedTO&PDF←0影响标志位TO、PDFRev.
1.
101072019-11-04CLRWDT1PreclearWatchdogTimer指令说明PDF和TO标志位都被清0.
必须配合CLRWDT2一起使用清除WDT计时器.
当程序仅执行CLRWDT1,而没有执行CLRWDT2时,PDF与TO保留原状态不变.
功能表示WDT←00HTO&PDF←0影响标志位TO、PDFCLRWDT2PreclearWatchdogTimer指令说明PDF和TO标志位都被清0.
必须配合CLRWDT1一起使用清除WDT计时器.
当程序仅执行CLRWDT2,而没有执行CLRWDT1时,PDF与TO保留原状态不变.
功能表示WDT←00HTO&PDF←0影响标志位TO、PDFCPL[m]ComplementDataMemory指令说明将指定数据存储器中的每一位取逻辑反,相当于从1变0或0变1.
功能表示[m]←[m]影响标志位ZCPLA[m]ComplementDataMemorywithresultinACC指令说明将指定数据存储器中的每一位取逻辑反,相当于从1变0或0变1,而结果被储存回累加器且数据存储器中的内容不变.
功能表示ACC←[m]影响标志位ZRev.
1.
101082019-11-04DAA[m]Decimal-AdjustACCforadditionwithresultinDataMemory指令说明将累加器中的内容转换为BCD(二进制转成十进制)码.
如果低四位的值大于"9"或AC=1,那么BCD调整就执行对原值加"6",否则原值保持不变;如果高四位的值大于"9"或C=1,那么BCD调整就执行对原值加"6".
BCD转换实质上是根据累加器和标志位执行00H,06H,60H或66H的加法运算,结果存放到数据存储器.
只有进位标志位C受影响,用来指示原始BCD的和是否大于100,并可以进行双精度十进制数的加法运算.
功能表示[m]←ACC+00H或[m]←ACC+06H或[m]←ACC+60H或[m]←ACC+66H影响标志位CDEC[m]DecrementDataMemory指令说明将指定数据存储器内容减1.
功能表示[m]←[m]–1影响标志位ZDECA[m]DecrementDataMemorywithresultinACC指令说明将指定数据存储器的内容减1,把结果存放回累加器并保持指定数据存储器的内容不变.
功能表示ACC←[m]–1影响标志位ZHALTEnterpowerdownmode指令说明此指令终止程序执行并关掉系统时钟,RAM和寄存器的内容保持原状态,WDT计数器和分频器被清"0",暂停标志位PDF被置位1,WDT溢出标志位TO被清0.
功能表示TO←0PDF←1影响标志位TO、PDFINC[m]IncrementDataMemory指令说明将指定数据存储器的内容加1.
功能表示[m]←[m]+1影响标志位ZRev.
1.
101092019-11-04INCA[m]IncrementDataMemorywithresultinACC指令说明将指定数据存储器的内容加1,结果存放回累加器并保持指定的数据存储器内容不变.
功能表示ACC←[m]+1影响标志位ZJMPaddrJumpunconditionally指令说明程序计数器的内容无条件地由被指定的地址取代,程序由新的地址继续执行.
当新的地址被加载时,必须插入一个空指令周期,所以此指令为2个周期的指令.
功能表示ProgramCounter←addr影响标志位无MOVA,[m]MoveDataMemorytoACC指令说明将指定数据存储器的内容复制到累加器.
功能表示ACC←[m]影响标志位无MOVA,xMoveimmediatedatatoACC指令说明将8位立即数载入累加器.
功能表示ACC←x影响标志位无MOV[m],AMoveACCtoDataMemory指令说明将累加器的内容复制到指定的数据存储器.
功能表示[m]←ACC影响标志位无NOPNooperation指令说明空操作,接下来顺序执行下一条指令.
功能表示PC←PC+1影响标志位无ORA,[m]LogicalORDataMemorytoACC指令说明将累加器中的数据和指定的数据存储器内容逻辑或,结果存放到累加器.
功能表示ACC←ACC"OR"[m]影响标志位ZRev.
1.
101102019-11-04ORA,xLogicalORimmediatedatatoACC指令说明将累加器中的数据和立即数逻辑或,结果存放到累加器.
功能表示ACC←ACC"OR"x影响标志位ZORMA,[m]LogicalORACCtoDataMemory指令说明将存在指定数据存储器中的数据和累加器逻辑或,结果放到数据存储器.
功能表示[m]←ACC"OR"[m]影响标志位ZRETReturnfromsubroutine指令说明将堆栈寄存器中的程序计数器值恢复,程序由取回的地址继续执行.
功能表示ProgramCounter←Stack影响标志位无RETA,xReturnfromsubroutineandloadimmediatedatatoACC指令说明将堆栈寄存器中的程序计数器值恢复且累加器载入指定的立即数,程序由取回的地址继续执行.
功能表示ProgramCounter←StackACC←x影响标志位无RETIReturnfrominterrupt指令说明将堆栈寄存器中的程序计数器值恢复且中断功能通过设置EMI位重新使能.
EMI是控制中断使能的主控制位.
如果在执行RETI指令之前还有中断未被相应,则这个中断将在返回主程序之前被相应.
功能表示ProgramCounter←StackEMI←1影响标志位无RL[m]RotateDataMemoryleft指令说明将指定数据存储器的内容左移1位,且第7位移到第0位.
功能表示[m].
(i+1)←[m].
i(i=0~6)[m].
0←[m].
7影响标志位无Rev.
1.
101112019-11-04RLA[m]RotateDataMemoryleftwithresultinACC指令说明将指定数据存储器的内容左移1位,且第7位移到第0位,结果送到累加器,而指定数据存储器的内容保持不变.
功能表示ACC.
(i+1)←[m].
i(i=0~6)ACC.
0←[m].
7影响标志位无RLC[m]RotateDataMemoryLeftthroughCarry指令说明将指定数据存储器的内容连同进位标志左移1位,第7位取代进位标志且原本的进位标志移到第0位.
功能表示[m].
(i+1)←[m].
i(i=0~6)[m].
0←CC←[m].
7影响标志位CRLCA[m]RotateDataMemoryleftthroughCarrywithresultinACC指令说明将指定数据存储器的内容连同进位标志左移1位,第7位取代进位标志且原本的进位标志移到第0位,移位结果送回累加器,但是指定数据寄存器的内容保持不变.
功能表示ACC.
(i+1)←[m].
i(i=0~6)ACC.
0←CC←[m].
7影响标志位CRR[m]RotateDataMemoryright指令说明将指定数据存储器的内容循环右移1位且第0位移到第7位.
功能表示[m].
i←[m].
(i+1)(i=0~6)[m].
7←[m].
0影响标志位无RRA[m]RotateDataMemoryrightwithresultinACC指令说明将指定数据存储器的内容循环右移1位,第0位移到第7位,移位结果存放到累加器,而指定数据存储器的内容保持不变.
功能表示ACC.
i←[m].
(i+1)(i=0~6)ACC.
7←[m].
0影响标志位无Rev.
1.
101122019-11-04RRC[m]RotateDataMemoryrightthroughCarry指令说明将指定数据存储器的内容连同进位标志右移1位,第0位取代进位标志且原本的进位标志移到第7位.
功能表示[m].
i←[m].
(i+1)(i=0~6)[m].
7←CC←[m].
0影响标志位CRRCA[m]RotateDataMemoryrightthroughCarrywithresultinACC指令说明将指定数据存储器的内容连同进位标志右移1位,第0位取代进位标志且原本的进位标志移到第7位,移位结果送回累加器,但是指定数据寄存器的内容保持不变.
功能表示ACC.
i←[m].
(i+1)(i=0~6)ACC.
7←CC←[m].
0影响标志位CSBCA,[m]SubtractDataMemoryfromACCwithCarry指令说明将累加器减去指定数据存储器的内容以及进位标志的反,结果存放到累加器.
如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1.
功能表示ACC←ACC–[m]–C影响标志位OV、Z、AC、C、SC、CZSBCMA,[m]SubtractDataMemoryfromACCwithCarryandresultinDataMemory指令说明将累加器减去指定数据存储器的内容以及进位标志的反,结果存放到数据存储器.
如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1.
功能表示[m]←ACC–[m]–C影响标志位OV、Z、AC、C、SC、CZSDZ[m]SkipifDecrementDataMemoryis0指令说明将指定的数据存储器的内容减1,判断是否为0,若为0则跳过下一条指令,由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示[m]←[m]–1,如果[m]=0跳过下一条指令执行影响标志位无Rev.
1.
101132019-11-04SDZA[m]DecrementdatamemoryandplaceresultinACC,skipif0指令说明将指定数据存储器内容减1,判断是否为0,如果为0则跳过下一条指令,此结果将存放到累加器,但指定数据存储器内容不变.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示ACC←[m]–1,如果ACC=0跳过下一条指令执行影响标志位无SET[m]SetDataMemory指令说明将指定数据存储器的每一位设置为1.
功能表示[m]←FFH影响标志位无SET[m].
iSetbitofDataMemory指令说明将指定数据存储器的第i位置位为1.
功能表示[m].
i←1影响标志位无SIZ[m]SkipifincrementDataMemoryis0指令说明将指定的数据存储器的内容加1,判断是否为0,若为0则跳过下一条指令.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示[m]←[m]+1,如果[m]=0跳过下一条指令执行影响标志位无SIZA[m]SkipifincrementDataMemoryiszerowithresultinACC指令说明将指定数据存储器的内容加1,判断是否为0,如果为0则跳过下一条指令,此结果会被存放到累加器,但是指定数据存储器的内容不变.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示ACC←[m]+1,如果ACC=0跳过下一条指令执行影响标志位无Rev.
1.
101142019-11-04SNZ[m].
iSkipifbitiofDataMemoryisnot0指令说明判断指定数据存储器的第i位,若不为0,则程序跳过下一条指令执行.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果为0,则程序继续执行下一条指令.
功能表示如果[m].
i≠0,跳过下一条指令执行影响标志位无SUBA,[m]SubtractDataMemoryfromACC指令说明将累加器的内容减去指定的数据存储器的数据,把结果存放到累加器.
如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1.
功能表示ACC←ACC–[m]影响标志位OV、Z、AC、C、SC、CZSUBMA,[m]SubtractDataMemoryfromACCwithresultinDataMemory指令说明将累加器的内容减去指定数据存储器的数据,结果存放到指定的数据存储器.
如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1.
功能表示[m]←ACC–[m]影响标志位OV、Z、AC、C、SC、CZSUBA,xSubtractimmediateDatafromACC指令说明将累加器的内容减去立即数,结果存放到累加器.
如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1.
功能表示ACC←ACC–x影响标志位OV、Z、AC、C、SC、CZSWAP[m]SwapnibblesofDataMemory指令说明将指定数据存储器的低4位和高4位互相交换.
功能表示[m].
3~[m].
0[m].
7~[m].
4影响标志位无SWAPA[m]SwapnibblesofDataMemorywithresultinACC指令说明将指定数据存储器的低4位与高4位互相交换,再将结果存放到累加器且指定数据寄存器的数据保持不变.
功能表示ACC.
3~ACC.
0←[m].
7~[m].
4ACC.
7~ACC.
4←[m].
3~[m].
0影响标志位无Rev.
1.
101152019-11-04SZ[m]SkipifDataMemoryis0指令说明判断指定数据存储器的内容是否为0,若为0,则程序跳过下一条指令执行.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示如果[m]=0,跳过下一条指令执行影响标志位无SZA[m]SkipifDataMemoryis0withdatamovementtoACC指令说明将指定数据存储器内容复制到累加器,并判断指定数据存储器的内容是否为0,若为0则跳过下一条指令.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示ACC←[m],如果[m]=0,跳过下一条指令执行影响标志位无SZ[m].
iSkipifbitiofDataMemoryis0指令说明判断指定数据存储器的第i位是否为0,若为0,则跳过下一条指令.
由于取得下一个指令时会要求插入一个空指令周期,所以此指令为2个周期的指令.
如果结果不为0,则程序继续执行下一条指令.
功能表示如果[m].
i=0,跳过下一条指令执行影响标志位无TABRD[m]Readtable(specicpageorcurrentpage)toTBLHandDataMemory指令说明将表格指针(TBHP和TBLP,若无TBHP则仅TBLP)所指的程序代码低字节移至指定数据存储器且将高字节移至TBLH.
功能表示[m]←程序代码(低字节)TBLH←程序代码(高字节)影响标志位无TABRDL[m]Readtable(lastpage)toTBLHandDataMemory指令说明将表格指针TBLP所指的程序代码低字节(最后一页)移至指定数据存储器且将高字节移至TBLH.
功能表示[m]←程序代码(低字节)TBLH←程序代码(高字节)影响标志位无Rev.
1.
101162019-11-04XORA,[m]LogicalXORDataMemorytoACC指令说明将累加器的数据和指定的数据存储器内容逻辑异或,结果存放到累加器.
功能表示ACC←ACC"XOR"[m]影响标志位ZXORMA,[m]LogicalXORACCtoDataMemory指令说明将累加器的数据和指定的数据存储器内容逻辑异或,结果放到数据存储器.
功能表示[m]←ACC"XOR"[m]影响标志位ZXORA,xLogicalXORimmediatedatatoACC指令说明将累加器的数据与立即数逻辑异或,结果存放到累加器.
功能表示ACC←ACC"XOR"x影响标志位ZRev.
1.
101172019-11-04封装信息请注意,这里提供的封装信息仅作为参考.
由于这个信息经常更新,提醒用户咨询Holtek网站以获取最新版本的封装信息.
封装信息的相关内容如下所示,点击可链接至Holtek网站相关信息页面.
封装信息(包括外形尺寸、包装带和卷轴规格)封装材料信息纸箱信息Rev.
1.
101182019-11-0424-pinSSOP(150mil)外形尺寸"!
)*+,-.
+/0=符号尺寸(单位:inch)最小值典型值最大值A—0.
236BSC—B—0.
154BSC—C0.
008—0.
012C'—0.
341BSC—D——0.
069E—0.
025BSC—F0.
004—0.
010G0.
016—0.
050H0.
004—0.
010α0°—8°符号尺寸(单位:mm)最小值典型值最大值A—6.
00BSC—B—3.
90BSC—C0.
20—0.
30C'—8.
66BSC—D——1.
75E—0.
635BSC—F0.
10—0.
25G0.
41—1.
27H0.
10—0.
25α0°—8°Rev.
1.
101192019-11-0428-pinSSOP(150mil)外形尺寸")*+,.
+/0=-符号尺寸(单位:inch)最小值典型值最大值A—0.
236BSC—B—0.
154BSC—C0.
008—0.
012C'—0.
390BSC—D——0.
069E—0.
025BSC—F0.
004—0.
010G0.
016—0.
050H0.
004—0.
010α0°—8°符号尺寸(单位:mm)最小值典型值最大值A—6.
00BSC—B—3.
90BSC—C0.
20—0.
30C'—9.
90BSC—D——1.
75E—0.
635BSC—F0.
10—0.
25G0.
41—1.
27H0.
10—0.
25α0°—8°Rev.
1.
101202019-11-04SAWType32-pinQFN(4mm*4mm*0.
75mm)外形尺寸符号尺寸(单位:inch)最小值典型值最大值A0.
0280.
0300.
031A10.
0000.
0010.
002A3—0.
008BSC—b0.
0060.
0080.
010D—0.
157BSC—E—0.
157BSC—e—0.
016BSC—D20.
1040.
1060.
108E20.
1040.
1060.
108L0.
0140.
0160.
018K0.
008——符号尺寸(单位:mm)最小值典型值最大值A0.
700.
750.
80A10.
000.
020.
05A3—0.
203BSC—b0.
150.
200.
25D—4.
00BSC—E—4.
00BSC—e—0.
40BSC—D22.
652.
702.
75E22.
652.
702.
75L0.
350.
400.
45K0.
20——Rev.
1.
101212019-11-04Copyright2019byHOLTEKSEMICONDUCTORINC.
使用指南中所出现的信息在出版当时相信是正确的,然而Holtek对于说明书的使用不负任何责任.
文中提到的应用目的仅仅是用来做说明,Holtek不保证或表示这些没有进一步修改的应用将是适当的,也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方.
Holtek产品不授权使用于救生、维生从机或系统中做为关键从机.
Holtek拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址http://www.
holtek.
com/zh/.
最近我们是不是在讨论较多的是关于K12教育的问题,培训机构由于资本的介入确实让家长更为焦虑,对于这样的整改我们还是很支持的。实际上,在云服务器市场中,我们也看到内卷和资本的力量,各大云服务商竞争也是相当激烈,更不用说个人和小公司服务商日子确实不好过。今天有看到UCloud发布的夏季促销活动,直接提前和双十一保价挂钩。这就是说,人家直接在暑假的时候就上线双十一的活动。早年的双十一活动会提前一周到十天...
BlueHost 主机商在以前做外贸网站的时候还是经常会用到的,想必那时候有做外贸网站或者是选择海外主机的时候还是较多会用BlueHost主机商的。只不过这些年云服务器流行且性价比较高,于是大家可选择商家变多,但是BlueHost在外贸主机用户群中可选的还是比较多的。这次年中618活动大促来袭,毕竟BLUEHOST商家目前中文公司设立在上海,等后面有机会也过去看看。他们也会根据我们的国内年中促销发...
数脉科技(shuhost)8月促销:香港独立服务器,自营BGP、CN2+BGP、阿里云线路,新客立减400港币/月,老用户按照优惠码减免!香港服务器带宽可选10Mbps、30Mbps、50Mbps、100Mbps带宽,支持中文本Windows、Linux等系统。数脉香港特价阿里云10MbpsCN2,e3-1230v2,16G内存,1T HDD 或 240G SSD,10Mbps带宽,IPv41个,...
26uuu4.com为你推荐
固态硬盘是什么固态硬盘是什么意思中老铁路老挝磨丁经济特区的前景如何?蓝色骨头手机蓝色骨头为什么还没上映甲骨文不满赔偿不签合同不满一年怎么补偿刘祚天DJ这个职业怎么样?www.haole012.com012.qq.com是真的吗www.mywife.ccMywife-No 00357 MANAMI SAITO种子下载地址有么?求好心人给抓站工具大家在家用什么工具练站?怎么固定?面壁思过?在医院是站站立架ip查询器怎么样查看自己电脑上的IP地址javbibi日文里的bibi是什么意思
未注册域名查询 台湾服务器租用 上海服务器租用 域名查询工具 如何查询ip地址 cpanel主机 私人服务器 ixwebhosting php探针 777te 100m免费空间 秒杀预告 稳定免费空间 国外免费asp空间 无限流量 云营销系统 湖南idc 免费asp空间申请 lamp是什么意思 工信部icp备案查询 更多