FB16Pxx用户手册.doc_第1页
FB16Pxx用户手册.doc_第2页
FB16Pxx用户手册.doc_第3页
FB16Pxx用户手册.doc_第4页
FB16Pxx用户手册.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据手册上海晨越FB16Pxx用户手册注意此版本为草稿,很多地方未详尽描述,可能会补充修改!请注意更新版本!Dave2008.1目录第一章 概述第二章 处理器第三章 程序存储器和数据存储器第四章 中断第五章 输入输出口第六章 定时器第七章 串行通讯控制器第八章 AD控制器第九章 PWM控制器第十章 液晶驱动器第十一章 看门狗第十二章 指令系统第十三章 软件开发指南第十四章 源代码和范例程序附录A选型表附录B封装尺寸图附录C修订记录第一章概述1.1 功能概述l 16位内核,运算操作和寄存器均16位;l 所有指令均单时钟周期执行;l 超精简指令集,共27条指令,所有指令均16位长;l 16KByte(8Kx16Bit)OTP程序存储器;l 2KByte 数据存储器,可WORD(16位)或BYTE(8位)访问;l 可选择使用外置晶振或内置RC振荡器;l 1个16位定时器/16位外部脉冲宽度计数器;l 1个8位定时器/16位外部时钟计数器;l 3个独立的8位定时器;l 2个RS232串行口控制器;l 32个通用输入/输出口,带上拉输入模式/开漏输出模式;l IO口输出电流高达15mA;l 6路8位ADC,在时钟频率为8MHz时转换时间为10us;l 12路6位PWM输出;l 6COM、1/2 BIAS 20Segment共120段LCD驱动输出;l 15个中断源;l 4个外部端口中断源,上升沿、下降沿均可中断;l 低功耗模式,模块独立的时钟控制寄存器;l 休眠模式,可中断唤醒或看门狗复位;l 掉电模式;l 内部可编程看门狗电路;l 程序存储器加密,且加密后无法解密;l 内置RC时钟频率:6M;l 外部时钟频率:0-8M;l 工作电压:2.7V-5.5V1.2 引脚定义1.2.1 引脚描述PIN名称功能第二功能1GNDAADC模拟地2AD0ADC输入通道03AD1ADC输入通道14AD2ADC输入通道25AD3ADC输入通道36AD4ADC输入通道47AD5ADC输入通道58VrefADC参考电压输入端9VDDAADC模拟电源10T1G定时器1脉宽信号输入11T2C定时器2外部时钟输入12P00I O端口P0.013P01IO端口P0.114P02IO端口P0.215P03IO端口P0.316P04IO端口P0.417P05IO端口P0.518P06IO端口P0.619P07IO端口P0.720RSTB复位信号输入端,低有效21TEST测试脚22P10I O端口P1.023P11I O端口P1.124P12I O端口P1.225P13I O端口P1.326P14I O端口P1.427P15I O端口P1.528P16I O端口P1.629P17I O端口P1.730P20I O端口P2.0PWM0输出31P21I O端口P2.1PWM1输出32P22I O端口P2.2PWM2输出33P23I O端口P2.3PWM3输出34P24I O端口P2.4PWM4输出35P25I O端口P2.5PWM5输出36P26I O端口P2.6PWM6输出37P27I O端口P2.7PWM7输出38P30I O端口P3.0PWM8输出39P31I O端口P3.1PWM9输出40P32I O端口P3.2PWM10输出41VPPOTP编程电压输入42P33I O端口P3.3PWM11输出43P34I O端口P3.4TX144P35I O端口P3.5RX145P36I O端口P3.6TX246P37I O端口P3.7RX247S0LCD段信号输出048S1LCD段信号输出149S2LCD段信号输出250S3LCD段信号输出351S4LCD段信号输出452S5LCD段信号输出553S6LCD段信号输出654S7LCD段信号输出755S8LCD段信号输出856S9LCD段信号输出957S10LCD段信号输出1058S11LCD段信号输出1159S12LCD段信号输出1260S13LCD段信号输出1361S14LCD段信号输出1462S15LCD段信号输出1563S16LCD段信号输出1664S17LCD段信号输出1765S18LCD段信号输出1866S19LCD段信号输出1967COM5LCD公共信号输出568COM4LCD公共信号输出469COM3LCD公共信号输出370COM2LCD公共信号输出271COM1LCD公共信号输出172COM0LCD公共信号输出073VDD1LCD电平产生电路滤波电容74C1LCD电平产生电路升压电容75C2LCD电平产生电路升压电容76CKSEL外部晶振/内部RC振荡器选择77VDD数字电源78XT外部晶振输入79XTB外部晶振输出80GND数字地TQFP80封装图112102001.3 基本电参数1.3.1 绝对参数;1.3.2 DC参数1.3.3 AC参数;第二章处理器2.1 处理器构架2.1.1 处理器构架框图指令译码器移位运算器寄存器ALU中断控制器定时器串行通讯控制器中断控制器PWM液晶驱动数据总线地址总线控制总线ADC图12.1.2 指令所有指令均为单时钟周期指令,亦此处理器的机器周期等于时钟周期并且所有指令只需要一个机器周期。唯一的例外是程序存储器访问指令LDC,执行LDC指令需要两个时钟(机器)周期。请参考指令系统。2.1.3 寄存器内核有8个宽度为16位的寄存器R0-R7,所有寄存器都可以作为指令的源操作数或者目的操作数。立即数装载指令LDI只能操作R0-R3。R0-R5:通用操作寄存器。习惯上使用R5作为堆栈指针。事实上你可以使用R0-R5中的任意一个寄存器作为堆栈指针。如果你合适地保存了堆栈指针,你也可以临时将此寄存器作为通用的寄存器使用。R6:连接寄存器,在执行JPL转移指令时当前地址会自动复制到R6中。如果不需要返回地址或者将R6中的返回地址保存到堆栈后,R6也可以作为通用寄存器使用。内核在物理上有2个R6寄存器:R6和R6_i。在普通模式下使用R6,中断模式下使用R6_i。对于用户而言,在特定的模式下只能访问其中的一个。请参考第4章中断部分。注意:执行JPL指令时R6中保存的是当前地址。故用JPL指令调用子程序时,正确的返回地址应该是R6中的地址加1。故一般使用加一传送指令MOI作为子程序返回指令。发生中断时R6_i中保存的地址指向的指令并未执行,故中断返回时应字节将R6_i中的地址拷贝到PC中。请参考参考第4章中断部分和第十二章指令系统。R7:即程序指针PC。你可以操作通用寄存器一样操作R7(PC)。所有指令除LDI指令外均可以操作R7。例如ADD R7, #4,把PC的值加4,执行此指令后程序跳转到当前指令的后面第4条指令。2.1.4 标志寄存器内核有2个标志位:零标志Z和进位标志C。在普通模式下和中断模式下各有一套标志位。C标志:在加法指令中如上溢,C置1,否则置0;在减法指令中如借位,C置1,否则置0;其他指令不影响C标志位,除了带C标志的移位指令。Z标志:在加法、减法、按位与、按位或、移位指令中如果操作结果为0,Z置1,否则置0。如果指令中带TST测试标志,则影响C标志和Z标志,但是并不改写目标寄存器。2.1.5 字操作和字节操作大多数的指令均有字操作和字节操作两种模式。在字操作模式中,源操作数、目的操作数和结果均是16位的。而在字节操作模式中,源操作数、目的操作数和结果均是8位的,即只有寄存器的低8位参与指令操作,寄存器的高8位保持不变,并且根据8位运算的结果影响C标志和Z标志。存储器字操作时将同时读写2个字节,地址的最低位被忽略。例如:LDRR0, R1这是一条字操作指令。指令的含义是将以R1为地址的数据存储器中的数据传送到寄存器R0中。如果R1的值为0x0100,那么数据存储器地址0x0100中的8位数据将被传送到寄存器器R0的低8位,而数据存储器地址0x0101中的8位数据将被传送到寄存器器R0的高8位。如果R1的值位0x0101,那么结果也一样,即地址最低位在字操作中被忽略。存储器字节操作只读写1个字节。例如:LDR.BR0, R1这是一条字节操作指令。注意在指令的汇编助记符中的”.B”。指令的含义是将以R1为地址的数据存储器中的数据传送到寄存器R0的低8位中,寄存器R0的高8位保持不变。如果R1的值为0x0100,那么数据存储器地址0x0100中的8位数据将被传送到寄存器器R0的低8位中;如果R1的值位0x0101,那么数据存储器地址0x0101中的8位数据将被传送到寄存器器R0的低8位中。2.1.6 存储器地址空间内核有3个存储器地址空间:程序存储器地址空间、数据存储器地址空间、特殊功能寄存器(SFR)地址空间。程序存储器、数据存储器、SFR地址空间互相独立。对于程序存储器,处理器可寻址范围是64K,即从0x0000到0xffff。每个地址的数据宽度为16位,存放一条指令。 处理器复位时将从地址0x0000开始运行第一条指令。最大的程序存储空间是128K字节。对于数据存储器,处理器可寻址范围是64K,即从0x0000到0xffff。每个地址的数据宽度为8位。对数据存储器读写操作时,可使用字操作或者字节操作。特殊功能寄存器的地址范围为0x00-0xfe,其中只有偶数地址可以使用。0xffff0x00000xffff0x00000xfe0x020x00程序存储器地址空间数据存储器地址空间SFR地址空间2.2 特殊功能寄存器后面表格中操作一栏的含义如下:Rd:可读;Wr:可写;Rst:可位清零,使用RSB指令;Set:可位置1,使用SSB指令;内核有3个特殊功能寄存器(见下表):名称地址描述复位值SYSCON0x00状态寄存器0x00BANK0x02数据存储器页地址寄存器0x00CLKCON0x08时钟控制寄存器0x80数据存储器页地址寄存器BANK:在LDR/STR指令中BANK寄存器的值是数据存储器地址的高8位。请参考指令系统。SYSCON:状态寄存器Bit位描述操作7保留6保留5保留4保留3中断模式下的Z标志位。Rd/Wr/Rst/Set2中断模式下的C标志位。Rd/Wr/Rst/Set1普通模式下的Z标志位。Rd/Wr/Rst/Set0普通模式下的C标志位。Rd/Wr/Rst/Set软件可通过读特殊功能寄存器指令来得到C/Z标志位的值,通过写特殊功能寄存器指令或者位操作特殊功能寄存器指令来修改C/Z标志位的值。BANK:数据存储器页地址寄存器Bit位描述操作7保留6保留5保留4保留3A11数据存储器地址位11Rd/Wr2A10数据存储器地址位10Rd/Wr1A9数据存储器地址位9Rd/Wr0A8数据存储器地址位8Rd/Wr软件可通过读/写特殊功能寄存器指令来得到或者修改页地址寄存器的值。BANK寄存器的地址在直接地址数据存储器访问指令LDA/STA时产生地址的高4位。例如BANK寄存器的值为0x02,在LDAR0, 12这条指令时,访问的数据存储器地址为0x0212。即地址的低8位由指令直接给出,高4位由BANK寄存器给出,最高4位保持为0。CLKCON:时钟控制寄存器。请参见第三章功耗控制。2.3 运行模式处理器有两种运行模式:普通模式和中断模式。复位后在普通模式下运行,发生中断后处理器进入中断模式并跳转到中断入口地址开始执行中断服务程序。退出中断服务程序时通过指令返回到普通模式下运行。软件也可以通过指令进入中断模式或者返回普通模式。2.3.1 普通模式在普通模式下,处理器只能访问普通模式下的R6和标志寄存器C/Z,见表2-1。2.3.2 中断模式在中断模式下,处理器只能访问中断模式下的R6_i和标志寄存器C_i/Z_i。即访问R6时实际上使用了R6_i,访问C/Z标志位时实际上使用了C_i/Z_i。见表2-1。寄存器普通模式下实际操作的寄存器中断模式下实际操作的寄存器R0-R5R0-R5R0-R5R6R6R6_iR7(PC)R7R7CCC_iZZZ_i表2-1这样做的目的在于:当发生中断时,处理器进入中断模式,中断的返回地址会自动保存到R6_i中。用户在中断模式下使用的是R6_i,从而不会影响普通模式下的R6。同样的,在中断服务程序中内核使用C_i/Z_i标志寄存器,而不会影响普通模式下的C/Z标志寄存器。第三章功耗管理3.1 低功耗运行模式FB16P系列芯片中内核和外围的时钟是可控的。见表31。3.1.1 休眠和唤醒如果软件停止了内核时钟,那么内核就处于休眠状态,程序停止运行。如果没有停止中断控制器时钟和产生中断的模块的时钟,外围模块在继续运行。一旦发生中断,内核会自动被唤醒,程序从进入休眠状态的那条指令下一条继续运行。如果停止了所有的时钟,那么芯片只能通过复位来恢复运行。3.2 特殊寄存器设置CLKCON寄存器控制了芯片的时钟:CLKCON:功耗控制寄存器Bit位描述操作7内核时钟Rd/Wr/Rst/Set6中断控制器时钟Rd/Wr/Rst/Set5Rd/Wr/Rst/Set4定时器0时钟Rd/Wr/Rst/Set3定时器1、2时钟Rd/Wr/Rst/Set2看门狗时钟Rd/Wr/Rst/Set1串口控制器、定时器3、4Rd/Wr/Rst/Set0外围模块时钟(Port口、PWM模块、LCD模块)Rd/Wr/Rst/Set注:1:时钟允许。0:禁止,模块停止工作。表31第四章中断4.1 概述FB16Pxx MCU的中断结构框图见图4-1中断控制器MI中断请求IO口定时器串行控制器图4-1中断控制器在每个时钟的下降沿采样并锁存外部的中断请求信号。在内核处于普通模式下则响应中断请求,进入中断模式并执行中断服务程序。如果同时有2个或者更多的中断请求发生并进入中断悬挂寄存器,那么根据优先级服务最高优先级的中断请求。IRQ1的优先级最高,IRQ15的优先级最低。进入中断服务程序后,必须向中断悬挂寄存器对应位置0来清除此中断的中断请求(通过位清零指令RSB)。如果用户必须实现中断嵌套,那么在进入中断服务程序后,用户程序需保存现场后退出中断模式后继续执行中断服务程序。请参考软件开发指南。4.2 中断响应时间在普通模式下,处理器在时钟下降沿采样中断请求信号。如果有中断请求发生,处理器在执行完当前指令后根据中断源执行一条跳转指令(需要一个时钟周期),跳转到中断入口地址并进入中断模式,接着开始执行中断入口地址处的指令。4.3 中断控制特殊寄存器名称地址描述操作复位值ICON0x0010中断允许寄存器Rd/Wr/0x0IMASK0x0012中断屏蔽寄存器Rd/Wr/0x0IPEND0x0014中断请求悬挂寄存器Rd/*Rst/0x0IPEND_H0x0016中断请求悬挂寄存器清除/Rst/0x0注意:用RSB指令清除IPEND的悬挂位时只能清除低8位,高8位必须通过RSB指令清除IPEND_H地址的对应位来实现。ICON:中断允许寄存器MI控制了内核是否响应中断请求信号。为1时内核响应中断请求信号,否则即使有中断请求信号,内核也不会响应。用户如果允许某个中断请求发生并进入中断悬挂寄存器,必须将对应的中断允许寄存器位置1。Bit位描述中断入口地址15(IRQ15)串口1发送中断0x003c14(IRQ14)串口0发送中断0x003813(IRQ13)保留0x003412(IRQ12)保留0x003011(IRQ11)定时器4/串口1接收中断0x002c10(IRQ10)定时器3/串口0接收中断0x00289(IRQ9)外部中断30x00248(IRQ8)外部中断20x00207(IRQ7)定时器2溢出中断0x001c6(IRQ6)定时器1溢出中断0x00185(IRQ5)ADC转换完成中断0x00144(IRQ4)定时器0溢出中断0x00103(IRQ3)保留0x000c2(IRQ2)外部中断10x00081(IRQ1)外部中断00x00040 (IRQ0)保留IMASK:中断屏蔽寄存器中断请求信号进入中断请求悬挂寄存器后,是否向内核产生中断请求,取决与IMASK的位设置。第0位MI控制了内核是否响应中断请求信号。为1时内核响应中断请求信号,否则即使有中断请求信号,内核也不会响应。Bit位描述15(IRQ15)串口1发送中断14(IRQ14)串口0发送中断13(IRQ13)保留12(IRQ12)保留11(IRQ11)定时器4/串口1接收中断10(IRQ10)定时器3/串口0接收中断9(IRQ9)外部中断38(IRQ8)外部中断27(IRQ7)定时器2溢出中断6(IRQ6)定时器1溢出中断5(IRQ5)ADC转换完成中断4(IRQ4)定时器0溢出中断3(IRQ3)保留2(IRQ2)外部中断11(IRQ1)外部中断00 (MI)IPEND:中断请求悬挂寄存器中断悬挂寄存器指出那些中断请求已经发生。中断服务程序在服务中断请求时,必须软件清除相应的IPEND位,否则此中断请求会一直保留。Bit位描述15(IRQ15)串口1发送中断14(IRQ14)串口0发送中断13(IRQ13)保留12(IRQ12)保留11(IRQ11)定时器4/串口1接收中断10(IRQ10)定时器3/串口0接收中断9(IRQ9)外部中断38(IRQ8)外部中断27(IRQ7)定时器2溢出中断6(IRQ6)定时器1溢出中断5(IRQ5)ADC转换完成中断4(IRQ4)定时器0溢出中断3(IRQ3)保留2(IRQ2)外部中断11(IRQ1)外部中断00 保留注意:软件在读中断请求悬挂时可通过16位读IPEND寄存器来得到所有的位,而在清除高8位的中断悬挂时必须通过IPEND_H寄存器的对应位来实现。也就是说:IPEND_H的第0位对应IPEND的第8位,第1位对应IPEND的第9位,以此类推。读IPEND_H寄存器是没有意义的。第五章输入输出口5.1 概述FB16Pxx有4个8位的IO口:P0,P1,P2,P3。所有的IO口在输出模式下,最大的低电平输出电流为15mA,最大高电平输出电流为3mA。IO口CMOS输出开漏输出CMOS输入上拉输入外部中断P04个P1P2P3 :有此功能; :无此功能IO口复用:IO口第2功能P0P1P2PWM0PWM7输出P3PWM8PWM11输出,TX0/RX0/TX1/RX15.2 P0口P0口是8位双向输入输出口,其中低4位支持外部中断:上升沿或者下降沿均可引起中断。P0.0对应外部中断0(IRQ1)中断,P0.1对应外部中断1(IRQ2)中断,P0.2对应外部中断2(IRQ8)中断,P0.0对应外部中断3(IRQ9)中断。P0口可提供CMOS输出和开漏输出两种输出模式,可提供CMOS高阻输入和内部上拉输入两种输入模式。P0口控制寄存器如下表:名称地址描述操作复位值P0CON0x80P0方向口控制寄存器Rd/Wr/-/-0x0P0PUP0x82P0口上拉控制寄存器Rd/Wr/-/-0x0P0DAT0x84P0口数据寄存器Rd/Wr/Set/Rst0x0I0CON:P0口方向控制寄存器BitIO口描述复位值7P070:输入,1:输出06P060:输入,1:输出05P050:输入,1:输出04P040:输入,1:输出03P030:输入,1:输出02P020:输入,1:输出01P010:输入,1:输出00P000:输入,1:输出0P0口控制寄存器控制P0口每一位的输入/输出方向。P0DAT:P0口数据寄存器BitIO口描述复位值7P07P07的输出数据锁存器06P06P06的输出数据锁存器05P05P05的输出数据锁存器04P04P04的输出数据锁存器03P03P03的输出数据锁存器02P02P02的输出数据锁存器01P01P01的输出数据锁存器00P00P00的输出数据锁存器0输出时写P0DAT到输出数据锁存器。注意:不管在输入还是输出模式下,读P0DAT读到的均是引脚电平值。P0PUP:P0口模式控制寄存器BitIO口描述复位值7保留6保留5保留4保留3保留2保留1保留0P0输出时:0:CMOS输出,1:开漏输出输入时:0:CMOS输入,1:上拉输入0P0口模式控制寄存器的Bit0同时控制了P0口8根口线的上拉或开漏。5.3 P1口P1口是8位双向输入输出口,没有外部中断功能。其他功能和P0口一样。P1口控制寄存器如下表:名称地址描述操作复位值P1CON0x88P1口控制寄存器Rd/Wr/-/-0x0P1PUP0x8aP1口上拉控制寄存器Rd/Wr/-/-0x0P1DAT0x8cP1口数据寄存器Rd/Wr/Set/Rst0x0I1CON:P1方向口控制寄存器BitIO口描述复位值7P170:输入,1:输出06P160:输入,1:输出05P150:输入,1:输出04P140:输入,1:输出03P130:输入,1:输出02P120:输入,1:输出01P110:输入,1:输出00P100:输入,1:输出0P1口控制寄存器控制P1口每一位的输入/输出方向。P1DAT:P1口数据寄存器BitIO口描述复位值7P17P17的输出数据锁存器06P16P16的输出数据锁存器05P15P15的输出数据锁存器04P14P14的输出数据锁存器03P13P13的输出数据锁存器02P12P12的输出数据锁存器01P11P11的输出数据锁存器00P10P10的输出数据锁存器0输出时写P0DAT到输出数据锁存器。注意:不管在输入还是输出模式下,读P0DAT读到的均是引脚电平值。P1PUP:P1口模式控制寄存器BitIO口描述复位值7保留6保留5保留4保留3保留2保留1保留0P1输出时:0:CMOS输出,1:开漏输出输入时:0:CMOS输入,1:上拉输入P1口模式控制寄存器的Bit0同时控制了P1口8根口线的上拉或开漏。5.4 P2、P3口P2、P3口是8位双向输入输出口,没有外部中断功能。第2功能是PWM输出和串口控制器发送接收信号RX0/TX0/RX1/TX1。P2口控制寄存器如下表:名称地址描述操作复位值P2CON0x90P2口方向控制寄存器Rd/Wr/-/-0x0P2PUP0x92P2口上拉控制寄存器Rd/Wr/-/-0x0P2DAT0x94P2口数据寄存器Rd/Wr/-/-0x0P2FUN0x96P2口引脚功能控制寄存器Rd/Wr/Set/Rst0x0P3口控制寄存器如下表:名称地址描述操作复位值P3CON0x98P3口方向控制寄存器Rd/Wr/-/-0x0P3PUP0x9aP3口上拉控制寄存器Rd/Wr/-/-0x0P3DAT0x9cP3口数据寄存器Rd/Wr/-/-0x0P3FUN0x9eP3口引脚功能控制寄存器Rd/Wr/Set/Rst0x0I2CON/P3CON:P2/P3口方向控制寄存器BitIO口描述复位值7Pn70:输入,1:输出06Pn60:输入,1:输出05Pn50:输入,1:输出04Pn40:输入,1:输出03Pn30:输入,1:输出02Pn20:输入,1:输出01Pn10:输入,1:输出00Pn00:输入,1:输出0P2/P3口控制寄存器控制P2/P3口每一位的输入/输出方向。P2DAT/P3DAT:P2/P3口数据寄存器BitIO口描述复位值7Pn7Pn7的输出数据锁存器06Pn6Pn6的输出数据锁存器05Pn5Pn5的输出数据锁存器04Pn4Pn4的输出数据锁存器03Pn3Pn3的输出数据锁存器02Pn2Pn2的输出数据锁存器01Pn1Pn1的输出数据锁存器00Pn0Pn0的输出数据锁存器0输出时写PnDAT到输出数据锁存器。注意:不管在输入还是输出模式下,读PnDAT读到的均是引脚电平值。P2PUP/P3PUP:P2/P3口模式控制寄存器BitIO口描述复位值7保留6保留5保留4保留3保留2保留1保留0P2/P3输出时:0:CMOS输出,1:开漏输出输入时:0:CMOS输入,1:上拉输入0P2/P3口模式控制寄存器的Bit0同时控制了P2/P3口8根口线的上拉或开漏。P2FUN:P2口引脚功能控制寄存器Bit描述复位值70:P27作为IO口,1:P27作为PWM7输出060:P26作为IO口,1:P26作为PWM6输出050:P25作为IO口,1:P25作为PWM5输出040:P24作为IO口,1:P24作为PWM4输出030:P23作为IO口,1:P23作为PWM3输出020:P22作为IO口,1:P22作为PWM2输出010:P21作为IO口,1:P21作为PWM1输出000:P20作为IO口,1:P20作为PWM0输出0P3FUN:P3口引脚功能控制寄存器Bit描述复位值70:P37作为IO口,1:P37作为RX0串口0接收输入060:P36作为IO口,1:P36作为TX0串口0发送输出050:P35作为IO口,1:P35作为RX1串口1接收输入040:P34作为IO口,1:P34作为TX1串口1发送输出030:P33作为IO口,1:P33作为PWM11输出020:P32作为IO口,1:P32作为PWM10输出010:P31作为IO口,1:P31作为PWM9输出000:P30作为IO口,1:P30作为PWM8输出05.5 输出模式在输出模式下,上拉被关闭。上拉控制位用于控制CMOS输出或者开漏输出。注意:上拉控制位和是否设置成第二功能无关。 5.6 输入模式在输入模式下,上拉控制位用于控制是否接通上拉电阻。同样,上拉控制位和是否设置成第二功能无关。第六章 定时器6.1 概述FB16Pxx有5个定时器:定时器0、定时器1、定时器2、定时器3、定时器4。定时器功能定时器08位定时器定时器116位定时器/16位外部脉冲宽度计数器定时器28位定时器/16位外部时钟计数器定时器38位定时器/串口0波特率发生器定时器48位定时器/串口1波特率发生器溢出中断请求8/16位计数器8/16位重装入锁存器预分频器时钟PS1:06.2 定时器0定时器0是一个带预分频器的8位定时器。预分频可设置为时钟的1/2、1/4、1/32或者1/256。定时器是向上计数的,即加1计数的。如果计数值溢出,则会产生定时器0溢出中断请求。定时器0的控制寄存器如下表:名称地址描述操作复位值T0CON0x50Timer0控制寄存器Rd/Wr/Set/Rst*1T0CNT0x52Timer0计数器Rd/T0RLD0x54Timer0重装入寄存器/Wr/注意:T0CNT和T0RLD都是8位的。T0CON:Timer0控制寄存器Bit描述操作复位值7启动/停止位。位操作置1启动,位操作清0停止。Rd/Set/Rst6定时器溢出标志,只读。Rd/05保留/Wr/04保留03保留02自动重装载允许。1:自动重装载模式。Rd/Wr/01预分频控制位PS1。Rd/Wr/00预分频控制位PS0。Rd/Wr/0定时器的计数时钟取决于预分频控制位PS1:0的值:PS1PS0计数器时钟频率00Fosc / 201Fosc / 410Fosc / 3211Fosc / 256Fosc为系统时钟频率即晶振频率或RC频率。T0CNT是8位计数器,软件可读出当前的计数值。T0RLD是8位自动重装载寄存器。在自动重装载模式下,定时器溢出后T0RLD中的值会自动复制到T0CNT中,重新开始计数。6.2.1 定时时间计算定时器0的定时时间为:T = ( 256 T0RLD ) PS ( 1 / Fosc )T0RLD要尽量小以提高定时精度,故PS取值也应尽量小。例如:在Fosc = 1MHz下,需要2ms定时, 则PS取值为:PS = ( T Fosc ) / 256 ) = 2000 / 256 = 7.8,则PS只能为32;T0RLD = 256 ( T Fosc / PS ) 256 ( 2000 / 32 ) = 256 62.5,取63,则R0RLD = 194。6.3 定时器1定时器1是一个带预分频器的16位定时器/外部脉冲宽度计数器。预分频可设置为时钟的1/2、1/4、1/8或者1/16。定时器是向上计数的,即加1计数的。如果计数值溢出,则会产生定时器1溢出中断请求。在定时器模式下,定时器1是一个16位自动重装载定时器;在外部脉冲宽度计数器模式下,可使用预分频后的定时钟来对外部脉冲宽度计数,测量外部脉冲的宽度。定时器1的控制寄存器如下表:名称地址描述操作复位值T1CON0x58Timer1控制寄存器Rd/Wr/Set/Rst*1T1CNT0x5aTimer1计数器Rd/T1RLD0x5cTimer1重装入寄存器/Wr/注意:T1CNT和T1RLD是16位的。T1CON:Timer2控制寄存器Bit描述操作复位值7启动/停止位。位操作置1启动,位操作清0停止。Rd/Set/Rst6定时器溢出标志,只读。Rd/05计数器清零位。计数器模式下位操作置1清零T1CNT/Set/4定时/计数模式选择位。0:定时器模式,1:计数器模式Rd/Wr/03计数器模式下脉冲相位选择。0:计数高电平脉冲宽度。1:计数低电平脉冲宽度Rd/Wr/02自动重装载允许。1:自动重装载模式。Rd/Wr/01预分频控制位PS1。Rd/Wr/00预分频控制位PS0。Rd/Wr/0定时器的计数时钟取决于预分频控制位PS1:0的值:PS1PS0计数器时钟频率00Fosc / 201Fosc / 410Fosc / 811Fosc / 16Fosc为系统时钟频率即晶振频率或RC频率。T1CNT是16位计数器,软件可读出当前的计数值。T1RLD是16位自动重转载寄存器。在自动重装载模式下,定时器溢出后T1RLD中的值会自动复制到T1CNT中,重新开始计数。6.3.1 定时器模式T1工作在定时器模式下时,需要注意:l 定时器溢出标志位只能通过只能通过置1启动位来清除。如果工作在自动重装载模式下且使用软件查询定时溢出时,溢出后需要手动清除溢出标志。6.3.2 定时时间计算定时器1的定时时间为:T = ( 65536 T1RLD ) PS ( 1 / Fosc )T1RLD要尽量小以提高定时精度,故PS取值也应尽量小。例如:在Fosc = 10MHz下,需要50ms定时, 则PS取值为:PS = ( T Fosc ) / 65536 ) = 2000 / 256 = 7.6,则PS只能为8;T1RLD = 65536 ( T Fosc / PS ) 65536 ( 500000 / 8 )= 65536 62500,则R1RLD = 3036。6.3.3 计数器模式T1工作在计数器模式下的时候,可以用来测量外部脉冲的高电平宽度或者低电平宽度。此时,计数器T1CNT的时钟由预分频器给出,而T1CNT计数闸门由外部电平控制。在测量外部高电平宽度时,定时器1会在外部脉冲的上升沿开始计数,在的下降沿产生一个中断请求信号;在测量外部低电平宽度时,定时器1会在外部脉冲的下降沿开始计数,在上升沿产生一个中断请求信号。要正确工作在计数器模式下,软件必须遵循下列规则:l T1RLD一般需要清零。因为清除T1CNT的值实质上是将T1RLD的值复制到T1CNT寄存器中。l 正确的初始化顺序:先初始化T1RLD寄存器,然后设置T0CON除了模式选择位以外的位,然后将模式选择位写入1,最后置位计数器清零0位来清除T1CNT的值。 l 第一次中断时读取的T1CNT的值有可能为0,原因是初始化完成时外部脉冲可能处于允许计数状态(如设置测量高电平脉冲宽度,而初始化完成时正好处于高电平)。为了避免错误测量,硬件会自动检测,只有一个完整的外部脉冲才能得到有效的计数值。所以软件第一次读取T1CNT的时候要注意此问题。l 读取T1CNT的值后必须通过置位计数器清零0位来清除T1CNT的值,否则会累加计数。在特殊情况下可利用此特性来累计高电平或低电平的宽度,但是要注意计数器溢出问题。l 可以通过读取定时器溢出标志来判断是否发生了计数溢出。此标志只能通过置1启动位来清除。6.4 定时器2定时器2是一个带预分频器的16位定时器/外部时钟计数器器。预分频可设置为时钟的1/2、1/8、1/32或者1/256。定时器是向上计数的,即加1计数的。如果计数值溢出,则会产生定时器1溢出中断请求。在定时器模式下,定时器2是一个16位自动重装载定时器;在外部时钟计数器模式下,在定时器开始运行到定时器溢出的时间内,一个16位的外部时钟计数器用来计数外部脉冲的个数。定时器2的控制寄存器如下表:名称地址描述操作复位值T2CON0x60Timer2控制寄存器Rd/Wr/Set/Rst*1T2CNT0x62Timer2计数器Rd/T2RLD0x64Timer2重装入寄存器/Wr/T2EXT0x66Timer2外部时钟计数器Rd/注意:T2CNT、T2RLD和T2EXT都是16位的。T2CON:Timer2控制寄存器Bit描述操作复位值7启动/停止位。位操作置1启动定时器,位操作清0停止。Rd/Set/Rst6定时器溢出标志,只读。Rd/05保留/4定时/计数模式选择位。0:定时器模式,1:计数器模式Rd/Wr/03保留/2自动重装载允许。1:自动重装载模式。Rd/Wr/01预分频控制位PS1。Rd/Wr/00预分频控制位PS0。Rd/Wr/0定时器的计数时钟取决于预分频控制位PS1:0的值:PS1PS0计数器时钟频率00Fosc / 201Fosc / 810Fosc / 3211Fosc / 256Fosc为系统时钟频率即晶振频率或RC频率。T2CNT是16位计数器,软件可读出当前的计数值。T2RLD是16位自动重转载寄存器。在自动重装载模式下,定时器溢出后T2RLD中的值会自动复制到T2CNT中,重新开始计数。6.4.1 定时时间计算定时器2的定时时间为:T = ( 65536 T2RLD ) PS ( 1 / Fosc )T2RLD要尽量小以提高定时精度,故PS取值也应尽量小。例如:在Fosc = 10MHz下,需要50ms定时, 则PS取值为:PS = ( T Fosc ) / 65536 ) = 2000 / 256 = 7.6,则PS只能为8;T2RLD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论