HOLTEK单片机HT48R05A-1内部结构原理大揭秘
|
注:*8-*0:表格地震,P8:当前程序计数器,@7-@0:表格指针
堆栈寄存器(STACK)
堆栈寄存器(STACK)是一个用来保存PC值的特殊存储单元。HT48R05A-1的堆栈为2级,堆栈寄存器既不是数据存储器的一部分,也不是程序存储器的一部分,而且它既不能读,也不能写。任何一级堆栈的使用是由堆栈指针(SP)来确定。堆栈指针也不能写入和读出。一旦发生子程序调用或中断响应时,程序计数器(PC)的值会压入堆栈。在子程序调用结束或从子程序返回时,通过执行一条返回指令(RET或RETI),堆栈将原先压入堆栈的内容弹出,重新装入程序计数器(PC)中。在系统复位后,堆栈指针会指向堆栈顶部。
如果堆栈已满,并且发生了不可屏蔽的中断,那么中断请求标志将会被记录下来,但是,该中断的响应还是会被禁止,直到堆栈指针(由RET或RETI)发生递减时,中断才会响应。这个功能能防止堆栈溢出,使得程序员易于使用这种结构。同样地,堆栈已满,接着又执行一个子程序调用(CALL),那么堆栈会产生溢出,而使首先进入堆栈的内容将会丢失,只有最后的两个返回地址会被保留。
数据存储器(PROM)
HT48R05A-1数据存储器RAM容量为49x8位。它可分为两个功能组,特殊功能寄存器和通用数据存储(32x8)。这两个功能组的大部分单元可以读写,而某些单元只能读出,而不能写入。
特殊功能寄存器包括间接寻址寄存器(00H),存储器指针寄存器(MP:01H),累加器(ACC:05H),PC低位字节寄存器(PCL:06H)、表格指针寄存器(TBLP:07H)、表格高位字节寄存器(TBLH:08H)、看门狗寄存器(WADT:09H)、状态寄存器(STATUS:0AH)、中断控制寄存器(INTC:0BH)、定时/计数器(TMR:0DH)、定时/计数控制寄存器(TMPC:0EH)、I/O寄存器(PA:12H,PB:14H,PC:16H)、和I/O控制寄存器(PAC:13H,PBC:15H,PCC:17H)。60H以前的剩余单元都被保留为将来进一步扩展用。读取这些单元的值都将返回00H。通用数据存储器地址60H-7FH作为程序数据和控制信息使用。
所有的RAM区单元都能直接执行算术、逻辑、递增、递减和移位等运算,除了某些特殊的位以外,RAM中的每一位都可以由SET[m].i和CLR[m].i指令来置位和清除,它们都可通过存储器指针寄存器(MP:01H)间接寻址来存取。
· 间接寻址寄存器
地址00H是作为间接寻址寄存器。它没有实际的物理空间,任何对[00H]的读写操作,都会访问由MP(01H)所指向的RAM单元,间接地读取[00H],将会返回00H,而间接地写入00H单元,则不会产生任何结果。
存储器指针寄存器MP的宽度是7位,MP的第7位是没有定义的,若读取它,将返回"1",而任何对MP的写操作只能将低7位数据传送到MP。
· 累加器(ACC)
累加器(ACC)与算术逻辑单元(ALU)紧密联系,它对应于RAM的地址05H,并能与立即数进行操作,在存储器间的数据传送都必须经过累加器。
· 算术逻辑单元
算术逻辑单元是执行8位算术逻辑运算的电路,它提供如下功能:
·算术运算:(ADD、ADC、SUB、SBC、DAA)
·逻辑运算:(AND、OR、XOR、CPL)
·移位运算:(RL、RR、RLC、RRC)
·递增和递减运算:(INC、DEC)
·分支跳转:(SZ、SNZ、SIZ、SDZ)
算术逻辑单元ALU不仅会保存运算的结果而且会改变状态寄存器。
·状态寄存器
8位的状态寄存器(0AH)由零标志位(Z)、进位标志位(C)、辅助进位标志位(AC)、溢出标志位(OV)、掉电标志位(PD)和看门狗定时器溢出标志位(TO)组成。该寄存器不仅记录状态信息,而且还控制运算顺序。
除了TO和PD以外,状态寄存器中的位都可用指令来改变,这种情况与其它寄存器一样,任何写到状态寄存器的数据不会改变TO和PD标志位。但是状态寄存器有关的运算会导致状态寄存器的改变,系统上电,看门狗定时器溢出或执行"CLR WDT"或"HALT"指令,能改变看门狗定时器溢出标志位(TO),系统上电,或执行"CLR WDT"或"HALT"指令,也能改变掉电标志位(PD)。
中断系统(PROM)
HT48R05A-1单片机提供一个外部中断和内部定时/计数器中断。中断的控制寄存器(INTC:0BH)包含了中断控制位,用来设置中断允许/禁止及中断请求标志。
|
查看所有评论




世纪芯是一支由众多技术研发专家和科研企业结盟组成了技术服务型团队,自组建以来一直帮助政府、知名科研机构以及国内众多抄板企业攻克技术难题,10年来,我们专注反向技术研究并不断挑战大型疑难项目,目前已经成为国内抄板企业的中流砥柱。