寄存器端口是什么

端口是什么  时间:2021-02-21  阅读:()

HC89S001PHC89S001P数据手册8引脚8位ADC型FLASH单片机外设功能引脚全映射HC89S001P2目录1产品简介51.
1功能特性51.
2应用注意61.
3系统框图71.
4引脚配置81.
5引脚描述81.
6外设功能引脚全映射模块PTM92CPU112.
1CPU特性112.
2CPU相关寄存器.
113存储器133.
1程序存储器(FLASH)133.
2数据存储器(RAM)193.
3特殊功能寄存器(SFR)204系统时钟234.
1系统时钟特性234.
2系统时钟相关寄存器245电源管理275.
1电源管理特性275.
2空闲模式275.
3掉电模式275.
4电源管理相关寄存器286复位296.
1复位特性296.
2POR(POWER-ONRESET)复位296.
3BOR(BROWN-OUTRESET)复位296.
4软件复位296.
5看门狗(WDT)复位306.
6堆栈溢出复位306.
7复位相关寄存器317通用及复用I/O.
347.
1通用及复用I/O特性.
347.
2I/O模式.
347.
3I/O功能框图.
357.
4I/O端口相关寄存器.
357.
5外设功能引脚全映射控制398中断41HC89S001P38.
1中断特性418.
2中断汇总428.
3中断向量428.
4中断优先级428.
5中断处理438.
6中断响应时间438.
7外部中断448.
8中断相关寄存器459定时器/计数器509.
1定时器/计数器特性509.
2定时器/计数器TX(X=0,1)509.
3定时器3559.
4定时器/计数器4579.
5定时器56210脉宽调制PWM6610.
1PWM特性.
6610.
2PWM输出模式.
6610.
3PWM相关寄存器.
6711单路8位PWM8111.
1PWM特性.
8111.
2PWM模块相关寄存器.
8112看门狗定时器WDT.
8312.
1WDT特性.
8312.
2WDT相关寄存器8313通用异步收发器UART8513.
1UART特性.
8513.
2工作方式8513.
3波特率发生器9113.
4多机通信9213.
5帧出错检测9313.
6UART1相关寄存器.
9413.
7UART2.
9614串行外部设备接口SPI10014.
1SPI特性10014.
2SPI信号描述10014.
3SPI时钟速率10114.
4SPI功能框图10114.
5SPI工作模式10114.
6SPI传送形式10314.
7SPI出错检测10414.
8SPI中断10414.
9SPI配置对照105HC89S001P414.
10SPI相关寄存器10515模数转换ADC.
10815.
1ADC特性.
10815.
2ADC省电唤醒.
10815.
3ADC相关寄存器.
11016低电压检测LVD11416.
1LVD特性11416.
2LVD相关寄存器11417循环冗余校验CRC.
11617.
1CRC特性.
11617.
2CRC相关寄存器11718代码选项11819指令表11920电气特性12419.
1极限参数12419.
2DC特性.
12419.
3AC特性.
12719.
4ADC特性.
12719.
5BOR检测电压特性12819.
6LVD检测电压特性12819.
7系统下电过程功耗12919.
8其他电气特性13021开发工具13121.
1ISPAUTOPROGRAMMER工具.
13121.
2HC-PM51烧录工具.
13221.
3软件下载13222封装尺寸13322.
1SOP8.
13323版本记录134HC89S001P51产品简介HC89S001P是一颗采用高速低功耗CMOS工艺设计开发的增强型8位单片机,内部有12KBytesFLASH程序存储器,256BytesIRAM和256BytesXRAM,6个双向I/O口,1个外设功能引脚全映射模块PTM,5个16位定时器/计数器,3组12位带死区控制互补PWM,1个8位PWM,2个UART,1个SPI,6个外部中断,6+2路12位ADC,四种系统工作模式(正常、低频、掉电和空闲)和16个中断源.
1.
1功能特性CPU增强型1T8051内核ROM12KBytesFLASHIAP操作灵活的代码保护模式RAM256BytesIRAM256BytesXRAM时钟内部高精度32MHzRC内部44KHzRC多种时钟输出多种复位方式上电复位(POR)多级低电压复位(BOR)-4.
2/3.
9/3.
6/3.
0/2.
6/2.
4/2.
0V看门狗(WDT)复位软件复位堆栈溢出复位I/O6个双向I/O口多种模式可配:输入、带上拉输入、带下拉输入、施密特输入、模拟输入、强推挽输出、开漏输出、开漏带上拉输出外设功能引脚全映射模块PTM中断16个中断源4级中断优先级6个外部中断定时器/计数器T0/T1兼容标准8051,16位自动重载T3可以工作在掉电模式T4可以使用外部信号触发定时T5带捕获功能PWM最多3组12位带死区控制互补PWM-可配置为6路独立输出-可当定时器使用-具有故障检测功能1路8位单输出PWM通讯模块2个UART1个SPIADC检测电路支持6+2ch12位ADC检测ADC参考电压可选内部VREF、外部VREF、VDD具有省电唤醒功能(单通道)低电压检测模块VDD多级电压检测,可中断-4.
2/3.
9/3.
6/3.
0/2.
6/2.
4/2.
0/1.
9V循环冗余校验(CRC)省电模式空闲模式掉电模式工作条件宽电压2.
0V-5.
5V温度范围-40°C-+85°C封装类型SOP8HC89S001P6选型表产品型号ROMBytesRAMBytesMAXFreqI/OADCTimerPWMINTWDTHC89S001P12K256+25616MHz66+2512Bit*3组8Bit*161产品型号VoltagTEMPPackageProgrammerDatasheetDemoCodeDemoBoardHC89S001P2.
0~5.
5V-40~+85°CSOP8HC-PM51/HC-ISP√√√1.
2应用注意1.
为保证系统的稳定性,必须在VDD和GND之间接一电容(容值须大于或等于0.
1μF).
2.
在IAP擦写和进入掉电模式之前,需要配置FREQ_CLK寄存器,指明目前CPU时钟的频率.
3.
如果需要进行FLASHIAP操作,请仔细阅读3.
1.
4.
1的注意事项.
4.
在进行IAP操作时,CPU进入空闲模式,此时不响应任何中断.
5.
外部中断在使用查询方式时,无法正常清除中断标志位.
可以通过先禁止中断使能位再清除中断标志,在完成清除中断标志位后再使能外部中断来进行正常的外部中断产生查询.
使用中断方式时,没有这个问题.
6.
当用户使用T3计数时钟源选择端口输入外部时钟或外部低频晶振32.
768KHz,应使TR3和T3CLKS[1:0]的配置同时进行(即用一条指令完成配置).
7.
在使用WDT进行掉电模式唤醒时请注意,清狗动作和进入掉电指令之间间隔大于等于3个wdt_clk(约70us).
8.
当使用ADC模块时,内部参考电压选择为2V时,VDD电压须高于2.
7V,内部参考电压选择3/4V时,VDD须高于内部参考电压0.
5V以上.
9.
ADCEN置1或切换转换通道后,建议延时20us后再启动ADC转换,如果外部输入阻抗很大时,需要延长这个时间.
10.
在使用ISP下载程序的时候,ISP_TXD和ISP_RXD两个引脚不能下拉到地.
HC89S001P71.
3系统框图Figure1-1系统框图HC89S001P81.
4引脚配置Figure1-2SOP8引脚配置图1.
5引脚描述脚位名称类型说明1P0.
0AN0INT0FLT0I/OANII输入/输出口ADC0输入口外部中断0输入口PWM0故障检测输入引脚2GNDP电源地3P2.
1AN9INT9I/OANI输入/输出口ADC9输入口外部中断9输入口4VDDP电源输入口5P0.
4AN4VrefINT4I/OANANI输入/输出口ADC4输入口ADC外部参考电压输入/输出口外部中断4输入口6P0.
3AN3INT3I/OANI输入/输出口ADC3输入口外部中断3输入口7P0.
2AN2INT2FLT2ISP_TXDI/OANIIO输入/输出口ADC2输入口外部中断2输入口PWM2故障检测输入引脚ISP下载TXD口(此口不影响UART正常使用)8P0.
1AN1INT1FLT1ISP_RXDI/OANIII输入/输出口ADC1输入口外部中断1输入口PWM1故障检测输入引脚ISP下载RXD口(此口不影响UART正常使用)注:I=输入,O=输出,I/O=输入/输出,P=电源,AN=模拟输入输出.
HC89S001P91.
6外设功能引脚全映射模块PTMHC89S001P内置外设功能引脚全映射模块(PTM),可通过用户软件操作将绝大多数的外设功能引脚配置在任意一个非电源口(VDD、GND)上.
1.
6.
1PTM模块特性外设引脚为输入功能(T0/1/3/5外部输入、RXD等等)特性时,系统将允许其多对一映射,即将多种输入特性外设功能引脚分配到同一IO口上,此举可使用户系统得到更好优化.
外设引脚为输出功能(T0/1/4时钟输出、TXD等等)特性时,如果将多个输出特性外设功能引脚分配到同一IO口,遵循固定的优先级,只能有一个输出有效.
软件操作,使用灵活.
用户在应用系统设计时,不用考虑外设功能引脚布局问题,从而降低开发成本.
用户在开发过程中遇到如PCB上外设功能引脚布局错误情况时,可使用该模块对外设功能引脚进行重新分配,从而缩短开发周期.
用户应用系统升级如更换外围器件或MCU时,改动项可减至最少,从而降低系统维护成本.
1.
6.
2PTM可全映射外设功能引脚外设名称类型说明定时器T0I/OT0的外部输入或T0时钟分频输出T1I/OT1的外部输入或T1时钟分频输出T3IT3的外部输入T4OT4的输出T5IT5的外部输入PWMPWM0OPWM0输出口PWM01OPWM01输出口PWM1OPWM1输出口PWM11OPWM11输出口PWM2OPWM2输出口PWM21OPWM21输出口PWM3OPWM3输出口CLKCLKOO时钟输出口UARTTXDOUART1数据传输口RXDI/OUART1接收脚TXD2OUART2数据传输口RXD2IUART2接收脚SPIMOSII/OSPI的数据口,主机的输出和从机的输入MISOI/OSPI的数据口,主机的输入和从机的输出SCKI/OSPI的时钟口SSISPI的片选口HC89S001P101.
6.
3PTM不可全映射外设功能引脚PTM不可全映射外设功能引脚包括电源口(VDD、GND)、PWM故障检测脚(FLT0/1/2)、ADC输入、Vref引脚、INT0-4、INT9功能口.
HC89S001P112CPU2.
1CPU特性HC89S001P的CPU是一个增强型1T兼容8051的内核,在同样的系统时钟下,较之传统的8051芯片具有运行更快速,性能更优越的特性.
2.
2CPU相关寄存器2.
2.
1程序计数器PC程序计数器PC在物理上是独立的,不属于SFR之列.
PC字长16位,是专门用来控制指令执行顺序的寄存器.
单片机上电或复位后,PC的值为0000H,这样单片机从程序的零地址开始执行程序,假如第二复位向量使能,那上电或复位后,单片机将从第二复位向量指定的地址处开始执行程序.

2.
2.
2累加器ACC累加器(ACC)在指令系统中又记做A,用于向ALU提供操作数和存放运算结果,它是CPU中工作最频繁的寄存器,大多数指令的执行都要通过累加器ACC进行.
2.
2.
3寄存器B寄存器B是专门为乘法和除法运算设置的寄存器,用于存放乘法和除法运算的操作数和运算结果,在不进行乘除运算时,可以作为通用寄存器使用.
2.
2.
4程序状态字寄存器PSW此寄存器用来保存ALU运算结果的特征和处理状态,这些特征和状态可以作为控制程序转移的条件,供程序判别和查询,它的各位定义如下所示:位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR复位值00000000位符号CYACF0RS[1:0]OVF1P位编号位符号说明7CY进位/借位标志位0:算术运算中,无进位或借位1:算术运算中,有进位或借位6AC辅助进位/借位标志位0:算术运算中,无辅助进位或借位HC89S001P121:算术运算中,有辅助进位或借位5F0用户自定义标志位4-3RS[1:0]工作寄存器组选择位00:第0组(00H~07H)01:第1组(08H~0FH)10:第2组(10H~17H)11:第3组(18H~1FH)2OV溢出标志位0:无溢出1:有溢出1F1用户自定义标志位0P奇偶标志位0:ACC寄存器中1的个数为0或偶数1:ACC寄存器中1的个数为奇数2.
2.
5堆栈指针SP堆栈指针SP是一个8位的专用寄存器,它指示出堆栈顶部在内部RAM中的位置.
单片机复位后,SP值为07H,使得堆栈事实上由08H单元开始,考虑到08H~1FH单元分别属于工作寄存器1~3,若在程序设计中要使用到这些区域,最好把SP的值改为较大的值.
51单片机的堆栈是向上生成的,例如:SP=30H,CPU执行一条调用指令或响应中断后,PC进栈,PCL保护到31H,PCH保护到32H,SP=32H.
2.
2.
6数据指针DPTR数据指针DPTR是一个16位的专用寄存器,由两个8位的寄存器DPH(高8位)和DPL(低8位)组成.
此系列单片机有两个16位的数据指针DPTR0和DPTR1,其共用同一地址空间,可通过设置DPS(INSCON.
0)位来选择具体使用的数据指针.
2.
2.
7数据指针选择寄存器INSCON位编号76543210R/WRRRR/WRRRR/W复位值00000000位符号-IAPS-DPS位编号位符号说明7-5-保留位(读为0,写无效)4IAPSMOVC操作区选择位0:对程序区读擦写操作1:对OPTION区读操作3-1-保留位(读为0,写无效)0DPS数据指针选择位0:数据指针DPTR01:数据指针DPTR1HC89S001P133存储器3.
1程序存储器(FLASH)3.
1.
1FLASH特性在工作电压范围内都能进行擦除和编程操作在应用编程(IAP)支持用户自定义启动代码和类EEPROM区灵活的代码保护模式擦写次数至少10万次数据保存年限至少10年128字节为1个扇区,8个扇区为1页,4页为一个保护单位3.
1.
2FLASH数据安全用户程序代码在FLASH代码区中运行,对FLASH存储器其他扇区进行读、擦、写操作,但无法擦除代码自身所在的扇区,这种方式被称为在应用编程模式(IAP).
IAP通过MOVC指令来读FLASH,IAP读保护以4K字节为单位,如果一个4K字节空间设置了读保护,其他4K字节空间的MOVC指令读这个4K字节空间,读出来的数据为全零,但这个4K字节空间的MOVC指令可以读取自身的数据.
IAP擦写FLASH的步骤详见FLASHIAP操作,IAP的擦写保护以4K字节为单位,IAP擦写之前需要先看相应扇区的擦写保护是否使能,没有使能擦写保护才能进行IAP的擦写.
若对应4K字节空间读保护被使能,但被允许擦除与写入,则可先擦除后获得该4K字节空间的读允许,直至复位或掉电.
IAP的读擦写保护通过上位机软件来配置,详细情况请参见HC-LINK用户手册.
3.
1.
3OPTION在12K的ROM之外有一个只读的OPTION区域,存放的内容包括:用户定义的一些数据、用户设置的密码、芯片的一些配置、第二复位向量相关的内容.
具体地址分配如下表.

地址名称地址偏移量名称地址名称地址偏移量名称0x0000SN_DATA00x0020FLASH_SC00x0038WAIT_TS0x0100CHIP_ID00x0001SN_DATA10x0021FLASH_SC10x0039BORVS0x0101CHIP_ID10x0002SN_DATA20x0022FLASH_SC2--0x0102CHIP_ID20x0003SN_DATA30x0023FLASH_SC3--0x0103CHIP_ID30x0004SN_DATA4----0x0104CHIP_ID40x0005SN_DATA5----0x0105CHIP_ID50x0006SN_DATA6----0x0106CHIP_ID60x0007SN_DATA7----0x0107CHIP_ID70x0008ID_DATA0HC89S001P140x0009ID_DATA10x000AID_DATA20x000BID_DATA30x000CID_DATA40x000DID_DATA50x000EID_DATA60x000FID_DATA7HC89S001P在出厂时都会固化一个CHIP_ID,一共8个字节,一颗芯片一个ID,不会重复,用户可以在程序中通过MOVC来读出.
SN_DATA和ID_DATA是用户自定义数据,FLASH_SC为客户密码,通过工具软件进行设置,如同设置代码选项一样,它们是可以被擦除和修改的,用户也可以在程序中通过MOVC来读出.
注意:1、用户在进行读OPTION操作前,需要将寄存器INSCON[IAPS]位置1.
2、首字母为"n"位对应数据的反码.
用C语言读CHIP_ID的程序如下://从FLASH里面读取任意长度的数据voidFlash_ReadArr(unsignedintfui_Address,unsignedcharfuc_Length,unsignedchar*fucp_SaveArr){while(fuc_Length--)*(fucp_SaveArr++)=*((unsignedcharcode*)(fui_Address++));}//读取CHIP_ID的值,并保存到read_chip_id数组里unsignedcharread_chip_id[8];INSCON|=0x10;Flash_ReadArr(0x0100,8,read_chip_id);//CHIP_ID开始地址为0x0100INSCON&=~0x10;如果需要读SN_DATA或ID_DATA,只需要修改读地址即可.
3.
1.
3.
1复位重读OPTION后等待时间WAIT_TS位编号76543210位符号WAIT_TS位编号位符号说明7-2-保留位1-0WAIT_TS复位重读option后等待时间选择位00:8ms01:4ms10:1ms11:16msHC89S001P153.
1.
3.
2BOR检测电压选择BORVS位编号76543210位符号BORVS位编号位符号说明7-3-保留位2-0BORVSBOR检测电压点选择位001:2.
0V010:2.
4V011:2.
6V100:3.
0V101:3.
6V110:3.
9V111:4.
2V3.
1.
4FLASHIAP操作HC89S001P的FLASH一共有96个扇区,128个字节为一个扇区,8*128Bytes=1KBytes为一页,1KBytes*4=4KBytes为一块.
IAP写之前必须先进行一次擦除操作,IAP一次擦除一个扇区(128字节),IAP擦除时的地址寄存器可以是扇区里的任意地址.
IAP写是单字节写,每次写一个字节.
IAP擦除一个扇区的时间是5ms,在CPU_CLK为16MHz时,IAP写一个字节的时间是23μs,在CPU_CLK为2MHz时,IAP写一个字节的时间是37μs.
3.
1.
4.
1IAP操作注意事项HC89S001P的用户程序代码可对FLASH进行读、擦、写操作,作为用户更新代码或存储数据使用,为保证用户对FLASH操作的安全性,使用过程中请注意:1、IAP操作只能对其他扇区进行读、擦、写,无法擦除IAP操作代码自身所在的扇区.
2、在进行FLASH的IAP擦写之前,需要配置扩展SFR里FREQ_CLK寄存器,指明目前CPU时钟的频率,FREQ_CLK寄存器配置的值等于CPU时钟的频率值,最小为1MHz,假如目前CPU的运行频率为16MHz,那就配置寄存器FREQ_CLK=0x10.
建议在IAP擦写之前,将CPU时钟频率分频为整数.
当CPU时钟频率低于1MHz时,不能进行FLASH的IAP擦写操作.
3、系统在进行IAP操作时,CPU进入空闲模式,此时不响应任何中断.
4、系统的正常工作电压是2.
0V~5.
5V,当系统电压低于该电压范围时,可能会导致IAP误操作.
建议此时使能BOR功能,且配置合适的BOR消抖时间以保证VDD存在干扰的情况下IAP操作正常.
5、在Option中设置相关的IAP擦写保护,使能用户程序所在扇区保护位,可以有效保证程序区不会被改写或误擦除.
6、为防止MCU上电瞬间电压不稳导致程序跑飞造成误操作,建议每次IAP操作前采用ADC或者LVD检测MCU当前电压,如果电源低于2.
0V则不进行IAP操作.
7、IAP擦写操作前,建议关闭中断(EA=0),确保在IAP操作期间不会被中断影响,待IAP擦写操作完成后,再将中断恢复.
8、在执行IAP操作时,不可避免的会遇到数据擦除结束后,尚未写数据就掉电的情况,所以建议采用双区域保存数据的方式,即使一个区域的数据被擦除,也可以保证另一个区域的数据被正常读取.
HC89S001P163.
1.
4.
2IAP数据寄存器IAP_DATA位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号IAP_DATA[7:0]位编号位符号说明7-0IAP_DATA[7:0]IAP数据寄存器3.
1.
4.
3IAP地址寄存器IAP_ADDRL、IAP_ADDRHHC89S001P一共有96个扇区,128个字节为一个扇区,8*128=1K为一页,1K*4=4K为一块.
IAP_ADDRL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值11111111位符号IAP_ADDR[7:0]位编号位符号说明7-0IAP_ADDR[7:0]IAP操作时的地址寄存器低八位IAP_ADDRH位编号76543210R/WRRR/WR/WR/WR/WR/WR/W复位值00111111位符号-IAP_ADDR[13:8]位编号位符号说明7-6-保留5-0IAP_ADDR[13:8]IAP操作时的地址寄存器高六位注:必须在解锁后才能修改IAP地址寄存器,而且一次操作完成后,IAP地址自动指向0x3FFF.
3.
1.
4.
4IAP命令寄存器IAP_CMDH、IAP_CMDLIAP_CMDH位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号IAP_CMDH[7:0]位编号位符号说明7-0IAP_CMDH[7:0]操作命令模式选择位0xF0:解锁(22个CPU时钟后自动锁定,IAP_CMD[7:0]=0x00)0xE1:触发一次操作HC89S001P170xD2:扇区擦除0xB4:字节编程0x87:软件复位,复位地址为0000H,不重读代码选项0x78:软件复位,复位地址为0000H,重读代码选项其它值:锁定IAP_CMDL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值11111111位符号IAP_CMDL[7:0]位编号位符号说明7-0IAP_CMDL[7:0]IAP_CMDH[7:0]反码注:写入IAP_CMDL[7:0]数据必须为之前写入IAP_CMDH[7:0]的反码,否则将锁定相关操作,即相关操作会失败.
操作示例:1、程序空间扇区擦除IAP_CMDH=0xF0;IAP_CMDL=0x0F;IAP_ADDRL=0x80;IAP_ADDRH=0x00;//选择第1扇区被擦除,一个扇区为128字节IAP_CMDH=0xD2;//选择操作方式,扇区擦除IAP_CMDL=0x2D;IAP_CMDH=0xE1;//触发IAP_CMDL=0x1E;//触发后IAP_ADDRL指向0xFF,IAP_ADDRH指向0x3F,同时自动锁定2、程序空间字节编程IAP_DATA=0x02;//待编程数据,写入数据寄存器必须放在解锁之前IAP_CMDH=0xF0;IAP_CMDL=0x0F;IAP_ADDRH=0x00;IAP_ADDRL=0x00;IAP_CMDH=0xB4;//选择操作方式,字节编程IAP_CMDL=0x4B;IAP_CMDH=0xE1;//触发IAP_CMDL=0x1E;//触发后IAP_ADDRL指向0xFF,IAP_ADDRH指向0x3F,IAP_DATA指向0x00,同时自动锁定注:解锁之后,写地址、选择操作方式、触发这三个步骤之间不能插入任何指令,必须连续操作.
3、软件复位(不重读代码选项)IAP_CMDH=0xF0;HC89S001P18IAP_CMDL=0x0F;IAP_CMDH=0x87;IAP_CMDL=0x78;4、软件复位(重读代码选项)IAP_CMDH=0xF0;IAP_CMDL=0x0F;IAP_CMDH=0x78;IAP_CMDL=0x87;HC89S001P193.
2数据存储器(RAM)HC89S001P为用户提供了256Bytes内部RAM和256Bytes内部扩展RAM来作为数据存储器.
下图为数据存储器空间分配.
Figure3-1数据存储器示意图内部RAM的高128Bytes(0x80~0xFF)必须采用寄存器间接寻址方式.
内部扩展RAM(XRAM)的地址范围是0x0000~0x00FF,访问内部扩展RAM的方法和传统8051单片机访问外部扩展RAM的方法相同,但是不影响I/O口.
在汇编语言中,内部扩展RAM通过MOVX指令访问,即MOVX@DPTP或者MOVX@Ri.
HC89S001P203.
3特殊功能寄存器(SFR)3.
3.
1特殊功能寄存器列表3.
3.
1.
1直接寻址读写SFR0/81/92/A3/B4/C5/D6/E7/FF8RSTFRIAP_ADDRLIAP_ADDRHIAP_DATAIAP_CMDLIAP_CMDH--F0BPWM2ENPWM2PLPWM2PHPWM2DLPWM2DHPWM2DTLPWM2DTHE8-PWM1ENPWM1PLPWM1PHPWM1DLPWM1DHPWM1DTLPWM1DTHE0ACCPWM0ENPWM0PLPWM0PHPWM0DLPWM0DHPWM0DTLPWM0DTHD8--PWM0CPWM1CPWM2CPWM3CPWM3PPWM3DD0PSWC8-T3CONTL3TH3T4CONTL4TH4-C0-T5CONTL5TH5RCAP5LRCAP5H--B8IE1IP2IP3LVDC-WDTCCRCLCRCHB0----ADCC0ADCC1ADCRLADCRHA8IEIP0IP1SPDATSPCTLSPSTAT--A0P2-INSCON98SCONSBUFSADDRSADEN--SCON2-90PINTF0PINTF188TCONTMODTL0TL1TH0TH1CLKSWRCLKCON80P0SPDPLDPH---PCON3.
3.
1.
2外部扩展XSFR扩展XSFR采用和XRAM同样的访问方式,使用MOVXA,@DPTR和MOVX@DPTR,A来进行读写.
比如写一个地址为0xFE88的XSFR,操作如下:MOVA,#wdataMOVDPTR,#0xFE88MOVX@DPTR,A读地址为0xFE89的XSFR,操作如下:MOVDPTR,#0xFE89MOVXA,@DPTR使用C语言来编程时,只需要#defineALLOCATE_EXTERN,并且#include"HC89S001P.
h",就可以像操作直接寻址寄存器一样,直接赋值XSFR,比如:ADCC2=0x4D;HC89S001P21扩展XSFR(基地址0xFE80)偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称0x0000TCON10x0010-0x0020WDTCCR0x0030PITS00x0001-0x0011CLKDIV0x0021-0x0031PITS10x0002-0x0012FREQ_CLK0x0022CRCC0x0032PITS20x0003-0x0013CLKOUT0x0023-0x0033-0x0004-0x0014XTALCFG0x0024BORC0x0034-0x0005T5CON10x0015SPOV_RSTEN0x0025BORDBC0x0035-0x0006-0x0016-0x0026-0x0036-0x0007-0x0017-0x0027LVDDBC0x0037-0x0008S2CON0x0018ADCWC0x0028-0x0038PINTE00x0009S2CON20x0019-0x0029-0x0039PINTE10x000AS2BUF0x001A-0x002ARSTDBC0x003A-0x000B-0x001BADCC20x002B-0x003B-0x000C-0x001C-0x002C-0x003C-0x000D-0x001D-0x002D-0x003D-0x000E-0x001E-0x002E-0x003E-0x000F-0x001F-0x002F-0x003F-扩展XSFR(基地址0xFF00)偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称0x0000P0M00x0010P2M00x0020-0x0030-0x0001P0M10x0011-0x0021-0x0031-0x0002P0M20x0012-0x0022-0x0032-0x0003-0x0013-0x0023-0x0033-0x0004-0x0014-0x0024-0x0034-0x0005P0LPU0x0015-0x0025-0x0035-0x0006-0x0016-0x0026-0x0036-0x0007-0x0017-0x0027-0x0037-0x0008-0x0018-0x0028-0x0038-0x0009-0x0019-0x0029-0x0039-0x000A-0x001A-0x002A-0x003A-0x000B-0x001B-0x002B-0x003B-0x000C-0x001C-0x002C-0x003C-0x000D-0x001D-0x002D-0x003D-0x000E-0x001E-0x002E-0x003E-0x000F-0x001F-0x002F-0x003F-HC89S001P22扩展XSFR(基地址0xFF40)偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称0x0000P00DBC0x0010-0x0020-0x0030-0x0001P01DBC0x0011-0x0021-0x0031-0x0002P02DBC0x0012-0x0022-0x0032-0x0003-0x0013-0x0023-0x0033-0x0004-0x0014-0x0024-0x0034-0x0005-0x0015-0x0025-0x0035-0x0006-0x0016-0x0026-0x0036-0x0007-0x0017-0x0027-0x0037-0x0008-0x0018-0x0028-0x0038-0x0009-0x0019-0x0029-0x0039-0x000A-0x001A-0x002A-0x003A-0x000B-0x001B-0x002B-0x003B-0x000C-0x001C-0x002C-0x003C-0x000D-0x001D-0x002D-0x003D-0x000E-0x001E-0x002E-0x003E-0x000F-0x001F-0x002F-0x003F-扩展XSFR(基地址0xFF80)偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称偏移地址XSFR名称0x0000T0_MAP0x0010PWM0_MAP0x0020TXD_MAP0x0030-0x0001T1_MAP0x0011PWM01_MAP0x0021RXD_MAP0x0031-0x0002-0x0012-0x0022-0x0032-0x0003T3_MAP0x0013-0x0023-0x0033-0x0004T4_MAP0x0014PWM1_MAP0x0024_MAP0x0034-0x0005T5_MAP0x0015PWM11_MAP0x0025SCK_MAP0x0035-0x0006-0x0016-0x0026MOSI_MAP0x0036-0x0007-0x0017-0x0027MISO_MAP0x0037-0x0008-0x0018PWM2_MAP0x0028TXD2_MAP0x0038-0x0009-0x0019PWM21_MAP0x0029RXD2_MAP0x0039-0x000A-0x001A-0x002A-0x003A-0x000B-0x001B-0x002B-0x003B-0x000C-0x001CPWM3_MAP0x002C-0x003C-0x000D-0x001D-0x002D-0x003D-0x000E-0x001E-0x002E-0x003E-0x000FCLKO_MAP0x001F-0x002F-0x003F-HC89S001P234系统时钟4.
1系统时钟特性HC89S001P单片机系统时钟有2种时钟源可选:内部高频RC时钟(32MHz)内部低频RC时钟(44KHz)用户选择后的系统时钟(如果选择的是内部高频RC,则经RC32M_DIV[1:0]分频后的时钟)记做osc_clk,其频率为Fosc,周期为Tosc,主要用于外设模块,osc_clk可以进行1-255之间任意值的分频,分频后的时钟记做CPU时钟,其频率为Fcpu,周期为Tcpu.
芯片上电复位后,默认选择内部高频RC作为系统时钟,其Fosc为4MHz,Fcpu为2MHz,可以通过配置相关寄存器改变osc_clk和cpu_clk的频率.
CPU最高可以运行在20MHz频率下,如果所选时钟源频率高于20MHz,需要对其进行分频,使CPU时钟频率等于或低于20MHz.
内部低频RC(RC44K)输出的时钟记做wdt_clk,用于看门狗定时器的计数,也可以用于系统时钟;内部高频RC(RC32M)输出的时钟记做rc32m_clk,可以进行1/2/4/8分频.
Figure4-1系统时钟框图HC89S001P244.
2系统时钟相关寄存器4.
2.
1时钟控制寄存器CLKCON位编号76543210R/WRRRRRRR/WR复位值00110010位符号-HSRCRDYLSRCRDY-HSRCEN-位编号位符号说明7-6-保留位5HSRCRDY内部高频RC振荡器状态位0:内部高频RC未准备1:内部高频RC准备就绪注:该位硬件自动清0或置1.
4LSRCRDY内部低频RC振荡器状态位0:内部低频RC未准备1:内部低频RC准备就绪注:该位硬件自动清0或置1.
3-2-保留位,请勿操作1HSRCEN内部高频RC振荡器使能位0:内部高频RC关闭1:内部高频RC打开0-保留位,请勿操作4.
2.
2时钟选择寄存器CLKSWR位编号76543210R/WRRR/WR/WRRR/WR/W复位值01010011位符号CLKSTA[1:0]CLKSEL[1:0]-RC32M_DIV[1:0]位编号位符号说明7-6CLKSTA[1:0]系统时钟状态位00:当前系统时钟为内部低频RC01:当前系统时钟为内部高频RC注:系统根据当前系统时钟自动切换各个状态5-4CLKSEL[1:0]系统时钟选择位00:选择系统时钟为内部低频RC01:选择系统时钟为内部高频RC注:系统时钟选择时,必须对应的时钟源状态位为1,否则将延续之前HC89S001P25时钟,切换后,原时钟不会自动关闭;选择后的系统时钟记做osc_clk,其频率为Fosc,周期为Tosc.
3-2-保留位1-0RC32M_DIV[1:0]内部高频RC分频系数00:rc32m_clk01:rc32m_clk/210:rc32m_clk/411:rc32m_clk/8(默认)4.
2.
3时钟分频寄存器CLKDIV位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000010位符号CLKDIV[7:0]位编号位符号说明7-0CLKDIV[7:0]CPU时钟分频系数,默认为2分频配置值为0或1时,时钟不分频;其他情况下,配置值等于分频系数;注:分频后的时钟为CPU时钟,其频率为Fcpu,周期为Tcpu.
4.
2.
4时钟输出寄存器CLKOUT位编号76543210R/WRRRR/WRR/WR/WR/W复位值00000000位符号-CLK_OUT_EN-CLK_OUT_SEL[2:0]位编号位符号说明7-5-保留位4CLK_OUT_EN时钟输出使能位0:禁止时钟输出1:允许时钟输出3-保留位2-0CLK_OUT_SEL[2:0]时钟输出选择位000:选择cpu_clk001:选择osc_clk010:选择wdt_clk011:保留100:选择rc32m_clk101:选择rc32m_clk/2110:选择rc32m_clk/4111:选择rc32m_clk/8HC89S001P264.
2.
5XTALCFG位编号76543210R/WRRRRRRR/WR复位值00000000位符号-RC_PD_EN-位编号位符号说明7-2-保留位,禁止操作1RC_EN_PD系统产生BOR复位时,高频内部RC关闭信号0:系统产生BOR复位时,不关闭高频内部RC1:系统产生BOR复位时,关闭高频内部RC注意:此位可用于BOR使能的情况下,降低VDD下降过程中的系统功耗.
0-保留位,禁止操作4.
2.
6时钟频率寄存器FREQ_CLK在进行FLASH的IAP擦写或者进入掉电模式之前,需要配置扩展SFR里FREQ_CLK寄存器,指明目前CPU时钟的频率,FREQ_CLK寄存器配置的值等于CPU时钟的频率值,最小为1MHz,假如目前CPU的运行频率为16MHz,那就配置寄存器FREQ_CLK=0x10.
FREQ_CLK位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000010位符号FREQ_CLK[7:0]位编号位符号说明7-0FREQ_CLK[7:0]当前CPU时钟频率寄存器HC89S001P275电源管理5.
1电源管理特性提供空闲模式(IDLE)和掉电模式(PD),作为省电模式提供多种方式从空闲/掉电模式唤醒提供低频模式(即时钟分频,详见系统时钟章节相关介绍)5.
2空闲模式空闲模式能够降低系统功耗,在此模式下,程序中止运行,CPU时钟停止,但外部设备时钟可继续运行.
空闲模式下,CPU在确定的状态下停止,并在进入空闲模式前所有CPU的状态都被保存,如PC、PSW、SFR、RAM等.

将PCON寄存器中的IDL位置1,使HC89S001P进入空闲模式.
IDL位置1是CPU进入空闲模式之前执行的最后一条指令.
两种方式可以退出空闲模式:(1)所有的有效中断.
HC89S001P在检测到一个有效中断后,CPU时钟立即恢复,硬件清除PCON寄存器的IDL位,然后执行中断服务程序,随后跳转到进入空闲模式指令之后的指令.

(2)复位信号(WDT复位、BOR复位).
HC89S001P在检测到有效复位后,PCON寄存器中的IDL位被复位成零,系统程序也会从复位地址0000H处开始执行,RAM保持不变,SFR的值根据不同功能模块改变.
5.
3掉电模式掉电模式可以使HC89S001P进入功耗非常低的状态.
掉电模式将停止CPU和外围设备的所有时钟信号,但如果WDT和TIMER3使能且允许在掉电模式下工作,则WDT和TIMER3模块将继续工作.
在进入掉电模式前所有CPU的状态都被保存,如PC、PSW、SFR、RAM等.
在芯片进入掉电模式之前,需要配置扩展SFR里FREQ_CLK寄存器,指明目前CPU时钟的频率,FREQ_CLK寄存器配置的值等于CPU时钟的频率值,最小为1MHz,假如目前CPU的运行频率为16MHz,那就配置寄存器FREQ_CLK=0x10.
将PCON寄存器中的PD位置1,使HC89S001P进入掉电模式.
PD位置1是CPU进入掉电模式之前执行的最后一条指令.
注:如果同时设置IDL位和PD位,HC89S001P进入掉电模式.
退出掉电模式后,CPU也不会进入空闲模式,从掉电模式退出后硬件会清除IDL及PD位.
多种方式可以退出掉电模式:(1)有效外部中断、LVD中断、WDT中断及TIMER3(计数时钟源选择外部时钟)中断.
在有效的外部中断和TIMER3(计数时钟源选择外部时钟)中断发生后,内部高频RC振荡器启动,CPU时钟和外设时钟立即恢复,PCON寄存器中的PD位会被硬件清除,然后程序运行外部中断服务程序.
在完成外部中断服务程序之后,跳转到进入掉电模式之后的指令继续运行.
(2)复位信号(WDT复位、BOR复位).
有效的复位信号将PCON寄存器中的PD位复位成零,HC89S001P28振荡器重新启动,CPU时钟和外设时钟立即恢复,系统也会从复位地址0000H处开始运行,RAM保持不变,SFR的值根据不同功能模块改变.
5.
4电源管理相关寄存器5.
4.
1电源控制寄存器PCON位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号-GF1GF0PDIDL位编号位符号说明7-4-保留位(读为0,写无效)3GF1用户通用标志位12GF0用户通用标志位01PD掉电模式控制位0:正常工作模式1:进入掉电模式(退出该模式后自动清0)0IDL空闲模式控制位0:正常工作模式1:进入空闲模式(退出该模式后自动清0)注:若同时置PD&IDL,系统将进入掉电模式,唤醒后标志被同时清除.
HC89S001P296复位6.
1复位特性提供多种方式复位所有的复位方式都有特定标志6.
2POR(Power-OnReset)复位HC89S001P单片机在上电过程中,会产生一个POR信号,此信号会复位单片机,同时置位RSTFR寄存器里的PORF位,用户可以判断此标志以来确定是否发生POR复位.
注:POR复位后的RAM值不稳定,建议用户根据需要重新初始化相应RAM;其余复位方式不会对RAM进行复位.
6.
3BOR(Brown-OutReset)复位当VDD电压下降到VBOR以下,且持续时间超过TBOR时,系统产生欠压复位.
BOR复位时,RSTFR寄存器的BORF位将被置1,用户可以判断此标志以来确定是否发生BOR复位.
HC89S001P可以通过代码选项或者寄存器来选择BOR检测的电压档位.
当在代码选项中配置完成BOR档位后,客户也可以在使用时根据情况通过配置寄存器重新配置合适的BOR检测电压.
BOR档位:4.
2V/3.
9V/3.
6V/3.
0V/2.
6V/2.
4V/2.
0V.

BOR电压检测电路有一定的迟滞特性,迟滞电压为0.
1V左右.
即当VDD电压下降到所选BOR电压档位时BOR复位有效,而VDD电压需要上升到BOR档位电压+0.
1V时BOR复位才会解除.

欠压复位示意图如下所示,其中TBOR也可以通过寄存器配置,用来进行电压消抖.
Figure6-1BOR示意图6.
4软件复位对IAP_CMDH和IAP_CMDL寄存器按流程写入相关值,系统将产生软件复位,复位后RSTFR寄存器的SWRF将被置1,用户可以判断此标志以来确定是否发生软件复位.
具体操作详见FLASHIAP操作章节相关介绍.
HC89S001P30软件复位前建议将系统时钟切换到内部高频RC.
软件复位不会切换切换系统时钟,但会将CLKSWR寄存器里的RC32M_DIV[1:0]复位成01B,CLKDIV寄存器复位成08H.
6.
5看门狗(WDT)复位为了防止系统在异常情况下受到干扰,MCU程序跑飞,导致系统长时间异常工作,通常是引进看门狗,如果MCU程序中不在规定的时间内按要求操作看门狗,就认为MCU处于异常状态,看门狗就会强制MCU复位,芯片重新从0000H开始运行.
注:要使WDT复位,必须置WDTRST为1,即允许WDT复位功能,否则即使允许WDT运行,WDT也只会置溢出标志,并不会复位.
6.
6堆栈溢出复位堆栈溢出时,系统将复位,并置SPOVF溢出标志,必须软件清除.
堆栈溢出包含入堆溢出及出栈溢出,入栈溢出是指当前栈顶地址为0xFF,同时又有入栈动作;出栈溢出是指当前栈顶地址等于用户设定的栈底地址,同时又有出栈动作.

堆栈溢出复位配置有使能寄存器,当使能时,堆栈溢出才能复位系统.
HC89S001P316.
7复位相关寄存器6.
7.
1复位标志寄存器RSTFR位编号76543210R/WR/WR/WR/WR/WR/WRR/WRPOR复位1xxxx0x0BOR复位uu1uu0u0WDT复位uuu1u0u0软复位uuuu10u0堆栈溢出复位uuuuu010位符号PORF-BORFWDTRFSWRF-SPOVF-注:x表示不确定的值,u表示该值由当前复位方式前的值决定,建议在POR复位后清零一下该寄存器.
位编号位符号说明7PORF上电复位标志位0:无上电复位1:发生上电复位,软件清06-保留位5BORF欠压复位标志位0:无欠压复位1:发生欠压复位,软件清04WDTRFWDT复位标志位0:无WDT复位1:发生WD复位,软件清03SWRF软件复位标志位0:无软件复位1:发生软件复位,软件清02-保留1SPOVF堆栈溢出标志位0:无堆栈溢出复位1:堆栈溢出复位,软件清00-保留HC89S001P326.
7.
2BOR电压检测控制寄存器BORC位编号76543210R/WR/WR/WRRRR/WR/WR/W复位值10000000位符号BORENBOR_DBC_EN-BORVS[2:0]位编号位符号说明7BORENBOR使能位0:禁止BOR1:允许BOR6BOR_DBC_ENBOR消抖使能位0:不使能1:使能5-3-保留位(读为0,写无效)2-0BORVS[2:0]BOR检测电压点选择位000:保留,请勿配置001:2.
0V010:2.
4V011:2.
6V100:3.
0V101:3.
6V110:3.
9V111:4.
2V6.
7.
3BOR电压检测去抖控制寄存器BORDBC位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号BORDBC[7:0]位编号位符号说明7-0BORDBC[7:0]BOR消抖控制位消抖时间=BORDBC[7:0]*8TCPU+2TCPU注:需要使能BOR_DBC_EN,否则BOR不消抖.
注:掉电模式下自动关闭BOR消抖功能,退出掉电模式自动打开.
HC89S001P336.
7.
4堆栈溢出复位使能寄存器SPOV_RSTEN位编号76543210R/WRRRRRRRR/W复位值00000000位符号-SPOV_RSTEN位编号位符号说明7-1-保留位(读为0,写无效)0SPOV_RSTEN堆栈溢出复位使能位0:不使能堆栈溢出复位1:使能堆栈溢出复位HC89S001P347通用及复用I/O7.
1通用及复用I/O特性提供6个双向I/O端口多种模式可配7.
2I/O模式HC89S001P所有I/O口均可由软件配置成多种工作类型之一,具体为:输入、带上拉输入、带下拉输入、模拟输入、强推挽输出、开漏输出和开漏带上拉输出,并且输入可以配置为施密特输入.

HC89S001P上电复位后,所有IO口都默认为模拟输入.
HC89S001P在输入模式时(不包含模拟输入),任何读操作,数据来源都来自引脚电平.
而在输出模式时,通过指令来区分读数据来源,采用"读-修改-写"指令时,为读寄存器值,其它指令为读引脚电平.
HC89S001P首先将需要修改的寄存器的内容读回ALU,对相应位进行修改,然后再整个写回原来的寄存器地址,完成该功能的指令就叫做"读-修改-写"指令.
"读-修改-写"指令是单片机内部自己执行的,它发生在写IO口的时候,当写IO口的时候它先把IO的当前状态读回来,根据要写的数据修改读回来的数据,再写到IO口;读引脚是直接读引脚的当前状态,当前引脚是高电平,读回来的就是高电平,低电平时读回来的就是低电平.

"读-修改-写"指令包括以下指令:INCdirect、DECdirect、ANLdirect,A、ANLdirect,#data、ORLdirect,A、ORLdirect,#data、XRLdirect,A、XRLdirect,#data、DJNZdirect,rel、MOVbit,C、CLRbit、SETBbit、CPLbit、JBCbit,rel.
详见第19章节的指令表.
HC89S001P357.
3I/O功能框图Figure7-1I/O功能框图7.
4I/O端口相关寄存器7.
4.
1P0端口数据寄存器P0位编号76543210R/WRRRR/WR/WR/WR/WR/W复位值00000000位符号---P0[4:0]位编号位符号说明7-0P0[4:0]P0端口数据寄存器7.
4.
2P2端口数据寄存器P2位编号76543210R/WRRRRRRR/WR复位值00000000位符号P2[1]-HC89S001P36位编号位符号说明7-2-保留位1P2[1]P21端口数据寄存器0-保留位7.
4.
3P0端口功能选择寄存器P0M0、P0M1、P0M2P0M0位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00110011位符号P01M[3:0]P00M[3:0]P0M1位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00110011位符号P03M[3:0]P02M[3:0]P0M2位编号76543210R/WRRRRR/WR/WR/WR/W复位值00110011位符号----P04M[3:0]位编号位符号说明7-43-0P0xM[2:0](x=0.
.
.
4)P0.
x端口模式配置位0000:输入(无SMT)0001:带下拉输入(无SMT)0010:带上拉输入(无SMT)0011:模拟输入0100:输入(SMT)0101:带下拉输入(SMT)0110:带上拉输入(SMT)0111:保留(模拟输入)1x00:推挽输出1x01:开漏输出1x10:开漏带上拉输出1x11:保留(推挽输出)注:x为0或1.
HC89S001P377.
4.
4P2端口功能选择寄存器P2M0P2M0位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00110011位符号P21M[3:0]-位编号位符号说明7-4P2M1[5:4]P2.
1端口模式配置位0000:输入(无SMT)0001:带下拉输入(无SMT)0010:带上拉输入(无SMT)0011:模拟输入0100:输入(SMT)0101:带下拉输入(SMT)0110:带上拉输入(SMT)0111:保留(模拟输入)1x00:推挽输出1x01:开漏输出1x10:开漏带上拉输出1x11:保留(推挽输出)注:x为0或1.
3-0-保留位7.
4.
5端口上拉电阻选择寄存器P0LPU位编号76543210R/WRRR/WR/WRRRR复位值00000000位符号-P02PU[1:0]-位编号位符号说明7-6-保留位5-4P02PU[1:0]端口上拉电阻选择位00:50KΩ01:100KΩ10:150KΩ11:300KΩ注:阻值为VDD@5V时参考值.
3-0-保留位HC89S001P387.
4.
6端口消抖控制寄存器P00DBC、P01DBC、P02DBC位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号P0xDBCLK[1:0]P0xDBCT[5:0]位编号位符号说明7-6P0xDBCLK[1:0]端口消抖时钟选择00:Fosc/101:Fosc/410:Fosc/1611:Fosc/64注:x为0、1或2.
5-0P0xDBCT[5:0]端口消抖计数时钟个数,当配置为00时,表示不消抖.
消抖时间是指端口输入时,其对应端口电平所需要维持的时间,需要注意的是,分配到这三个管脚上的功能脚、外部中断输入、故障检测引脚也受消抖控制,其中P02DBC[7:0]表示P0.
2消抖控制寄存器.
注意:P0xDBCT[5:0]配置的消抖时间是一个范围,分频系数*Tosc*P0xDBCT[5:0]-ToscP0.
0RXD_MAP=0x01;//RXD-->P0.
1如果用户在下一次的设计时,需要重新将UART1的TXD和RXD分别映射到P0.
4和P0.
3上,那用户需要进行如下的配置:TXD_MAP=0x04;//TXD-->P0.
4RXD_MAP=0x03;//RXD-->P0.
3多个输出映射到一个端口上时,只能有一个输出有效,下面是默认的优先级优先级顺序复用端口功能1PWM02PWM013PWM14PWM115PWM26PWM217PWM38CLKO9T0_OUT10T1_OUT11T4_OUT12TXD13RXD14SCK15MOSI16MISO17TXD2比如:CLKO_MAP配置为0x01选择P0.
1口作为CLKO的输出口,T4_MAP也配置为0x01,这个时候硬件会按上面的优先级,P0.
1将配置为CLKO的输出口,而T4_MAP的配置无效.
当所有的端口映射控制寄存器都不等于0x01时,即所有的功能口都不选择P0.
1作为输入输出口,此时这个端口的输出就是P0端口数据寄存器的第1位.
输入可以配置为多个功能从一个PAD引脚进入,比如:T0_MAP配置为0x03,则选择P0.
3作为T0的输入口,T5_MAP也配置为0x03,这样从P0.
3端口进入的信号同时作用于T3和T5.
将TXD和RXD都配置到一个端口上时,并且此端口设置为输出,则TXD和RXD将内部连接起来.
在输入时,无论端口是什么功能,读端口数据寄存器都读芯片引脚上值.
HC89S001P418中断8.
1中断特性16个中断源4级中断优先级6个外部中断Figure8-1中断功能框图HC89S001P428.
2中断汇总中断源向量地址允许位标志位查询优先级中断号(C语言)INT00003HEX0INT0F1(最高)0T0000BHET0TF021INT10013HEX1INT1F32T1001BHET1TF143UART10023HES1TI/RI54WDT002BHEWDTWDTRF65LVD0033HLVDIELVDF76UART2003BHES2TI/RI87SPI0043HESPISPIF/MODF98T3004BHET3TF3109T40053HET4TF41110PWM005BHPWMxIE(x=0.
.
.
3)PWMxIF(x=0.
.
.
3)1211T50063HET5TF51312ADC006BHEADCADCIF/AMWIF1413INT2-INT40073HEINx(x=2.
.
.
4)INTxF(x=2.
.
.
4)1514INT9007BHEIN9INT9F1615注:除以上允许位及标志位被置位外,要响应中断必须中断总开关EA也被使能,否则不响应任何中断.
8.
3中断向量当一个中断产生时,程序计数器内容被压栈,相应的中断向量地址被载入程序计数器.
中断向量的入口地址详见中断汇总章节.
8.
4中断优先级每个中断源都可被单独设置为4个中断优先级之一,分别通过IP0、IP1、IP2、IP3中相应位来实现.
中断优先级服务程序描述如下:响应一个中断服务程序时,可响应更高优先级的中断,但不能响应同优先级或低优先级的另一个中断.
响应最高级中断服务程序时,不响应其它任何中断.
如果不同中断优先级的中断源同时申请中断时,响应较高优先级的中断申请.
如果同优先级的中断源在指令周期开始时同时申请中断,那么内部查询优先级确定中断请求响应顺序.
查询优先级详细参照中断汇总.
HC89S001P43中断优先级优先级控制位(x为功能模块)优先级Px[1:0]00优先级0(最低)01优先级110优先级211优先级3(最高)8.
5中断处理中断标志在CPU时钟的上升沿被采样,如果一个标志被置起,那么CPU捕获到后中断系统调用一个长转移指令(LCALL)调用其中断服务程序,但由硬件产生的LCALL会被下列任何条件阻止:1.
同级或更高级的优先级中断在运行中.
2.
当前的周期不是执行中指令的最后一个周期.
换言之,正在执行的指令完成前,任何中断请求都得不到响应.
3.
正在执行的是一条RETI或者访问专用寄存器IE/IE1或是IP0/IP1/IP2/IP3的指令.
换言之,在RETI或者读写IE/IE1或是IP0/IP1/IP2/IP3之后,不会马上响应中断请求,而至少在执行一条其它指令之后才会响应.
中断服务程序ISR完成和该中断相应的一些操作.
ISR以RETI(中断返回)指令结束,将PC值从栈中取回,并恢复原来的中断设置,之后从主程序的断点处继续执行.
当某中断被响应时,被装载到程序计数器PC中的数值称为中断向量,是该中断源相对应的中断服务程序的起始地址.
各中断源服务程序的入口地址(即中断向量)明细可参照中断汇总.

由于中断向量入口地址位于程序存储器的开始部分,所以主程序的第1条指令通常为跳转指令,越过中断向量区(LJMPMAIN).
需要注意的是,不能用RET指令代替RETI指令,RET指令虽然也能控制PC返回到原来中断的地方,但RET指令没有清零中断优先级状态触发器的功能,中断控制系统会认为中断仍在进行,其后果是与此同级或低级的中断请求将不被响应.
若用户在中断服务程序中进行了入栈操作,则在RETI指令执行前应进行相应的出栈操作,即在中断服务程序中PUSH指令与POP指令必须成对使用,否则不能正确返回.
8.
6中断响应时间每一个中断的响应时间都不同,这取决于中断自身特点和发生中断时正在执行的指令.
如果检测出一个中断,这个中断的请求标志位就会被置起,内部电路会保持这个标志位,CPU会在第二个时钟周期产生中断.
如果响应有效且条件允许,在下一个指令执行的时候硬件LCALL指令将调用请求中断的服务程序,否则中断被挂起.
执行LCALL指令需要3个时钟周期.
因此,从中断标志置位到开始执行中断服务程序至少需要5个时钟周期.
当中断请求因前述的的三个情况受阻时,中断响应时间就会加长.
如果同级或更高优先级的中断正在执行,额外的等待时间取决于正执行的中断服务程序的长度.
如果正在执行的指令还没有进行到最后一个周期,假如正在执行RETI指令,则完成正在执行的RETI指令,需要4个时钟周期,加上为完成下一条指令所需的最长时间4个时钟周期,若系统中只有一个中断源,再加上LCALL调用指令3个时钟周期,则最长的响应时间是13个时钟周期.
因此一个简单的中断系统响应时间,总是大于5个时钟周期并且不超过13个时钟周期.
HC89S001P448.
7外部中断HC89S001P有4个外部中断向量入口,外部中断0~1分别有一个独立的中断向量入口,外部中断2~4共用一个中断向量入口,外部中断9共用一个中断向量入口,因而共有6个外部中断端口输入,所有的中断都可以设定4种触发方式,分别为上升沿、下降沿、双沿及低电平.

当调用中断服务程序后,外部中断0~1标志会被硬件自动清0,但外部中断2~4、9标志必须软件清除.
如果中断服务完成后而外部中断仍旧维持,则会产生下一次中断.
外部中断0~2功能端口分别在端口P0.
0~P0.
2上,在使用外部中断0~2时用户可设置外部中断0~2产生有效中断请求所需要的消抖时间,设置端口P0.
0~P0.
2的消抖时间即可,具体设置详见端口消抖控制寄存器P00DBC、P01DBC、P02DBC.
HC89S001P458.
8中断相关寄存器8.
8.
1中断允许寄存器IE、IE1IE位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号EAES2EWDTES1ET1EX1ET0EX0位编号位符号说明7EACPU总中断允许控制位0:禁止CPU中断1:允许CPU中断6ES2UART2中断允许位0:禁止UART2中断1:允许UART2中断5EWDTWDT中断允许位0:禁止WDT中断1:允许WDT中断4ES1UART1中断允许位0:禁止UART1中断1:允许UART1中断3ET1T1中断允许位0:禁止T1中断1:允许T1中断2EX1外部中断1中断允许位0:禁止INT1中断1:允许INT1中断1ET0T0中断允许位0:禁止T0中断1:允许T0中断0EX0外部中断0中断允许位0:禁止INT0中断1:允许INT0中断IE1位编号76543210R/WR/WR/WR/WR/WRR/WR/WR/W复位值00000000位符号EX9EX2_4EADCET5-ET4ET3ESPIHC89S001P46位编号位符号说明7EX9外部中断9中断允许位0:禁止INT9中断1:允许INT9中断6EX2_4外部中断2~4中断允许位0:禁止INT2~INT4中断1:允许INT2~INT4中断注:INT2~INT4共用同一中断向量.
5EADCADC转换完成中断允许位0:禁止ADC中断1:允许ADC中断4ET5T5中断允许位0:禁止T5中断1:允许T5中断3-保留位2ET4T4中断允许位0:禁止T4中断1:允许T4中断1ET3T3中断允许位0:禁止T3中断1:允许T3中断0ESPISPI中断允许位0:禁止SPI中断1:允许SPI中断8.
8.
2中断优先级选择寄存器IP0、IP1、IP2、IP3IP0位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PT1[1:0]PX1[1:0]PT0[1:0]PX0[1:0]位编号位符号说明7-6PT1[1:0]T1中断优先级控制位5-4PX1[1:0]INT1中断优先级控制位3-2PT0[1:0]T0中断优先级控制位1-0PX0[1:0]INT0中断优先级控制位HC89S001P47IP1位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PS2[1:0]PLVD[1:0]PWDT[1:0]PS1[1:0]位编号位符号说明7-6PS2[1:0]UART2中断优先级控制位5-4PLVD[1:0]LVD中断优先级控制位3-2PWDT[1:0]WDT中断优先级控制位1-0PS1[1:0]UART1中断优先级控制位IP2位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PPWM[1:0]PT4[1:0]PT3[1:0]PSPI[1:0]位编号位符号说明7-6PPWM[1:0]PWM中断优先级控制位5-4PT4[1:0]T4中断优先级控制位3-2PT3[1:0]T3中断优先级控制位1-0PSPI[1:0]SPI中断优先级控制位IP3位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PX8[1:0]PX2_4[1:0]PADC[1:0]PT5[1:0]位编号位符号说明7-6PX9[1:0]INT9中断优先级控制位5-4PX2_4[1:0]INT2_4中断优先级控制位3-2PADC[1:0]ADC中断优先级控制位1-0PT5[1:0]T5中断优先级控制位中断优先级优先级控制位(x为功能模块)优先级Px[1:0]00优先级0(最低)01优先级110优先级211优先级3(最高)HC89S001P488.
8.
3外部中断电平选择寄存器PITS0、PITS1、PITS2、PITS3PITS0位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号IT3[1:0]IT2[1:0]IT1[1:0]IT0[1:0]PITS1位编号76543210R/WRRRRRRR/WR/W复位值00000000位符号IT4[1:0]PITS2位编号76543210R/WRRRRR/WR/WRR复位值00000000位符号----IT9[1:0]--位编号位符号说明7-65-43-21-0ITx[1:0](x=0…4,9)外部中断触发沿选择位00:低电平中断01:下降沿中断10:上升沿中断11:双沿中断8.
8.
4外部中断2-4,9使能控制寄存器PINTE0、PINTE1PINTE0位编号76543210R/WRRRR/WR/WR/WRR复位值00000000位符号-EINT4EINT3EINT2-位编号位符号说明7-5-保留位(读为0,写无效)4-2EINTx(x=2.
.
.
4)外部中断控制位(INT2~INT4)0:禁止该端口中断1:允许该端口中断注:只要相应的EINTx(x=2.
.
.
4)被允许,对应的中断标志就可能被置1,反之,对应标志不会被置1.
1-0-保留位(读为0,写无效)HC89S001P49PINTE1位编号76543210R/WRRRRRRR/WR复位值00000000位符号-EINT9-位编号位符号说明7-2-保留位(读为0,写无效)1EINT9外部中断控制位(INT9)0:禁止该端口中断1:允许该端口中断注:只要相应的EINT9被允许,对应的中断标志就可能被置1,反之,对应标志不会被置1.
0-保留位(读为0,写无效)8.
8.
5外部中断标志寄存器PINTF0、PINTF1PINTF0位编号76543210R/WRRRR/WR/WR/WR/WR/W复位值00000000位符号-INT4FINT3FINT2FINT1FINT0F位编号位符号说明7-5-保留位(读为0,写无效)4-2INTxF(x=2.
.
.
4)INT2-INT4中断请求标志位0:软件清01:符合外部中断时,硬件置11-0INTxF(x=0,1)INT0和INT1中断请求标志位0:软件清01:符合外部中断时,硬件置1PINTF1位编号76543210R/WRRRRRRR/WR复位值00000000位符号-INT9F-位编号位符号说明7-2-保留位(读为0,写无效)1INT9FINT9中断请求标志位0:软件清01:符合外部中断时,硬件置10-保留位(读为0,写无效)HC89S001P509定时器/计数器9.
1定时器/计数器特性定时器/计数器T0&T1是不完全兼容标准8051,差异主要是在方式0的功能定义不同定时器/计数器T0&T1支持16位自动重载9.
2定时器/计数器Tx(x=0,1)9.
2.
1定时器/计数器Tx(x=0,1)的工作方式每个定时器的两个数据寄存器(THx&TLx(x=0,1))可作为一个16位寄存器来访问,它们由寄存器TCON和TMOD控制.
IE0寄存器的ET0和ET1位置1能允许定时器0和定时器1中断.
(详见中断章节).
通过计数器/定时器方式寄存器(TMOD)的方式选择位Mx[1:0],选择定时器工作方式.
Mx[1:0]工作方式描述00方式016位自动重载定时器/计数器01方式116位定时器/计数器10方式28位自动重载定时器/计数器11方式3T0分成两个(TL0/TH0)独立的8位定时器/计数器(T1无此模式)9.
2.
1.
1方式0:16位自动重载定时器/计数器Figure9-1TIMER0方式0功能框图方式0与标准8051功能不兼容,在此方式下为16位自动重载定时器/计数器,当THx&TLx(x=0,1)被写时,用作定时器重载寄存器;当被读时,被用作计数寄存器.
TRx(x=0,1)为0时,按顺序写THx&TLx(x=0,1)两个寄存器,写的值同时被写进重载寄存器和计数寄存器,TRx(x=0,1)置1,计数寄存器开始从写的值递增计数,在计数到0xFFFF后,再来一个计数时钟,计数器就会发生溢出,此时TFx(x=0,1)被置为1,同时重载寄存器的16位数据被自动重载入计数寄存器中,计数器又开始从这个重载的数值递增计数.
在TRx(x=0,1)为1时,对THx&TLx(x=0,1)的写操作,不会影响计数器的值,只能改变重载寄存HC89S001P51器的值,这个改变后的值在下一次溢出时重载进计数寄存器中.
只有TRx(x=0,1)为0时,对THx&TLx(x=0,1)的写操作,同时会改变计数寄存器和重载寄存器的值.
由于对TLx(x=0,1)和THx(x=0,1)的写操作需要2条指令才能完成,为保证精确计数,对THx(x=0,1)和TLx(x=0,1)寄存器的写操作都以对TLx(x=0,1)寄存器的写操作作为基准.
当写入重载寄存器时,写THx(x=0,1)寄存器不会立即生效,而是暂存在一个缓冲寄存器中,只有对TLx(x=0,1)寄存器的写操作才会使THx(x=0,1)和TLx(x=0,1)寄存器同时生效.
因此,THx(x=0,1)和TLx(x=0,1)读写操作遵循以下顺序:写操作:先高位后低位读操作:先高位后低位需要注意的是写操作时,当TRx(x=0,1)为0,先写高位再写低位,重载数据将直接重载到计数寄存器中,当TRx(x=0,1)为1,先写高位再写低位,重载数据只会在下一次溢出时才会被重载到计数寄存器中.
若先写低位再写高位,高位数据将无效(无效:表示发生重载时对应数据不能被更新),直到下一次操作写入低位数据,前一次写高位的数据才会有效(有效表示发生重载时对应数据可以被更新).
若只写低位时,低位数据也将有效,例如对T0依次做如下操作时:(1)TH0=0x05;(2)TL0=0x08;//此时若发生重载,重载到计数器中的数据为0x0508(3)TH0=0x06;//此时若发生重载,重载到计数器中的数据仍为0x0508(4)TL0=0x08;//此时若发生重载,重载到计数器中的数据为0x0608(5)TL0=0x09;//此时若发生重载,重载到计数器中的数据为0x0609显然只要修改重载数据,低位都必须再写入一次,建议每次修改同时修改.

注:方式1、2、3时无此要求.
9.
2.
1.
2方式1:16位定时器/计数器Figure9-2TIMER0方式1功能框图在方式1中,定时器Tx(x=0,1)为16位计数器/定时器.
THx(x=0,1)寄存器存放16位计数器/定时器的高8位,TLx(x=0,1)存放低8位.
当16位定时器寄存器递增溢出时,系统置起定时器溢出标志TFx(x=0,1).
如果定时器x中断被允许,将会产生一个中断.
C/Tx(x=0,1)位选择计数器/定时器的功能,如果C/Tx(X=0,1)=1,将工作在外部计数模式,当出现定时器Tx(x=0,1)外部计数时钟的下降沿时,将使定时器Tx数据寄存器加1.
如果C/Tx(x=0,1)=0,选择系统时钟为定时器Tx(x=0,1)的时钟源.
当GATEx(x=0,1)=0时,TRx置1则打开定时器.
当GATEx(x=0,1)=1时,只有在外部输入信号INTx(x=0,1)为高电平时TRx(x=0,1)才会被置1,定时器Tx才会计数,从而可测量INTx(x=0,1)的正脉冲宽度.
TRx(x=0,1)位置1不强行复位定时器,这HC89S001P52意味着如果TRx置1,定时器寄存器将从上次TRx(x=0,1)清0时的值开始计数.
所以在允许定时器之前,应该设定定时器寄存器的初始值.
9.
2.
1.
3方式2:8位自动重载定时器/计数器Figure9-3TIMER0方式2功能框图方式2中,定时器Tx(x=0,1)是8位自动重载计数器/定时器.
TLx(x=0,1)存放计数值,THx(x=0,1)存放重载值.
当在TLx(x=0,1)中的计数器递增至0x00时,置起定时器溢出标志TFx(x=0,1),寄存器THx(x=0,1)的值被重载入寄存器TLx(x=0,1)中.
如果定时器中断使能,当TFx(x=0,1)置1时将产生一个中断.
而在THx(x=0,1)中的重载值不会改变.
在允许定时器正确计数开始之前,TLx(x=0,1)必须初始化为所需的值.
除了自动重载功能外,方式2中的计数器/定时器的使能和配置与方式1和0是一致的.
可配置寄存器TCON2中的TxX12(x=0,1)位选择系统时钟或系统时钟的1/12作为定时器Tx(x=0,1)的时钟源.
当作为定时器应用时,可配置寄存器TCON1中的TxOUT[1:0](x=0,1)位使定时器Tx(x=0,1)溢出时Tx(x=0,1)脚自动翻转.
9.
2.
1.
4方式3:两8位定时器/计数器(T1无此方式)Figure9-4TIMER0方式3功能框图在方式3中,定时器T0用作两个独立的8位计数器/定时器,分别由TL0和TH0控制.
TL0使用定时器0的控制(在TCON中)和状态(在TMOD中)位:TR0,C/T0,GATE0和TF0.
TL0能用系统时钟或HC89S001P53外部输入信号作为时钟源.
TH0只能用作定时器功能,时钟源来自系统时钟.
TH0由定时器T1的控制位TR1控制使能,溢出时定时器T1溢出标志TF1置1,控制定时器T1中断.
定时器0工作在方式3时,定时器1可以工作在方式0、1或2,但是不能置TF1标志和产生中断.
可以用来产生串口的波特率.
TH1和TL1只能用作定时器功能,时钟源来自系统时钟,GATE1位无效.

T1输入脚的上拉电阻也无效.
定时器1由方式控制使能与否,因为TR1被定时器0占用.
定时器1在方式0、1或2时使能,在方式3时被关闭.
可配置寄存器TCON1中的TxX12(x=0,1)位选择系统时钟或系统时钟的1/12作为定时器Tx(x=0,1)的时钟源.
9.
2.
2定时器/计数器Tx(x=0,1)相关寄存器9.
2.
2.
1定时器Tx(x=0,1)控制寄存器TCON、TCON1TCON位编号76543210R/WR/WR/WR/WR/WRRRR复位值00000000位符号TF1TR1TF0TR0-位编号位符号说明7,5TFx(x=0,1)Tx(x=0,1)的溢出标志位0:中断响应时硬件自动清0,或软件清01:计数溢出时,硬件置16,4TRx(x=0,1)Tx(x=0,1)运行控制位0:停止Tx工作1:启动Tx工作3-0-保留位TCON1位编号76543210R/WRRR/WR/WRRR/WR/W复位值00000000位符号-T1OUTT1X12-T0OUTT0X12位编号位符号说明7,6,3,2-保留位(读为0,写无效)5,1TxOUT(x=0,1)Tx(x=0,1)比较输出功能允许位0:禁止定时器Tx比较输出功能1:允许定时器Tx比较输出功能4,0TxX12(x=0,1)Tx(x=0,1)定时器系统时钟源分频选择位0:Tx定时器时钟为Fosc/121:Tx定时器时钟为FoscHC89S001P549.
2.
2.
2定时器Tx(x=0,1)工作方式寄存器TMOD位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号GATE1C/T1M1[1:0]GATE0C/T0M0[1:0]位编号位符号说明7,3GATEx(x=0,1)Tx(x=0,1)门控位0:只需软件置TRx即可启动Tx1:只有在INTx端口电平为高电平时TRx置1,Tx才工作6,2C/T(x=0,1)Tx(x=0,1)定时/计数功能选择位0:Tx用于内部定时1:Tx用于外部计数5-41-0Mx[1:0](x=0,1)Tx(x=0,1)工作方式选择位00:方式016位重装载定时器/计数器01:方式116位定时器/计数器10:方式28位自动重装初值定时器/计数器11:方式3T0分成两个(TL0/TH0)独立的8位定时器/计数器;T1停止计数注:方式3时T0占用T1的TR1、TF1及中断源,由于TR1被T0占用,此时需要关闭T1,可将T1设为工作方式3.
9.
2.
2.
3定时器Tx(x=0,1)数据寄存器TLx(x=0,1)、THx(x=0,1)TLx(x=0,1)位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TLx[7:0](x=0,1)位编号位符号说明7-0TLx[7:0](x=0,1)Tx(x=0,1)数据寄存器低字节THx(x=0,1)位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号THx[7:0](x=0,1)位编号位符号说明7-0THx[7:0](x=0,1)Tx(x=0,1)数据寄存器高字节HC89S001P559.
3定时器3定时器3是16位自动重载定时器,通过两个数据寄存器TH3和TL3访问,由T3CON寄存器控制.
IE1寄存器的ET3位置1允许定时器3中断(详见中断章节).
定时器3只有一个工作方式:16位自动重载计数器/定时器,可以设置预分频比,并可以工作在掉电模式.
定时器3有一个16位计数器/定时器寄存器(TH3,TL3).
当TH3和TL3被写时,用作定时器重载寄存器,当被读时,被用做计数寄存器.
TR3位置1使定时器3开始递增计数,在0xFFFF到0x0000时发生溢出,溢出会置TF3位为1,同时将重载寄存器的16位数据重新载入计数寄存器中.
在TR3为1时,对TH3/TL3的写操作,不会影响计数器的值,只会改变重载寄存器的值,这个改变后的值在下一次溢出时会被重载进计数寄存器.
只有TR3为0时,对TH3/TL3的写操作同时会改变计数寄存器和重载寄存器的值.
TH3和TL3读写操作遵循以下顺序:先高位后低位.
如果T3CLKS[1:0]为00,定时器3不能工作在掉电模式下.
如果T3CLKS[1:0]为01,T3端口输入外部时钟,定时器3可以工作在普通模式或掉电模式(系统从高频模式(内部高频RC)进入掉电模式时).
注意:在读TH3和TL3时,要确保TR3=0.
(当TR3=1时,由于正在计数,读出的TH3和TL3不准)Figure9-5TIMER3功能框图HC89S001P569.
3.
1定时器/计数器T3相关寄存器9.
3.
1.
1定时器T3控制寄存器T3CONT3CON位编号76543210R/WR/WR/WR/WR/WRR/WR/WR/W复位值00000000位符号TF3T3PD_ENT3PS[1:0]-TR3T3CLKS[1:0]位编号位符号说明7TF3定时器3溢出标志位0:无溢出(硬件清0)软件也可以清01:溢出(硬件置1)6T3PD_EN定时器3在掉电模式下运行控制位0:掉电模式下禁止定时器3工作1:掉电模式下允许定时器3工作,此时T3CLKS[1:0]为01或105-4T3PS[1:0]定时器3预分频比选择位00:1/101:1/810:1/6411:1/2563-保留位2TR3定时器3允许控制位0:禁止定时器31:允许定时器31-0T3CLKS[1:0]定时器3计数时钟来源选择位00:系统时钟Fosc01:T3端口输入外部时钟10:保留11:保留(系统时钟Fosc)注:当T3计数时钟源选择端口输入外部时钟,TR3和T3CLKS的配置需要同时进行,即使用一条指令完成配置.
9.
3.
1.
2定时器T3数据寄存器TL3、TH3TL3位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TL3位编号位符号说明7-0TL3T3数据寄存器低字节HC89S001P57TH3位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TH3位编号位符号说明7-0TH3T3数据寄存器高字节9.
4定时器/计数器4定时器4是16位自动重载定时器.
两个数据寄存器TH4和TL4可作为一个16位寄存器来访问,由T4CON寄存器控制.
IE1寄存器的ET4位置1允许定时器4中断(详见中断章节).
当TH4和TL4被写时,用作定时器重载寄存器,当被读时,被用做计数寄存器.
TR4位置1使定时器4开始递增计数.
定时器在0xFFFF到0x0000溢出并置TF4位为1.
溢出同时,定时器重载寄存器的16位数据重新载入计数寄存器中.
TH4和TL4读写操作遵循以下顺序:先高位后低位.
9.
4.
1定时器/计数器T4的工作方式定时器4有三种工作方式:16位自动重载定时器,串口波特率发生器和有T4边沿触发的16位自动重载定时器.
这些方式通过T4CON寄存器的T4M[1:0]设置.
9.
4.
1.
1方式0:16位自动重载定时器/计数器定时器4在方式0为16位自动重载定时器.
TH4寄存器存放16位计数器:定时器高8位,TL4存放低8位.
TR4为0时,按顺序写TH4和TL4两个寄存器,写的值同时被写进重载寄存器和计数寄存器.
TR4置1,计数寄存器开始从写的值递增计数,在计数到0xFFFF后,再来一个计数时钟,计数器就会发生溢出,此时TF4被置为1.
同时重载寄存器的16位数据被自动重载入计数寄存器中,计数器又开始从这个重载的数值递增计数,如果允许定时器4中断则产生中断.
在TR4为1时,对TH4和TL4的写操作,不会影响计数器的值,只能改变重载寄存器的值,这个改变后的值在下一次溢出时重载进计数寄存器中.
只有TR4为0时,对TH4和TL4的写操作会同时会改变计数寄存器和重载寄存器的值.
T4CON.
0寄存器的T4CLKS位选择时钟源.
当T4CLKS=1时,定时器4的时钟源为外部时钟,经预分频后,计数器数据寄存器增加.
当T4CLKS=0,定时器4的时钟源为系统时钟.
在比较方式中,需要软件将T4端口设为输出.
定时器4从TH4和TL4预设值开始向0xFFFF计数,当计数器溢出时,T4端口输出电平翻转,同时定时器4中断标志位被置1.
在比较方式中,定时器4必须工作在定时方式(T4CLKS=0).
HC89S001P58Figure9-6TIMER4方式0功能框图9.
4.
1.
2方式1:UART1波特率发生器通过设置T4CON寄存器中的T4M[1:0]为01选择定时器4作为波特率发生器.
该方式与自动重载方式相似.
定时器4的溢出会引起软件将定时器4重载寄存器中的16位值载入定时器4的计数器中,此时也会产生溢出中断.
如果不希望中断发生,可以关闭ET4.
UART1方式1和3的波特率由下列公式计算:BaudRate=116*fT4/PRESCALER65536[TH4,TL4],用定时器4作为波特率发生器.
上式中,fT4为定时器4计数所选时钟源,PRESCALER为定时器4预分频比,TH4和TL4为定时器4数据寄存器.
如果TC4=1时,可以将波特率从T4口输出,输出波形的频率为波特率的1/2,此时定时器4必须工作在定时方式(T4CLKS=0).
9.
4.
1.
3方式2/3:带边沿触发的16位自动重载定时器定时器4在方式2/3为16位自动重载定时器.
T4CON.
0寄存器的T4CLKS位一直为0,定时器4只能选择系统时钟为时钟源,其余设置与方式0一致.
方式2中,当TR4位置1后,定时器4等待T4端口的触发信号(由T4M[1:0]控制上升/下降沿),一个有效的触发信号使定时器4开始运行.
当定时器4从0xFFFF到0x0000溢出时,TF4(T4CON.
7)会被置起,如定时器4的中断使能,将产生定时器4中断.
溢出同时,定时器重载寄存器的16位数据被重新载入计数寄存器TH4和TL4中,定时器4将保持状态并等待下一个触发沿.
如果TC4=0,在定时器4计数时,一个触发信号不会中止计数器的计数,计数器溢出后进行重载并保持状态,等待下一个有效触发信号;如果TC4=1,在定时器4计数时,一个触发信号会使重载寄存器的16位数据被重新载入计数寄存器TH4和TL4中,并开始计数,但不会产生中断,计数器溢出后才会产生中断.
TR4置1不清定时器4的计数器,在允许定时器之前应该把希望的初始化值写入重载寄存器.
HC89S001P59Figure9-7TIMER4方式2/3功能框图注:(1)当定时器4在波特率发生器方式下作为定时器工作时(TR4=1),TH4或TL4不能读取或写入.
因为定时器在每个状态时间递增,可能导致读取或写入的结果不精确.
因此,在访问TH4/TL4寄存器之前,定时器4必须被关闭(TR4=0).
(2)当定时器4用作计数器时,T4引脚的输入信号频率要小于系统时钟的一半.
HC89S001P609.
4.
2定时器/计数器T4相关寄存器9.
4.
2.
1定时器T4控制寄存器T4CONT4CON位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TF4TC4T4PS[1:0]T4M[1:0]TR4T4CLKS位编号位符号说明7TF4定时器4溢出标志位0:无溢出(硬件清0)软件也可以清01:溢出(硬件置1)6TC4比较功能允许位当T4M[1:0]=00或010:禁止定时器4比较功能1:允许定时器4比较功能当T4M[1:0]=10或110:定时器4不能被再触发1:定时器4可以被再触发5-4T4PS[1:0]定时器4预分频比(PRESCALER)选择位00:1/101:1/810:1/6411:1/2563-2T4M[1:0]定时器4方式选择位00:Mode0,16位自动重载定时器01:Mode1,UART1波特率发生器10:Mode2,T4端口上升沿触发(只用系统时钟,T4CLKS无效)11:Mode3,T4端口下降沿触发(只用系统时钟,T4CLKS无效)1TR4定时器4允许控制位0:禁止定时器41:允许定时器40T4CLKS定时器4计数时钟来源选择位0:系统时钟Fosc1:T4端口输入外部时钟注:定时器4选择后的计数时钟源记作:fT4.
HC89S001P619.
4.
2.
2定时器T4数据寄存器TL4、TH4TL4位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TL4位编号位符号说明7-0TL4T4数据寄存器低字节TH4位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TH4位编号位符号说明7-0TH4T4数据寄存器高字节HC89S001P629.
5定时器5定时器5是16位自动重载定时器.
通过两个数据寄存器TH5和TL5访问,由T5CON寄存器控制.
IEN1寄存器的ET5位置1允许定时器5中断(详见中断章节).
9.
5.
1定时器T5的工作方式9.
5.
1.
1方式0:16位自动重载定时器/计数器定时器5在方式0时,TH5寄存器存放16位定时器高8位,TL5存放低8位.
当EXEN5=0,16位定时寄存器从0xFFFF到0x0000递增,并溢出时,置起TF5位,同时定时器自动将用户软件写好的寄存器RCAP5H和RCAP5L的16位值装入TH5和TL5寄存器,如果允许定时器5中断则产生中断.
如果EXEN5=1,溢出或在外部输入T5上的下降沿/上升沿都能触发一次16位重载,置起EXF5位.
如果ET5被使能,TF5和EXF5位都能产生中断.
T5CON.
1寄存器的TR5位置1使能定时器5,且不清定时器5的计数器.
在允许定时器5之前,将希望的初始值写入定时器重载寄存器中.
Figure9-8TIMER5方式0功能框图9.
5.
1.
2方式1:UART2波特率发生器通过设置T5CON寄存器中的T5M为01,选择定时器5作为UART2的波特率发生器.
该方式与自动重载方式相似.
定时器5的溢出会将定时器5重载寄存器中的16位值载入定时器5的计数器中,但溢出不会产生中断.
此时如果EXEN5=1,则T5引脚上的一个下降沿/上升沿会置位EXF5,但不会引起重载.
因此当定时器5作为波特率发生器时,T5引脚可作为一个额外的外部中断.
UART2的波特率由下列公式计算:BaudRate=116*fT5/PRESCALER65536[RCAP5H,RCAP5L],用定时器5作为波特率发生器.
上式中,fT5为Fosc,PRESCALER为定时器5预分频比,RCAP5H和RCAP5L为定时器5的重载捕获寄存器.
9.
5.
1.
3方式2:16位上升沿捕获在捕获方式中,T5CON的EXEN5位有两个选项.
如果EXEN5=0,定时器T5作为16位定时器,如果ET5被允许的话,定时器T5能设置TF5溢HC89S001P63出产生一个中断.
溢出后计数不会被重载,从0开始计数.
如果EXEN5=1,定时器T5执行相同操作,但是在外部输入T5(可通过T5CON1来选择捕获输入的类型)的上升沿能引起TH5和TL5的当前值分别被捕获到RCAP5H和RCAP5L中,此外,在T5上的上升沿也能引起在T5CON中的EXF5被设置.
如果ET5被允许,EXF5位也像TF5一样也产生一个中断.
9.
5.
1.
4方式3:16位下降沿捕获在捕获方式中,T5CON的EXEN5位有两个选项.
如果EXEN5=0,定时器T5作为16位定时器,如果ET5被允许的话,定时器T5能设置TF5溢出产生一个中断.
溢出后计数不会被重载,从0开始计数.
如果EXEN5=1,定时器T5执行相同操作,但是在外部输入T5(可通过T5CON1来选择捕获输入的类型)的下降沿能引起TH5和TL5的当前值分别被捕获到RCAP5H和RCAP5L中,此外,在T5上的下降沿也能引起在T5CON中的EXF5被设置.
如果ET5被允许,EXF5位也像TF5一样也产生一个中断.
9.
5.
2定时器/计数器T5相关寄存器9.
5.
2.
1定时器T5控制寄存器T5CON、T5CON1T5CON位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TF5EXF5T5PS[1:0]T5M[1:0]TR5EXEN5位编号位符号说明7TF5定时器5溢出标志位0:无溢出1:溢出时硬件置1,必须软件清06EXF5T5引脚外部输入事件发生标志位0:无外部输入事件发生,必须软件清01:检测到外部输入事件且EXEN5=1时,硬件置1,也做中断请求标志位5-4T5PS[1:0]定时器5预分频比(PRESCALER)选择位00:1/101:1/810:1/6411:1/2563-2T5M[1:0]定时器5方式选择位00:Mode0,16位自动重载定时器01:Mode1,UART2波特率发生器10:Mode2,16位上升沿捕获11:Mode3,16位下降沿捕获1TR5定时器5允许控制位0:禁止定时器51:允许定时器50EXEN5T5引脚上的外部事件输入用作重载/捕获触发器允许/禁止控制位HC89S001P640:忽略T5引脚上的事件1:T5引脚上一个下降沿或上升沿,产生一个捕获或重载注:当捕获内部低频RC或RXD引脚时,也需要使能EXEN5,同时还要配置上升沿捕获或下降沿捕获.
T5CON1位编号76543210R/WRRRRRRR/WR/W复位值00000000位符号-CAPM[1:0]位编号位符号说明7-2-保留1-0CAPM[1:0]定时器5捕获类型选择位00:T5脚的变化沿01:内部低频RC,即看门狗的计数时钟10:UART1的RXD1脚11:UART2的RXD2脚9.
5.
2.
2定时器T5数据寄存器TL5、TH5TL5位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TL5位编号位符号说明7-0TL5T5数据寄存器低字节TH5位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号TH5位编号位符号说明7-0TH5T5数据寄存器高字节9.
5.
2.
3定时器T5重载捕获寄存器RCAP5L、RCAP5HRCAP5L位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号RCAP5LHC89S001P65位编号位符号说明7-0RCAP5LT5重载捕获寄存器低字节RCAP5H位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号RCAP5H位编号位符号说明7-0RCAP5HT5重载捕获寄存器高字节HC89S001P6610脉宽调制PWM10.
1PWM特性3组带死区互补PWM或6路占空比独立PWM输出提供每个PWM周期溢出中断,但中断共用同一向量入口输出极性可选择提供出错帧测功能可紧急关闭PWM输出PWM工作时钟源可设定时钟分频比PWM可做定时器/计数器使用HC89S001P集成了三个12位PWM模块PWM0、PWM1和PWM2,三个模块各有一个计数器,PWM0的计数器由PWM0_EN来控制,只要使能PWM0_EN,计数器就会启动,计数器的时钟源通过PWM0C控制寄存器里的CK0来选择.
当需要从芯片管脚输出PWM波形时,还需要使能PWM0_OEN或PWM01_OEN,同时需要将端口设置为强推挽模式.
如果不希望从芯片管脚上输出PWM波形,可以不用使能PWM0_OEN或PWM01_OEN,这时候PWM0的计数器可以当一个定时器来使用,当计数器溢出时,如果中断允许也会产生PWM中断.
如果EFLT0置1,PWM0输出和其互补输出可由FLT0引脚输入信号变化自动关闭.
一旦检测到FLT0引脚输入有效电平,PWM输出会立即关闭,但PWM内部计数器仍在继续运行,这样方便在FLT0引脚错误去除后继续PWM输出.
在FLT0输入信号有效期间,FLT0S位无法清除.
只有当FLT0输入信号消失后,才能软件清除FLT0S状态位,此时PWM恢复正常输出.
PWM0故障检测端口FLT0(P0.
0端口)具有消抖功能,用户可根据需要设置合适的消抖时间.
配置FLT0的消抖时间即配置端口P0.
0的消抖时间,设置方法详见端口消抖控制寄存器P00DBC、P01DBC、P02DBC章节.
三个PWM模块的功能及操作完全一样,用户可通过控制寄存器产生3路带死区互补的PWM或6路单独的PWM输出.
3个PWM模块共用一个中断向量入口,但有各自的控制位及标志位,方便用户定时修改PWM模块下一次循环的周期或占空比.
10.
2PWM输出模式PWM模块包含3个独立的波形发生模块,对应的3对PWM输出为PWM0/PWM01、PWM1/PWM11、PWM2/PWM21,通过控制相关寄存器可使每对PWM输出配置成互补输出模式或独立输出模式.
10.
2.
1互补输出模式当PWMxM(x=0,1,2)置0:PWM将工作在互补输出模式,互补输出模式时,通常使能PWMx&PWMx(x=0,1,2)1输出,此时可以控制对应的周期寄存器、占空比寄存器及死区时间寄存器,从而控制互补波形的输出.
互补输出时可选择PWMx&PWMx1(x=0,1,2)输出极性,方便用户各种电平驱动需求.
HC89S001P6710.
2.
2独立输出模式当PWMxM置1:PWM将工作在独立输出模式,独立输出模式时,可以控制相关寄存器使能对应PWM端口单一输出或同时输出,同时让PWMx&PWMx1输出时,其周期相同但占空比可单独设置.
当为独立输出模式时占空比寄存器将控制PWMx的占空比,死区时间控制寄存器将控制PWMx1的占空比,独立输出时也可控制PWMx&PWMx1输出极性,方便用户各种电平驱动需求.
(x=0,1,2)10.
3PWM相关寄存器10.
3.
1PWM0模块10.
3.
1.
1PWM0使能寄存器PWM0EN位编号76543210R/WRR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号-FLT0_MODEEFLT0PWM0MPWM01_OENPWM0_OENPWM0_EN位编号位符号说明7-保留位6-5FLT0_MODEPWM0故障输出预定状态选择位00:PWM0&PWM01故障期间均为低电平01:PWM0故障期间低电平,PWM01故障期间高电平10:PWM0故障期间高电平,PWM01故障期间低电平11:PWM0&PWM01故障期间均为高电平4EFLT0PWM0FLT0控制引脚使能位0:禁止故障检测,GPIO功能或其它功能1:允许故障检测,PWM0故障检测输入引脚注:互补输出模式及独立输出模式都可受故障检测脚控制.
3PWM0MPWM0工作模式选择位0:PWM0&PWM01工作于互补输出模式1:PWM0&PWM01工作于独立输出模式注:修改PWM0工作模式时建议先关闭PWM0模块.
2PWM01_OENPWM01输出控制位0:禁止PWM01输出1:允许PWM01输出1PWM0_OENPWM0输出控制位0:禁止PWM0输出1:允许PWM0输出注:PWM0允许输出,必须在PWM0_EN置1下才有效,否则为PWM0输出关闭状态(输出时对应端口必须设为输出模式);即使都禁止输出,只要PWM0_EN位被使能,PWM0都可以溢出中断,即此时PWM0可以作为定时器使用,此控制位修改立即生效.
HC89S001P680PWM0_ENPWM0模块使能控制位0:关闭PWM0模块1:打开PWM0模块(重新计数)注:关闭时,PWM0计数停止,输出立即关闭.
打开时,PWM0计数器都重新从1开始计数,输出受PWM0_OEN和PWM01_OEN控制.
10.
3.
1.
2PWM0控制寄存器PWM0C位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM0IEPWM0IFFLT0SFLT0CPWM0SCK0位编号位符号说明7PWM0IEPWM0中断允许位0:禁止PWM0中断1:允许PWM0中断6PWM0IFPWM0中断标志位0:软件清01:PWM0周期计数器溢出,由硬件置15FLT0SPWM0FLT状态位0:PWM正常状态,软件清01:PWM输出关闭,硬件置14FLT0CPWM0FLT引脚配置位0:FLT0为低电平时,PWM输出关闭1:FLT0为高电平时,PWM输出关闭3-2PWM0SPWM0和PWM01输出模式选择位00:PWM0和PWM01均为高有效01:PWM0为高有效,PWM01为低有效10:PWM0为低有效,PWM01为高有效11:PWM0和PWM01均为低有效注:对于独立模式,输出模式选择位同样有效,但与互补模式不同的是:有效期间为占空比期间;而互补模式中对于PWM0的有效期间为占空比期间,PWM01的有效期间为占空比的互补期间.
1-0CK0PWM0时钟源选择位00:Fosc/101:Fosc/810:Fosc/3211:Fosc/128HC89S001P69PWM0S=00&PWM0M=0:PWM0和PWM01工作于互补模式且均为高有效PWM0S=00&PWM0M=1:PWM0和PWM01工作于独立模式且均为高有效PWM0S=01&PWM0M=0:PWM0和PWM01工作于互补模式且PWM0为高有效、PWM01为低有效PWM0S=01&PWM0M=1:PWM0和PWM01工作于独立模式且PWM0为高有效、PWM01为低有效PWM0S=10&PWM0M=0:PWM0和PWM01工作于互补模式且PWM0为低有效、PWM01为高有效PWM0S=10&PWM0M=1:PWM0和PWM01工作于独立模式且PWM0为低有效、PWM01为高有效HC89S001P70PWM0S=11&PWM0M=0:PWM0和PWM01工作于互补模式且PWM0和PWM01均为低有效PWM0S=11&PWM0M=1:PWM0和PWM01工作于独立模式且PWM0和PWM01均为低有效10.
3.
1.
3PWM0周期寄存器PWM0PL、PWM0PHPWM0PL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM0PL[7:0]位编号位符号说明7-0PWM0PL[7:0]PWM0周期寄存器低8位PWM0PH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号----PWM0PH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM0PH[3:0]PWM0周期寄存器高4位注:修改PWM0周期时先修改高位,后修改低位,读时不受限制,例如(1)PWM0PH=0x05;(2)PWM0PL=0x08;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0508(3)PWM0PH=0x06;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0508(4)PWM0PL=0x08;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0608(5)PWM0PL=0x09;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0609显然只要修改PWM周期,无论低位寄存器是否需要修改,低位都必须写入一次,且周期修改都只会在下一个PWM周期才会生效.
PWM0周期=[PWM0PH:PWM0PL]*PWM0工作时钟源周期HC89S001P7110.
3.
1.
4PWM0占空比寄存器PWM0DL、PWM0DHPWM0DL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM0DL[7:0]位编号位符号说明7-0PWM0DL[7:0]PWM0占空比寄存器低8位PWM0DH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号----PWM0DH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM0DH[3:0]PWM0占空比寄存器高4位注:修改PWM0占空比寄存器,操作类似修改PWM0周期寄存器,都是必须先修改高位后修改低位,且修改都在下一个周期才有效.
PWM0占空比=[PWM0DH:PWM0DL]*PWM0工作时钟周期HC89S001P7210.
3.
1.
5PWM0死区时间寄存器PWM0DTL、PWM0DTHPWM0DTL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM0DTL[7:0]位编号位符号说明7-0PWM0DTL[7:0]PWM0死区时间寄存器低8位PWM0DTH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号----PWM0DTH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM0DTH[3:0]PWM0死区时间寄存器高4位当PWM0M=1时,PWM0工作在2路独立模式,此时的死区时间寄存器被用来当做PWM01的占空比寄存器,即独立模式的PWM0可以产生2路周期相同,但占空比可以不同的PWM波形.
互补模式下:PWM0死区时间=[PWM0DTH:PWM0DTL]*PWM0工作时钟周期.
互补模式下:死区时间必须小于占空比时间,死区时间与占空比时间的和必须小于PWM0周期.
独立模式下:PWM01占空比时间=[PWM0DTH:PWM0DTL]*PWM0工作时钟周期.
HC89S001P7310.
3.
2PWM1模块10.
3.
2.
1PWM1使能寄存器PWM1EN位编号76543210R/WRR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号-FLT1_MODEEFLT1PWM1MPWM11_OENPWM1_OENPWM1_EN位编号位符号说明7-保留位6-5FLT1_MODEPWM1故障输出预定状态选择位00:PWM1&PWM11故障期间均为低电平01:PWM1故障期间低电平,PWM11故障期间高电平10:PWM1故障期间高电平,PWM11故障期间低电平11:PWM1&PWM11故障期间均为高电平4EFLT1PWM1FLT1控制引脚使能位0:禁止故障检测,GPIO功能或其它功能1:允许故障检测,PWM1故障检测输入引脚注:互补输出模式及独立输出模式都可受故障检测脚控制.
3PWM1MPWM1工作模式选择位0:PWM1&PWM11工作于互补输出模式1:PWM1&PWM11工作于独立输出模式注:修改PWM1工作模式时建议先关闭PWM1模块.
2PWM11_OENPWM11输出控制位0:禁止PWM11输出1:允许PWM11输出1PWM1_OENPWM1输出控制位0:禁止PWM1输出1:允许PWM1输出注:PWM1允许输出,必须在PWM1_EN置1下才有效,否则为PWM1输出关闭状态(输出时对应端口必须设为输出模式);即使都禁止输出,只要PWM1_EN位被使能,PWM1都可以溢出中断,即此时PWM1可以作为定时器使用,此控制位修改立即生效.
0PWM1_ENPWM1模块使能控制位0:关闭PWM1模块1:打开PWM1模块(重新计数)注:关闭时,PWM1计数停止,输出立即关闭.
打开时,PWM1计数器都重新从1开始计数,输出受PWM1_OEN和PWM11_OEN控制.
HC89S001P7410.
3.
2.
2PWM1控制寄存器PWM1C位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM1IEPWM1IFFLT1SFLT1CPWM1SCK1位编号位符号说明7PWM1IEPWM1中断允许位0:禁止PWM1中断1:允许PWM1中断6PWM1IFPWM1中断标志位0:软件清01:PWM1周期计数器溢出,由硬件置15FLT1SPWM1FLT状态位0:PWM正常状态,软件清01:PWM输出关闭,硬件置14FLT1CPWM1FLT引脚配置位0:FLT1为低电平时,PWM输出关闭1:FLT1为高电平时,PWM输出关闭3-2PWM1SPWM1和PWM11输出模式选择位00:PWM1和PWM11均为高有效01:PWM1为高有效,PWM11为低有效10:PWM1为低有效,PWM11为高有效11:PWM1和PWM11均为低有效注:对于独立模式,输出模式选择位同样有效,但与互补模式不同的是:有效期间为占空比期间;而互补模式中对于PWM1的有效期间为占空比期间,PWM11的有效期间为占空比的互补期间.
1-0CK1PWM1时钟源选择位00:Fosc/101:Fosc/810:Fosc/3211:Fosc/12810.
3.
2.
3PWM1周期寄存器PWM1PL、PWM1PHPWM1PL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM1PL[7:0]位编号位符号说明7-0PWM1PL[7:0]PWM1周期寄存器低8位HC89S001P75PWM1PH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号----PWM1PH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM1PH[3:0]PWM1周期寄存器高4位注:修改PWM1周期时先修改高位,后修改低位,读时不受限制,例如(1)PWM1PH=0x05;(2)PWM1PL=0x08;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0508(3)PWM1PH=0x06;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0508(4)PWM1PL=0x08;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0608(5)PWM1PL=0x09;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0609显然只要修改PWM周期,无论低位寄存器是否需要修改,低位都必须写入一次,且周期修改都只会在下一个PWM周期才会生效.
PWM1周期=[PWM1PH:PWM1PL]*PWM1工作时钟源周期10.
3.
2.
4PWM1占空比寄存器PWM1DL、PWM1DHPWM1DL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM1DL[7:0]位编号位符号说明7-0PWM1DL[7:0]PWM1占空比寄存器低8位PWM1DH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号----PWM1DH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM1DH[3:0]PWM1占空比寄存器高4位注:修改PWM1占空比寄存器,操作类似修改PWM1周期寄存器,都是必须先修改高位后修改低位,且修改都在下一个周期才有效.
PWM1占空比=[PWM1DH:PWM1DL]*PWM1工作时钟周期HC89S001P7610.
3.
2.
5PWM1死区时间寄存器PWM1DTL、PWM1DTHPWM1DTL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM1DTL[7:0]位编号位符号说明7-0PWM1DTL[7:0]PWM1死区时间寄存器低8位PWM1DTH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号-PWM1DTH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM1DTH[3:0]PWM1死区时间寄存器高4位当PWM1M=1时,PWM1工作在2路独立模式,此时的死区时间寄存器被用来当做PWM11的占空比寄存器,即独立模式的PWM1可以产生2路周期相同,但占空比可以不同的PWM波形.
互补模式下:PWM1死区时间=[PWM1DTH:PWM1DTL]*PWM1工作时钟周期;互补模式下:死区时间必须小于占空比时间,死区时间与占空比时间的和必须小于PWM1周期;独立模式下:PWM11占空比时间=[PWM1DTH:PWM1DTL]*PWM1工作时钟周期;10.
3.
3PWM2模块10.
3.
3.
1PWM2使能寄存器PWM2EN位编号76543210R/WRR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号-FLT2_MODEEFLT2PWM2MPWM21_OENPWM2_OENPWM2_EN位编号位符号说明7-保留位6-5FLT2_MODEPWM2故障输出预定状态选择位00:PWM2&PWM21故障期间均为低电平01:PWM2故障期间低电平,PWM21故障期间高电平10:PWM2故障期间高电平,PWM21故障期间低电平11:PWM2&PWM21故障期间均为高电平4EFLT2PWM2FLT2控制引脚使能位HC89S001P770:禁止故障检测,GPIO功能或其它功能1:允许故障检测,PWM2故障检测输入引脚注:互补输出模式及独立输出模式都可受故障检测脚控制.
3PWM2MPWM2工作模式选择位0:PWM2&PWM21工作于互补输出模式1:PWM2&PWM21工作于独立输出模式注:修改PWM2工作模式时建议先关闭PWM2模块.
2PWM21_OENPWM21输出控制位0:禁止PWM21输出1:允许PWM21输出1PWM2_OENPWM2输出控制位0:禁止PWM2输出1:允许PWM2输出注:PWM2允许输出,必须在PWM2_EN置1下才有效,否则为PWM2输出关闭状态(输出时对应端口必须设为输出模式);即使都禁止输出,只要相PWM2_EN位被使能,PWM2都可以溢出中断,即此时PWM2可以作为定时器使用,此控制位修改立即生效.
0PWM2_ENPWM2模块使能控制位0:关闭PWM2模块1:打开PWM2模块(重新计数)注:关闭时,PWM2计数停止,输出立即关闭.
打开时,PWM2计数器都重新从1开始计数,输出受PWM2_OEN和PWM21_OEN控制.
10.
3.
3.
2PWM2控制寄存器PWM2C位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM2IEPWM2IFFLT2SFLT2CPWM2SCK2位编号位符号说明7PWM2IEPWM2中断允许位0:禁止PWM2中断1:允许PWM2中断6PWM2IFPWM2中断标志位0:软件清01:PWM2周期计数器溢出,由硬件置15FLT2SPWM2FLT状态位0:PWM正常状态,软件清01:PWM输出关闭,硬件置14FLT2CPWM2FLT引脚配置位0:FLT2为低电平时,PWM输出关闭1:FLT2为高电平时,PWM输出关闭HC89S001P783-2PWM2SPWM2和PWM21输出模式选择位00:PWM2和PWM21均为高有效01:PWM2为高有效,PWM21为低有效10:PWM2为低有效,PWM21为高有效11:PWM2和PWM21均为低有效注:对于独立模式,输出模式选择位同样有效,但与互补模式不同的是:有效期间为占空比期间;而互补模式中对于PWM2的有效期间为占空比期间,PWM21的有效期间为占空比的互补期间.
1-0CK2PWM2时钟源选择位00:Fosc/101:Fosc/810:Fosc/3211:Fosc/12810.
3.
3.
3PWM2周期寄存器PWM2PL、PWM2PHPWM2PL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM2PL[7:0]位编号位符号说明7-0PWM2PL[7:0]PWM2周期寄存器低8位PWM2PH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号----PWM2PH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM2PH[3:0]PWM2周期寄存器高4位注:修改PWM2周期时先修改高位,后修改低位,读时不受限制,例如(1)PWM2PH=0x05;(2)PWM2PL=0x08;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0508(3)PWM2PH=0x06;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0508(4)PWM2PL=0x08;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0608(5)PWM2PL=0x09;//此时PWM计数器溢出,则下一个周期开始周期计算数据为0x0609显然只要修改PWM周期,无论低位寄存器是否需要修改,低位都必须写入一次,且周期修改都只会在下一个PWM周期才会生效.
PWM2周期=[PWM2PH:PWM2PL]*PWM2工作时钟源周期HC89S001P7910.
3.
3.
4PWM2占空比寄存器PWM2DL、PWM2DHPWM2DL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM2DL[7:0]位编号位符号说明7-0PWM2DL[7:0]PWM2占空比寄存器低8位PWM2DH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号-PWM2DH[3:0]位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM2DH[3:0]PWM2占空比寄存器高4位注:修改PWM2占空比寄存器,操作类似修改PWM2周期寄存器,都是必须先修改高位后修改低位,且修改都在下一个周期才有效.
PWM2占空比=[PWM2DH:PWM2DL]*PWM2工作时钟周期10.
3.
3.
5PWM2死区时间寄存器PWM2DTL、PWM2DHPWM2DTL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM2DTL[7:0]位编号位符号说明7-0PWM2DTL[7:0]PWM2死区时间寄存器低8位PWM2DTH位编号76543210R/WRRRRR/WR/WR/WR/W复位值00000000位符号-PWM2DTH[3:0]HC89S001P80位编号位符号说明7-4-保留位(读为0,写无效)3-0PWM2DTH[3:0]PWM2死区时间寄存器高4位当PWM2M=1时,PWM2工作在2路独立模式,此时的死区时间寄存器被用来当做PWM21的占空比寄存器,即独立模式的PWM2可以产生2路周期相同,但占空比可以不同的PWM波形.
互补模式下:PWM2死区时间=[PWM2DTH:PWM2DTL]*PWM2工作时钟周期;互补模式下:死区时间必须小于占空比时间,死区时间与占空比时间的和必须小于PWM2周期;独立模式下:PWM21占空比时间=[PWM2DTH:PWM2DTL]*PWM2工作时钟周期;HC89S001P8111单路8位PWM11.
1PWM特性8位PWM输出提供PWM周期溢出中断,但中断与PWM0、PWM1、PWM2共用同一向量输出极性可选择PWM可做定时器/计数器使用,即周期寄存器写入时做定时器使用,读时做计数器使用11.
2PWM模块相关寄存器11.
2.
1PWM3控制寄存器PWM3CPWM3C位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM3ENPWM3IEPWM3IFPWM3OENPWM3SPTCK3[2:0]位编号位符号说明7PWM3ENPWM3模块使能控制位0:关闭PWM3模块1:打开PWM3模块(重新计数)注:关闭时,PWM计数停止,输出立即关闭.
打开时,PWM计数器都重新从1开始计数,输出受PWM3OEN控制.
6PWM3IEPWM3中断允许位0:禁止PWM3中断1:允许PWM3中断5PWM3IFPWM3中断标志位0:软件清01:硬件置1,仅在PWM3计数器溢出(大于PWM3P时)才置14PWM3OENPWM3输出使能位0:PWM3禁止输出1:PWM3允许输出注:PWM3允许输出,必须在PWM3EN置1下才有效,否则为PWM3输出关闭状态(输出时对应端口必须设为输出模式);即使都禁止输出,只要相关位被使能,PWM3都可以溢出中断,即此时PWM3可以作为定时器/计数器使用,此控制位修改立即生效.
3PWM3SPWM3输出极性选择位HC89S001P820:PWM3有效期间为高电平1:PWM3有效期间为低电平注:修改此控制位,立即生效,有效期间是指占空比期间.
2-0PTCK3[2:0]PWM3工作时钟源选择位000:Fosc/1001:Fosc/2010:Fosc/4011:Fosc/8100:Fosc/16101:Fosc/32110:Fosc/64111:Fosc/128注:修改此控制位,立即生效,不建议在输出过程中修改.
11.
2.
2PWM3周期寄存器PWM3PPWM3周期寄存器PWM3P位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM3P[7:0]位编号位符号说明7-0PWM3P[7:0]PWM3P周期寄存器11.
2.
3PWM3D占空比寄存器PWM3DPWM3占空比寄存器PWM3D位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号PWM3D[7:0]位编号位符号说明7-0PWM3D[7:0]PWM3D占空比寄存器PWM3P≤PWM3D时,占空比100%PWM3D=0x00时,占空比0%HC89S001P8312看门狗定时器WDT12.
1WDT特性可配置是否溢出复位可配置在空闲/掉电模式下是否允许可灵活配置溢出时间HC89S001P看门狗定时器是一个递增计数器,其时钟源内部低频RC,可以通过寄存器选择在空闲/掉电模式下是否运行.
WDT溢出时,芯片是否复位可通过RSTFR寄存器里的WDTRF位来判断.
如果WDTRST为1,则WDT溢出时会复位系统,如果WDTRST为0,而且WDT的中断使能,则会产生WDT中断.
由于内部低频RC振荡器频率随工艺角有偏差,可通过定时器5进行捕获测量内部低频RC振荡器的真实频率,然后根据实际的频率值进行溢出时间的计算.
HC89S001P看门狗定时器溢出后有溢出标志,复位有专用的复位标志,可设分频,可设计数溢出值,清WDT操作只需置相应控制位即可,操作灵活.
12.
2WDT相关寄存器12.
2.
1WDT控制寄存器WDTC位编号76543210R/WRR/WR/WWR/WR/WR/WR/W复位值01001111位符号-WDTRSTWDTFWDTCLRWDTPDWDTPS[2:0]位编号位符号说明7-保留位6WDTRSTWDT复位允许位0:禁止WDT复位1:允许WDT复位注:禁止WDT复位时,WDT计数溢出依旧可以置中断请求标志.
5WDTFWDT中断请求标志位0:无WDT计数溢出,中断响应时软件清01:WDT计数溢出,WDTF硬件置1,可用于中断请求4WDTCLR看门狗清零位置1会清零WDT计数器,硬件自动清0该位3WDTPDWDT空闲/掉电模式下运行控制位0:空闲/掉电模式下允许WDT运行,如果WDTRST=1会复位唤醒系统,如果WDTRST=0,而且EA=1,EWDT=1,会中断唤醒系统.
1:空闲/掉电模式下禁止WDT运行HC89S001P842-0WDTPS[2:0]看门狗定时器时钟源分频选择位000:1/8001:1/16010:1/32011:1/64100:1/128101:1/256110:1/512111:1/102412.
2.
2WDT计数比较寄存器WDTCCR位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值11111111位符号WDTCCR[7:0]位编号位符号说明7-0WDTCCR[7:0]WDT计数比较寄存器注:WDT计数器与WDTCCR[7:0]匹配时,溢出并且计数器清0重新计数,写入00时,将关闭WDT功能(但不关闭内部低频RC),即相当于禁止WDT.
写入非0数据时,将启动WDT.
在使用WDT进行掉电模式唤醒时请注意,清狗动作和进入掉电指令之间间隔大于等于3个wdt_clk(约70us);下面以44KHz为例进行计算,真实的内部低频RC频率可通过定时器5进行捕获测量得到.
溢出时间=(WDT分频系数*(WDTCCR[7:0]+1))/实际内部低频RC频率.
WDTCCR[7:0]=0xFF看门狗溢出时间如下表.
PS2PS1PS0WDT分频系数调整步进值WDT最大溢出时间@44K00080.
182ms46.
55ms001160.
364ms93.
09ms010320.
728ms186.
18ms011641.
456ms372.
36ms1001282.
912ms744.
73ms1012565.
824ms1489.
45ms11051211.
648ms2978.
91ms111102423.
296ms5957.
82msHC89S001P8513通用异步收发器UART13.
1UART特性2个UART多种工作方式多种错误检测13.
2工作方式UART有4种工作方式,在四种方式中,任何将SBUF作为目标寄存器的写操作都会启动发送.
在方式0中由条件RI=0和REN=1初始化接收.
这会在TXD引脚上产生一个时钟信号,然后在RXD引脚上移出8位数据.
在其它方式中由输入的起始位初始化接收(如果RI=0和REN=1).
外部发送器通信以发送起始位开始.
在发送之前TXD引脚必须被设置为输出高电平.
SM0SM1工作方式类型波特率00方式0同步波特率是Fosc/12*6UX601方式1异步定时器4的溢出率/1610方式2异步(2SMOD/64)*Fosc11方式3异步定时器4的溢出率/1613.
2.
1方式0:同步半双工通讯方式0支持与外部设备的同步通信,在RXD引脚上收发串行数据,TXD引脚发送移位时钟.

HC89S001P提供TXD引脚上的移位时钟,因此这种方式是串行通信的半双工方式.
在这个方式中,每帧收发8位,低位先接收或发送.
通过置UX6位为0或1,波特率固定为Fosc的1/12或1/2.
当UX6位等于0时,串行端口以Fosc的1/12运行,当UX6位等于1时,串行端口以Fosc的1/2运行.
与标准8051唯一不同的是,HC89S001P在方式0中有可变波特率.
功能块框图如下图所示,数据通过RXD引脚移入和移出串行端口,移位时钟由TXD引脚输出.
HC89S001P86Figure13-1UART模式0功能框图任何将SBUF作为目标寄存器的写操作都会启动发送.
下一个系统时钟TX控制块开始发送.
数据转换发生在移位时钟的下降沿,移位寄存器的内容逐次从左往右移位,空位置0.
当移位寄存器中的所有8位都发送后,TX控制模块停止发送操作,然后在下一个系统时钟的上升沿将TI位置1.
Figure13-2模式0数据发送时序框图REN位置1和RI位清0初始化接收.
下一个系统时钟启动接收,在移位时钟的上升沿锁存数据,接收转换寄存器的内容逐次向左移位.
当所有8位数据都移到移位寄存器中后,RX控制块停止接收,在下一个系统时钟的上升沿RI置位,直到被软件清零才允许下一次接收.
HC89S001P87Figure13-3模式0数据接收时序框图13.
2.
2方式1:8位UART,可变波特率,异步全双工方式1提供10位全双工异步通信,10位由一个起始位(逻辑0),8个数据位(低位在前)和一个停止位(逻辑1)组成.
在接收时,这8个数据位存储在SBUF中而停止位储存在RB8中.
方式1中的波特率为定时器4的溢出率/16.
功能块框图如下图所示:Figure13-4UART模式1功能框图任何将SBUF作为目标寄存器的写操作都会启动发送,实际上发送是从16分频计数器中的下一次跳变之后的系统时钟开始的,因此位时间与16分频计数器是同步的,与对SBUF的写操作不同步.
起始位首先在TXD引脚上移出,然后是8位数据位.
在发送移位寄存器中的所有8位数据都发送完后,停止位在TXD引脚上移出,在停止位发出的同时TI标志置位.
HC89S001P88Figure13-5模式1数据发送时序框图只有REN置1时才允许接收.
当RXD引脚检测到下降沿时串行口开始接收串行数据.
为此,CPU对RXD不断采样,采样速率为波特率的16倍.
当检测下降沿时,16分频计数器立即复位,这有助于16分频计数器与RXD引脚上的串行数据位同步.
16分频计数器把每一位的时间分为16个状态,在第7、8、9状态时,位检测器对RXD端的电平进行采样.
为抑制噪声,在这3个状态采样中至少有2次采样值一致数据才被接收.
如果所接收的第一位不是0,说明这位不是一帧数据的起始位,该位被忽略,接收电路被复位,等待RXD引脚上另一个下降沿的到来.
若起始位有效,则移入移位寄存器,并接着移入其它位到移位寄存器.
8个数据位和1个停止位(包含错误的停止位,详见寄存器SM2位说明)移入之后,移位寄存器的内容和停止位(包含错误的停止位)被分别装入SBUF和RB8中,RI置1,但必须满足下列条件:(1)RI=0(2)SM2=0或者接收的停止位=1如果这些条件被满足,那么停止位(包含错误的停止位)装入RB8,8个数据位装入SBUF,RI被置位.
否则接收的帧会丢失.
这时,接收器将重新去探测RXD端是否有另一个下降沿.
用户必须用软件清零RI,然后才能再次接收.
Figure13-6模式1数据接收时序框图13.
2.
3方式2:9位UART,固定波特率,异步全双工这个方式使用异步全双工通信中的11位.
一帧由一个起始位(逻辑0),8个数据位(低位在前),一个可编程的第9数据位和一个停止位(逻辑1)组成.
方式2支持多机通信和硬件地址识别(详见多机通信章节).
在数据传送时,第9数据位(TB8位)可以写0或1,例如,可写入PSW中的奇偶位P,或用作多机通信中的数据/地址标志位.
当接收到数据时,第9数据位移入RB8而停止位不保存.
SMOD位选择波特率为系统工作频率的1/32或1/64.
功能块框图如下所示.
HC89S001P89Figure13-7UART模式2功能框图任何将SBUF作为目标寄存器的写操作都会启动发送,同时也将TB8载入到发送移位寄存器的第9位中.
实际上发送是从16分频计数器中的下一次跳变之后的系统时钟开始的,因此位时间与16分频计数器是同步的,与对SBUF的写操作不同步.
起始位首先在TXD引脚上移出,然后是9位数据.
在发送转换寄存器中的所有9位数据都发送完后,停止位在TXD引脚上移出,在停止位开始发送时TI标志置位.
Figure13-8模式2数据发送时序框图只有REN置位时才允许接收.
当RXD引脚检测到下降沿时串行口开始接收串行数据.
为此,CPU对RXD不断采样,采样速率为波特率的16倍.
当检测下降沿时,16分频计数器立即复位.
这有助于16分频计数器与RXD引脚上的串行数据位同步.
16分频计数器把每一位的时间分为16个状态,在第7、8、9状态时,位检测器对RXD端的电平进行采样.
为抑制噪声,在这3个状态采样中至少有2次采样值一致数据才被接收.
如果所接收的第一位不是0,说明这位不是一帧数据的起始位,该位被忽略,接收电路被复位,等待RXD引脚上另一个下降沿的到来.
若起始位有效,则移入移位寄存器,并接着移入HC89S001P90其它位到移位寄存器.
9个数据位和1个停止位移入之后,移位寄存器的内容被分别装入SBUF和RB8中,RI置1,但必须满足下列条件:(1)RI=0(2)SM2=0或者接收的第9位=1,且接收的字节符合约定从机地址如果这些条件被满足,那么第9位移入RB8,8位数据移入SBUF,RI被置位.
否则接收的数据帧会丢失.
在停止位的当中,接收器回到寻找RXD引脚上的另一个下降沿.
用户必须用软件清除RI,然后才能再次接收.
Figure13-9模式2数据接收时序框图HC89S001P9113.
2.
4方式3:9位UART,可变波特率,异步全双工方式3使用方式2的传输协议以及方式1的波特率产生方式.
Figure13-10UART模式3功能框图13.
3波特率发生器定时器4作为UART1的波特率发生器.
选择定时器4的工作方式:作为波特率发生器.
该方式与自动重载方式相似.
定时器4的溢出会引起软件将定时器4重载寄存器中的16位值载入定时器4的计数器中,此时也会产生溢出中断.
如果不希望中断发生,可以关闭ET4.
UART1方式1和3的波特率由下列公式计算:BaudRate=116*fT4/PRESCALER65536[TH4,TL4],用定时器4作为波特率发生器.
上式中,TH4和TL4为定时器4数据寄存器.
HC89S001P92下表为常用Fosc频率与常用波特率所对应的定时器4的计数值:常用波特率Fosc4MHz8MHz16MHz32MHz1200FF30FE5FFCBFF97D2400FF98FF30FE5FFCBF4800FFCCFF98FF30FE5F9600FFE6FFCCFF98FF3019200FFF3FFE6FFCCFF9838400/FFF3FFE6FFCC57600//FFEFFFDD115200///FFEF13.
4多机通信13.
4.
1软件地址识别方式2和方式3具有适用于多机通讯功能.
在这两个方式下,接收的是9位数据,第9位移入RB8中,之后是停止位.
可以这样设定UART:当接收到停止位,且RB8=1时,串行口中断有效(请求标志RI置位).
此时置位SM2位,UART工作在多机通讯模式.
在多机通讯系统中,按如下所述来使用这一功能.
当主机要发送一数据块给几个从机中的一个时,先发送一地址字节,以寻址目标从机.
地址字节与数据字节可用第9数据位来区别,地址字节的第9位为1,数据字节的第9位为0.
如果从机SM2为1,则不会响应数据字节中断.
地址字节可以使所有从机产生中断,每一个从机都检查所接收到的地址字节,以判别本机是不是目标从机.
被寻到的从机对SM2位执行清零操作,并准备接收即将到来的数据字节.
当接收完毕时,从机再一次将SM2置位.
没有被寻址的从机,则保持SM2位为1,不响应数据字节.
注:在方式1中,SM2用来检测停止位是否有效,如果SM2=1,接收中断不会响应直到接收到一个有效的停止位.
13.
4.
2自动(硬件)地址识别在方式2和方式3中,SM2置位,UART运行状态如下:接收到停止位,RB8的第9位为1(地址字节),且接收到的数据字节符合UART的从机地址,UART产生一个中断.
从机将SM2清零,接收后续数据字节.
第9位为1表明该字节是地址而非数据.
当主机要发送一组数据给几个从机中的一个时,必须先发送目标从机地址.
所有从机等待接收地址字节,为了确保仅在接收地址字节时产生中断,SM2位必须置位.
自动地址识别的特点是只有地址匹配的从机才能产生中断,硬件完成地址比较.

中断产生后,地址匹配的从机清零SM2,继续接收数据字节.
地址不匹配的从机不受影响,将继续等待接收和它匹配的地址字节.
全部信息接收完毕后,地址匹配的从机应该再次把SM2置位,忽略所有传送的非地址字节,直到接收到下一个地址字节.
使用自动地址识别功能时,主机可以通过调用给定的从机地址选择与一个或多个从机通信.
主机使用广播地址可以寻址所有从机.
有两个特殊功能寄存器,从机地址(SADDR)和地址屏蔽(SADEN).
从机地址是一个8位的字节,存于SADDR寄存器中.
SADEN用于定义SADDR各位的有效与否,如HC89S001P93果SADEN中某一位为0,则SADDR中相应位被忽略,如果SADEN中某一位置位,则SADDR中相应位将用于产生约定地址.
这可以使用户在不改变SADDR寄存器中的从机地址的情况下灵活地寻址多个从机.
从机1从机2SADDR1010010010100111SADEN1111101011111001约定地址10100x0x10100xx1广播地址1111111x11111111从机1和从机2的约定地址最低位是不同的.
从机1忽略了最低位,而从机2的最低位是1.
因此只与从机1通讯时,主机必须发送最低位为0的地址(10100000).
类似地,从机1的第1位为0,从机2的第1位被忽略.
因此,只与从机2通讯时,主机必须发送第1位为1的地址(10100011).
如果主机需要同时与两从机通讯,则第0位为1,第1位为0,第2位被两从机都忽略,两个不同的地址用于选定两个从机(10100001和10100101).
主机可以通过广播地址与所有从机同时通讯.
这个地址等于SADDR和SADEN的位或,结果中的0表示该位被忽略.
多数情况下,广播地址为0xFF,该地址可被所有从机应答.

系统复位后,SADDR和SADEN两个寄存器初始化为0,这两个结果设定了约定地址和广播地址为xxxxxxxx(所有位都被忽略).
这有效地去除了多从机通讯的特性,禁止了自动寻址方式.
这样的UART将对任何地址都产生应答,兼容了不支持自动地址识别的8051控制器.
用户可以按照上面提到的方法实现软件地址识别的多机通讯.
13.
5帧出错检测3个错误标志位被置位后,只能通过软件清零,尽管后续接收的帧没有任何错误也不会自动清零.

13.
5.
1发送冲突如果在一个数据发送正在进行时,用户软件写数据到SBUF寄存器时,发送冲突位(TXCOL位)置1.
如果发生了冲突,新数据会被忽略,不能被写入发送缓冲器(即不影响传送).

13.
5.
2接收溢出RI置1,接收缓冲器中的数据未被读取,RI被清0,又开始新的数据接收,若在新的数据接收完成前(RI置1)还未读取之前接收缓冲区中的数据,在那么接收溢出位(RXROV位)置位.
如果发生了接收溢出,接收缓冲器中原来的数据不影响,后面的数据则丢失.
13.
5.
3帧出错如果检测到一个无效(低)停止位,那么帧出错位(FE位)置1.
HC89S001P9413.
6UART1相关寄存器13.
6.
1UART1控制寄存器SCON、SCON2SCON位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号FERXROVTXCOLRENTB8RB8TIRI位编号位符号说明7FE帧错误检测位0:无帧错误或软件清01:有帧错误,硬件置16RXROV接收溢出标志位0:无接收溢出或软件清01:接收溢出,硬件置15TXCOL发送冲突标志位0:无发送冲突或软件清01:有发送冲突,硬件置14REN串行接收使能控制位0:禁止串行接收1:允许串行接收3TB8方式2/方式3时,为要发送的第9位数据,由软件置1或清02RB8方式2/方式3时,为接收到的第9位数据,作为奇偶校验位或地址帧/数据帧的标志位1TI发送中断请求中断标志位0:软件清01:方式0时,当串行发送数据第8位结束时,由硬件自动置1,其它方式时,在停止位开始发送时由硬件置10RI接收中断请求中断标志位0:软件清01:方式0时,当串行接收数据第8位结束时,由硬件自动置1,其它方式时,串行接收到停止位开始时刻由硬件置1SCON2位编号76543210R/WR/WRR/WRRR/WR/WR/W复位值00000000位符号SMOD-UX6-SM0SM1SM2HC89S001P95位编号位符号说明7SMOD波特率加倍控制位0:在方式2中,波特率为系统时钟Fosc的1/641:在方式2中,波特率为系统时钟Fosc的1/326-保留位(读为0,写无效)5UX6串口模式0的通信速度设置位0:串口模式0时钟为Fosc/121:串口模式0时钟为Fosc/24-3-保留位(读为0,写无效)2-1SM0:SM1串口工作方式选择位,详细见下表0SM2多机通信使能控制位(第九位"1"校验器)0:在方式1时,不检测停止位,停止位无论是0还是1都会置位RI在方式2和3时,不检测第9位,任何字节都会置位RI1:在方式1时,允许停止位确认检验,只有有效的停止位"1"才能置位RI在方式2和3时,只有地址字节(第9位="1")才能置位RISM0SM1工作方式功能说明波特率00方式0同步移位串行方式:移位寄存器当UX6=0时,波特率是Fosc/12当UX6=1时,波特率是Fosc/201方式18位UART,波特率可变定时器4的溢出率/1610方式29位UART(2SMOD/64)*Fosc/211方式39位UART,波特率可变定时器4的溢出率/1613.
6.
2UART1数据缓冲寄存器SBUF位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号SBUF[7:0]位编号位符号说明7-0SBUF[7:0]串口缓冲寄存器写为需要发送的数据,读为接收到的数据13.
6.
3UART1自动地址识别SADDR、SADEN从机地址寄存器SADDR位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号SADDR[7:0]位编号位符号说明7-0SADDR[7:0]从机地址寄存器HC89S001P96从机地址掩码寄存器SADEN位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号SADEN[7:0]位编号位符号说明7-0SADEN[7:0]从机地址掩码寄存器13.
7UART2UART2的控制和工作方式与UART1相同,寄存器请参考UART1不同点:1.
UART2的寄存器存放在扩展SFR中;2.
UART2只有两种工作方式;3.
UART2没有错误检测;4.
UART2没有自动硬件地址识别.
13.
7.
1UART2工作方式13.
7.
1.
1方式0:8位UART,可变波特率,异步全双工方式0提供10位全双工异步通信,10位由一个起始位(逻辑0),8个数据位(低位在前)和一个停止位(逻辑1)组成.
在接收时,这8个数据位存储在SBUF中而停止位储存在RB8中.
方式0中的波特率为定时器5溢出率的1/16.
任何将S2BUF作为目标寄存器的写操作都会启动发送,实际上发送是从16分频计数器中的下一次跳变之后的系统时钟开始的,因此位时间与16分频计数器是同步的,与对S2BUF的写操作不同步.
起始位首先在TXD引脚上移出,然后是8位数据位,在发送移位寄存器中的所有8位数据都发送完后,停止位在TXD引脚上移出,在停止位发出的同时TI标志置位.
Figure13-11SendTimingofMode1只有REN置1时才允许接收.
当RXD引脚检测到下降沿时串行口开始接收串行数据.
为此,CPU对RXD不断采样,采样速率为波特率的16倍.
当检测下降沿时,16分频计数器立即复位,这有助于16分频计数器与RXD引脚上的串行数据位同步.
16分频计数器把每一位的时间分为16个状态,在第7、8、9状态时,位检测器对RXD端的电平进行采样.
为抑制噪声,在这3个状态采样中至少有2次采样值一致数据才被接收.
如果所接收的第一位不是0,说明这位不是一帧数据的起始位,该位被忽略,接收HC89S001P97电路被复位,等待RXD引脚上另一个下降沿的到来.
若起始位有效,则移入移位寄存器,并接着移入其它位到移位寄存器.
8个数据位和1个停止位(包含错误的停止位,详细见寄存器SM2位说明)移入之后,移位寄存器的内容和停止位(包含错误的停止位)被分别装入SBUF和RB8中,RI置1,但必须满足下列条件:(1)RI=0(2)SM2=0不判断停止位或者SM2=1判断停止位,且停止位必须为1如果这些条件被满足,那么停止位(包含错误的停止位)装入RB8,8个数据位装入SBUF,RI被置位.
否则接收的帧会丢失.
这时,接收器将重新去探测RXD端是否另一个下降沿.
用户必须用软件清零RI,然后才能再次接收.
Figure13-12ReceiveTimingofMode113.
7.
1.
2方式1:9位UART,可变波特率,异步全双工这个方式使用异步全双工通信中的11位.
一帧由一个起始位(逻辑0),8个数据位(低位在前),一个可编程的第9数据位和一个停止位(逻辑1)组成.
方式1支持多机通信,在数据传送时,第9数据位(TB8位)可以写0或1,例如,可写入PSW中的奇偶位P,或用作多机通信中的数据/地址标志位.
当接收到数据时,第9数据位移入RB8而停止位不保存.
任何将SBUF作为目标寄存器的写操作都会启动发送,同时也将TB8载入到发送移位寄存器的第9位中.
实际上发送是从16分频计数器中的下一次跳变之后的系统时钟开始的,因此位时间与16分频计数器是同步的,与对SBUF的写操作不同步.
起始位首先在TXD引脚上移出,然后是9位数据.
在发送转换寄存器中的所有9位数据都发送完后,停止位在TXD引脚上移出,在停止位开始发送时TI标志置位.
Figure13-13SendTimingofMode2只有REN置位时才允许接收.
当RXD引脚检测到下降沿时串行口开始接收串行数据.
为此,CPU对RXD不断采样,采样速率为波特率的16倍.
当检测下降沿时,16分频计数器立即复位.
这有助于16分频计数器与RXD引脚上的串行数据位同步.
16分频计数器把每一位的时间分为16个状态,在第7、8、9状态时,位检测器对RXD端的电平进行采样.
为抑制噪声,在这3个状态采样中至少有2次采样值一致数据才被接收.
如果所接收的第一位不是0,说明这位不是一帧数据的起始位,该位被忽略,接收HC89S001P98电路被复位,等待RXD引脚上另一个下降沿的到来.
若起始位有效,则移入移位寄存器,并接着移入其它位到移位寄存器.
9个数据位移入之后,移位寄存器的内容被分别装入SBUF和RB8中,但必须满足下列条件:(1)RI=0(2)SM2=0如果这些条件被满足,那么第9位移入RB8,8位数据移入SBUF.
但还需要检测停止位,只有停止位为1,才能置位RI,如果停止位为0,则RI不会置位.
Figure13-14ReceiveTimingofMode213.
7.
2UART2控制寄存器S2CON、S2CON2S2CON位编号76543210R/WR/WRRR/WR/WR/WR/WR/W复位值00000000位符号FERENTB8RB8TIRI位编号位符号说明7FE帧错误检测位0:无帧错误或软件清01:有帧错误,硬件置16-5-保留位(读为0,写无效)4REN串行接收使能控制位0:禁止串行接收1:允许串行接收3TB8方式1时,为要发送的第9位数据,由软件置1或清02RB8方式1时,为接收到的第9位数据,作为奇偶校验位或地址帧/数据帧的标志位1TI发送中断请求中断标志位0:软件清01:在停止位开始发送时由硬件置10RI接收中断请求中断标志位0:软件清01:串行接收到停止位开始时刻由硬件置1HC89S001P99S2CON2位编号76543210R/WRRRRRRR/WR/W复位值00000000位符号-SM1SM2位编号位符号说明7-2-保留位(读为0,写无效)1SM10:8位UART,定时器5的溢出率/161:9位UART,定时器5的溢出率/16注:1、UART2的波特率设置详见定时器5方式1:UART2波特率发生器章节.
2、UART2的最高通信波特率可达到38400Bd.
0SM2第九位检测使能位0:在方式0时,不检测停止位,停止位无论是0还是1都会置位RI在方式1时,不检测第9位,第9位无论是0还是1都会置位RI1:在方式0时,只有停止位为1才能置位RI在方式1时,只有第9位为1才能置位RI13.
7.
3UART2数据缓冲寄存器S2BUF位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号S2BUF[7:0]位编号位符号说明7-0S2BUF[7:0]串口缓冲寄存器写为需要发送的数据,读为接收到的数据HC89S001P10014串行外部设备接口SPI14.
1SPI特性全双工,三/四线同步传输主从机操作4级可编程主时钟频率极性相位可编程的串行时钟可选择数据传输方向写冲突及接收溢出标志带MCU中断的主模式模式冲突检测带MCU中断的传输结束标志主模式支持高达8Mbps的通信速率(Fosc=32MHz),从模式下通信速率须在Fosc/16及Fosc/16以下14.
2SPI信号描述主输出从输入(MOSI):该信号连接主设备和一个从设备,数据通过MOSI从主设备串行传送到从设备,主设备输出,从设备输入.
主输入从输出(MISO):该信号连接主设备和一个从设备.
数据通过MISO从从设备串行传入到主设备,从设备输出,主设备输入.
若该设备为从设备且未被选时,从设备的MISO引脚处于高阻状态.
串行时钟(SCK):该信号用作控制MOSI和MISO线上输入输出数据的同步移动,每8个时钟周期MOSI和MISO线上传送一个字节,如果从设备未被选中,SCK信号将被此设备忽略.
注意:只有主设备才能产生SCK信号.
从设备选择引脚(SS):每个从属外围设备由一个从选择引脚SS选择,当引脚信号为低电平时,表明该从设备被选中.
主设备可以通过软件控制连接于从设备SS引脚的端口电平选择每个从设备,很明显,只有一个主设备可以驱动通讯网络.
为了防止MISO总线冲突,同一时间只允许一个从设备与主设备通讯.
在主设备模式中,SS引脚状态关联SPI状态寄存器SPSTAT中MODF标志位以防止多个主设备驱动MOSI和SCK.
下列情况,SS引脚可以作为普通端口或其它功能使用:(1)设备作为主设备,SPI控制寄存器SPCTL寄存器的SSIG位置1.
这种配置仅仅存在于通讯网络中只有一个主设备的情况,因此,SPI状态寄存器SPSTA中MODF标志位不会被置1.
(2)设备配置为从设备,SPI控制寄存器SPCTL的CPHA位和SSIG位置1.
这种配置情况存在于只有一个主设备一个从设备的通讯网络中,因此,设备总是被选中的,主设备也不需要控制从设备的SS引脚选择其作为通讯目标.
从设备的SS引脚被使能时,其它主设备可通过使该引脚维持低电平,从而选中该从设备.
为防止MISO总线冲突,原则上不允许两个及以上的从设备被选中.
主设备的SS引脚被使能时,若SS被拉低将置模式错误标志MODF(可中断),且MSTR位也将被清0,从而使该设备强制切换成从设备.
当MSTR=0(从模式)及CPHA=0时,SSIG必须为0,因为此时数据传送需要SS引脚配合,才能完成多数据传送.
HC89S001P10114.
3SPI时钟速率在主模式下,SPI的速率有4级选择,分别是内部时钟的4、16、64或128分频,可通过SPCTL寄存器的SPR[1:0]位进行选择.
14.
4SPI功能框图Figure14-1SPI功能方框图14.
5SPI工作模式SPI可配置为主模式或从模式中的一种.
SPI模块的配置和初始化通过设置相关寄存器来完成.
进一步设置相关寄存器即可完成数据传送.
在SPI通讯期间,数据同步地被串行的移进移出,串行时钟线(SCK)使两条串行数据线(MOSI&MISO)上数据的移动和采样保持同步.
从设备选择线(SS)可以独立地选择从属设备;如果从设备没有被选中,则不能参与SPI总线上的活动.
当SPI主设备通过MOSI线传送数据到从设备时,从设备通过MISO线发送数据到主设备作为相应,从而实现在同一时钟下数据发送与接收的同步全双工传输.
发送移位寄存器和接收寄存器使用相同的SFR地址,对SPI数据寄存器SPDAT进行写操作将写入发送移位寄存器,对SPDAT寄存器进行读操作将获得接收移位寄存器的数据.
注:写入的数据不会影响到需要读出的数据.
HC89S001P102Figure14-2全双工主从互联图主模式(1)模式启动SPI主设备控制控制SPI总线上的所有数据传送的启动.
一个SPI总线中只允许一个主设备可以启动传送.
(2)发送在SPI主模式下,写一个字节数据到SPI数据寄存器SPDAT,数据将会写入发送移位缓冲器.
如果发送移位寄存器中已经存在一个数据或正在传送一个数据,那么主SPI将产生一个WCOL信号以表明写入太快.
但是发送移位寄存器中的数据不会受到影响,发送也不会中断.

(3)接收当主设备通过MOSI线传送数据到从设备时,同时对应的从设备也可以通过MISO线将其发送移位寄存器的数据传送给主设备的接收移位寄存器,实现全双工操作.
故SPIF标志置1即表示数据发送完成也表示数据接收完成.
本SPI模块接收为双缓冲器,即数据可以在SPIF置1后读出,但必须在下一字节数据接收完成前读出,否则将置接收溢出标志RXOV,如果发生接收溢出,则后面的数据将不会被移入接收寄存器,接收溢出时,SPIF可正常置1.
从模式(1)模式启动将MSTR置0(若SS被使能则必须拉低)时,设备处于从模式下运行,数据传送过程中设备模式不能改变(SS引脚必须维持低电平),否则数据传送将失败(SPIF不会被置1).
(2)发送SPI从设备下不能启动数据传送,所以SPI从设备必须在主设备开始一次新的数据传送之前将要传送给主设备的数据写入发送移位寄存器.
若发送前未写入数据到发送移位寄存器,从设备将传送数据"0x00"给主设备.
若写入数据时发送移位寄存器已经存在数据(或发生在传送过程中),那么SPI从设备的WCOL标志位将置1,表示发生写SPDAT冲突.
但是移位寄存器的数据不受影响,传送也不会被中断,传送完成SPIF将被置1.
(3)接收从模式下,按照主设备控制的SCK信号,数据通过MOSI引进移入,当计数器计数SCK边缘数到8时,表示一个字节数据接收完毕,SPIF将置1,数据可以通过此时读取SPDAT寄存器获得,但必须在下一数据接收完成前被读出,否则将置接收溢出标志RXOV,如果发生接收溢出,则后面的数据将不会被移入接收寄存器,接收溢出时,SPIF可正常置1.
HC89S001P10314.
6SPI传送形式通过软件设置寄存器的CPOL位和CPHA位,用户可以选择SPI时钟极性和相位的四种组合方式.
CPOL位定义时钟的极性,即空闲时的电平状态.
CPHA位定义时钟相位,即定义允许数据移位采样的时钟边沿.
在通信的两个主从设备中,时钟极性相位设置应当保持一致.
Figure14-3数据传送形式(CPHA=0)如果CPHA=0;数据在SCK的第一沿就被捕获,所以从设备必须在SCK的第一个沿之前就准备好数据,因此,SS引脚的下降沿从设备就开始数据.
SS引脚在每次传送完一个字节后必须拉高,在发送下一字节之前重新又被拉低,故CPHA=0时,SSIG位无效,即SS脚被强制使能.
Figure14-4数据发送形式(CPHA=1)如果CPHA=1,主设备在SCK的第一个沿将数据输出到MOSI线上,从设备把SCK的第一个沿作为开始发送信号.
用户必须在第一个SCK的前2个沿内完成对SPDAT完成写操作.
传送过程中彼此模式不能改变,否则数据发送接收将失败,模式被改变的寄存器数据(发送数据)及状态(接收为空)不变.
这种数据传送形式为单一主从设备间通信的首先形式.
HC89S001P104Figure14-5CPHA/SS时序14.
7SPI出错检测SPSTA寄存器中的一些标志位表示SPI通信中的通信错误情况:(1)模式故障(MODF)SPI主模式下的模式故障出错表明SS引脚上的电平状态与实际设备模式不一致,MODF标志位将被置1(可产生中断),以来表明SPI控制系统中存在多主设备的冲突情况,此时硬件将自动清除SPEN位,即先关闭SPI模块;同时硬件也将自动清除MSTR位.
需要重启SPI模块时,MODF必须先软件写1清0,再置SPEN位.
(2)写冲突(WCOL)在数据未发送或发送期间继续对SPDAT做写入操作会引起写冲突,WCOL位会被置1,但发送不会终止.
需软件写1清0(3)接收溢出(RXOV)在接收第二数据完成前仍未清除之前接收数据产生的SPIF标志,将置接收溢出标志RXOV,SPIF被置1时,后面的数据将不会被传入接收寄存器,故接收的数据存入SPDAT前必须清除SPIF,RXOV位需软件写1清0.
14.
8SPI中断两种SPI状态标志SPIF&MODF都能产生一个CPU中断请求.
串行数据传输完成标志SPIF:完成一个字节数据发送/接收后由硬件置1.
故障模式标志MODF:该位被置1是指设备模式(主机)与SS引脚电平不一致,SSIG位为1(SS未被使能)时,无MODF中断请求.
Figure14-6SPI中断请求的产生HC89S001P10514.
9SPI配置对照SPENSSIGMSTR主或从模式MISOMOSISCK备注0xI/OxSPI功能禁止I/OI/OI/OSPI禁止1000从机模式输出输入输入选择从机1010从机模式未被选中高阻输入输入未被选中.
MISO为高阻,以避免总线冲突1→0001→0关闭SPI输出输入输入SS配置为输入,SSIG为0.
如果SS被驱动为低电平.
则被选择作为从机.
此时MSTR将清零,并置模式错误标志MODF,可用于请求中断.
1011主(空闲)输入高阻高阻当主机空闲时MOSI和SCK为高阻态以避免总线冲突.
用户必须将SCK上拉或下拉(根据CPOL的取值)以避免SCK出现悬浮状态.
主(激活)输出输出作为主机激活时,MOSI和SCK为推挽输出.
11I/O0从输出输入输入CPHA不能为011I/O1主输入输出输出-14.
10SPI相关寄存器14.
10.
1SPI控制寄存器SPCTL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号SSIGSPENDORDMSTRCPOLCPHASPR[1:0]位编号位符号说明7SSIGSS引脚使能位0:SS脚被使能用于确定器件为主机还是从机1:MSTR确定器件为主机还是从机,SS脚作为普通I/O使用6SPENSPI使能位0:禁止SPI模块,相关管脚为普通I/O(建议I/O时设为高阻)1:使能SPI模块,相关管脚为SPI通信管脚HC89S001P1065DORD传送方向选择位0:MSB先发送1:LSB先发送4MSTR主/从机模式选择位0:从机模式1:主机模式3CPOLSPI时钟极性选择位0:SCK空闲时为低电平1:SCK空闲时为高电平2CPHASPI时钟相位选择位0:数据在SPI时钟的第一个边沿采样1:数据在SPI时钟的第二个边沿采样注:SSIG=0&CPHA=0时,数据在SS为低被驱动;CPHA=1时,数据在SCK的前时钟沿驱动.
1-0SPR[1:0]SPI时钟速率选择控制位00:Fosc/401:Fosc/1610:Fosc/6411:Fosc/12814.
10.
2SPI状态寄存器SPSTAT位编号76543210R/WR/WR/WR/WR/WRRRR复位值00000000位符号SPIFWCOLRXOVMODF-位编号位符号说明7SPIFSPI传输完成标志位0:软件写1清01:一次传送完成时,硬件置1,也做中断请求标志位6WCOLSPI写冲突标志位0:软件写1清01:传送过程中对SPDAT执行写操作硬件置1(正在传送的数据不受影响)5RXOVSPI接收溢出标志位0:软件写1清01:发生接收溢出,硬件置1注:接收为双BUFF,接收溢出发生在第二个数据传送完成前仍未清除之前接收数据产生的SPIF标志,故每次准备接收下一个数据前必须先清除SPIF,否则RXOV将置1,RXOV置1不会影响SPI接收.
4MODF模式故障标志位0:软件写1清01:SS引脚电平与SPI模式不一致时,硬件置1(且立即切成从机模式),也做中断请求标志位HC89S001P1073-0-保留位(读为0,写无效)14.
10.
3SPI数据寄存器SPDAT位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号SPDAT[7:0]位编号位符号说明7-0SPDAT[7:0]SPI数据寄存器HC89S001P10815模数转换ADC15.
1ADC特性最多6个外部通道及2个内部通道(包括GND)的12/10位ADC检测参考电压可选内部2V、3V、4V、VDD及外部Vref可选择转换数据对齐方向可选择转换数据位数ADC转换完成可中断单通道(P0.
2端口)ADC唤醒中断Figure15-1ADC功能框图15.
2ADC省电唤醒在芯片进入省电模式(IDLE或PD)后,可通过使能ADC省电唤醒功能将芯片从省电模式唤醒,这个功能可以实现用一个IO口检测多个按键.
具体操作如下:1.
通过配置ADC唤醒控制寄存器ADCWC允许唤醒;2.
将P0.
2配置为模拟通道;3.
通过P0.
2端口上拉电阻选择寄存器配置唤醒电阻(比如配置P0.
2上拉电阻为50KΩ);4.
使能IE和IE1寄存器里的EA和EADC;5.
进入省电模式(IDLE或PD);6.
如果Figure15-3中的某个键被按下,端口上就会有一个电压值,当这个电压值小于4.
2V(@VDD=5V)时,AMWIF标志位会被拉高.
芯片也会从省电模式醒来,同时进入ADC中断HC89S001P109服务程序,软件清零AMWIF标志;7.
开启ADC功能,采集P0.
2上的电压值,根据不同的电压值判断不同的按键.
Figure15-2ADC省电唤醒功能框图Figure15-3ADC按键输入串联电阻应用参考图HC89S001P11015.
3ADC相关寄存器15.
3.
1ADC控制寄存器ADCC0、ADCC1、ADCC2ADCC0位编号76543210R/WR/WR/WR/WRR/WR/WR/WR/W复位值00000011位符号ADCENADCSTADCIF-VREFOVREFSINREF_S[1:0]位编号位符号说明7ADCENADC模块电源控制位0:关闭ADC转换电源1:打开ADC转换电源注:1.
在掉电模式下,ADCEN强制为0.
2.
ADCEN置1或切换转换通道后,建议延时20us在启动ADC转换.
3.
启动ADC转换时,需要关闭ADC省电唤醒功能.
6ADCSTADC启动控制位0:转换结束后,硬件自动清0,在转换过程中,软件清0将终止转换.
1:启动转换注:启动转换时,ADCIF需要先清0,ADCIF位为1时,置ADCST不能启动新的转换.
5ADCIFADC中断标志位0:无ADC转换中断1:转换结束后,硬件置1,可用于中断请求(必须软件清0)4-保留位(读为0,写无效)3VREFOVREF输出使能位0:VREF不输出1:从引脚P0.
4输出内部VREF,此时需要设置P0.
4为模拟输入,而且VREFS必须为02VREFSVREF选择0:选内部VREF1:选外部VREF(此时P0.
4只做ADC参考电压输入,且此端口必须设为模拟输入)1-0INREF_SADC内部参考电压选择位00:VDD01:内部4V10:内部3V11:内部2V注:内部参考电压选择为2V时,VDD电压须高于2.
7V;内部参考电压选择3/4V时,VDD须高于内部参考电压0.
5V以上.
系统进入掉电模式前,建议将ADC参考电压选择非VDD,可以进一步降低系统功耗.
HC89S001P111ADCC1位编号76543210R/WR/WR/WRRR/WR/WR/WR/W复位值00000000位符号ICHS[1:0]--XCHS[3:0]位编号位符号说明7-6ICHS[1:0]ADC内部输入通道选择00:禁止内部通道接入01:1/4VDD作为ADC输入通道10:保留位11:GND接入注:在进行内部通道选择时,外部通道选择XCHS[3:0]应配置为1111,否则可能会造成内部通道和外部通道同时打开的情况.
5-4-保留位(读为0,写无效)3-0XCHS[3:0]ADC外部输入通道选择XCHS[3:0]=x(x=0~4,9),表示当前检测通道为ANx,如XCHS[3:0]=3,表示当前检测通道为外部通道AN3.
外部通道除设置XCHS[3:0],还需设置对应管脚的功能为模拟输入.
ADCC2位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号ADCLALIGNADCTS[2:0]ADCS[2:0]位编号位符号说明7ADCLADC转换数据长度控制位0:ADC转换结果为12位数据1:ADC转换结果为10位数据(取12位数据的高10位)6ALIGNADC数据对齐方向控制位0:ADC转换结果的高8位放在ADCRH寄存器,低4位放在ADCRL寄存器低4位(或低2位)1:ADC转换结果的高4位(或高2位)放在ADCRH寄存器的低4位,低8位放在ADCRL寄存器5-3ADCTS[2:0]ADC时钟为4MHZ时,配置此3bits为000;一次转换需要22个ADC_CLKADC时钟为2MHZ&1MHZ时,配置此3bits为001或者010;一次转换需要19个ADC_CLKADC时钟为<1MHZ时,配置此3bits为011或100或101或110或111;一次转换需要15个ADC_CLK注:为保证ADC转换精度,建议ADC转换频率在2MHz及2MHz以下.
2-0ADCS[2:0]ADC时钟选择位000:Fosc/2001:Fosc/4HC89S001P112010:Fosc/6011:Fosc/8100:Fosc/12101:Fosc/16110:Fosc/24111:Fosc/3215.
3.
2ADC转换结果寄存器ADCRL、ADCRHADCRL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号ADCRL[7:0]ADCRH位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号ADCRH[7:0]位编号位符号说明7-0ADCRH[7:0]ALIGN=0时ADCRH[7:0]为ADC转换的高8位,ADCRL[3:0]为ADC转换的低4/2位ALIGN=1时ADCRH[3:0]为ADC转换的高4/2位,ADCRL[7:0]为ADC转换的低8位7-0ADCRL[7:0]启动ADC转换步骤:(1)使能ADC模块;(2)选择模拟输入通道、参考电压、转换时钟、转换结果对齐方式等;(3)ADCST置1开始ADC转换;(4)等待ADCST=0或者ADCIF=1,如果ADC中断使能,则ADC中断将会产生,用户需要软件清零ADCIF;(5)从ADCRH/ADCRL获得转换数据;(6)重复步骤3-5开始另一次转换.
HC89S001P11315.
3.
3ADC唤醒控制寄存器ADCWCADCWC位编号76543210R/WWWWWWWWW复位值00000000位符号AMWENAMWIF-位编号位符号说明7AMWENADC唤醒模块允许位0:禁止ADC唤醒模块1:允许ADC唤醒模块注:允许ADC唤醒模块时,需要关闭ADC.
6AMWIFADC唤醒模块中断标志位(与ADC转换共用中断向量)0:无ADC唤醒模块中断,软件清01:发生ADC唤醒模块中断,硬件置1注:相应唤醒模块被禁止时,即使条件满足,对应标志也不会被置1.
需要使能EADC.
5-0-保留位注:唤醒电阻通过端口上拉电阻来配置.
HC89S001P11416低电压检测LVD16.
1LVD特性支持内部VDD多档位电压检测,并且可以产生中断LVD档位:4.
2V/3.
9V/3.
6V/3.
0V/2.
6V/2.
4V/2.
0V/1.
9V内部电压检测和BOR一样,也是检测VDD电压,但独立于BOR,因此可以检测比BOR设定电压更高的各档检测电压点,可通过寄存器设定其检测电压点、其是否工作、其是否允许中断,方便客户需求.
LVD电压检测电路有一定的迟滞特性,迟滞电压为0.
1V左右.
即当待检测电压下降到所选LVD电压档位时LVD会产生中断请求或复位,而待检测电压需要上升到LVD档位电压+0.
1V时LVD中断请求或复位才会解除.
LVD检测VDD电压时,不能产生复位,可通过有效中断将芯片从PD模式和IDLE模式唤醒.

16.
2LVD相关寄存器16.
2.
1LVD控制寄存器LVDC位编号76543210R/WR/WR/WR/WRR/WR/WR/WR/W复位值00000000位符号LVDENLVDSLVDIE-LVDFLVDV位编号位符号说明7LVDENLVD使能位0:禁止LVD1:允许LVD6LVDSLVD检测选择位0:检测VDD电压5LVDIELVD中断允许位0:禁止LVD中断1:允许LVD中断注:禁止时,只要允许检测,LVDF也可被置1,但即使此时EA被置1,也不会产生中断请求.
4-保留位3LVDF低电压检测标志位0:必须软件清01:VDD电压低于检测选择电压时,硬件置1,也做中断请求注:VDD电压低于检测电压时间大于LVDDBC寄存器设置的消抖时间后才会置LVDF,高于检测电压时,不会自动清除该位,必须软件清除,只有在VDDHC89S001P115电压持续高于检测电压时,软件清除才能起作用,如果VDD电压持续持续低于检测电压,软件是无法清除LVDF的.
2-0LVDV[2:0]VDD电压检测电压点选择位000:1.
9V001:2.
0V010:2.
4V011:2.
6V100:3.
0V101:3.
6V110:3.
9V111:4.
2V注:LVD检测电压设置在BOR电压之上才有意义.
16.
2.
2LVD去抖控制寄存器LVDDBC位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号LVDDBC[7:0]位编号位符号说明7-0LVDDBC[7:0]LVD消抖控制位消抖时间=LVDDBC[7:0]*8TCPU+2TCPU注:掉电模式和空闲模式下自动关闭,退出掉电模式和空闲模式又自动打开.

HC89S001P11617循环冗余校验CRC17.
1CRC特性16位CRCCRC生成校验遵从CRC-CCITT多项式,即0x1021初值可设为0x0000或0xFFFF计算与结果共用同一寄存器每一次写入数据寄存器CRCL,其计算结果是前一次CRC计算结果和新计算结果的组合.

每一次读出数据寄存器[CRCH:CRCL],其值都为最后的CRC计算结果.
可通过设置寄存器CRCC的CRCRSV位来选择计算初值,但不会影响之前的CRC计算数据,只有置寄存器CRCC的CRCRST位后,才会复位CRC计算器,后写入的数据将以新的初值计算CRC结果.
Figure17-1CRC功能框图HC89S001P11717.
2CRC相关寄存器17.
2.
1CRC控制寄存器CRCC位编号76543210R/WRRRRRR/WR/WW复位值00000000位符号-CRCBITCRCRSVCRCRST位编号位符号说明7-3-保留位(读为0,写无效)2CRCBITCRCBIT翻转控制位0:MSBfirst1:LSBfirst1CRCRSVCRC复位初值选择位0:复位初值为0x00001:复位初值为0xFFFF0CRCRSTCRC计算器复位控制位置1复位CRC计算器,硬件自动清017.
2.
2CRC数据寄存器CRCL、CRCHCRCL位编号76543210R/WR/WR/WR/WR/WR/WR/WR/WR/W复位值00000000位符号CRCL[7:0]位编号位符号说明7-0CRCL[7:0]写入数据时为CRC计算器的输入数据读出数据时为CRC计算结果的低字节注:写入数据时,自动启动CRC计算,完后自动关闭.
CRCH位编号76543210R/WRRRRRRRR复位值00000000位符号CRCH[7:0]位编号位符号说明7-0CRCH[7:0]对该寄存器写入数据无效读出数据时为CRC计算结果的高字节注:每一次写入待计算数据,其计算结果是由与前一次计算结果共同生成.

HC89S001P11818代码选项1.
BOR点检测电压点1.
8V2.
0V2.
4V2.
6V3.
0V3.
6V3.
9V4.
2V2.
复位后等待时间1ms4ms8ms(默认)16ms3.
第二复位向量配置用户可以通过此选择来配置自定义启动代码的首地址,配置值必须以1K字节为单位,即第二复位向量地址的最低10位必须为全零,默认不使能第二复位向量.
HC89S001P11919指令表助记符指令说明字节周期数据传递类指令MOVA,Rn寄存器传送到累加器11MOVA,direct直接地址传送到累加器22MOVA,@Ri累加器传送到外部RAM(8地址)12MOVA,#data立即数传送到累加器22MOVRn,A累加器传送到寄存器11MOVRn,direct直接地址传送到寄存器22MOVRn,#data累加器传送到直接地址22MOVdirect,Rn寄存器传送到直接地址22MOVdirect,direct直接地址传送到直接地址33MOVdirect,A累加器传送到直接地址22MOVdirect,@Ri间接RAM传送到直接地址22MOVdirect,#data立即数传送到直接地址33MOV@Ri,A直接地址传送到直接地址11MOV@Ri,direct直接地址传送到间接RAM22MOV@Ri,#data立即数传送到间接RAM22MOVDPTR,#data1616位常数加载到数据指针33MOVCA,@A+DPTR代码字节传送到累加器13MOVCA,@A+PC代码字节传送到累加器13MOVXA,@Ri外部RAM(8地址)传送到累加器13MOVXA,@DPTR外部RAM(16地址)传送到累加器13MOVX@Ri,A累加器传送到外部RAM(8地址)13MOVX@DPTR,A累加器传送到外部RAM(16地址)13PUSHdirect直接地址压入堆栈22POPdirect直接地址弹出堆栈22XCHA,Rn寄存器和累加器交换11HC89S001P120XCHA,direct直接地址和累加器交换22XCHA,@Ri间接RAM和累加器交换12XCHDA,@Ri间接RAM和累加器交换低4位字节12算术运算类指令INCA累加器加111INCRn寄存器加111INCdirect直接地址加122INC@Ri间接RAM加112INCDPTR数据指针加111DECA累加器减111DECRn寄存器减111DECdirect直接地址减122DEC@Ri间接RAM减112MULAB累加器和B寄存器相乘14DIVAB累加器除以B寄存器14DAA累加器十进制调整11ADDA,Rn寄存器与累加器求和11ADDA,direct直接地址与累加器求和22ADDA,@Ri间接RAM与累加器求和12ADDA,#data立即数与累加器求和22ADDCA,Rn寄存器与累加器求和(带进位)11ADDCA,direct直接地址与累加器求和(带进位)22ADDCA,@Ri间接RAM与累加器求和(带进位)12ADDCA,#data立即数与累加器求和(带进位)22SUBBA,Rn累加器减去寄存器(带借位)11SUBBA,direct累加器减去直接地址(带借位)22SUBBA,@Ri累加器减去间接RAM(带借位)12SUBBA,#data累加器减去立即数(带借位)22逻辑运算类指令HC89S001P121ANLA,Rn寄存器"与"到累加器11ANLA,direct直接地址"与"到累加器22ANLA,@Ri间接RAM"与"到累加器12ANLA,#data立即数"与"到累加器22ANLdirect,A累加器"与"到直接地址22ANLdirect,#data立即数"与"到直接地址33ORLA,Rn寄存器"或"到累加器11ORLA,direct直接地址"或"到累加器22ORLA,@Ri间接RAM"或"到累加器12ORLA,#data立即数"或"到累加器22ORLdirect,A累加器"或"到直接地址22ORLdirect,#data立即数"或"到直接地址33XRLA,Rn寄存器"异或"到累加器11XRLA,direct直接地址"异或"到累加器22XRLA,@Ri间接RAM"异或"到累加器12XRLA,#data立即数"异或"到累加器22XRLdirect,A累加器"异或"到直接地址22XRLdirect,#data立即数"异或"到直接地址33CLRA累加器清零11CPLA累加器求反11RLA累加器循环左移11RLCA带进位累加器循环左移11RRA累加器循环右移11RRCA带进位累加器循环右移11SWAPA累加器高、低4位交换11控制转移类指令JMP@A+DPTR相对DPTR的无条件间接转移12JZrel累加器为0则转移23JNZrel累加器为1则转移23HC89S001P122CJNEA,direct,rel比较直接地址和累加器,不相等转移34CJNEA,#data,rel比较立即数和累加器,不相等转移34CJNERn,#data,rel比较寄存器和立即数,不相等转移24CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移35DJNZRn,rel寄存器减1,不为0则转移23DJNZdirect,rel直接地址减1,不为0则转移34NOP空操作,用于短暂延时11ACALLadd11绝对调用子程序22LCALLadd16长调用子程序33RET从子程序返回14RETI从中断服务子程序返回14AJMPadd11无条件绝对转移22LJMPadd16无条件长转移33SJMPrel无条件相对转移23布尔指令CLRC清进位位11CLRbit清直接寻址位22SETBC置位进位位11SETBbit置位直接寻址位22CPLC取反进位位11CPLbit取反直接寻址位21ANLC,bit直接寻址位"与"到进位位22ANLC,/bit直接寻址位的反码"与"到进位位22ORLC,bit直接寻址位"或"到进位位22ORLC,/bit直接寻址位的反码"或"到进位位22MOVC,bit直接寻址位传送到进位位22MOVbit,C进位位位传送到直接寻址22JCrel如果进位位为1则转移23JNCrel如果进位位为0则转移23HC89S001P123JBbit,rel如果直接寻址位为1则转移34JNBbit,rel如果直接寻址位为0则转移34JBCbit,rel直接寻址位为1则转移并清除该位34HC89S001P12420电气特性19.
1极限参数参数符号最小值典型值最大值单位直流供电电压VDD-0.
3-+6.
0V输入/输出电压VI/VOGND-0.
3-VDD+0.
3V工作环境温度TOTG-40-+85°C存储温度TSTG-55-+125°C注:(1)流过VDD的最大电流值在5.
0V,25°C下须小于100mA.
(2)流过GND的最大电流值在5.
0V,25°C下须小于150mA.
19.
2DC特性参数符号条件(VDD=5V)最小值典型值最大值单位工作电压VDDFCPU=16MHz或44KHz,ADC模块关闭2.
05.
05.
5V工作电流IOP1FOSC=32MHz,FCPU=16MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-4.
4-mAFOSC=32MHz,FCPU=8MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-3.
5-FOSC=32MHz,FCPU=4MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-2.
9-FOSC=32MHz,FCPU=2MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-2.
6-FOSC=32MHz,FCPU=1MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-2.
4-FOSC=32MHz,FCPU=512KHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-2.
3-FOSC=16MHz,FCPU=16MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭3.
6FOSC=16MHz,FCPU=8MHz,无负载,2.
9HC89S001P125无浮动输入管脚,执行NOP指令,其它模块关闭FOSC=16MHz,FCPU=4MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭2.
1FOSC=16MHz,FCPU=2MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
8FOSC=16MHz,FCPU=1MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
6FOSC=16MHz,FCPU=512KHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
5FOSC=8MHz,FCPU=8MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭2.
3FOSC=8MHz,FCPU=4MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
7FOSC=8MHz,FCPU=2MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
4FOSC=8MHz,FCPU=1MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
3FOSC=8MHz,FCPU=512KHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
2FOSC=4MHz,FCPU=4MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
5FOSC=4MHz,FCPU=2MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
2FOSC=4MHz,FCPU=1MHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
1FOSC=4MHz,FCPU=512KHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭1.
0-IOP2FOSC=44KHz,无负载,无浮动输入管脚,执行NOP指令,其它模块关闭-0.
2-mAIPD进入掉电模式,无负载,无浮动输入管-7.
0-μAHC89S001P126脚,所有模块关闭,ADC参考电压选择非VDDIIDLE1FOSC=16MHz,进入空闲模式,无负载,无浮动输入管脚,所有模块关闭-2.
0-mAIIDLE2FOSC=8MHz,进入空闲模式,无负载,无浮动输入管脚,所有模块关闭-1.
3-mAIIDLE3FOSC=4MHz,进入空闲模式,无负载,无浮动输入管脚,所有模块关闭-900-uAIIDLE4FOSC=2MHz,进入空闲模式,无负载,无浮动输入管脚,所有模块关闭-700-uAIIDLE5FOSC=44KHz,进入空闲模式,无负载,无浮动输入管脚,所有模块关闭,内部高频RC时钟关闭-85-uAWDT电流IWDTVDD=5V-2.
0-μALVD电流ILVDVDD=5V-8.
0-BOR电流IBORVDD=5V-8.
0-μA输入低电压1VIL1I/O端口非施密特输入GND-0.
3*VDDV输入高电压1VIH1I/O端口非施密特输入0.
7*VDD-VDDV输入低电压2VIL2I/O端口施密特输入GND-0.
2*VDDV输入高电压2VIH2I/O端口施密特输入0.
8*VDD-VDDV输入漏电流IILCI/O端口输入模式,VIN=VDD或GND-101μA输出漏电流IOLCI/O端口输出模式,VOUT=VDD或GND-101μA灌电流IOLVout=GND+0.
6-25-mA拉电流IOHVout=VDD-0.
6-21-上拉电阻RPU1P0.
2端口,VIN=GND-50-kΩRPU2P0.
2端口,VIN=GND-100-RPU3P0.
2端口,VIN=GND-150-RPU4P0.
2端口,VIN=GND-300-RPU5普通端口,VIN=GND-50-下拉电阻RPD普通端口,VIN=VDD-50-ADC唤醒电压VAW1常温,VDD=5V4.
04.
24.
4VVAW2常温,VDD=3V2.
32.
52.
6RAM保持电压VRAM--0.
7-注意:除非另外说明,以上数据测试条件均为:VDD=5.
0V,GND=0V,25°C.
HC89S001P12719.
3AC特性参数符号条件最小值典型值最大值单位内部RC32M启动时间Tset1常温,VDD=5V--5μs内部RC44K启动时间Tset2常温,VDD=5V--150μs频率精度FIRC1VDD=2V~5.
5V,25°C32(1-1%)3232(1+1%)MHzFIRC2VDD=5.
0V,-40°C~+85°C32(1-1%)3232(1+1%)MHzFWRC-314458KHz19.
4ADC特性参数符号条件最小值典型值最大值单位供电电压VAD-2.
75.
05.
5V精度NRGND≤VAIN≤Vref-1012bitADC输入电压VAIN-GND-VrefVADC输入电阻RAINVAIN=5V2--MΩ模拟电压源推荐阻抗ZAIN---10kΩADC转换电流IADADC模块打开,VDD=5.
0V-0.
61mAADC输入电流IADINVDD=5.
0V--10μA微分非线性误差DLEVDD=5.
0V--±2LSB积分非线性误差(1MHz转换频率)ILEVDD=5.
0V,Vref=2V---5~2LSBVDD=5.
0V,Vref=3V---4~2VDD=5.
0V,Vref=4V---3~2VDD=5.
0V,Vref=VDD--±2VDD=5.
0V,Vref=外参--±2满刻度误差EFVDD=5.
0V--±5LSB偏移量误差EZVDD=5.
0V--±3LSB总绝对误差EADVDD=5.
0V--±5LSB总转换时间TCONVDD=5.
0V10--μs内部参考电压VADREF±1%,常温-2-VHC89S001P12819.
5BOR检测电压特性参数符号条件最小值典型值最大值单位BOR设定电压1VBOR1BOR使能,VDD=2V~5.
5V1.
71.
81.
9VBOR设定电压2VBOR21.
92.
02.
1VBOR设定电压3VBOR32.
32.
42.
5VBOR设定电压4VBOR42.
52.
62.
7VBOR设定电压5VBOR52.
93.
03.
1VBOR设定电压6VBOR63.
53.
63.
7VBOR设定电压7VBOR73.
83.
94.
0VBOR设定电压8VBOR84.
14.
24.
3V19.
6LVD检测电压特性参数符号条件最小值典型值最大值单位LVD设定电压1VLVD1LVD使能,VDD=2V~5.
5V1.
81.
92.
0VLVD设定电压2VLVD21.
92.
02.
1VLVD设定电压3VLVD32.
32.
42.
5VLVD设定电压4VLVD42.
52.
62.
7VLVD设定电压5VLVD52.
93.
03.
1VLVD设定电压6VLVD63.
53.
63.
7VLVD设定电压7VLVD73.
83.
94.
0VLVD设定电压8VLVD84.
14.
24.
3VHC89S001P12919.
7系统下电过程功耗1、系统关闭BOR,进入掉电模式Figure20-1系统下电过程功耗12、系统使能BOR,进入掉电模式,使能/禁止RC_EN_PD(详见XTALCFG章节)信号Figure20-2系统下电过程功耗20.
050.
0100.
0150.
0200.
0250.
0300.
0350.
0400.
021.
81.
71.
61.
51.
41.
31.
2系统下电过程功耗系统功耗(uA)工作电压VDD(V)0.
0100.
0200.
0300.
0400.
0500.
0600.
054321.
81.
71.
61.
51.
41.
31.
21.
110.
9RC_EN_PD=0RC_EN_PD=1系统下电过程功耗系统功耗(uA)工作电压VDD(V)HC89S001P13019.
8其他电气特性1、ESD(HBM):CLASS3A(≥4000V)2、ESD(MM):CLASS2(≥200V)3、Latch_up:CLASSⅠ(100mA)HC89S001P13121开发工具HC89S001P为ISP程序固化芯片.
在程序开发的早期阶段,可使用HC89S003F4芯片进行仿真,待程序调试完成后,通过USB-TTL工具+上位机软件HC-ISP进行串口烧录,量产阶段可以使用HC-PM51烧录工具进行烧录.
21.
1ISPAutoProgrammer工具ISPAutoProgrammer是芯圣的USB-TTL工具,配合上位机软件HC-ISP,通过串口对固化ISP程序的FLASH单片机实现一键下载的功能,无需冷启动,非常方便用户程序的下载.
关于HC-ISP和ISPAutoProgrammer的使用,请参见HC-ISP工具使用说明.
Figure21-1ISP下载框图ISPAutoProgrammer如Figure21-2所示,其特性:支持所有的芯圣8051(固化ISP)芯片程序下载可以对FLASH进行擦除、编程和校验可以对加密位以及代码选项进行编程直接从USB供电,不需要外接电源一键下载,无需冷启动Figure21-3ISPAutoProgrammerHC89S001P13221.
2HC-PM51烧录工具HC-PM51烧录器是芯圣新一代量产烧录工具,适用于芯圣8051内核系列的FlashMCU的烧录.
关于HC-PM51的使用,请参见HC-PM51工具用户手册.
HC-PM51特性:采用USB方式连接支持单路脱机烧录21.
3软件下载直接在浏览器地址栏中输入地址:www.
holychip.
cn进行软件下载HC89S001P13322封装尺寸22.
1SOP8Figure22-1SOP8封装尺寸HC89S001P13423版本记录版本日期描述Ver1.
002018-9-19第一版Ver1.
012019-1-111、将应用注意事项单独写成一个小节,并增加了一些注意事项2、增加了读CHIP_ID的例程3、增加指令表4、修改其他描述HOLYCHIP公司保留对以下所有产品在可靠性、功能和设计方面的改进作进一步说明的权利.

RAKsmart美国洛杉矶独立服务器 E3-1230 16GB内存 限时促销月$76

RAKsmart 商家我们应该较多的熟悉的,主营独立服务器和站群服务器业务。从去年开始有陆续的新增多个机房,包含韩国、日本、中国香港等。虽然他们家也有VPS主机,但是好像不是特别的重视,价格上特价的时候也是比较便宜的1.99美元月付(年中活动有促销)。不过他们的重点还是独立服务器,毕竟在这个产业中利润率较大。正如上面的Megalayer商家的美国服务器活动,这个同学有需要独立服务器,这里我一并整理...

Sharktech:鲨鱼机房1Gbps无限流量美国服务器;丹佛$49/月起,洛杉矶$59/月起

sharktech怎么样?sharktech鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主打高防产品,独立服务器免费提供60Gbps/48Mpps攻击防御。机房提供1-10Gbps带宽不限流量服务器,最低丹佛/荷兰机房每月49美元起,洛杉矶机房最低59美元...

青云互联:洛杉矶CN2弹性云限时七折,Cera机房三网CN2gia回程,13.3元/月起

青云互联怎么样?青云互联是一家成立于2020年6月份的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,目前提供有美国免费主机、香港主机、香港服务器、美国云服务器,让您的网站高速、稳定运行。目前,美国洛杉矶cn2弹性云限时七折,美国cera机房三网CN2gia回程 13.3元/月起,可选Windows/可自定义配置。点击进入:青云互联官网青云互联优惠码:七折优惠码:dVRKp2tP (续...

端口是什么为你推荐
最新qq空间代码qq空间最新免费代码http与https的区别http和https到底有什么区别啊???arm开发板新手入门应如何选择 ARM 开发板?iphone越狱后怎么恢复苹果越狱后怎么恢复出厂设置godaddygodaddy域名怎样使用安装迅雷看看播放器怎样安装迅雷看看播放器mate8价格现在买华为mate8高配划算吗小米手柄买了个小米蓝牙手柄,游戏是可以玩但是按键位置不舒服,怎么可以改按键blogcn远目是什么意思?服务器连接异常服务器连接异常,即将退出,请重新进入游戏.怎么回事
便宜虚拟主机 域名城 域名出售 香港vps主机 过期域名抢注 flashfxp怎么用 秒解服务器 国外服务器网站 20g硬盘 日志分析软件 彩虹ip 本网站在美国维护 100m免费空间 毫秒英文 qingyun 腾讯云分析 建立邮箱 吉林铁通 丽萨 starry 更多