合泰单片机中文资料
合泰HT66F002_HT66F0025_HT66F003_HT66F004

HOLTEK HT47C10L 8 位 R-F 型低电压 Mask 单片机 说明书

HT47C10L8位R-F 型低电压Mask 单片机特性工作电压1.2V~2.2V 8个双向输入/输出口内置32kHz/128kHz RC 振荡器(掩膜选项128kHz 振荡只提供给EL 输出) 看门狗定时器1K×16程序存储器ROM 32×8数据存储器RAM 一个时基(Time Base) 一组蜂鸣器输出一组EL 输出电压可调的低电压检测功能HALT 和唤醒功能可降低功耗9×4段1/4duty 1/2bias 的液晶显示驱动电路RC 型A/D 转换通道2层硬件堆栈位操作指令查表指令表格内容字长16位当系统时钟为32768Hz 时指令周期为122µs 指令执行时间为1或2个指令周期63条指令44-pin QFP 封装概述HT47C10L 是8位高性能精简指令集单片机单指令周期和两级流水线结构使其适合高速应用的场合特别适用于体温计产品方框图Pad图*IC的衬底要连接到PCB板上的VSS低电平有效输出口每一位都可以作为唤醒输入输出共用引脚一旦PA0/PA1设置为蜂鸣器输出自内部蜂鸣器时钟发生器输出或带上拉电阻的斯密特输入输出口每一位都可以作为唤醒输入输出共用引脚一旦输出其信号来自可由软件设置为输出或带上拉电阻的位双向输入输出口每一位都可以作为唤醒输入输出或带上拉电阻的斯密特输入负电源VCCC1倍压电路VCC=2×VDDVCC LCD 工作电压需要在 C1C2VCC 开关引脚SEG8~SEG0LCD 驱动的和Common 输出正电源 LVD B 低电压检测A/D 转换转换参考电阻连接引脚转换传感器电阻连接引脚带上拉电阻正常使用时不必连接正常使用时不必连接极限参数电源供应电压………….-0.3V~2.5V 储存温度………….-50~125 端口输入电压………….V SS -0.3V~V DD +0.3V 工作温度………..….-40~85注这里只强调额定功率超过极限参数所规定的范围将对芯片造成损害无法预期芯片在上述标示范围外的工作状态而且若长期在标示范围外的条件下工作可能影响芯片的可靠性f=32kHzLVD关闭f OSC=128kHz=32kHzLVD关闭Ω*C=2200pFf OSC=32kHzLVD关闭f OSC=32kHz=32kHzLVD关闭Ω*C=2200pFLVD打开无负载系统关闭f OSC=32kHzLVD关闭f OSC=32kHz=32kHzLVD关闭1.5V — PA0(BZ))PA2(EL1)PA3(EL2)PA4~PA7PA0(BZ))PA2(EL1)PA3(EL2)PA4~PA7口灌电流LVD测试条件最小标准最大单位符号参数V DD条件f32k振荡器时钟(32kHz) 1.5V 26 32 40 kHz f128k振荡器时钟(128kHz) 1.5V 102 128 160 kHz t RES外部复位低电平脉宽 1.5V 100 — — µsf AD A/D转换频率 1.5V — — 50 kHz 系统功能说明指令执行时序HT47C10L系统频率来自32kHz的内部RC振荡芯片将此频率分成四个互不重叠的时钟周期(T1T2T3T4)一个指令周期包括四个系统时钟周期指令的读取和执行是以流水线方式进行的, 这种方式在一个指令周期进行读取指令操作而在下一个指令周期进行解码与执行该指令因此流水线方式使多数指令能在一个周期内执行完成但如果渉及到的指令要改变程序计数器的值就需要花两个指令周期来完成这一条指令指令执行时序程序计数器 — PC10位的程序计数器(PC)用来控制程序存储器ROM中指令执行的顺序最大可以访问1024个地址取得指令码以后程序计数器会自动加一指向下一个指令码的地址但如果执行跳转条件跳跃向PCL赋值子程序调用初始化复位内部中断外部中断子程序返回等操作时PC会载入与指令相关的地址而非下一条指令地址当遇到条件跳跃指令且符合条件时当前指令执行过程中读取的下一条指令会被丢弃取而代之的是一个空指令周期随后才能取得正确的指令反之就会顺序执行下一条指令程序计数器的低字节(PCL)是一个可读写的寄存器(06H)对PCL赋值将产生一个短跳转动作跳转的范围为当前页256个地址当遇到控制转移指令时系统也会插入一个空指令周期程序计数器模式*9 *8 *7 *6 *5 *4 *3 *2 *1 *0 初始化复位0 0 0 0 0 0 0 0 0 0定时/计数器中断0 0 0 0 0 0 0 1 0 0时基中断0 0 0 0 0 0 1 0 0 0条件跳跃PC+2装载PCL *9 *8 @7 @6 @5 @4 @3 @2 @1 @0跳转子程序调用#9 #8 #7 #6 #5 #4 #3 #2 #1 #0从子程序返回S9 S8 S7 S6 S5 S4 S3 S2 S1 S0程序计数器注*9 ~ *0 程序计数器位#9 ~ #0 指令代码位S9 ~ S0 堆栈寄存器位@7 ~ @0 PCL位程序存储器 ROM程序存储器用来存放要执行的指令代码以及一些数据表格和中断入口程序存储器有1024×16位程序存储器空间可以用程序计数器或表格指针进行寻址以下列出的程序存储器地址是系统专为特殊用途而保留的地址000H该地址为程序初始化保留系统复位后程序总是从000H开始执行地址004H该地址为定时/计数器中断服务程序保留当定时/计数器发生溢出如果中断允许且堆栈未满则程序会跳转到004H地址开始执行地址 008H该地址为时基(Time Base)中断服务程序保留当时基发生溢出如果中断允许且堆栈未满则程序会跳转到008H地址开始执行表格区ROM空间的任何地址都可做为查表使用查表指令TABRDC [m](查当前页表格1页=256个字)和TABRDL[m](查最后页表格)会把表格内容低字节传送给[m]而表格内容高字节传送到TBLH寄存器(08H)只有表格内容的低字节被传送到目标地址中而高字节被传送到表格内容高字节寄存器TBLH表格内容高字节寄存器TBLH是只读寄存器表格指针(TBLP)是可读/写寄存器(07H)用来指明表格地址在查表之前要先将表格地址写入TBLP中如果主程序和中断服务程序(ISR)都用到查表指令主程序中TBLH的值可能会因为ISR中执行的查表指令而发生变化产生错误也就是说要避免在主程序和中断服务程序中都使用查表指令但如果必须这样做的话我们可以在查表指令前先将中断禁止在保存了TBLH的值后再开放中断以避免发生错误所有与表格有关的指令都需要两个指令周期的执行时间这里提到的表格区都可以做为正常的程序存储器来使用表格区指令*9 *8 *7 *6 *5 *4 *3 *2 *1 *0[m] P9 P8 @7 @6 @5 @4 @3 @2 @1 @0 TABRDC[m] 1 1 @7 @6 @5 @4 @3 @2 @1 @0 TABRDL表格区注*9~*0表格地址位@7~@0表格指针位P9~P8当前程序指针位堆栈寄存器 STACK堆栈寄存器是特殊的存储器空间用来保存PC的值HT47C10L有2级堆栈堆栈寄存器既不是数据存储器的一部分也不是程序存储器的一部分而且它既不能读出也不能写入堆栈的使用是通过堆栈指针(SP)来实现的堆栈指针也不能读出或写入当发生子程序调用或中断响应时程序计数器(PC)的值会被压入堆栈在子程序调用结束或中断响应结束时(执行指令RET或RETI)堆栈将原先压入堆栈的内容弹出重新装入程序计数器中在系统复位后堆栈指针会指向堆栈顶部如果堆栈已满并且发生了不可屏蔽的中断那么只有中断请求标志会被记录下来而中断响应会被抑制直到堆栈指针(执行RET或RETI指令)发生递减中断才会被响应这个功能可以防止堆栈溢出使得程序员易于使用这种结构同样如果堆栈已满并且发生了子程序调用那么堆栈会发生溢出首先进入堆栈的内容将会丢失只有最后的2个返回地址会被保留数据存储器 RAM数据存储器由548位组成分为两个功能区间特殊功能寄存器和通用数据存储器(328)数据存储器单元大多数是可读/写的但有些只读的特殊功能寄存器包括间接寻址寄存器0(00H)间接寻址指针寄存器0(MP001H)间接寻址寄存器1(02H)间接寻址指针寄存器1(MP103H)存储器段指针寄存器(BP04H)累加器(ACC05H)程序计数器低字节寄存器(PCL06H)表格指针寄存器(TBLP07H)表格内容高字节寄存器(TBLH08H)时基控制寄存器(TBC09H)状态标志寄存器(STATUS0AH)中断控制寄存器(INTC0BH)输入/输出寄存器(PA12H)计数器A高低位字节寄存器(TMRAH20H TMRAL21H)定时/计数器控制寄存器22H)定时计数器高低位字节寄存器(TMRBH23H TMRBL24H)RC型A/D转换控(ADCR25H)掩膜设置寄存器(OPT126H OPT227H)其余在之前的空间保留给系统以后扩展使用读取这些地址的返回值为00H通用数据寄存器地址从60H到用来存储数据和控制信息所有的数据存储器单元都能直接执行算术逻辑递减和循环操作除了一些特殊位外数据存储器的每一位都可由SET[m].i置位或由复位而且都可以通过间接寻址指针MP0和MP1进行间接寻址并无实际的物理区存在都是和单元间接读取00H地址得到的00H间接写入此地址不会产生任何操作间接寻址寄存器之间不支持数据传送功能间接寻址指针MP1用来指出间接寻址中RAM的地址只能用于数据存储器而能用于数据存储器和LCD显示存储器05H做为运算的立即数据存储器之间的数据传送必须经过累加器算术逻辑单元位算术逻辑运算的电路提供有以下功能(ADD ADC SUB SBC DAA)(AND OR XOR CPL)(PL RR RLC RRC)(INC DEC)分支判断(SZ SNZ SIZ SDZ…)ALU不仅可以储存数据运算的结果还会改变状态寄存器的值状态寄存器 STATUS8位的状态寄存器(0AH)由零标志位(Z)进位标志位(C)辅助进位标志位(AC)溢出标志位(OV)暂停标志位(PDF)和看门狗定时器溢出标志位(TO)组成该寄存器不仅记录状态信息而且还控制操作顺序除了PDF和TO标志外状态寄存器的其它位都可以用指令改变任何对状态寄存器的写操作都不会改变PDF和TO的值对状态寄存器的操作可能会导致与预期不一样的结果TO标志只受系统上电看门狗溢出CLR WDT指令或HALT指令的影响PDF标志只受系统上电CLR WDT指令或HALT指令的影响标志位Z OV AC和C反映的是最近一次操作的状态在进入中断程序或子程序调用时状态寄存器不会被自动压入堆栈如果状态寄存器的内容是重要的而且子程序会影响状态寄存器的内容那么程序员必须事先将STATUS的值保存好符号位功能C 0如果在加法运算中结果产生了进位或在减法运算中结果不产生借位,则C 被置位反之C 被清除它也可被循环移位指令影响AC 1如果在加法运算中低4位产生了进位或减法运算中低4位不产生借位则AC被置位反之AC 被清除Z 2 如果算术或逻辑运算的结果为零则Z 被置位反之Z 被清除OV 3如果运算结果向最高位进位但最高位并不产生进位输出则OV 被置位反之OV 被清除PDF 4系统上电或执行CLR WDT 指令PDF被清除执行HALT 指令PDF 被置位TO 5系统上电执行CLR WDT 或HALT 指令TO 被清除WDT定时溢出TO 被置位6 未用读出为07 未用读出为0状态寄存器中断HT47C10L 提供了一个定时器/计数器中断和一个时基中断中断控制寄存器(INTC 0BH) 包含了中断控制位和中断请求标志中断控制位用来设置中断允许/禁止寄存器 位 标志 功能0 EMI 总中断控制位(1=允许0=禁止) 1 ETI 定时/计数器中断控制位(1=允许0=禁止) 2 ETBI 时基中断控制位(1=允许0=禁止) 3 — 未用读出为04 TF 定时/计数器中断请求标志(1=有0=无)5 TBF 时基中断请求标志(1=有0=无)6 — 未用读出为0 INTC(0BH) 7 — 未用读出为0INTC 寄存器只要有中断子程序被服务其余的中断全部都被自动禁止(通过清除EMI 位)这种做法的目的在于防止中断嵌套这时如果有其它中断发生只有中断请求标志会被记录下来如果在中断服务程序中有另一个中断需要响应程序员可以置位EMI 和INTC 所对应的位以便进行中断嵌套如果堆栈已满则中断并不会被响应一直到堆栈指针(SP)发生递减后才会响应如果需要中断立即得到响应应避免堆栈饱和当有中断被服务系统会将程序计数器值压入堆栈然后再跳转至中断服务程序的入口但这时只有程序计数器的内容被压入堆栈如果其它寄存器和状态寄存器的内容会被中断程序改变从而会破坏主程序的控制流程的话程序员应该事先将这些数据保存起来内部定时/计数器中断是由定时/计数器溢出触发的其中断请求标志(TF INTC 的第4位)会被置位如果中断允许且堆栈未满当定时/计数器A 或定时/计数器B 发生中断时会产生地址04H 的子程序调用而中断请求标志TF 和总中断控制位EMI 会被清除以禁止其它中断响应时基中断是由置位时基溢出触发的其中断请求标志(TBF INTC 的第5位)会被置位如果中断允许且堆栈未满当发生时基中断时会产生地址08H 的子程序调用而中断请求标志TBF 和总中断控制位EMI 会被清除以禁止其它中断响应在执行中断子程序期间其它的中断请求会被屏蔽直到执行RETI 指令或EMI 和相关中断控制位被置位(当然此时堆栈未满)如果要从中断子程序返回只要执行RET 或RETI 指令即可其中RETI 指令会自动置位EMI 以允许中断服务而RET 则不会如果中断在两个连续的 T2脉冲的上升沿之间发生且中断响应允许那么在下两个T2脉冲之间该中断会被服务如果同时发生中断请求其优先级如下表示也可以通过设定各中断相关的控制位来改变优先级No. 中断源优先级中断向量a 定时/计数器中断 1 04Hb 时基中断 2 08H振荡电路HT47C10L提供32kHz或128kHz的内部RC振荡(由掩膜选项决定)但系统时钟只能用32kHz在HALT模式下可由掩膜选择RC振荡是否停止用户可以选择128kHz振荡频率作为EL输出看门狗定时器看门狗定时器的时钟来源有两种看门狗振荡器或指令时钟(系统时钟4分频)由掩膜选项设置看门狗定时器主要用来防止程序运行故障和程序跳入一死循环而导致不可预测的结果看门狗定时器可由掩膜选项设置为打开或关闭如果在关闭状态所有与WDT有关的指令操作都是没有作用的在HALT状态时如果RC振荡器继续工作WDT将继续计数而且WDT的计时溢出将导致系统从HALT模式中唤醒在正常运行时WDT溢出会使系统复位并置位TO标志但在HALT模式下WDT溢出只产生热复位只有程序计数器PC和堆栈指针SP被复位要清除WDT的值可以有三种方法外部复位(低电平输入到RES端)清除看门狗指令或HALT指令清除看门狗指令为CLR WDT只要执行CLR WDT指令就会清除WDT否则WDT会由于溢出而使系统复位WDT的溢出周期为f/215f s/216因为CLR WDT指令只能清除最后两级WDT分频器多功能计时器HT47C10L有一个多功能定时器提供看门狗定时器(WDT)和时基产生不同溢出周期此多功能定时器由一个8阶分频器及一个7位预分频器所组成使用的时钟源来自系统时钟多功能定时器同时为LCD 驱动电路和蜂鸣器提供时钟信号(fs/8)多功能计时器时基时基提供一个周期性溢出时间中断它的溢出时间范围为fs/28~fs/215由掩膜选项决定将数据写入RT2RT1和RT0(TBC第210位)之中会产生不同的溢出时间如果时基发生溢出现象则其对应的中断请求标志(TBF)会被置位如果中断允许且此时堆栈尚有空间则产生一个中断服务到08H的地址进入HALT模式后时基仍然工作并且可以唤醒HALT模式如果在进入HALT模式之前将TBF 置1的话则时基信号的溢出就不能唤醒系统RT2 RT1 RT0 Time Base分频级数0 0 0 280 0 1 290 1 0 2100 1 1 2111 0 0 2121 0 1 2131 1 0 2141 1 1 215暂停模式 HALT暂停模式是由HALT指令来实现的暂停模式时系统状态如下由STANDBY位(OPT1的第5位)设置f OSC和f SYS停止或继续振荡但T1将关闭RAM及寄存器的内容保持不变WDT被清除并重新计数所有的输入/输出口都保持其原先状态PDF标志位被置位TO标志位被清除由STANDBY位(OPT1的第5位)设置LCD开/关由STANDBY位(OPT1的第5位)设置时基停止或继续计数PA口唤醒和中断唤醒这两种方式可以视为正常运行的继续如果是输入/输出口唤醒程序即从下一条指令开始运行但如果是从中断唤醒的话此时可能会发生两种情况如果相关中断都被禁止或该中断被允许但堆栈已满程序会从下一条指令开始运行但如果该中断允许且堆栈尚未满则会产生中断响应当进入HALT状态以前某个中断请求位被置位那么系统不能用这个中断来唤醒如果唤醒是由于中断响应的话实际中断子程序的执行会延时一个以上的周期但是如果唤醒导致下一条指令执行那么在一个等待周期结束后指令就立即被执行另外为减少电源损耗在进入暂停模式之前应小心处理所有的输入/输出口复位总共有三种方法会产生初始复位正常运行时由RES引脚发生复位在暂停模式由RES引脚发生复位正常运行时由看门狗定时器溢出发生复位暂停模式中的看门狗定时器溢出与其它系统复位状况不同因为看门狗定时器溢出会执行热复位只有程序计数器PC和堆栈指针SP被复位而系统其它部分都保持原有状态在其它复位状态下某些寄存器不会改变在初始复位时大部分寄存器会复位成初始的状态通过检测PDF和TO标志即可判断出各种不同的复位原因系统复位时各功能单元的状态如下所示程序计数器(PC) 000H中断禁止预分频器清除看门狗定时器时基清除复位后定时器开始计数定时/计数器停止输入/输出口输入模式堆栈指针SP 指向堆栈的顶端定时/计数器HT47C10L提供一个16位定时/计数器可用作双通道的RC型A/D转换器ADC/TM位(ACDR寄存器的第1位)用来决定定时器A和定时器B是用作16位的定时/计数器还是用作RC型A/D转换器当ADC/TM为0时TMRAL TMRAH TMRBL TMRBH组成了16位的定时/计数器TMRBL 和TMRBH组成一个预置寄存器分别用来存放定时/计数器初始值的低字节和高字节定时计数器的时钟源可以是系统时钟(f SYS)或外部信号输入(RCIN引脚的A/D时钟)外部时钟输入允许用户去计算外部事件计数外部RC型的A/D时钟测量时间长度或脉宽或产生一个精确的时基信号总共有六个与定时/计数器有关的寄存器分别是TMRAH([20H])TMRAL([21H])TMRC([22H])TMRBH([23H])TMRBL([24H])和ADCR([25H])写入TMRBL只会将数据写入低字节内部缓冲器而写入TMRBH 则可把数据和低字节内部缓冲器的内容同时写到16位的定时计数器的预置寄存器定时计数器的预置寄存器在对TMRBH 写操作时改变而写TMRBL 将保持预置寄存器的值不变若读取TMRAH 则可将TMRAL 传送至低字节内部缓冲器之中以避免发生计时错误若读取TMRAL 则只读回低字节内部缓冲器的内容也就是说定时/计数器的低字节数据并不能直接读取若欲读取该低字节的数据必须先读取TMRAH 以便使定时/计数器的低字节数据锁存至内部低字节缓冲器之中TMRC 为定时/计数器的控制寄存器用来定义定时/计数器的某些选项定时/计数器的控制寄存器可以定义定时/计数器的工作模式计数允许/禁止以及计数的触发沿写入定时器B 就可以将定时/计数器的初始值放到预置寄存器中而读取定时器A 就可以得到定时/计数器的内容定时器B 是定时/计数器的初始值预置寄存器名称 位 功能0~2 未定义读取时为TE 3 定义定时/计数器TMR 作用沿(0=上升沿作用1=下降沿作用) TON 4 允许/禁止定时器计数(0=禁止1=允许)TN0 TN1 56 定义操作方式(TN1TN0)10=定时器模式(内部时钟f SYS ) 01=外部计数模式(外部时钟RCIN 引脚的A/D时钟输入) 11=脉冲宽度测量模式(RCINf SYS)00=未定义7 未定义读取时为0TMRC 寄存器TN0和TN1用来定义操作模式事件模式是用来计数外部事件这表示时钟来源(A/D 时钟)为外部RCIN 引脚的信号输入定时模式则作为普通定时器使用其时钟来源为内部系统时钟(f SYS )最后脉冲宽度测量模式能够对外部引脚RCIN 的高电平或低电平的持续时间进行测量计数的时钟来源为系统时钟在事件计数A/D 时钟或内部定时模式下一旦定时/计数器开始计数即从定时/计数器的现行内容(TMRAH 和TMRAL)开始计数至FFFFH 若发生溢出计数器即从定时/计数器预置寄存器(TMRBH 和TMRBL)重新装入加载值并同时置位中断请求标志(TF INTC 的第4位)在脉冲宽度测量模式下当TON 和TE 位的值都为1时如果引脚RCIN 接收到一个上升沿信号(如果TE 位的值为0则为下降沿信号)时计数器就会开始数直到RCIN 引脚回到原来的电平为止并且会将TON 位清零测量的结果会依然存放在定时/计数器之中也就是说一次只能计数一个脉冲的宽度而当TON 位重新置位为1只要RCIN 收到跳变脉冲测量就会再次执行下去在脉冲测量模式中定时/计数器并不会根据逻辑电压来计数其根据的标准为信号的转变沿一旦发生计数溢出计数器会从定时/计数器预置寄存器重新装入初值同时还会发出中断请求这种情况和其它两种模式一样若欲启动计数器运行只要将定时器启动位(TON TMRC 的第4位)的值设为1即可在脉冲宽度测量模式中TON 位在测量周期完成后会自动被清除但在其它两种模式中TON 位只可以用软件指令清除若在定时/计数器关闭的情况下将数据写入定时/计数器的预置寄存器同时也会将该数据重新载入定时/计数器之中但若定时/计数器已经开启写入定时/计数器的数据只会保存在定时/计数器的预置寄存器中这时定时/计数器并不会马上被改变而会继续计数下去直到发生溢出为止此时再由预置寄存器装入新的初始值一旦定时/计数器(读取TMRAH)的数据被读取会将时钟禁止以避免发生错误将可能会导致计数错误所以程序员必须考虑清楚才行我们强烈建议在打开定时/计数器前先将要加载的数据写入到TMRBL TMRBH TMRAL 和TMRAH 中去因为在系统初始化后TMRBL TMRBH TMRAL 和TMRAH 的值是未知的下例为定时/计数器的定时模式(禁止中断)clr tmrc clr adcr.1 ; 设置为定时/计数器模式 clr intc.4 ; 清除定时/计数器的中断请求标志位 mov a,low (65536-1000) ; 置定时器初值 mov tmrbl,a ; 计数1000然后定时器溢出mov a,high (65536-1000)mov tmrbh,a定时器时钟来源为f SYS并且允许定时器计数;mova,01010000bmov tmrc,ap10:clr wdt判断定时/计数器的中断请求标志位intc.4 ;snzjmp p10清除定时/计数器的中断请求标志位clr intc.4 ;; 程序继续RC型A/D转换HT47C10L有一个RC型的A/D转换通道包含两个可编程16位向上计数的计数器计数器A的时=32kHz)计数器B的时钟来源可以是外部RC振荡电路当ADC/TM位为1钟来源可以是系统时钟(f时(寄存器ADRC的第1位)TMRAL TMRAH TMRBL TMRBH组成了A/D转换器A/D转换定时器B的时钟来源为RSEN~RCIN振荡器或外部时钟输入(RCIN)定时器A的时钟来源可以通过TN1TN2来设置总共有六个与A/D转换器有关的寄存器分别是TMRAH TMRAL TMRC TMRBH TMRBL和ADRC内部定时器时钟输入到TMRAH和TMRAL中A/D时钟输入到TMRBH和TMRBL中OVB/OVA 位(ADCR寄存器的第0位)用来设置是否采用定时器A或定时器B溢出作为定时/计数器中断信号在A/D 转换模式下当定时器A或定时器B溢出时TON位被清除并且计数器停止计数写入TMRAH/TMRBH就是对定时器A/定时器B设置初值读取TMRAH/TMRBH就是读取定时器A/定时器B的内容写入TMRAL/TMRBL只能将数据写入内部缓冲器的低位字节但若写入的是TMRAH/TMRBH则可将数据和低字节内部缓冲器的内容同时写入定时器A/定时器B(16位)之中定时A/定时器B的内容只在写入TMRAH/TMRBH时改变但若写入TMRAL/TMRBL则可维持定时A/定时器B的内容不受改变若读取TMRAH/TMRBH则可将TMRAL/TMRBL传送至低字节内部缓冲器之中以避免发生计时错误然而若读取TMRAL/TMRBL则只读回低字节内部缓冲器的内容换言之定时器A/定时器B的低字节数据并不能直接读取若欲读取该低字节的数据必须先读取TMRAH/TMRBH以便将定时/计数器A B的低字节数据传送至内部低字节缓冲器之中。
HT45R2G 规格书 简体中文

HT45R2G增强A/D 型八位OTP单片机技术相关信息•应用范例—HA0075S MCU复位电路和振荡电路的应用范例特性CPU特性•工作电压:f SYS =4MHz:2.2V~5.5Vf SYS =8MHz:3.0V~5.5Vf SYS =12MHz:4.5V~5.5V•在V DD=5V,系统时钟为12MHz时,指令周期为0.33µs•暂停模式和唤醒功能可降低功耗•振荡模式:外部高频晶振-- HXT内部RC -- HIRC•内部集成4MHz,8MHz和12MHz振荡器,不需要增加外部元器件•OTP程序存储器:2K×15•RAM数据存储器:128×8•看门狗定时器•LIRC振荡用于看门狗时钟•所有指令都可在1个或2个指令周期内完成•查表指令•63条功能强大的指令系统•6层堆栈•位操作指令•低电压复位功能•20-Pin DIP/SOP封装周边特性•18个双向输入/输出口•8个通道12位ADC•2个通道8位PWM•一个与I/O口复用的外部中断输入•一个8位可编程定时/计数器,具有溢出中断和预分频功能概述增强A/D型系列单片机是8位具有高性能精简指令集的单片机,应用相当广泛。
秉承Holtek单片机具有低功耗、I/O灵活、定时器功能、振荡类型可选、暂停和唤醒功能、看门狗和低电压复位等丰富的功能选项,具有极高的性价比。
其内部集成了系统振荡器HIRC,提供三种频率选择,不需要增加外部元器件,可以广泛适用于各种应用,例如工业控制、消费类产品、家用电器子系统控制等。
方框图下面方框图描述了主要的功能模块。
引脚图PA2/TC0/AN2PA3/INT/AN3HT45R2G 16DIP/NSOP-AVSS PA6/OSC1PA5/OSC2PA7/RES PA4/PWM0PB0PB1PB2PC3/PWM1PC1/AN5PC0/AN4PA0/AN0PA1/AN1VDD12345678910111213141516引脚说明每个引脚的功能如下表所述,而引脚配置的详细内容见规格书其它章节。
合泰单片机基础教程

合泰单⽚机基础教程第⼀章⼀、概念与分类单⽚机⼜称微控制器(M icro C ontroller U nit),包含:中央处理单元、程序存储器、数据存储器、输⼊/输出端⼝1、按算术逻辑单元的位长度:4位机、8位机、 16位机、 32位机、64位机2、按内部结构(1)精简指令集RISC:提供较少的基本指令,执⾏效率较⾼(2)复杂指令集CISC :提供较多的指令,包括功能强⼤的指令(如乘除法),执⾏效率较低3、按编址⽅式(1)普林斯顿结构:指令与数据共⽤同⼀块存储器,共⽤地址/数据总线,同⼀时间只能对指令或数据操作(2)哈佛结构:指令与数据是分开的,各⾃独⽴的地址/数据总线,可同时对指令与数据操作⼆、单⽚机结构概述1、中央处理单元(CPU):(1)指令解码单元(IU)通过解码硬件电路去解析⼀连串⼆进制码以作为控制器的决策核⼼(2)执⾏控制单元(EU)接受IU所发出的指⽰,将各单元中的数据进⾏互换、传送、运算、判断,再依汇编指令所指定的动作或运算进⾏输⼊、输出、存储等⼯作(3)算术逻辑单元(ALU)可从指令集中实现算术和逻辑操作,ALU在接收相关的指令码后执⾏需要的算术与逻辑操作,并将结果存储在指定的存储位置2、程序存储器(ROM)内容⼀般不可更改的,⽤于存放⽤户代码的存储器,不同型号不同容量3、数据存储器(RAM)内容可更改的,⽤于存放单⽚机状态或⽤户变量的存储器,不同型号不同容量4、总线(BUS)⽤于内部各单元间信息互通,⼀般有3种总线:数据总线、控制总线、地址总线(1)数据总线:传送各单元间数据的硬件(2)控制总线: 控制单⽚机数据的读或写,使、除能某单元以接收或传送数据(3)地址总线: 主要⽤来寻址,指⽰数据存取的位置,即⽤地址总线寻址三、 HT合泰单⽚机结构分析(以HT48系列为例)1、时序和流⽔线结构(1)系统时钟由晶体/陶瓷震荡器或RC震荡器提供(2)指令周期由T1~T4 4个内部时钟组成,流⽔线结构保证指令在⼀个指令周期内被有效执⾏T1:程序计数器⾃动加1并抓取新指令T2~T4:完成解码、算术逻辑并执⾏功能(3)当程序计数器的内容改变时,如call调⽤或jmp跳转时,指令需要多⼀个指令周期取出当前指令地址的下⼀条指令,并清除流程,再⽤另⼀个周期去执⾏下⼀动作2、程序计数器(PC)(1)程序指令码的读取是由于内部有⼀程序计数器来寻址,在指令码被读取后程序执⾏期间,程序计数器指向下⼀条要执⾏的指令地址(2)复位起始地址是0000h,在每条指令执⾏后⾃动加1(jmp、call等除外) 3、堆栈(Strack)是存储器特殊的部分,在⼦程序调⽤或中断响应时,程序指针压⼊堆栈,返回指令(RET或RETI)使程序指针返回到上次⼦程序调⽤位置四、程序存储器(ROM)存放⽤户代码,内容为⼆进制机器码1、分类:掩模 \ OTP \ EEPROM \ FLASH2、⼀般为14Bit~16Bit,除了存放程序外也包含中断⼊⼝和数据表3、特殊向量地址(以HT48R50A-1为例):(1)复位向量地址: 000H(2)外部中断向量地址: 004H(3)定时/计数器0中断向量地址: 008H(4)定时/计数器1中断向量地址: 00CH五、数据存储器(RAM)1、可更改的8位内部存储器,⽤来存放临时数据,分为“专⽤寄存器”和“通⽤数据存储器”2、通⽤数据存储器(⽩⾊部分)3、专⽤寄存器六、专⽤寄存器1、间接寻址寄存器IAR0/IAR1在间接寻址寄存器上的任何动作,将对间接寻址指针(MP0/MP1)所指定的数据存储地址产⽣的读/写操作2、间接寻址指针MP0/MP1与IAR0/IAR1组成间接寻址操作功能3、累加器ACC所有ALU得到的运算结果都会暂时存储在累加器,数据传送也需要累加器4、程序计数器低字节寄存器PCL直接给PCL赋值将导致直接跳转到本页范围的某⼀地址。
合泰单片机ht46x65v220使用手册

注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而 且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。 Rev. 2.20 4 2014-06-06
HT46R65/HT46C65 直流电气特性
符号 VDD IDD1 IDD2 IDD3 ISTB1 ISTB2 参数 工作电压 工作电流 (晶体振荡、RC 振荡) 工作电流 (晶体振荡,RC 振荡) 工作电流 (fSYS=32768Hz) 静态电流 (*fS=T1) 静态电流 (*fS=RTC 振荡) 静态电流 (*fS=WDT 振荡) VDD — — 3V 5V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V 3V 5V — 测试条件 条件 fSYS=4MHz fSYS=8MHz 无负载,ADC 关闭 fSYS=4MHz 无负载,ADC 关闭 fSYS=8MHz 无负载,ADC 关闭 无负载,系统 HALT, HALT 时 LCD 关闭 无负载,系统 HALT, HALT 时 LCD 打开, 电容型偏压 无负载,系统 HALT, HALT 时 LCD 打开, 电容型偏压 无负载,系统 HALT, HALT 时 LCD 打开, 电阻型偏压,1/2bias, VLCD=VDD (选择低电流偏压) 无负载,系统 HALT, HALT 时 LCD 打开, 电阻型偏压,1/3bias, VLCD=VDD (选择低电流偏压) 无负载,系统 HALT, HALT 时 LCD 打开, 电阻型偏压,1/2bias, VLCD=VDD (选择低电流偏压) 无负载,系统 HALT, HALT 时 LCD 打开, 电阻型偏压,1/3bias, VLCD=VDD (选择低电流偏压) — 最小 2.2 3.3 — — — — — — — — — — — — — — — — — — — 0 典型 — — 1 3 4 0.3 0.6 — — 2.5 10 2 6 17 34 13 28 14 26 10 19 —
合泰芯片选型手册

IntroductionContinual growth and a persistent stream of new product releases onto the global market has been the hallmark of Holtek Semiconductor since the establishment of the company in 1983to the present date.Although remaining focused in the area of microcontroller devices,Holtek has also made substantial inroads into a wide range of peripheral products.Behind these products developments are the company ¢s highly qualified engineering design teams,which have been extremely successful in providing Holtek customers with a wide range of high quality industrial grade semiconductor devices.This range of mature and high quality semiconductor devices can now be found among many of today ¢s well known consumer appliances and industrial products and stands as a witness to Holtek products being able to offer customers one of today ¢s best choices in the market in terms of both price and performance.Product Device RangeHoltek continues to retain its product development focus in the area of microcontrollers and their peripheral products.The huge and continually expanding microcontroller range includes an extensive range of fully integrated digital and analog functions such as A/D converters,LCD drivers,PWM generators,high current LED drivers,touch switches,SPI/I 2C interfaces,USB drivers,Voice functions,RF functions,Telecom functions etc.Microcontroller devices meet with full industry specifications in having a wide voltage and temperature operating range and are provided in Mask,OTP and increasingly Flash type plementing its microcontrollers are Holtek many peripheral products such as Touch Switch ICs,LED driver ICs,Power Management ICs,etc.diversifying further the total product range and opening up the application areas into a wider market area.Product Development StrategyThe commitment of Holtek to new product development and innovation can be seen through its increasing device functionality.With its years of development experience in the microcontroller arena,Holtek has relentlessly striven to include market and customer functional demands in its new device releases.The integration of features such as voice,touch key and power management functions into its microcontroller range show this commitment to an ever increasing functional integration.While being rightly proud of its ever expanding array of industrial quality MCU devices,the company also provides a comprehensive range of hardware and software development tools to ease the designer ¢s product development process.In addition to its Microcontroller device range,Holtek will also continue to develop and release other peripheral devices in the communication,remote control,computer peripheral,memory,touch switch,power management,display driver,video and other product areas.Holtek ¢s obligation to ISO compliance and its string of innovation awards and intellectual properties provide further evidence of the company ¢s commitment to product development excellence.Marketing Service NetworkThe sustained commitment to research and development is fully complemented by the company ¢s strong global marketing focus giving the company a presence in most parts of the world.With an established large number of worldwide sales offices and agents,Holtek ¢s global marketing and promotional structure will see the company take an increasingly prominent role and be well placed to take advantage of any new market opportunities which may arise.Selecting Your Holtek DeviceAs the range of 8-bit microcontroller devices covers a vast range of types and functions,Holtek recommends that customers consult our on-line ²Product Selector ²to assist them in their selection of the best microcontroller for their specific application.As Holtek is continually releasing new products,it should be noted that the website version,rather than the printed version of the selection guide,will contain the most up to date product information.Holtek CompanyIntroductionContentsDisplay DriverMemoryCommunicationMiscellaneousMCU Programming ToolsHoltek is fully aware that success of their microcontroller device range also depends upon the availability of high quality development tools.As a result Holtek has developed a full suite of professional hardware and software tools to provide designers with an excellent set of development resources to ensure their applications are designed and debugged as efficiently as possible.In this section can be found details regarding which set of tools should be used for each microcontroller device.HT-IDE3000Development EnvironmentThe HT-IDE3000is a fully integrated development system for the Holtek range of microcontrollers.Working in conjunction with the HT-ICE hardware emulator,the HT-IDE3000system provides a user friendly workbench to ensure the process of application program development and debug is as efficient and trouble free as possible.By combining all software tools,such as editor,cross assembler, linker,library manager,symbolic debuggers as well as hardware tools,application designers have all the tools required at their disposal to ensure rapid development and debug of their new designs.An HT-IDE3000User¢s Guide is available for download from the Holtek website,which provides much more detailed information on the HT-IDE3000development system.The software functions of the development system include a user-friendly windows based workbench which integrates together func-tions such as program editor,cross assembler,linker and library manager.An additional feature of the system is its software simulation mode which enables the system to run without connection to the HT-ICE emulator hardware.The HT-IDE3000development system software is available for free download from the Holtek website.To ensure that users are pro-vided with the latest modifications and enhancements to the system and to support new device releases,Service Packs are regularly provided.HT-ICE¾Holtek In-Circuit EmulatorThe HT-ICEs are multi-featured hardware emulators to assist designers with the rapid development of their Holtek MCU applications. Their expansive integrated hardware and software features,provide designers with a full suite of tools for rapid and easy product devel-opment.At the heart of the system is the hardware emulator,which can fully emulate Holtek8-bit MCU devices in real time as well as providing full debug and trace integrated functions.The HT-ICE package includes the hardware mainboard platform,CD,flat cables, power adapter,power cord and printer cable.HT-ICE Interface CardFor Holtek's MCU development,dedicated HT-ICEs and their associated HT-ICE Interface Cards are provided.Please check the HT-ICE Interface Card Reference Manual for overall Interface Card information.Although most of the HT-ICE hardware emulators now come equipped with an integrated programmer,Holtek also supplies a range of additional tools for device programming.These programmers can be used to program OTP or Flash type devices during product devel-opment or for low to medium volume production purposes.Most of these programmers can operate by connecting to a PC or to operate in a stand alone mode.More information on the relevant programmers can be found within the programmer¢s Users Guide.Note that if the device package type to be programmed does not match the supplied Textool socket,extra Adapter Cards are available to accommo-date various device package types.Various kinds of OTP/Flash programmers exist,of which are included a partial-lock programmer and two-chips-in-one programmer, which support the MCU with partial lock function and two chips in one package respectively.Also,a Flash programmer provides the Flash devices programming functions.The detailed information is contained within HT-MTPWriter User¢s Guide.Product Application CombinationAccessories and Learning KitsA USB interface cable is available to allow the HT-ICE emulators to interface to the PC USB port rather than the standard printer port. Additionally a prototype board is available for the HT46and HT48R/C/F series of devices.A Starter Kit and Learner Kit is also available which can be used in place of the HT-ICE for product learning and application development purposes.The Holtek OTP/Flash Programmers and HT-ICE are supplied with a single Adapter Card into which the OTP/Flash devices can be placed for programming.However as the standard supplied Adapter Card my not fit all available package types,others are available.To enable selection of the appropriate Adapter Card type,the following table shows a cross reference between the Adapter Card part num-ber,device and package type.MCU Tools Indexing TableLocated here is the information regarding Holtek's microcontroller-based development tools.These include the HT-IDE3000Software, Holtek In-Circuit HT-ICE Emulator,HT-ICE Interface Card,OTP/Flash Programmer,OTP/Flash Adapter Card,Other Programmers,Ac-cessories and Learning Kits.For the convenience of users whose computer is not equipped with an LPT port,Holtek provides an HT-ICE USB cable allowing customers to connect the HT-ICE LPT connector to the computer USB port.The part number of this USB cable is CUSBICECABLE4A.Please contact us for purchasing details.Because Holtek provides a wide series of MCU devices,please refer to the Literature section for various user's manuals.The following table allows the correct tools to be quickly located against a device part number.In instances where tools are not listed for specific devices,this may infer that such tools are not required.Holtek Semiconductor assumes no responsibility for errors or omissions in this Selection Guide.THESE MATERIALS ARE PROVIDED "ASIS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. Holtek further does not warrant the accuracy and indirect,incidental or consequential damages, including without limitation, lost revenues or lost profits, which may result from use of these materials.Holtek's products are not authorized for use as critical components in life support devices or systems. Holtek may make changes to these materials, or to the products described therein, at any time without notice. Holtek makes no commitment to update the information contained Holtek Semiconductor Inc. (Shenzhen Sales Office)herein. For the most up-to-date information, Please visit our web site at .Holtek Semiconductor (USA), Inc. (North America Sale t s Office)46729 Fremont Blvd., Fremont, CA 94538Tel : 1-510-252-9880Fax : 1-510-252-9885Holtek Semiconductorn Inc. (Taipei Sales Office)4F-2, No. 3-2, YuanQu St., Nankang Software Park, Taipei 115, TaiwanTel:886-2-2655-7070Fax:886-2-2655-7373Fax:886-2-2655-7383 (International sales hot l ine)5F, Unit A, Productivity Building, No.5 Gaoxin M 2nd Road , Nanshan District, Shenzhen, China 518057Tel: 86-755-8616-9908, 8616-9308Fax: 86-755-8616-9722Holtek Semiconductor Inc. (Headquarters)No.3, Creation Rd. II, Science Park, Hsinchu,TaiwanTel:886-3-563-1999Fax:886-3-563-1189。
Holtek HT32F12345 32位单片机产品规格书说明书

HT32F12345产品规格书带Arm® Cortex®-M3内核以及1 MSPS ADC、USART、UART、SPI、I2C、I2S、MCTM、GPTM、BFTM、PDMA、CRC、RTC、WDT、EBI、SDIO和USB 2.0 FS高达64 KB Flash和16 KB SRAM的 Holtek 32-Bit单片机版本: V1.40 日期: 2020-08-03目录目录1 简介 (6)2 特性 (7)内核 (7)片上存储器 (7)Flash 存储器控制器 – FMC (7)复位控制单元 – RSTCU (7)时钟控制单元 – CKCU (8)电源管理 – PWRCU (8)外部中断/事件控制器 – EXTI (8)模数转换器 – ADC (8)模拟比较器 – CMP (9)I/O 端口 – GPIO (9)马达控制定时器 – MCTM (9)通用功能定时器 – GPTM (10)基本功能定时器 – BFTM (10)看门狗定时器 – WDT (10)实时时钟 – RTC .................................................................................................................................10内部集成电路 – I 2C . (11)串行外设接口 – SPI (11)通用同步异步收发器 – USART (11)通用异步收发器 – UART ..................................................................................................................12内置音频接口 – I 2S . (12)循环冗余校验 – CRC (12)外设直接访问内存 – PDMA (13)外部总线接口 – EBI (13)通用串行总线设备控制器 – USB (13)安全数字输入/输出 – SDIO (14)调试支持 (14)封装和工作温度 (14)3 概述 (15)单片机信息 (15)方框图 (16)存储器映射 (17)时钟结构 (20)4 引脚图 (21)目录5 电气特性 (28)极限参数 (28)建议直流工作条件 (28)片上LDO稳压器特性 (29)功耗 (29)复位和电源监控特性 (30)外部时钟特性 (31)内部时钟特性 (32)PLL特性 (32)USB PLL特性 (32)存储器特性 (33)I/O端口特性 (33)A/D转换器特性 (34)比较器特性 (35)GPTM/MCTM特性 (36)I2C特性 (36)SPI特性 (37)I2S特性 (39)SDIO特性 (41)USB特性 (42)6 封装信息 (44)SAW Type 46-pin QFN (6.5mm×4.5mm×0.75mm)外形尺寸 (45)48-pin LQFP (7mm×7mm) 外形尺寸 (46)64-pin LQFP (7mm×7mm) 外形尺寸 (47)表列表表列表表1. 特性及外设列表 (15)表2. 寄存器映射 (18)表3. 46-pin QFN ,48/64-pin LQFP 封装引脚图 (24)表4. 引脚描述 (26)表5. 极限参数 (28)表6. 建议直流工作条件 (28)表7. LDO 特性 (29)表8. 功耗特性 .........................................................................................................................................................29表9. V DD 电源复位特性 (30)表10. LVD/BOD 特性 (30)表11. 外部高速时钟 (HSE) 特性 (31)表12. 外部低速时钟 (LSE) 特性 (31)表13. 内部高速时钟 (HSI) 特性 (32)表14. 内部低速时钟 (LSI) 特性 (32)表15. PLL 特性 (32)表16. USB PLL 特性 (32)表17. Flash 存储器特性 (33)表18. I/O 端口特性 (33)表19. A/D 转换器特性 (34)表20. 比较器特性 (35)表21. GPTM/MCTM 特性......................................................................................................................................36表22. I 2C 特性 (36)表23. SPI 特性 ........................................................................................................................................................37表24. I 2S 特性 (39)表25. SDIO 特性 (41)表26. USB 直流电气特性 (42)表27. USB 交流电气特性 (43)图列表图列表图1. 方框图 (16)图2. 存储器映射 (17)图3. 时钟结构图 (20)图4. 46-pin QFN引脚图 (21)图5. 48-pin LQFP引脚图 (22)图6. 64-pin LQFP引脚图 (23)图7. A/D转换器采样网络模板 (35)图8. I2C时序图 (37)图9. SPI时序图 – SPI主机模式 (38)图10. SPI时序图 – SPI从机模式,CPHA = 1 (39)图11. I2S主机模式时序图 (40)图12. I2S从机模式时序图 (40)图13. SDIO默认模式 (41)图14. SDIO高速模式 (42)图15. USB信号上升时间、下降时间和交叉点电压(V CRS)定义 (43)1 简介1 简介HT32F12345的Holtek 单片机是一款基于Arm ®Cortex ®-M3处理器内核的32-bit 高性能低功耗单片机。
经典:合泰指令教学

A,[m] ; ACC与数据存储器做“或”运算,结果放入数据存储
A,[m] ; ACC与数据存储器做“异或”运算,结果放入数据存
A, x A, x A, x [m] [m]
;ACC与立即数做“与”运算,结果放入ACC ;ACC与立即数做“或”运算,结果放入ACC ;ACC与立即数做“异或”运算,结果放入ACC ;对数据存储器取反,结果放入数据存储器 ;对数据存储器取反,结果放入ACC
10
递增和递减
INCA INC
存储器 DECA DEC
存储器
[m] ;递增数据存储器,结果放入ACC [m] ; 递增数据存储器,结果放入数据
[m] ;递减数据存储器,结果放入ACC [m] ; 递减数据存储器,结果放入数据
11
移位
RRA RR RRCA RRC
存储器 RLA RL RLCA RLC
单片机指令概述
合泰单片机指令运用
了解指令,让编程序变得更容 易.
1
什么是单片机
单片机就是一块单片的计算机看起来就是一个黑块,他把计算机正常工 作所需要用的设备接口等全部集成在一个芯片上,并可以完成一些简 单的工作,这里举一个简单的例子让你了解单片机是什么是干什么功 能的,比如说你现在把一个led小灯,接在了单片机的P1.0引脚上,我 们要灯亮就给单片机一个setb P1.0的指令,我们要灯熄灭就给clr p1.0 灯就熄了。
3
单片机的应用场合
◆智能仪器仪表 单片机用于各种仪器仪表,一方面提高了仪器仪表的使用功能和精度,使仪器仪表智
能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表产品的升级换 代。如各种智能电气测量仪表、智能传感器等。 机电一体化产品是集机械技术、微电子技术、自动化技术和计算机技术于一体,具有 智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以发挥巨大的作用。 典型产品如机器人、数控机床、自动包装机、点钞机、医疗设备、打印机、传真机、复 印机等。 ◆实时工业控制 单片机还可以用于各种物理量的采集与控制。电流、电压、温度、液位、流量等物理 参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利用单片机作为系统 控制器,可以根据被控对象的不同特征采用不同的智能算法,实现期望的控制指标,从 而提高生产效率和产品质量。典型应用如电机转速控制、温度控制、自动生产线等 。 ◆家用电器 家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电冰箱、洗衣机、 电饭煲、高档洗浴设备、高档玩具等。 另外,在交通领域中,汽车、火车、飞机、航天器等均有单片机 的广泛应用。如汽车 自动驾驶系统、航天测控系统、黑匣子还有分 布式系统的前端模块等等 。
合泰单片机

HT16K23带Key Input LCD驱动文件编码:A N0276S简介HT16K23是一款带按键扫描功能的LCD驱动芯片,内建存储器及RC振荡电路,可同时驱动20×1 Key与20×4 LCD,支持I2C标准接口,只需两条信号线便可完成与MCU的通信功能。
本文以HT68F30为主控MCU,通过I2C通信协议控制HT16K23读取按键Data以及控制LCD显示,目的在于让用户更清楚地掌握HT16K23的特性和应用。
工作原理方框图图1 HT16K23内部框图表1 HT16K23 RAM Mapping of 20×4表2:HT16K23 RAM Mapping of 16×8由图1可知:HT16K23是一款具有按键扫描功能的LCD驱动芯片,基本特性如下:•HT16K23工作电压:2.4V~5.5V•内建RC振荡器•多种显示方式若选16 SEG & 8 COM显示方式,显示RAM为16×8-bit。
若选20 SEG & 4 COM显示方式,显示RAM为10×8-bit。
•两线I2C通信接口(HT16K23工作在从机方式,MCU工作在主机方式)•按键扫描功能若选16 SEG & 8 COM显示方式,最多提供16×1按键扫描。
若选20 SEG & 4 COM显示方式,最多提供20×1按键扫描。
•LCD Bias Circuit:可设定为1/3 bias、1/4 duty或1/4 bias、1/8 duty•可选硬件中断功能表1和表2分别为20 SEG & 4 COM 的RAM Mapping 和16 SEG&8COM 的RAM Mapping : • HT16K23 RAM 内部有个地址指针,当往某个地址写入或读取数据后,地址指针自动加1,指向下一个要写入或读取的地址 • 如表1所示,在20 SEG×4 COM 显示方式下,内存地址达到0x0AH 后,再次写入或读取数据时,地址将自动复位为00H • 如表2所示,在16 SEG×8 COM 显示方式下,内存地址达到0x0FH 后,再次写入或读取数据时,地址将自动复位为00H • 用户可以根据自己的需要,在RAM 内写入或读取相应的数据 其他: • 若选16 SEG & 8 COM 显示方式,LCD bias Circuit 设定为1/4 bias 、1/8 duty ,最多可选16个按键 • 若选20 SEG & 4 COM 显示方式,LCD bias Circuit 设定为1/3 bias 、1/4 duty ,最多可选20个按键 • SEG 脚与按键输入脚共用,按键RAM 地址为0x20~0x22,为只读寄存器,如表3所示 表3:按键按键寄存器寄存器操作操作说明说明主控MCU 通过I 2C 通信方式实现对HT16K23进行配置及数据传输 (传输方式为MSB 方式即高位先传)。
HT指令集说明

HOLTEK指令集说明指令集说明注由于资源大小问题其中以下几款MCU只有62条指令其余均为63条指令HT48CA0/HT48RA0A 无RETI指令HT48R05A-1 无TABRDL指令指令寻址方式有下面5种立即寻址此一寻址法是将立即的常数值紧跟在运算码 (opcode) 后例如MOV A,33H33HADD A,直接寻址直接寻址的情況只允许在存储器之间作数据传送例如AMOV [33H],CLR [33H]间接寻址在间接寻址方式中必定要使用到间接寻址暂存器(R0R1)例如AMOV R0,MOV A,R0特殊暂存器寻址此一寻址方式完全是针对某一暂存器作运算例如CLR WDTCLR WDT1指针寻址指针寻址只适用在配合做查表指令例如02HMOV A,AMOV TBLP,指令集摘要助记符 说明指令周期影响标志位算术运算 ADD A, [m] 累加器与数据存储器相加结果放入累加器 1 Z,C,AC,OVADDM A, [m] 累加器与数据存储器相加结果放入数据存储器 11Z,C,AC,OVADD A, x 累加器与立即数相加结果放入累加器1 Z,C,AC,OV ADC A, [m] 累加器与数据存储器进位标志相加结果放入累加器 1 Z,C,AC,OVADCM A, [m] 累加器与数据存储器进位标志相加结果放入数据存储器 11Z,C,AC,OVSUB A, x 累加器与立即数相减结果放入累加器1 Z,C,AC,OV SUB A, [m] 累加器与数据存储器相减结果放入累加器 1 Z,C,AC,OVSUBM A, [m] 累加器与数据存储器相减结果放入数据存储器11Z,C,AC,OVSBC A, [m] 累加器与数据存储器进位标志相减结果放入累加器 1 Z,C,AC,OVSBCM A, [m] 累加器与数据存储器进位标志相减结果放入数据存储器 11 Z,C,AC,OVDAA[m]将加法运算后放入累加器的值调整为十进制数并将结果放入数据存储器11C逻辑运算AND A, [m] 累加器与数据存储器做与运算结果放入累加器 1 Z OR A, [m] 累加器与数据存储器做或运算结果放入累加器 1 Z XOR A, [m] 累加器与数据存储器做异或运算结果放入累加器 1 ZANDM A, [m] 累加器与数据存储器做与运算结果放入数据存储器 11ZORM A, [m] 累加器与数据存储器做或运算结果放入数据存储器 11ZXORM A, [m] 累加器与数据存储器做异或运算结果放入数据存储器 11ZAND A, x 累加器与立即数做与运算结果放入累加器 1 Z OR A, x 累加器与立即数做或运算结果放入累加器 1 Z XOR A, x 累加器与立即数做异或运算结果放入累加器 1 ZCPL [m] 对数据存储器取反结果放入数据存储器 11ZCPLA [m] 对数据存储器取反结果放入累加器 1 Z 递增和递减 INCA [m] 数据存储器的内容加1结果放入累加器 1 ZINC [m] 数据存储器的内容加1结果放入数据存储器 11ZDECA [m] 数据存储器的内容减1结果放入累加器 1 ZDEC [m] 数据存储器的内容减1结果放入数据存储器11Z移位 RRA [m] 数据存储器右移一位结果放入累加器1无RR [m] 数据存储器右移一位结果放入数据存储器 11无RRCA [m] 带进位将数据存储器右移一位结果放入累加器 1 CRRC [m] 带进位将数据存储器右移一位结果放入数据存储器 11CRLA [m] 数据存储器左移一位结果放入累加器1 无RL [m] 数据存储器左移一位结果放入数据存储器 11 无RLCA [m] 带进位将数据存储器左移一位结果放入累加器 1 CRLC [m] 带进位将数据存储器左移一位结果放入数据存储器 11C数据传送MOV A, [m] 将数据存储器送至累加器 1 无MOV [m], A 将累加器送至数据存储器 11无MOV A, x 将立即数送至累加器 1 无 位运算CLR [m]. i 将数据存储器的第i 位清0 11 无SET [m]. i 将数据存储器的第i 位置111无助记符 说明指令周期 影响标志位转移 JMP addr 无条件跳转2 无SZ [m] 如果数据存储器为0则跳过下一条指令 12 无SZA [m] 数据存储器送至累加器如果内容为0则跳过下一条指令12 无SZ [m]. i 如果数据存储器的第i 位为0则跳过下一条指令 12 无SNZ [m]. i 如果数据存储器的第i 位不为0则跳过下一条指令 12 无SIZ [m] 数据存储器加1如果结果为0则跳过下一条指令13 无SDZ [m] 数据存储器减1如果结果为0则跳过下一条指令 13 无SIZA [m] 数据存储器加1将结果放入累加器如果结果为0则跳过下一条指令12无SDZA[m]数据存储器减1将结果放入累加器如果结果为0则跳过下一条指令 12无 CALL addr 子程序调用 2 无 RET 从子程序返回2 无 RET A, x 从子程序返回并将立即数放入累加器 2 无 RETI 从中断返回2无查表TABRDC [m] 读取当前页的ROM 内容并送至数据存储器和TBLH 21 无TABRDL [m] 读取最后页的ROM 内容并送至数据存储器和TBLH 21无其它指令 NOP 空指令1无CLR [m] 清除数据存储器 11无SET [m] 置位数据存储器 11 无CLR WDT 清除看门狗定时器 1 TO,PDCLR WDT1 预清除看门狗定时器 1 TO 4,PD 4CLR WDT2 预清除看门狗定时器1 TO 4,PD 4SWAP [m] 交换数据存储器的高低字节结果放入数据存储器 11 无SWAPA [m] 交换数据存储器的高低字节结果放入累加器 1 无HALT进入暂停模式 1 TO,PD注x立即数m 数据存储器地址 A 累加器ACC i第0~7位addr程序存储器地址 影响标志位不影响标志位1如果数据是加载到PCL 寄存器则指令执行周期会被延长一个指令周期四个系统时钟2如果满足跳跃条件则指令执行周期会被延长一个指令周期四个系统时钟否则指令执行周期不会被延长31和24如果执行CLW WDT1或CLR WDT2指令后看门狗定时器被清除则会影响TO 和PD 标志位否则不会影响TO 和PD 标志位[m] 累加器与数据存储器进位标志相加结果放入累加器ADC A,说明本指令把累加器数据存储器值以及进位标志相加结果存放到累加器运算过程ACC ACC+[m]+C影响标志位TC2 TC1 TO PD OV Z AC CADCM A, [m] 累加器与数据存储器进位标志相加结果放入数据存储器说明本指令把累加器数据存储器值以及进位标志相加结果存放到存储器运算过程[m] ACC+[m]+C影响标志位TC2 TC1 TO PD OV Z AC C[m] 累加器与数据存储器相加结果放入累加器ADD A,说明本指令把累加器数据存储器值相加结果存放到累加器运算过程ACC ACC+[m]影响标志位TC2 TC1 TO PD OV Z AC Cx 累加器与立即数相加结果放入累加器ADD A,说明本指令把累加器值和立即数相加结果存放到累加器运算过程ACC ACC+X影响标志位TC2 TC1 TO PD OV Z AC CADDM A, [m] 累加器与数据存储器相加结果放入数据存储器说明本指令把累加器数据存储器值相加结果放到数据存储器运算过程[m] ACC+[m]影响标志位TC2 TC1 TO PD OV Z AC C[m] 累加器与数据存储器做与运算结果放入累加器AND A,说明本指令把累加器值数据存储器值做逻辑与结果存放到累加器运算过程ACC ACC “AND” [m]影响标志位TC2 TC1 TO PD OV Z AC Cx 累加器与立即数做与运算结果放入累加器AND A,说明本指令把累加器值立即数做逻辑与结果存放到累加器运算过程ACC ACC “AND” X影响标志位TC2 TC1 TO PD OV Z AC CANDM A, [m] 累加器与数据存储器做与运算结果放入数据存储器说明本指令把累加器值数据存储器值做逻辑与结果放到数据存储器运算过程ACC ACC “AND” [m]影响标志位TC2 TC1 TO PD OV Z AC CCALL addr 子程序调用说明本指令直接调用地址所在处的子程序此时程序计数器加一将此程序计数器值存到堆栈寄存器中再将子程序所在处的地址存放到程序计数器中运算过程Stack PC+1PC addr影响标志位TC2 TC1 TO PD OV Z AC C[m] 清除数据存储器CLR说明本指令将数据存储器内的数值清零运算过程[m] 00H影响标志位TC2 TC1 TO PD OV Z AC CCLR [m] . i 将数据存储器的第i位清0说明本指令将数据存储器内第i位值清零运算过程[m].i 0影响标志位TC2 TC1 TO PD OV Z AC CCLR WDT 清除看门狗定时器说明本指令清除WDT计数器从0开始重新计数暂停标志位PD和看门狗溢出标志位TO也被清零运算过程WDT 00HPD&TO 0影响标志位TC2 TC1 TO PD OV Z AC C0 0CLR WDT1 预清除看门狗定时器说明必须搭配CLR WDT2一起使用才可清除WDT计时器从0开始重新计数当程序只执行过该指令没有执行CLR WDT2时系统只会不会将暂停标志位PD和计数溢出位TO清零PD与TO保留原状态不变运算过程WDT 00H*PD&TO 0*影响标志位TC2 TC1 TO PD OV Z AC C0* 0*CLR WDT2 预清除看门狗定时器说明必须搭配CLR WDT1一起使用才可清除WDT计时器从0开始重新计数当程序只执行过该指令没有执行CLR WDT1时系统只会不会将暂停标志位PD和计数溢出位TO清零PD与TO保留原状态不变运算过程WDT 00H*PD&TO 0*影响标志位TC2 TC1 TO PD OV Z AC C0* 0*CPL [m] 对数据存储器取反结果放入数据存储器说明本指令是将数据存储器内保存的数值取反运算过程[m] [m]影响标志位TC2 TC1 TO PD OV Z AC CCPLA [m] 对数据存储器取反结果放入累加器说明本指令是将数据存储器内保存的值取反后结果存放在累加器中运算过程ACC [m]影响标志位TC2 TC1 TO PD OV Z AC C[m] 将加法运算后放入累加器的值调整为十进制数并将结果放入数据存储器DAA说明本指令将累加器高低四位分别调整为BCD码如果低四位的值大于9或AC=1那么BCD调整就执行对原值加6并且内部进位标志AC1=AC即AC求反否则原值保持不变如果高四位的值大于9或C=1那么BCD调整就执行对原值加6再加AC1并把C置位否则BCD调整就执行对原值加AC1C的值保持不变结果存放到数据存储器中只有进位标志位C受影响操作如果ACC.3~ACC.0 > 9 或AC=1那么 [m].3~[m].0 ACC.3~ACC.0 +6AC1=AC否则 [m].3~[m].0 ACC.3~ACC.0 AC1=0并且如果ACC.7~ACC.4+AC1 > 9 或C=1那么 [m].7~[m].4 ACC.7~ACC.4 +6+ AC1C=1否则 [m].7~[m].4 ACC.7~ACC.4 + AC1C=C影响标志位TC2 TC1 TO PD OV Z AC C[m] 数据存储器的内容减1结果放入数据存储器DEC说明本指令将数据存储器内的数值减一再放回数据存储器运算过程[m] [m]-1影响标志位TC2 TC1 TO PD OV Z AC CDECA [m]数据存储器的内容减1结果放入累加器说明本指令将存储器内的数值减一,再放到累加器运算过程ACC [m]-1影响标志位TC2 TC1 TO PD OV Z AC CHALT 进入暂停模式说明本指令终止程序执行并关掉系统时钟RAM和寄存器内的数值保持原状态WDT计数器清0暂停标志位PD被设为1 WDT计数溢出位TO被清为0运算过程PC PC+1PD 1TO 0影响标志位TC2 TC1 TO PD OV Z AC C0 1INC [m]数据存储器的内容加1结果放入数据存储器说明本指令将数据存储器内的数值加一,结果放回数据存储器运算过程[m] [m]+1影响标志位TC2 TC1 TO PD OV Z AC CINCA [m] 数据存储器的内容加1结果放入数据存储器说明本指令是将存储器内的数值加一,结果放到累加器运算过程ACC [m]+1影响标志位TC2 TC1 TO PD OV Z AC CJMP addr 无条件跳转说明本指令是将要跳到的目的地直接放到程序计数器内运算过程PC addr影响标志位TC2 TC1 TO PD OV Z AC C [m] 将数据存储器送至累加器MOV A,说明本指令是将数据存储器内的数值送到累加器内运算过程ACC [m]影响标志位TC2 TC1 TO PD OV Z AC C MOV A,x 将立即数送至累加器说明本指令是将立即数送到累加器内运算过程ACC X影响标志位TC2 TC1 TO PD OV Z AC CA 将累加器送至数据存储器MOV [m],说明本指令是将累加器值送到数据存储器内运算过程[m] ACC影响标志位TC2 TC1 TO PD OV Z AC CNOP 空指令说明本指令不作任何运算而只将程序计数器加一运算过程PC PC+1影响标志位TC2 TC1 TO PD OV Z AC COR A, [m] 累加器与数据存储器做或运算结果放入累加器说明本指令是把累加器数据存储器值做逻辑或结果放到累加器运算过程ACC ACC “OR” [m]影响标志位TC2 TC1 TO PD OV Z AC COR A, x 累加器与立即数做或运算结果放入累加器说明本指令是把累加器值立即数做逻辑或结果放到累加器运算过程ACC ACC “OR” X影响标志位TC2 TC1 TO PD OV Z AC C[m] 累加器与数据存储器做或运算结果放入数据存储器ORM A,说明本指令是把累加器值存储器值做逻辑或结果放到数据存储器运算过程ACC ACC “OR” [m]影响标志位TC2 TC1 TO PD OV Z AC CRET 从子程序返回说明本指令是将堆栈寄存器中的程序计数器值送回程序计数器运算过程PC Stack影响标志位TC2 TC1 TO PD OV Z AC Cx 从子程序返回并将立即数放入累加器RET A,说明本指令是将堆栈寄存器中的程序计数器值送回程序计数器并将立即数送回累加器运算过程PC StackACC X影响标志位TC2 TC1 TO PD OV Z AC CRETI 从中断返回说明本指令是将堆栈寄存器中的程序计数器值送回程序计数器与RET不同的是它使用在中断程序结束返回时它还会将中断控制寄存器INTC的0位EMI中断允许位置1允许中断服务运算过程PC StackEMI 1影响标志位TC2 TC1 TO PD OV Z AC CRL [m] 数据存储器左移一位结果放入数据存储器说明本指令是将数据存储器内的数值左移一位第7位移到第0位结果送回数据存储器运算过程[m].0 [m].7, [m].i+1 [m].i :i=0~6影响标志位TC2 TC1 TO PD OV Z AC C[m] 数据存储器左移一位结果放入累加器RLA说明本指令是将存储器内的数值左移一位第7位移到第0位结果送到累加器而数据存储器内的数值不变运算过程ACC.0 [m].7, ACC.i+1 [m].i :i=0~6影响标志位TC2 TC1 TO PD OV Z AC C[m] 带进位将数据存储器左移一位结果放入数据存储器RLC说明本指令是将存储器内的数值与进位位左移一位第7位取代进位标志进位标志移到第0位结果送回数据存储器运算过程[m].i+1 [m].i :i=0~6[m].0 CC [m].7影响标志位TC2 TC1 TO PD OV Z AC CRLCA [m] 带进位将数据存储器左移一位结果放入累加器说明本指令是将存储器内的数值与进位位左移一位第七位取代进位标志进位标志移到第0位结果送回累加器运算过程ACC.i+1 [m].i :i=0~6ACC.0 CC [m].7影响标志位TC2 TC1 TO PD OV Z AC CRR [m] 数据存储器右移一位结果放入数据存储器说明本指令是将存储器内的数值循环右移第0位移到第7位结果送回数据存储器运算过程[m].7 [m].0, [m].i [m].i+1 : i=0~6影响标志位TC2 TC1 TO PD OV Z AC C[m] 数据存储器右移一位结果放入累加器RRA说明本指令是将数据存储器内的数值循环右移第0位移到第7位结果送回累加器而数据存储器内的数值不变运算过程ACC.7 [m].0, ACC.i [m].i+1 :i=0~6影响标志位TC2 TC1 TO PD OV Z AC C[m] 带进位将数据存储器右移一位结果放入数据存储器RRC说明本指令是将存储器内的数值加进位位循环右移第0位取代进位标志进位标志移到第7位结果送回存储器运算过程[m].i [m].i+1 :i=0~6[m]. 7 CC [m].0影响标志位TC2 TC1 TO PD OV Z AC CRRCA [m] 带进位将数据存储器右移一位结果放入累加器说明本指令是将数据存储器内的数值加进位位循环右移第0位取代进位标志进位标志移到第7位结果送回累加器数据存储器内的数值不变运算过程ACC.i [m].i+1i=0~6ACC.7 CC [m].0影响标志位TC2 TC1 TO PD OV Z AC CSBC A,[m] 累加器与数据存储器进位标志相减结果放入累加器说明本指令是把累加器值减去数据存储器值以及进位标志的取反结果放到累加器运算过程ACC ACC+[m]+ C影响标志位TC2 TC1 TO PD OV Z AC CSBCM A,[m] 累加器与数据存储器进位标志相减结果放入数据存储器说明本指令是把累加器值减去数据存储器值以及进位标志取反结果放到数据存储器运算过程[m] ACC+[m]+C影响标志位TC2 TC1 TO PD OV Z AC CSDZ [m] 数据存储器减1如果结果为0则跳过下一条指令说明本指令是把数据存储器内的数值减1判断是否为0若为0则跳过下一条指令即如果结果为零放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以取得正确的指令二个指令周期否则执行下一条指令一个指令周期运算过程如果[m]-1=0跳过下一条指令执行再下一条影响标志位TC2 TC1 TO PD OV Z AC CSDZA [m] 数据存储器减1将结果放入累加器如果结果为0则跳过下一条指令说明本指令是把数据存储器内的数值减1判断是否为0, 为0则跳过下一行指令并将减完后数据存储器内的数值送到累加器,而数据存储器内的值不变即若结果为0放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以取得正确的指令二个指令周期否则执行下一条指令一个指令周期运算过程如果[m]-1=0跳过下一条指令执行再下一条ACC [m]-1影响标志位TC2 TC1 TO PD OV Z AC CSET [m] 置位数据存储器说明本指令是把存储器内的数值每个位置为1运算过程[m] FFH影响标志位TC2 TC1 TO PD OV Z AC CSET [m]. i 将数据存储器的第i位置1说明本指令是把存储器内的数值的第i位置为1运算过程[m].i 1影响标志位TC2 TC1 TO PD OV Z AC CSIZ [m] 数据存储器加1如果结果为0则跳过下一条指令说明本指令是把数据存储器内的数值加1判断是否为0若为0跳过下一条指令即放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以取得正确的指令二个指令周期否则执行下一条指令一个指令周期运算过程如果[m]+1=0跳过下一行指令[m] [m]+1影响标志位TC2 TC1 TO PD OV Z AC CSIZA 数据存储器加1将结果放入累加器如果结果为0则跳过下一条指令说明本指令是把数据存储器内的数值加1判断是否为0, 若为0跳过下一条指令即放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以取得正确的指令二个指令周期并将加完后存储器内的数值送到累加器而数据存储器的值保持不变否则执行下一条指令一个指令周期运算过程如果[m]+1=0跳过下一行指令ACC [m]+1影响标志位TC2 TC1 TO PD OV Z AC CSNZ [m]. i 如果数据存储器的第i位不为0则跳过下一条指令说明本指令是判断数据存储器内的数值的第i位, 若不为0则程序计数器再加1, 跳过下一行指令放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以取得正确的指令二个指令周期否则执行下一条指令一个指令周期运算过程如果[m].i≠0跳过下一行指令影响标志位TC2 TC1 TO PD OV Z AC CSUB A, [m] 累加器与数据存储器相减结果放入累加器说明本指令是把累加器值数据存储器值相减结果放到累加器运算过程ACC ACC+[m]+1影响标志位TC2 TC1 TO PD OV Z AC CSUB A, x 累加器与立即数相减结果放入累加器说明本指令是把累加器值立即数相减结果放到累加器运算过程ACC ACC+X+1影响标志位TC2 TC1 TO PD OV Z AC CSUBM A, [m] 累加器与数据存储器相减结果放入数据存储器说明本指令是把累加器值存储器值相减结果放到存储器运算过程[m] ACC+[m]+1影响标志位TC2 TC1 TO PD OV Z AC CSWAP [m] 交换数据存储器的高低字节结果放入数据存储器说明本指令是将数据存储器的低四位和高四位互换,再将结果送回数据存储器运算过程[m].7~[m].4<-V1↔[m].3~[m].0影响标志位TC2 TC1 TO PD OV Z AC CSWAPA [m] 交换数据存储器的高低字节结果放入累加器说明本指令是将数据存储器的低四位和高四位互换再将结果送回累加器运算过程ACC.3~ACC.0 [m].7~[m].4ACC.7~ACC.4 [m].3~[m].0影响标志位TC2 TC1 TO PD OV Z AC CSZ [m] 如果数据存储器为0则跳过下一条指令说明本指令是判断数据存储器内的数值是否为0为0则跳过下一行指令即放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以得正确的指令二个指令周期否则执行下一条指令一个指令周期运算过程如果[m] = 0, 跳过下一行指令影响标志位TC2 TC1 TO PD OV Z AC CSZA [m] 数据存储器送至累加器如果内容为0则跳过下一条指令说明本指令是判断存储器内的数值是否为0若为0则跳过下一行指令即放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以得正确的指令二个指令周期并把存储器内值送到累加器而存储器的值保持不变否则执行下一条指令一个指令周期运算过程如果[m] = 0跳过下一行指令并ACC [m]影响标志位TC2 TC1 TO PD OV Z AC CSZ [m]. i 如果数据存储器的第i位为0则跳过下一条指令说明本指令是判断存储器内第i位值是否为0若为0则跳过下一行指令即放弃在目前指令执行期间所取得的下一条指令并插入一个空周期用以得正确的指令二个指令周期否则执行下一条指令一个指令周期运算过程如果[m].i = 0跳过下一行指令影响标志位TC2 TC1 TO PD OV Z AC CTABRDC [m] 读取ROM当前页的内容并送至数据存储器和TBLH说明本指令是将表格指针指向程序寄存器当前页将低位送到存储器高位直接送到TBLH寄存器内运算过程[m] 程序存储器低四位TBLH 程序存储器高四位影响标志位TC2 TC1 TO PD OV Z AC CTABRDL [m] 读取ROM最后一页的内容并送至数据存储器和TBLH说明本指令是将TABLE指针指向程序寄存器最后页将低位送到存储器高位直接送到TBLH寄存器内运算过程[m] 程序存储器低四位TBLH 程序存储器高四位影响标志位TC2 TC1 TO PD OV Z AC C[m] 累加器与立即数做异或运算结果放入累加器XOR A,说明本指令是把累加器值数据存储器值做逻辑异或结果放到累加器运算过程ACC ACC “XOR” [m]影响标志位TC2 TC1 TO PD OV Z AC CXORM A, [m] 累加器与数据存储器做异或运算结果放入数据存储器说明本指令是把累加器值数据存储器值做逻辑异或结果放到数据存储器运算过程[m] ACC “XOR” [m]影响标志位TC2 TC1 TO PD OV Z AC Cx 累加器与数据存储器做异或运算结果放入累加器XOR A,说明本指令是把累加器值与立即数做逻辑异或结果放到累加器运算过程ACC ACC “XOR” X影响标志位TC2 TC1 TO PD OV Z AC C。
合泰单片机C语言教程讲解

Holtek 微控制器應用範例–使用Holtek C 語言目錄第一章內容簡介第二章選定Holtek C 語言的使用環境2.1 進入HT-IDE3000 建立新的專案時, 選定Holtek C 編譯器2.2 已開啟專案後, 選用Holtek C 編譯器第三章微控制器C 語言程式的速成3.1 定義主函式main()3.2定義副函式(sub-function)3.3定義全域變數(global variable)3.4定義中斷服務函式(Interrupt Service Routine : ISR)3.5 其他第四章 C 語言程式4.1 C 程式架構4.2 開始用C 語言設計一個程式4.2.1 定義主函式main4.2.2 將標頭檔引入(include a header file)4.2.3 定義文字符號及變數4.2.4 設定微控制器及裝置的初始狀態4.2.5 設計子函式4.2.6 設計中斷服務函式4.3變數(variable) 及資料型態(data type)4.3.1 變數名4.3.2 資料型態4.3.3 變數的有效範圍(scope)4.3.4 變數的資料型態(data type)整數型(integer)浮點型(floating point)4.3.5 bit 資料型態4.3.6儲存類別(storage class) 與修飾詞(qualifier)儲存類別(storage class)修飾詞(qualifier)4.3.7絕對變數(absolute variable)4.3.8常數(constant)4.3.9指標(pointer) 與陣列(array)指標的運算子& 與*陣列(array)4.3.10結構(struct) 與等位(union)結構的運算子-> 與.4.4運算子(Operators)運算前的型態轉換4.5程式流程控制(program flow control)4.5.1if-else 敘述4.5.2switch 敘述4.5.3for 敘述4.5.4while 敘述4.5.5do-while 敘述4.5.6goto 敘述4.5.7break 與continue 敘述4.6函式(Functions)4.6.1參數(arguments)4.6.2返回值(return values)4.7中斷服務函式(Interrupt Service Routines)4.8在C 語言程式中嵌入組合語言(in-line assembly code)從組合語言的程式去存取 C 語言的物件(變數)4.9前置處理指令(Preprocessor)4.9.1 定義文字符號(#define)4.9.2引入檔案(#include)4.9.3內嵌組合語言(inline assembly)4.9.4 條件式編譯(#if/#endif)4.9.5 編譯器的特殊選項pragma4.10Holtek C 編譯器的內建函式(built-in functions)第五章基本 C 語言程式5.1 語法觀念5.2 迴圈的應用(loop)5.3 撰寫MCU 應用程式的注意事項5.4 可供微控制器應用程式使用的範本5.5 設計微控制器應用程式的小技巧第六章程式範例–初級6.1LED 跑馬燈6.2LED 霹靂燈6.3 單顆七段顯示器6.4 5*5 點矩陣LED 顯示6.5 HT48 微控制器控制HT1621 LCD 的顯示6.6 HT48 微控制器控制LCD 模組的顯示6.7 具LCD 驅動功能的微控制器之顯示應用程式– HT46R636.8 顯示器的通用函式– HT44780 LCM6.9 鍵盤掃描程式第七章程式範例–中斷函式7.1 用時鐘控制LED 的亮與滅7.2 類比/數位轉換(ADC) 的應用第八章HT46R52A 應用於鎳氫電池充電器(HA0084T)第九章程式範例– HT46R74D-1 胎壓計(HA0105T)第一章內容簡介盛群半導體公司(Holtek)開發一系列的八位元微控制器(micro-controller, MCU). 當開發微控制器的應用程式時, 除了可使用盛群提供的組合語言(assembly language),也可使用標準的C 語言編譯器(C compiler).由於八位元微控制器的記憶體空間, 不論是程式記憶體(program memory space)或是資料記憶體(ram memory space), 皆是有限制的, 通常會使用組合語言開發應用程式. 但是越來越多的微控制器支援更多的記憶體以及更多的功能, 使得程式也相對的擴大. 如果仍然使用組合語言開發程式, 不但費時費力, 未來在維護及擴增功能的工作上也相當困難.因此, 使用高階程式語言, 例如C 語言, 來開發應用程式就是一種可行的趨勢.C 語言是高階程式語言中的一種, 它具有高度的的可讀性及可移植性(portability),除了能夠快速地完成應用程式的開發與偵錯, 也很容易移植到其他的微控制器上. 當程式需要縮減或擴充功能時, 也很容易的完成, 因此很適合於微控制器的程式開發.本書主要是以Holtek C 語言為主, 說明如何使用Holtek C 語言撰寫盛群微控制器的應用程式, 包括 C 的程式架構, C 語言的一般用法, 特殊用法及應用範例書中將說明在開發微控制器的應用程式時需要注意的地方及如何撰寫會比較恰當, 並配以實例解釋.讀者可以參考修改或直接採用到自己的程式中, 再用發展工具HT-ICE, HT-IDE3000 驗證之.第二章介紹選用Holtek C 編譯器的步驟, 指引HT-IDE3000 呼叫Holtek C 編譯器去編譯C 語言的原始程式.第三章提供一種快速撰寫 C 程式的方法, 對ANSI C 語言熟悉的用者, 可於閱讀本章之後即開始撰寫微控制器的 C 語言程式第四章介紹C 語言, 未曾使用過 C 語言的讀者應仔細閱讀本章以了解 C 語言的用法第五章介紹使用 C 語言寫程式的基本觀念, 注意事項及建議的寫作方法第六章到第九章則是應用範例, 針對盛群各系列的微控制器, 以 C 語言撰寫的應用程式. 包含有功能說明, 應用電路及程式說明.文件編號版別 1.20日期2008/5/26 第5 頁共189 頁第二章選定Holtek C 編譯器的使用環境2.1 進入HT-IDE3000, 建立新的專案時, 選定Holtek C 編譯器進入HT-IDE3000 開發環境後, 依照下列方法建立一個新的專案(project)→ 移動滑鼠游標到Project 選單, 按左鍵→ 移動滑鼠游標到New 命令, 按左鍵→ 出現如下的視窗, 在Language Tool 之處勾選Enhanced Holtek C compiler/Assembler文件編號版別 1.20日期2008/5/26 第6 頁共189 頁2.2 已開啟專案後, 如何選用Holtek C 編譯器若專案(project) 已開啟之後, 可以點選(click) Option 選單下的Project Setting 命令,在Language Tool 中點選Enhanced Holtek C Compiler/Assembler 以設定使用Holtek C 的Enhance 版編譯器Enhance 版的C compiler 包括ehcc32srsc.exe , ehcc32mrsc.exe 與ehcc32mrmc.exe 三個執行檔此版本必須在HT-IDE3000 V7.0 或以上的系統才能執行第三章微控制器 C 語言程式的速成本章介紹如何快速撰寫微控制器的 C 語言應用程式. 已熟悉ANSI C 標準語言的用法或有撰寫的經驗者, 在閱讀此章後即可開始設計撰寫微控制器的 C 應用程式, 以下各節是基本的C 程式成員, 某些是必須要有的, 如3.1, 其他的則視微控制器的功能及應用來決定是否需要3.1 定義主函式main()#include “ht46r63.h”void main(void){int Flag ;……TurnOn_LCD() ;Flag = LCD_display(cstr) ;TurnOff_LCD() ;……}主函式的返回資料型態(return type)必須是void, 而且不能有參數檔案ht46r63.h 定義與微控制器有關的常數, 例如暫存器的位址定義, 將之引入(include) 可增加程式的可讀性.3.2定義副函式(sub-function)視程式的大小及功能決定是否需要定義副函式. 基本上, 主函式應將應用程式的架構做成模組化, 不需要將所有的程式皆放在主函式中. 為了能很快的完成及了解應用程式, 主函式中只需要包含(呼叫) 定義各功能的副函式即可, 無論在設計或維護程式時皆能很快的進入與完成.例如, 關於LCD 的開啟, 顯示及關閉等功能就可分別定義為單獨的副函式, 如下例. 任何其他的函式或其他的應用專案都可去呼叫這些副函式. 若設計成通用型的, 也可藉由程式館管理器(Library Manager) 將之建入程式館檔案, 以供其他應用專案使用.void TurnOn_LCD(void){}int LCD_display(char *cstr){}void TurnOff_LCD(void){}3.3定義全域變數(global variable)程式在運行中會需要一些變數做為資料存放的地方, 由於微控制器資料記憶體大小的限制及C 編譯器的設計, 最好將常需使用的變數定義為全域型的變數, 在編譯程式的大小與執行上皆較佳. 例如定義常數型指標變數cstr 指到字串“Hello!”, 則可如下const char *cstr = “Hello!” ;3.4定義中斷服務函式(Interrupt Service Routine : ISR) 若微控制器的周邊裝置具有中斷功能,程式也需要此中斷機能以完成工作時, 則必須定義此周邊裝置的中斷服務函式(Interrupt Service Routine, ISR), 如下的格式#pragma vector ISR_tmr0 @ 0x0cvoid ISR_tmr0(void){tick++ ;}中斷服務函式必須遵守下列規定→ 返回的資料型態必須是void→ 不能有參數(必須為void)→ 必須使用前置處理指令#pragma vector 設定中斷向量值(interrupt vector), 在函式名稱(本例子是ISR_tmr0) 之後加上@ 及中斷向量值(本例是0x0c). 也可使用先前定義好的常數, 例如#define VECTOR_TMR0 0x0c#pragma vector ISR_tmr0 @ VECTOR_TMR0void ISR_tmr0(void){}3.5 其他上述的主函式, 副函式及中斷服務函式不需要定義在同一個原始程式檔案內. 為縮短編譯的時間, 最好是分別定義在不同的檔案中, 並使用有意義的檔名, 方便日後找尋所要的函式.第四章 C 程式語言基本上, Holtek C 是仿ANSI (美國國家標準局) 標準的 C 語言, 為配合盛群八位元微控制器的架構, 將提供一些特殊的語法去存取或控制微控制器的資源. 另外, 本章會從八位元微控制器的角度, 說明如何使用 C 語言設計及撰寫微控制器的應用程式4.1 C 程式架構C 語言的程式是由敘述(statements) 所組成, 每個敘述的最後必須有分號‘;’ 做為結束符號.敘述分為四類:→ 宣告(declaration), 宣告變數及資料型態, 資料結構.例如char flag, tick_cnt ; // 宣告變數flag 與tick_cnt 為char 型態→ 定義(definition), 定義變數數值及位址例如int total = 10 ; // 定義變數total, 設定值為10→ 描述式(expression), 執行數學及邏輯運算, 控制程式的流程例如count = ( input > 10) ? 10 : input ;→ 函式呼叫(function), 執行函式的功能例如putchar(ch) ; // 寫出一個字元到輸出口每個敘述可以附加註解做說明. C 編譯器不會對註解做編譯, 下列為兩種可被接受的註解→ 介於符號/* 與符號*/ 之間的數據及文字, 包括換行字‘\n’如果/* 與*/ 不在同一行, 則其間所有的行皆會被視為註解例如/* this is a comment 1 */→ 從符號// 開始到本行的結束皆被視為註解例如// 這是註解的新寫法在 C 語言中, 程式執行區(program block)是以函式的格式定義, 因此, 所有要執行的敘述皆需定義(包含)於某個函式(function) 中, 例如描述式.4.2 開始用C 語言設計一個程式依照下列步驟¸使用 C 語言實作一個簡單的應用程式4.2.1 定義主函式main範例void main(void){}在 C 語言中, 主函式main 是程式執行的起點, 有如組合語言程式中的startORG 00jmp startstart :void 是資料型態, main 與void 皆是保留字, 必須用此字, 小寫字母4.2.2 將標頭檔引入(include a header file)範例#include “ht46r63.h”// 引入標頭檔ht46r63.hvoid main(void){}標頭檔ht46r63.h 中定義許多與微控制器有關的變數及文字符號(symbol). 接下來寫程式時可以使用這些變數與文字符號(symbol), 好處是寫程式或維護程式時會很容易了解程式的功能, 增加程式的易讀性. 例如unsigned char _pa @0x12 ;定義_pa 是一個unsigned char 型態的變數, 它的位址在RAM 的0x12 (就是A埠, port A). 所以程式中如下的敘述_pa = 0 ;則與組合語言的CLR PA ; (PA=[12H]) 有相同的功能4.2.3 定義文字符號及變數在程式中使用文字符號能夠更容易的讀懂程式及修改, 例如定義文字符號_pa0 如下#define _pa0 _12_0表示_pa0 是RAM 位址12H 的位元0 (bit 0), 就是 A 埠的位元0. 下列敘述_pa0 = 1 ;表示將 A 埠的位元0 設為1, 與組合語言程式的SET [12H].0 有相同的功能前置處理指令#define 是定義一個文字符號代表數值, 或是文字串, 或是巨集指令.C 編譯器的前置處理器(preprocessor) 在編譯前, 會先替換這些定義的文字符號.前置處理指令#undef 是將先前定義過的文字符號取消, 變成無效. 詳細的說明請參閱第 4.9 節微控制器中其他暫存器的變數或文字符號, 皆定義於對應之微控制器的標頭檔案內, 在設計程式時可參考之. 可以定義一些程式需要, 但是在標頭檔案中沒有定義的變數或文字符號, 方便程式的開發及維護, 例如#include #define “ht48R50A-1.h”scl _pa3 // SCL (時鐘線) 接到MCU 的A 埠的第3 位元#define scl_c _13_3 // A 埠之控制暫存器的第3 位元(bit 型變數)#define sda _pa1 // SDA (資料線) 接到MCU 的A 埠的第1 位元#define sda_c _13_1 // A 埠之控制暫存器的第1 位元void main(void){}定義四個文字符號scl, scl_c, sda, sda_c 分別代表不同的輸出/輸入埠定義變數會佔用RAM/ROM 的空間, 如果又指定位址, 則此變數佔用此位址, 否則Linker 在做連結時才會分派位址給變數. 其效果有如組合語言的_pa DB ?定義文字符號的效果則與組合語言的EQU 相同, 例如#define scl _pa3 與scl EQU _pa3有相同的效果4.2.4 設定微控制器及裝置的初始狀態根據程式的功能, 設定微控制器中各裝置的初始值, 例如周邊設備的初始狀態, 暫存器的型態等.scl_c = 0 ; // 設定SCL (= PAC) 的狀態為輸出sda_c = 0 ; // 設定SDA (=PA) 的狀態為輸出4.2.5 設計子函式獨立之功能可分別用子函式完成, 在程式的偵錯, 維護及重複使用上皆有好處. 在設計時需要注意函式的參數,返回值等. 通常會將主函式main() 放在程式檔的最後, 各個子函式定義在前面或其他的程式檔案內. 下列範例只是部份, 詳細的說明可參閱4.6 節.#include “ht48r50a-1.h”// 引入標頭檔#define scl _pa3 // SCL (時鐘線) 接到MCU 的A 埠的第 3 位元#define scl_c _13_3 // A 埠(位址0x13)之控制暫存器的第3 位元(bit 型變數) #define sda _pa1 // SDA (資料線) 接到MCU 的A 埠的第1 位元#define sda_c _13_1 // A 埠(位址0x13)之控制暫存器的第1 位元// 函式: StartCondition() 子函式// 功能: 開始一個命令// 輸入: 無// 輸出: 無void StartCondition(void){sda = 1 ; // SDA 輸出highscl = 1 ; // SCL 拉highsda = 0 ; // SDA 輸出lowscl = 0 ; // 完成Start of command}// 函式: StopCondition()// 功能: 結束先前的命令// 輸入: 無// 輸出: 無void StopCondition(void){}// 函式: main()// 功能: 主函式// 輸入: 無// 輸出: 無void main (void){unsigned char Rdata, type ;// 暫存器的初始設定scl_c = sda_c = 0 ; // 將A 埠的位元1, 3 設為輸出型態(SCL, SDA 為輸出)StartCondition() ; // 呼叫子函式……}4.2.6 設計中斷服務函式針對有硬體中斷的微控制器, 需要設計中斷服務函式以處理中斷事件定義周邊裝置的中斷服務函式(Interrupt Service Routine, ISR) 如下格式#pragma vector ISR_tmr0 @ 0x0cvoid ISR_tmr0(void){tick++ ;}中斷服務函式必須遵守下列規定→ 返回的資料型態必須是void→ 不能有參數→ 必須設定中斷向量值(interrupt vector), 在函式名稱(本例子是ISR_tmr0之後加上@ 及中斷向量值(本例是0x0c). 也可使用先前定義好的常數, 例如#define VECTOR_TMR0 0x0c#pragma vector ISR_tmr0 @ VECTOR_TMR0void ISR_tmr0(void){}4.3變數(variable) 及資料型態(data type)程式執行過程中, 可能會需要暫存一些資料, 例如旗標, 執行次數, 延遲秒數等, 因此就必須定義變數以儲存這些資料. 由於變數要佔用程式記憶體(PROM) 或資料記憶體(RAM), 因此在使用變數之前, 定義變數的資料型態, 以便讓編譯器正確的編譯程式及配置記憶體空間.除了資料型態之外, 還可加入儲存類別(storage class) 及修飾詞(qualifier), 對變數做更詳細的安置.4.3.1 變數名變數名的規則→ 第一個字元必須是英文字母或底線符號(underscore), 之後可緊接著字母或數字→ 變數名的前32 個字元有效→ 變數名內不可有+, - , *, / , ……等符號字元→ 英文字母的大小寫是有區別的(case-sensitive), 例如count 與Count 是不同的變數名範例, number, total_tick, _tick 是合法的變數名, 而2num, $dot, line\n 是非法的變數名4.3.2 資料型態* float, double 皆使用IEEE754 32 位元的格式4.3.3 變數的有效範圍(scope)根據變數定義的所在¸決定此變數的有效範圍. 可分為→ 區域變數(local variable)定義在程式區塊內(program block, 例如函式)的變數皆是區域變數. 只有當此程式區塊被執行時, 區域變數才會有效, 而在執行完畢並離開此程式區塊後, 這些區域變數將無效. 程式區塊是指包含在左右大括號‘{‘ 及‘}’ 之間的敘述行定義在函式中的static 變數則是全域變數, 參考 4.3.2 說明→ 全域變數(global variable)定義在所有函式之外的變數為全域變數. 當程式在執行時, 此變數皆有效, 任何函式都可以存取或修改這個變數範例#include “ht48r50a-1.h”unsigned char flag ; // 全域變數void main(void){ char type ; // 區域變數, 只有在此函式被執行時才有效static status = 0 ; // static 變數, 只在第一次執行時設為0……}4.3.4 變數的資料型態(data type)當宣告變數時,必須指定它的資料型態, 以告知編譯器此變數所需記憶體的大小. 資料型態分為整數型(integer type)及浮點數型(floating point type). 整數型又可區分為有正負號(signed) 及無正負號(unsigned).整數型(integer)→ char佔用一個位元組(byte) 的記憶體空間. 如加上signed 則表示有正負號, 其大小範圍是–128 到127. 若加上unsigned, 則表示沒有正負號, 其大小範圍是0到255. 如果沒有signed 或unsigned, 則被視為signed. 可用此型態定義字元,如‘A’, ‘d’, ‘$’, ‘3’等→ short佔用兩個位元組(2 bytes) 的記憶體空間, 如加上signed 則表示有正負號, 其大小範圍是–32768 到32767. 若加上unsigned, 則表示沒有正負號, 其大小範圍是0 到65535. 如果沒有signed 或unsigned, 則被視為signed.Holtek C 採用little-endian 格式, 就是變數的低位元組(least significant byte) 存放在記憶體的低位址. 例如變數count = 0x1234 是存放於記憶體40H 的位址, 則低位元組的數值0x34 存放於位址40H, 高位元數值0x12 存放於位址41H.→ int與short 型態相同→ long佔用四個位元組(4 bytes) 的記憶體空間, 如加上signed 則表示有正負號, 其大小範圍是–2147483648 到2147483647. 若加上unsigned, 則表示沒有正負號, 其大小範圍是0 到4294967295. 如果沒有signed 或unsigned, 則被視為signed在little-endian 格式中, 32位元的變數, 則是先存低字元(least significant word) 的低位元組(least significant byte)到記憶體的低位址, 再存放低字元的高位元組(high byte), 再存放高字元(high word)的低位元組, 最後才是高字元的高位元組浮點型(floating point)Holtek C 支援IEEE 754 32 位元的格式. 包括float 及double 兩個資料型態, 浮點數值是以下表的格式儲存在記憶體與浮點數值的關係式為number = (-1)sign x 2(exponent – 127) x 1.mantissa例如, 浮點數為 2.77000e+37 在儲存到記憶體時換成7DA6B69B 共佔32 位元4.3.5 bit 資料型態類似整數型, 但是只有0 或 1 兩個值, 所以只會取整數的最低位值(LSB:least significant bit) 需要注意下列用法→ bit 型態不可與auto 一起使用, bit 型態的變數不可當函式的參數, 不可用於指標(pointer) 的數據型態, 不可設定靜態初始值(static)→ bit 型態可以設為函式的返回型態, 它是存於累加器(accumulator) 的相對位置→ 程式開始執行時, 不會設定bit 型變數的初始值, 因此程式必須自行設定初始值→ 以下是合法的使用方式static bit init_flag ; // 定義於函式內則被視為區域變數bit toggle_flag ;→ 範例int data = 0x54 ;bit flag ;flag = data ;則flag = 0 (取data 的LSB)如果微控制器具有一個以上的RAM bank, 例如HT46R63, 在定義bit 型態的變數時需要使用前置處理指令#pragma rambank0 指定在RAM bank 0, 如下#pragma rambank0bit flag ;#pragma norambank4.3.6儲存類別(storage class) 與修飾詞(qualifier)變數於宣告或定義時必須指定其資料型態, 但是儲存類別及修飾詞是可選擇的, 可根據應用時的需要去設定或不使用.儲存類別(storage class)儲存類別與區域變數(local variable)及全域變數(global variable)有關.→ 儲存類別autoauto 是給區域變數使用的, 沒有指定儲存類別的區域變數皆是auto寫與不寫auto 都是相同效力. 區域變數是存放在RAM bank 0 的空間→ 儲存類別registerregister 與auto 類似, 是給區域變數用的, 當變數的存取很頻繁時, 可將之設為register, C 編譯器會使用暫存器而非資料記憶體空間來存放此變數, 如此可增加存取的速度及減少編碼. 目前並未實做此功能.→ 儲存類別staticstatic 的變數會一直有效到整個程式結束後才失效. 它的初始值只會在程式開始執行時被設定一次. 雖然static 的變數在程式結束前皆有效, 但是定義在函式內的static 變數仍然是區域變數, 必須要在它所定義的函式中才可以讀寫→ 儲存類別externextern 通知C 編譯器此變數是定義在其他的程式檔內, 需要經由連結器(Linker)連結定義此變數的檔案後, 才知道變數的所在.以目前在微控制器的應用程式上, 比較需要使用extern, 其他三種不具特別的優勢可用定義全域變數(global variabl)的方式即可達到相同效果. 建議不要使用.修飾詞(qualifier)→ 修飾詞constC 編譯器會將const 的變數放置於程式記憶體(PROM). 在定義const 變數時, 必須要設定其值, 而程式在執行中不能修改此變數的值→ 修飾詞constant這個修飾詞是Holtek C 編譯器特別提供的. 它會將constant 的變數放置於程式記憶體(PROM) 的最後一頁(last page). 定義constant 變數時,必須要設定其值, 而程式在執行中不能修改此變數的值. 使用此修飾詞要注意下列三點●只能使用在int 或unsigned int 的資料型態●設定值必須配合微控制器程式記憶體的寬度, 例如, 若使用在 HT48R50A-1 時,因為此微控制器的寬度為 15 個位元, 最高位元是無效的, 所以 0x9A 會被 C編譯器改成 0x1A. 最高位元, 位元 15 被清除為 0● 所有設定此修飾詞的變數或陣列, 總共佔用的字位元組 (word) 不可超過 256 個指定詞(specifier)→ 指定詞typedeftypedef 是針對資料型態做新名稱的宣告, 不是宣告資料型態的新變數, 而是宣告一個新的名字. 例如將UCHAR (新名字) 宣告為unsigned char 的資料型態, 可使用typedef unsigned char UCHAR ; // UCHAR 為unsigned char 的新名字UCHAR count ; // 變數count 的資料型態為unsigned char// 等同於unsigned char count ;使用typedef 宣告資料型態的新名字可以讓程式的可讀性更高, 更易了解. 例如,typedef unsigned int WORD ; // 使用WORD 代表unsigned int, 16 bitstypedef unsigned long DWORD ; // DWORD 代表32 bit 的double word4.3.7絕對變數(absolute variable)可以將全域變數或static 變數指定一個固定的記憶體的位址, 例如unsigned char PortA @ 0x12 ;在變數名的後面再加上‘@’及位址C 編譯器在編譯時會將程式中出現絕對變數的程式改為此位址, 但並未在記憶體中保留位置給此變數, 所以從連結器(Linker) 產出的對映檔(map file)中找不到此變數 C 編譯器會將之翻成組合語言的EQU 指令,如下_PortA EQU 12h此種用法主要是對微控制器內的暫存器做定義, 方便閱讀程式4.3.8常數(constant)整數型常數(integral constant) 可使用基底(radix)格式表示之.若常數的最後一字為l 或L, 則表示它使用signed long 或unsigned long 的型態. 字尾是u 或U, 則表示常數為unsigned 型態.浮點型(floating point)常數的型態是double, 若它的字尾是 f 或F, 則是float.字元常數(character constant)必須以單引號‘ ‘ 框住, 例如‘a’字串常數(string constant) 必須以雙引號“ “ 框起, 例如“Hello!”. 字串常數的定義會影響它所儲存的記憶體位址, 如下char *cp = “one” ; // C 編譯器會發出錯誤const char *sptr = “Hello” ; // “Hello” 儲存在程式記憶體(PROM) 常數型的變數或陣列(array)必須要設定其值, 否則C 編譯器會發出錯誤訊息,如上例4.3.9指標(pointer) 與陣列(array)指標本身是一個變數, 它的內容是另一個變數存放的位址, 類似組合語言的間接定址.在使用上, 指標必須要指到一個已定義(存放於記憶體) 的變數, 否則在程式執行時會發生錯誤. 指標的宣告格式資料型態*指標名[, *指標名,….] ; 資料型態是這個指標所指的變數的資料型態, 例如char. 指標名類似變數名, 可以在一行中, 宣告指向相同資料型態的不同指標名, 例如char *tptr, *array_ptr ;int *line_ptr ;以上只是宣告指標變數, 必須要將這些指標指向已定義的變數才能使用指標的運算子& 與*運算子& 如果緊鄰在變數的前面, 例如&line, 則是代表取得此變數的記憶體位址例如,int line ; // 定義變數int *line_ptr ; // 宣告指標line = 12 ;line_ptr = &line ;若變數line 被安置於RAM 的位址64, 則指標line_ptr 等於64運算子* 緊鄰指標變數之前是表示取得這個指標指到的變數的內容, 承上例, int total ; // 定義變數total = *line_ptr ; // 取得指標line_ptr 所指到的變數line 的內容則變數total 等於12指標的大小會根據微控制器具有之記憶體空間大小而定, 如果微控制器具有一個以上的RAM bank, 則指標本身會使用兩個位元組來儲存被指到的變數的位址如果變數有const 或constant 修飾詞, 則是指向程式記憶體(PROM), 而且此變數的內容不能被修改. 如果所指向的變數不具有const 或constant, 則指標會指向資料記憶體(data memory, RAM) 內的變數.陣列(array)陣列是由相同資料型態的元素組成的, 例如char array_name[32] ;是由32 個char 型態的元素組成的, 這些元素的名字是以陣列名array_name 為準, 而以索引(index) 區分各個元素, 例如array_name[3] 是第 4 個元素. 陣列的索引是正整數, 從0 開始直到元素的總個數減一, 上例中, 最後一個元素是array_name[31]. 這種資料型態在建表格(table) 時非常有用陣列也可當做指標的一種, 只是使用時格式不同, 下列範例說明指標與陣列之間的使用方法char *nptr, *fptr ; // 宣告指標char ch, tbl ; // 定義變數char table[5] = { ‘a’, ‘b’, ‘c’, ‘d’, ‘e’ } ; // 定義陣列nptr = table ; // 指標nptr 指到陣列table 的第一個元素table[0]ch = *nptr ; // 將字元‘a’ 存入變數chtbl = table[0] ; // 將字元‘a’ 存入變數tbl , 所以變數ch 與變數tbl 的內容相同fptr = &table[4] ; // 指標fptr 指到陣列table 的第5 個元素, table[4]ch = *fptr ; // 將字元‘e’ (第5 個元素) 存入變數ch 內tbl = *(nptr+4) ; // nptr 指到陣列table 的第一個元素, 加4, 所以tbl = ‘e’4.3.10結構(struct) 與等位(union)結構是一個或多個成員的集合, 每個成員的資料型態可以不同, 並且使用結構的名字去讀寫這些成員. 結構的宣告是等同於定義一個新的資料型態, 當變數宣告為一個結構的型態時, 便可用結構的名字去讀寫各成員的內容.成員的資料型態不可以使用bit 型態, 但是可以用bit-field 方式宣告成員的型態, 例如struct str_name {unsigned flag : 1 ; // 此成員放於最低位元least significant bitunsigned no_used : 7 ;unsigned stack : 5 ; // 此成員置於最高位元high bits} usage ;每個bit field 會置放於16 位元的單位內, 不會橫跨兩個16位元的單位等位(union) 的格式與結構相同, 唯一不同的是記憶體空間的分配方式. 等位是安排共用的空間來存放不同資料型態的成員. 每個成員必須要宣告其資料型態, 而等位的大小則是所有成員中佔用最大位元組(bytes)的型態大小. 每個成員的開始位址皆相同, 就是等位的位址.union union_name {char num_byte ; // 佔用1 個位元組。
合泰指令教学..

合泰单片机指令运用
了解指令,让编程序变得更容 易.
ห้องสมุดไป่ตู้
什么是单片机
单片机就是一块单片的计算机看起来就是一个黑块,他把计算机正常工 作所需要用的设备接口等全部集成在一个芯片上,并可以完成一些简 单的工作,这里举一个简单的例子让你了解单片机是什么是干什么功 能的,比如说你现在把一个led小灯,接在了单片机的P1.0引脚上,我 们要灯亮就给单片机一个 setb P1.0 的指令,我们要灯熄灭就给 clr p1.0 灯就熄了。 说到这里我们要问到底什么是单片机呢?他就是一个电脑,只不 过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模 块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不 同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱就 相对便宜多了.
ADD A,[m] ;ACC与数据存储器相加,结果放入ACC ADDM A,[m] ;ACC与数据存储器相加,结果放入数据存储器 ADD A, x ;ACC与立即数相加,结果放入ACC ADC A,[m] ;ACC 与数据存储器、进位标志相加,结果放入 ACC ADCM A,[m] ;ACC与数据存储器、进位标志相加,结果放入数 据存储器 SUB A, x ;ACC与立即数相减,结果放入ACC SUB A,[m] ;ACC与数据存储器相减,结果放入ACC SUBM A,[m] ;ACC与数据存储器相减,结果放入数据存储器 SBC A,[m] ;ACC与数据存储器、进位标志的反相减,结果放 入ACC SBCM A,[m] ;ACC与数据存储器、进位标志相减,结果放入数 据存储器 DAA [m] ;将加法运算中放入ACC的值调整为十进制数,并 将结果放入数据存储器
holtek单片机图文全面详解

holtek单片机图文全面详解电子产品项目中对单片机的选型,可谓仁者见仁智者见智。
合泰单片机价格适中,种类也比较齐全。
下面就为大家全面介绍下holtek的单片机。
holtek单片机是由盛群半导体设计开发,盛群半导体为国内专业微控制器IC设计领导厂商,营业范围主要包括微控制器IC及其周边组件之设计、研发与销售。
自1998年成立以来,公司不断致力于新产品的研发及技术的创新,加上对市场趋势的掌握,期能提供广大电子市场最具竞争力之IC产品。
产品范围包括:泛用型与专用型微控制器(MCU),除一般应用领域外,更涵盖语音、通讯、计算机外设、家电、医疗、车用及安全监控等各专业领域,并提供各种电源管理及非易失性内存等微控制器外围组件,提供客户更具竞争能力的完整解决方案。
holtek单片机分类(1)HT48系列I/O 型(+ LCD)(2)HT49系列I/O + LCD 型(3)HT46系列I/O+AD 型(+ LCD)(4)HT47系列I/O+RC-F(AD)+LCD+IR型(5)HT48xAx\HT49xAx系列Remote (遙控器用)型(6)HT95R2x\HT95R3x系列Phone(+ LCD)(7)HT45R3x\BS28xx\BS26xx系列Touch型(8)Flash 型(HT46Fxx\HT48Fxx\HT66Fxx\HT68Fxx)(9)TIny Power 型(HT56R2x,HT56R6x,HT56R6xx )(10)Keyboard/Mouse系列,USB Audio系列,V oice/Music系列,VFD系列。
HOLTEK单片机系统结构Holtek单片机的系统结构时序和流水线结构。
合泰FLASH单片机HT68F00xv100

Holtek 32位ARM Cortex-M0+ 单片机 HT32F52220 HT32F52230

Holtek 32-Bit 带 Arm® Cortex®-M0+ 内核单片机HT32F52220/HT32F52230使用手册�ove��e� 0�� �01�Revision: V1.10 Date: �ove��e� 0�� �01�目录目录1 简介 (17)概述 (17)特性 (18)单片机信息 (20)方框图 (21)2 文档协议 (22)3 系统结构 ...............................................................................................................................23Arm ® Cortex ®-M0+ 处理器 . (23)总线结构 (24)存储器体系 (25)存储器映射 (26)嵌入式 Flash 存储器 (28)嵌入式 SRAM 存储器 (28)AHB 外设 (28)APB 外设 (28)4 Flash 存储器控制器(FMC) (29)简介 (29)特性 (29)功能描述 (30)Flash 存储器映射 (30)Flash 存储器结构 (31)等待状态设置 (31)启动配置 (32)页擦除 (33)整片擦除 (34)字编程 (35)选项字节描述 (36)页擦除 / 编程保护 (36)安全保护 (38)寄存器列表 (39)寄存器描述 (40)Flash 目标地址寄存器 – TADR (40)Flash 写数据寄存器 – WRDR (41)Flash 操作命令寄存器 – OCMR (42)Flash 操作控制寄存器 – OPCR (43)Flash 操作中断使能寄存器 – OIER (44)Flash 操作中断状态寄存器 – OISR (45)Flash 页擦除 / 编程保护状态寄存器 – PPSR (46)Flash 安全保护状态寄存器 – CPSR (47)目录Flash 向量映射控制寄存器 – VMCR (48)Flash 制造商与设备ID 寄存器 – MDID (49)Flash 页数状态寄存器– PNSR (50)Flash 页大小状态寄存器 – PSSR (51)设备ID 寄存器 – DID (52)Flash 预取控制寄存器 – CFCR (53)自定义 ID 寄存器 n – CIDRn (n = 0 ~ 3) (54)5 电源控制单元(PWRCU) (55)简介 (55)特性 (56)功能描述 .............................................................................................................................................56V DD 电源域 (56)1.5 V 电源域 (58)工作模式 (58)寄存器列表 (60)寄存器描述 (61)电源控制状态寄存器 – PWRSR (61)电源控制寄存器 – PWRCR ...........................................................................................................................62V DD 电源域测试寄存器 – PWRTEST (63)低电压 / 欠压检测控制和状态寄存器 – LVDCSR (64)6 时钟控制单元(CKCU) (66)简介 (66)特性 (67)功能描述 (68)外部高速晶振 – HSE (68)内部高速 RC 振荡器 – HSI (69)锁相环 – PLL (69)内部低速 RC 振荡器 – LSI (71)时钟就绪标志位 (71)系统时钟(CK_SYS)选择 (71)HSE 时钟监控器 (72)时钟输出能力 (72)寄存器列表 (72)寄存器描述 (73)全局时钟配置寄存器 – GCFGR (73)全局时钟控制寄存器 – GCCR (74)全局时钟状态寄存器 – GCSR (75)全局时钟中断寄存器 – GCIR (76)PLL 配置寄存器 – PLLCFGR (77)PLL 控制寄存器 – PLLCR (78)AHB 配置寄存器 – AHBCFGR (79)AHB 时钟控制寄存器 – AHBCCR (80)目录APB 配置寄存器 – APBCFGR (81)APB 时钟控制寄存器 0 – APBCCR0 (82)APB 时钟控制寄存器 1 – APBCCR1 (83)时钟源状态寄存器 – CKST (84)APB 外设时钟选择寄存器 0 – APBPCSR0 (85)APB 外设时钟选择寄存器 1 – APBPCSR1 (86)低功耗控制寄存器 – LPCR (88)单片机调试控制寄存器 – MCUDBGCR (89)7 复位控制单元(RSTCU) (91)简介 (91)功能描述 (92)上电复位 (92)系统复位 (92)AHB 和 APB 单元复位 (92)寄存器列表 (93)寄存器描述 (93)全局复位状态寄存器 – GRSR (93)AHB 外设复位寄存器 – AHBPRSTR (94)APB 外设复位寄存器 0 – APBPRSTR0 (95)APB 外设复位寄存器 1 – APBPRSTR1 (96)8 通用I/O (GPIO) (97)简介 (97)特性 (98)功能描述 (98)默认的 GPIO 引脚配置 (98)通用 I/O – GPIO..............................................................................................................................................98GPIO 锁定机制 .............................................................................................................................................100寄存器列表 .......................................................................................................................................100寄存器描述 .......................................................................................................................................101端口 A 数据方向控制寄存器 – PADIRCR ..................................................................................................101端口 A 输入功能使能控制寄存器 – PAINER .............................................................................................102端口 A 上拉选择寄存器 – PAPUR ..............................................................................................................103端口 A 下拉选择寄存器 – PAPDR ..............................................................................................................104端口 A 漏极开路选择寄存器 – PAODR......................................................................................................105端口 A 输出电流驱动选择寄存器 – PADRVR ...........................................................................................106端口 A 锁定寄存器 – PALOCKR ................................................................................................................107端口 A 数据输入寄存器 – PADINR ............................................................................................................108端口 A 输出数据寄存器 – PADOUTR ........................................................................................................109端口 A 输出置位 / 复位控制寄存器 – PASRR ............................................................................................110端口 A 输出复位寄存器 – PARR ..................................................................................................................111端口 B 数据方向控制寄存器 – PBDIRCR ..................................................................................................112端口 B 输入功能使能控制寄存器 – PBINER (113)目录端口 B 上拉选择寄存器 – PBPUR ...............................................................................................................114端口 B 下拉选择寄存器 – PBPDR ...............................................................................................................115端口 B 漏极开路选择寄存器 – PBODR ......................................................................................................116端口 B 输出电流驱动选择寄存器 – PBDRVR ............................................................................................117端口 B 锁定寄存器 – PBLOCKR .................................................................................................................118端口 B 数据输入寄存器 – PBDINR .............................................................................................................119端口 B 输出数据寄存器 – PBDOUTR ........................................................................................................120端口 B 输出置位 / 复位控制寄存器 – PBSRR ...........................................................................................121端口 B 输出复位寄存器 – PBRR ................................................................................................................1229 复用功能输入/输出控制单元(AFIO) .............................................................................123简介 ...................................................................................................................................................123特性 ...................................................................................................................................................124功能描述 ...........................................................................................................................................124外部中断引脚选择 .......................................................................................................................................124复用功能 .......................................................................................................................................................125锁定机制 ......................................................................................................................................................125寄存器列表 .......................................................................................................................................125寄存器描述 .......................................................................................................................................126EXTI 来源选择寄存器 0 – ESSR0 ..............................................................................................................126EXTI 来源选择寄存器 1 – ESSR1 ..............................................................................................................127GPIOx 配置低寄存器 – GPxCFGLR (x = A, B) ..........................................................................................128GPIOx 配置高寄存器 – GPxCFGHR (x = A, B) .........................................................................................12910 嵌套向量中断控制器(NVIC)..........................................................................................130简介 ...................................................................................................................................................130特性 ...................................................................................................................................................131功能描述 ...........................................................................................................................................132SysTick 校准 .................................................................................................................................................132寄存器列表 .......................................................................................................................................13211 外部中断/事件控制器(EXTI) .......................................................................................133简介 ...................................................................................................................................................133特性 ...................................................................................................................................................133功能描述 ...........................................................................................................................................134唤醒事件管理 ...............................................................................................................................................134外部中断 / 事件引脚配置 ............................................................................................................................135中断和去抖 ...................................................................................................................................................135寄存器列表 .......................................................................................................................................136寄存器描述 .......................................................................................................................................137EXTI 中断配置寄存器 n – EXTICFGRn (n = 0 ~ 15) ................................................................................137EXTI 中断控制寄存器 – EXTICR ...............................................................................................................138EXTI 中断边沿标志寄存器 – EXTIEDGEFLGR .......................................................................................139EXTI 中断边沿状态寄存器 – EXTIEDGESR .. (140)目录EXTI 中断软件置位命令寄存器 – EXTISSCR ..........................................................................................141EXTI 中断唤醒控制寄存器 – EXTIWAKUPCR ........................................................................................142EXTI 中断唤醒极性寄存器 – EXTIWAKUPPOLR....................................................................................143EXTI 中断唤醒标志寄存器 – EXTIWAKUPFLG ......................................................................................14412 模数转换器(ADC) ...........................................................................................................145模数转换器 ......................................................................................................................................145特性 ...................................................................................................................................................146功能描述 ...........................................................................................................................................147ADC 时钟设置 ..............................................................................................................................................147通道选择 .......................................................................................................................................................147转换模式 .......................................................................................................................................................147外部事件启动转换 .......................................................................................................................................150采样时间设定 ...............................................................................................................................................151数据格式 .......................................................................................................................................................151模拟看门狗 ...................................................................................................................................................151中断 ...............................................................................................................................................................152寄存器列表 .......................................................................................................................................153寄存器描述 .......................................................................................................................................154ADC 转换控制寄存器 – ADCCR ................................................................................................................154ADC 转换列表寄存器 0 – ADCLST0 .........................................................................................................155ADC 转换列表寄存器 1 – ADCLST1 .........................................................................................................156ADC 输入采样时间寄存器 – ADCSTR ......................................................................................................157ADC 转换数据寄存器 y – ADCDRy (y = 0 ~ 7) .........................................................................................158ADC 触发控制寄存器 – ADCTCR ..............................................................................................................159ADC 触发源寄存器 – ADCTSR ..................................................................................................................160ADC 看门狗控制寄存器 – ADCWCR ........................................................................................................161ADC 看门狗阈值寄存器 – ADCTR ............................................................................................................162ADC 中断使能寄存器 – ADCIER ...............................................................................................................163ADC 中断原始状态寄存器 – ADCIRAW ...................................................................................................164ADC 中断状态寄存器 – ADCISR ...............................................................................................................165ADC 中断清除寄存器 – ADCICLR ............................................................................................................16613 通用定时器(GPTM) ........................................................................................................167简介 ...................................................................................................................................................167特性 ...................................................................................................................................................168功能描述 ...........................................................................................................................................168计数器模式 ...................................................................................................................................................168时钟控制器 ...................................................................................................................................................171触发控制器 ...................................................................................................................................................172从机控制器 ...................................................................................................................................................173主机控制器 ...................................................................................................................................................175通道控制器 ...................................................................................................................................................176输入级 .. (179)目录正交解码器 ...................................................................................................................................................181输出级 ...........................................................................................................................................................183更新管理 .......................................................................................................................................................187单脉冲模式 ...................................................................................................................................................188非对称PWM 模式 ........................................................................................................................................190触发ADC 开启 .............................................................................................................................................191寄存器列表 .......................................................................................................................................191寄存器描述 .......................................................................................................................................192定时器计数器配置寄存器– CNTCFR ........................................................................................................192定时器模式配置寄存器 – MDCFR .............................................................................................................193定时器触发配置寄存器– TRCFR ...............................................................................................................195定时器控制寄存器 – CTR ...........................................................................................................................196通道0输入配置寄存器 – CH0ICFR ...........................................................................................................197通道1输入配置寄存器 – CH1ICFR ...........................................................................................................199通道2输入配置寄存器 – CH2ICFR ...........................................................................................................200通道3输入配置寄存器 – CH3ICFR ...........................................................................................................201通道0输出配置寄存器 – CH0OCFR .........................................................................................................202通道1输出配置寄存器 – CH1OCFR .........................................................................................................204通道2输出配置寄存器 – CH2OCFR .........................................................................................................206通道3输出配置寄存器 – CH3OCFR .........................................................................................................208通道控制寄存器 – CHCTR ..........................................................................................................................210通道极性配置寄存器 – CHPOLR ................................................................................................................211定时器PDMA /中断控制寄存器 – DICTR ................................................................................................212定时器事件发生器寄存器 – EVGR ............................................................................................................213定时器中断状态寄存器 – INTSR ................................................................................................................214定时器计数器寄存器 – CNTR ....................................................................................................................216定时器预分频器寄存器 – PSCR .................................................................................................................217定时器计数器重载寄存器 – CRR ...............................................................................................................218通道0捕捉/比较寄存器 – CH0CCR ........................................................................................................219通道1捕捉/比较寄存器 – CH1CCR ........................................................................................................220通道2捕捉/比较寄存器 – CH2CCR ........................................................................................................221通道3捕捉/比较寄存器 – CH3CCR ........................................................................................................222通道0非对称比较寄存器 – CH0ACR .......................................................................................................223通道1非对称比较寄存器 – CH1ACR .......................................................................................................224通道2非对称比较寄存器 – CH2ACR .......................................................................................................225通道3非对称比较寄存器 – CH3ACR .......................................................................................................22614 基本功能定时器(BFTM) ................................................................................................227简介 ...................................................................................................................................................227特性 ...................................................................................................................................................227功能描述 ...........................................................................................................................................228重复模式 .......................................................................................................................................................228单次模式 .......................................................................................................................................................229寄存器列表 (230)目录寄存器描述 .......................................................................................................................................230BFTM 控制寄存器 – BFTMCR ...................................................................................................................230BFTM 状态寄存器 – BFTMSR ...................................................................................................................231BFTM 计数器值寄存器 – BFTMCNTR ......................................................................................................232BFTM 比较值寄存器 – BFTMCMPR .........................................................................................................23315 单通道定时器(SCTM) ....................................................................................................234简介 ...................................................................................................................................................234特性 ...................................................................................................................................................235功能描述 ...........................................................................................................................................235计数器模式 ...................................................................................................................................................235时钟控制器 ...................................................................................................................................................236触发控制器 ...................................................................................................................................................237从机控制器 ...................................................................................................................................................238通道控制器 ...................................................................................................................................................240输入级 ...........................................................................................................................................................242输出级 ...........................................................................................................................................................243更新管理 .......................................................................................................................................................245寄存器列表 .......................................................................................................................................246寄存器描述 .......................................................................................................................................247定时器计数器配置寄存器 – CNTCFR ........................................................................................................247定时器模式配置寄存器 – MDCFR .............................................................................................................248定时器触发配置寄存器 – TRCFR ...............................................................................................................249定时器控制寄存器 – CTR ...........................................................................................................................250通道输入配置寄存器 – CHICFR .................................................................................................................251通道输出配置寄存器 – CHOCFR ...............................................................................................................252通道控制寄存器 – CHCTR ..........................................................................................................................253通道极性配置寄存器 – CHPOLR ...............................................................................................................254定时器中断控制寄存器 – DICTR ...............................................................................................................255定时器事件发生器寄存器 – EVGR ............................................................................................................256定时器中断状态寄存器 – INTSR ................................................................................................................257定时器计数器寄存器 – CNTR ....................................................................................................................258定时器预分频器寄存器 – PSCR .................................................................................................................259定时器计数器重载寄存器 – CRR ...............................................................................................................260通道捕捉/比较寄存器 – CHCCR ..............................................................................................................26116 看门狗定时器(WDT) ......................................................................................................262简介 ...................................................................................................................................................262特性 ...................................................................................................................................................262功能描述 ...........................................................................................................................................263寄存器列表 .......................................................................................................................................265寄存器描述 .......................................................................................................................................265看门狗定时器控制寄存器 – WDTCR .........................................................................................................265看门狗定时器模式寄存器 0 – WDTMR0 (266)。
合泰单片机总结

--测试环境C 编译器V2Step Step over Step OutPov 痢 on Resrt也他我条1Reset ItemPower-On R^sctTarget Board ResetSoftware ResetConunandSoftwarePtJweT'On ResetCommandClciir Reaisiets (*) (*)(*)(*)Clem 7 (Options Yes NoNaNoClear PD. TO Yes Nc No Yes PCValut?(**) 0 0 0Bmulation Stop (**) No(***) Yes Yes Chetk Stand-AloneYesNo NaNo5-1拄意:(*):缓存器征不同舐克下所覺的影响』请奪雷备徹控制器的Df 曲BoM.(怜FC 值为伽同时停止醍件仿真.(杠*);假如虫戌来口 F •应用电舒板「则系统会在直鈕亢应后自动丿F 始谨件的肪戌。
2. Data TypeData type Size (bit) C compiler VISize (bit) C compiler V2Size (bit) C COMPILER V3Size (bit) ANSI Cbit 11N N char Q 3 8 0signed char 0 a 8nunsigned char 8a 8short816 16 诟unsigned sliolt a 16 16 16 | lot816 16 16unsigned ini 816 16 12Long16 32 32 32 unsigned long 16 32 3232 long longN N 32 64 unsigned long long N N 32 64 float N32 2432 double N32 32 64 long doubleNNN128:3..数组,支持一维/二维数组(大小小于1bank );4. 使用 const 关键字,变量将存储于程序存储区,如,const uint8_t tab[] =“1,2,3”;合泰单片机总结1. DebugToggie Bf^ak Port Qear All Bveat Poirt Ootoursor Stop5.中断服务函数:#pragma vector ISR_tmr0 @ 0x0c //定义中断入口地址void ISR_tmr0(void){tick++ ;}6.中断函数中调用普通函数(1)方法 1#pragma vector ISR_tmr0 @ 0x0c#pragma nolocal funfun(){}void ISR_tmr0(void){fun() ;}(2)方法 2#pragma vector ISR_tmr0 @ 0x0cfun(){}void ISR_tmr0(void){#asmcall _fun;#endasm}7.宏定义#define _pa0 _12_0 //bit 0 of RAM address 0x128. 位变量定义对于有多个bank 的MCU ,位变量只能定义在bank0 ,使用如下方式#pragma rambank0 bit flag ;#pragma norambank9.指针(1) 不支持指向“字符串数组”char *rain bow[] = { "red", "ora nge", "yellow" };// not supported (2) 只支持全局的静态函数指针,且所指函数不能带有参数 fun() {return 1; }in t (*c onst p)() =fun; // global and in itializati on required void mai n() { int a; a=(*p)(); }(3) 不支持取得con st 常量的地址 const int ldc = 0; void mai n(){ int *a;a = &ldc; // cannot pass }10.内嵌汇编■內嵌懒褊4怕他睨在鹵式內■内嵌集編只能撰寫描节・平能用来定義姿敷action 等一■內嵌駅菊中胸煥數,貼阳f 更用相血旳集編名.而逮敎何怕編名宇必冏的關保如h':• 總鴨煙Wft :V8r —»_var{超過•個糾:_var._ var[1J^ var(2],_ var(3]) 例:char a;long b; M.WJ ASM 名:日T_a, 圍」>罔 •同邯變1ft : CRTRR^CRS …C 超過'■' ^1: CR1. CR1[1)n CR1[2], CR1[3]),捷屮「吸位足按編譯阴疔:来冊列的.所以.如卑改醱厂迅我的怕序.仃可能帯編岔 就薯改噓T .而且貼吊建數嚏柯熾用過干會口相應的備編伞.Ltill r 上例屮的r 划畢沒有先賦帕r=0;刖會找不到CR4而報皓. 例:void fun{) <char aJong b; a = 0;b=0;打时祸 ASM r t - a -CR1, t)^CR2h CR2[ 1 ],CR2[2J,CR 2(3]}« 自:i 數 :ramefa, b) t^name( 跌十:獸科:named .name 1 ,name2--) 例:void fun{ctiar a .char b)會晒的 ASM 名:fun — fun, s-KfunO. b^furl• static 出現在内底整編内.冈勇它的烷編色址曲機的.«如果不知道鳞裁所對應的輩編勒H 可坦看廉出的asm 悄屮叭#pragma debug variable 8 2 CR1 d1其中d1 色數.CR1d 1冋打瞰削-翔昌名,當擂.要先彌鞍0跖才會產出asm fS.Eg: char a; int b; voidfun(char p1,int p2)#asm[label:] opcode [opera nds]#endasm{a = p1;#asm // b = p2;MOV A,fun1MOV _b,AMOV A,fun1[1]mov _b[1],A#endasm}void main(){int d1;char d2;unsigned char q, r;r = 0;q = d1 / d2; // get quotient #asm // r = q;MOV A, CR3 ; CR3 qMOV CR4,A ; CR4 r#endasm#asm // fun(d2,d1)MOV A,CR2MOV fun0,A ; p1 = d2MOV A,CR1MOV fun1,AMOV A,CR1[1]MOV fun1[1],A ; p2 = d1CALL _fun#endasm}11.预编译指令12.编译器特殊选项格式^pragma keyword [ options )臬垒keyword 卩丁肓options,長格列出pragma keywords①ROM bank HT4U6②凡具備多個RAM bank及只有-個ROM bank記憶體的黴控制器(例如HT82M99AE )此功能”有效3凡具備禺個RAM bank記悝閒的微控制器(例如HT46R63)此功能F有效•#pragma bp free#pragma bp nofree對於這兩個亦眩處埋指令所包含前麒述式(staternents),編譯器會將產出之指令碼中所有會改弊BP暫存器的指命11除,也就罡MOV BP T A指令不會產出-主要是牆減編譯產出的拾令码大小一前題是必須確罡變數所在的記憶缠皆是固定的RAMbank.從pragma bp_free之後的救述開始.直到#pragma bp_noltee盘iL可特兩個前置處理指會加在丽式中的任何敘述的册黴•#pragma function fiinctjon_name @rom_address権定祇ftincton_name安置於ROM記憶耐rom_address竝址處.rom_address可価用卜六進制,例如0x100代哀棍扁式放於ROM記憶證的256桂址處. 述果哪牧在RCM bank 1的256廿址.則將rom_address設:爲0x2100•#pngma nobp□對中謝服務涮武有或-指示鶴澤髀个夏TF中斷贸務函式中保存BP暫存務前內春-逼個拒命會對星-程式愴案內所口的中斷服務函式有效-#pragmo ncl0»l functk)n_name針對…般的函式一對於想定的蘭式” hindion_name在鵜澤時將函式使用到的厨部费敕與內『暫存髀皆謎成•纓型匪英變數,而和會與荔他變數4£^RAM記憶空間的共用型態(commontype). 口里中詬般務爲式會呼其也函式時,這些被呼叫为函式中便用旳石部或內部耋數若與共他函式共用RAM空間.苜有宾料披礦壇的乐瞼•逗個前置處理指命將排除逗極風瞼.-#pngma nompO#pngma nompl只對中詬服務函式有效.指示編譯SS不變在中斷服務函式中保存MP0或MP1暫存痔的內容.這個播书會對軍-程式粽案內所百的中斷服務函式有效舉譯番會根據議控制器的袈情決定卮否在中斷服務函式內保存BP r MP0r MP1暫存器的內容•#pragma nmbankO#pragma norambsnk慨童數存放在RAM bank 0的空閭內.所有宦義在這兩個前匿堪理指令內的蚩數皆被安S卡秤RAM bank 0空間.E畏悄控制器只昱僑個RAM bank,則不需夏頑用須個捐塔.如杲黴控制器具有一WTX上酌RAM hank時•可以使用.若釁數足bit資料型態時,則貼須要將變數定義在RAM bank 0之中-#pragma roimbankO#pr^gnna noromb^nk將函式般许蓟ROM bankO內.所有定義於运兩厢丽竇电理描命中的函式皆被安賈ROM bank □的空間內flinction_name2 [, ..J-#pragma roimbank banknum function namel [r适個忙直喘埋橫令首將所卷走菟函叢安蚩?F描定的ROM bank寺中一怕nknum是ROM gnK的肩睨,叫依據微控制器叭ROM Z桶〕殳定广.ftjnction_name 1 ,function_nanne2层两式名‘可以同特指定-個IX I■的兩式--#pragma vector isr name ©vector address宣告中斷眼務函式晞字及中斷向五-樹冲畑務施式MSB先宜告一isr_name是葩名稱.vector_address星中謝向量數伯•#pragma novectomest指示中斷服務函式中,保留曹存暮的記憶空間只有一組.當微控制譽的中斷事件不允許重!ft 囊生,磁須處理完成前一個广緩才能Bfi理卜個時丫使用此前置處理指令可以IB眷資料記憶空111] (RAM space),避鬼RAM bank 0 的空間滿龍(overflow)旃辱閹47節中斷锲務函式昂說明13.内嵌函数■ n接組譯成組合藉诗指令的內建碉式C函式組合語吕带令碼(assembly instruction)void _clrwdt{) CLR WDTvoid_clrwdt1( )CLR WDT1void _clrwdt2() CLR WDT2void _halt() HALTvoid _nop() NOP■其他內建储迓void_ir(char*p)將抬橈p抬到的位元紐(1 byte)向右旋轉--個位元(bit) 例如’ ch = CxA5 ; _rr(&ch);則ch = 0xD2¥oid」「「(int *pl)將指標pl指到的字元組(2 byte)向右旋轉一個位元(bit) 例如T ent 匸0xA5A5; Jrr(&cnt);則ent = 0xD2D2void_i1 (char *p) 指標p指到的位元組(1 byte} I旬左旋轉一個位元(bit) 例如,ch = OxAS ; i_rl (&ch);則ch ■ 0x4Bvoidjrl (int *pl)將拒權"pl指到的字元組(2 byte)向九碇轉-個位元(bit) 例如.ent = 0xA5A5 : _lrl (&cnt);則ent = 0x4B4Bvoid _swap(char *p)將帛標p扌旨创的位元組(1 byte}四個低位元與叫個馮位元互換例如(ch = 0xA5 ; swap (&ch);則ch = 0x5Avoid _dela.y(unsigned long tick)延時tick 個指令週期(instruction cycle)tick <= 263690,若tick = 0,則表示無限延時(infinite loop)14.刃外.标头档(h)屮宦义的符号口旺._pdf与to皆不婴便用. 例如r iflf c ) a - ah + bh + ];就是不好的耳法°。
HT-IDE3000 Holtek C语言编程指南(中文)

静态变量 ............................................................................................27
常量 ....................................................................................................27
古典形式 ............................................................................................16
现代形式 ............................................................................................16
条件运算符 ..........................................................................................9
逗号运算符 ..........................................................................................9
数组 ....................................................................................................17
结构体与共用体(Structures and Unions) ..................................................18