常用单片机简介
点击浏览芯片信息
点击浏览芯片信息
点击浏览芯片信息
当前位置>>中源单片机>>HOLTEK单片机结构原理     设为首页  加入收藏  
TOP851编程器
    TOP851编程器简介
    TOP851型编程器具有体积小巧,功耗低,可靠性高的特点,是专为开发51系列单片机和烧写各类存储器而设计的普及机型。

    TOp851采用RS232串口与PC机连接通信,抗干扰性能好,可靠性极高,特别适合烧写各类一次性(OTP)和电擦除器件。
     HT48系列单片机结构原理--数据存储器
    深圳市凌雁电子有限公司



    数据存储器(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,并能与立即数进行操作,在存储器间的数据传送都必须经过累加器。
HT48R05A-1程序存储器


    △ 算术逻辑单元

    算术逻辑单元是执行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个状态标志位说明
符号功能
C0在加法运算中结果产生了进位或减法运算中结果不产生借位,那么C被置位,否则C被清除。它也可被一个循环移位指令所影响。
AC1在加法运算中低4位产生进位或减法运算中在低4位不产生借位,AC被置位,否则C被清除。
Z2算术运算或逻辑运算的结果为零则Z被置位,否则Z被清除。
OV3如果运算结果向高位进位,但最高位并不产生进位输出,OV被置位,否则被清除。
PD4系统上电或执行了CLR WDT指令,PD被清除,执行HALT指令PD被置位。
TO5系统上电或执行了CLR WDT或HALT指令,TO被清除,WDT溢出,TO被置位。
-6未定义,读出为0。
-7未定义,读出为0。


      此外,在进入中断子程序或执行子程序调用时,状态寄存器的内容不会自动压入堆栈,如果状态寄存器的内容是重要的,而且子程序会改变状态寄存器的内容,那么程序员必须事先将其备份好,以免被破坏。