数据存储器(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)。 Z、OV、AC和C标志位都能反映当前的运算状态。 |
HT48R05A-1个状态标志位说明 | ||
符号 | 位 | 功能 |
C | 0 | 在加法运算中结果产生了进位或减法运算中结果不产生借位,那么C被置位,否则C被清除。它也可被一个循环移位指令所影响。 |
AC | 1 | 在加法运算中低4位产生进位或减法运算中在低4位不产生借位,AC被置位,否则C被清除。 |
Z | 2 | 算术运算或逻辑运算的结果为零则Z被置位,否则Z被清除。 |
OV | 3 | 如果运算结果向高位进位,但最高位并不产生进位输出,OV被置位,否则被清除。 |
PD | 4 | 系统上电或执行了CLR WDT指令,PD被清除,执行HALT指令PD被置位。 |
TO | 5 | 系统上电或执行了CLR WDT或HALT指令,TO被清除,WDT溢出,TO被置位。 |
- | 6 | 未定义,读出为0。 |
- | 7 | 未定义,读出为0。 |
此外,在进入中断子程序或执行子程序调用时,状态寄存器的内容不会自动压入堆栈,如果状态寄存器的内容是重要的,而且子程序会改变状态寄存器的内容,那么程序员必须事先将其备份好,以免被破坏。 |