当前位置: 首页 > news >正文

企业网站策划应该怎么做onethink做移动网站

企业网站策划应该怎么做,onethink做移动网站,静态学校网站做毕业设计,广东省城乡建设部网站首页目录快速使用硬知识传统51单片机 CPU 时序的有关知识#xff08;12T#xff09;51 单片机定时器原理51 单片机定时/计数器结构定时器/计数器0/1定时器/计数器0和1的相关寄存器控制寄存器工作模式寄存器工作模式模式0(13位定时器/计数器)模式1(16位定时器/计数器)模式2(8位自动… 目录快速使用硬知识传统51单片机 CPU 时序的有关知识12T51 单片机定时器原理51 单片机定时/计数器结构定时器/计数器0/1定时器/计数器0和1的相关寄存器控制寄存器工作模式寄存器工作模式模式0(13位定时器/计数器)模式1(16位定时器/计数器)模式2(8位自动重装模式)模式3(两个8位计数器)古老Intel 8051单片机定时器0/1的应用举例定时器/计数器2定时器/计数器2的相关寄存器控制寄存器工作模式寄存器工作模式16位自动重装模式(递增/递减计数器)16位捕获模式串行口波特率发生器模式波特率公式汇总可编程时钟输出模式示例程序配置源码TIM.cTIM.h定时器0中断、定时器1中断、定时器2中断示例main.c修改TIM.c中的中断服务函数现象定时器2可编程时钟输出示例main.c现象普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 中断知识见【51单片机快速入门指南】3中断系统 快速使用 可利用STC-ISP的计算器直接生成初始化函数        传统51需设置系统频率晶振频率定时器时钟设为12T        使能6T模式后需将系统频率x2        使用更新的1T芯片则定时器时钟应改为1T系统频率无需x2 硬知识 摘自《普中 51 单片机开发攻略》和《STC89C52系列单片机器件手册》 中断知识见【51单片机快速入门指南】3中断系统 传统51单片机 CPU 时序的有关知识12T ① 振荡周期为单片机提供定时信号的振荡源的周期晶振周期或外加振荡 周期。 ② 状态周期2 个振荡周期为 1 个状态周期用 S 表示。振荡周期又称 S 周 期或时钟周期。 ③ 机器周期1 个机器周期含 6 个状态周期12 个振荡周期。 ④ 指令周期完成 1 条指令所占用的全部时间它以机器周期为单位。 例如外接晶振为 12MHz 时51 单片机相关周期的具体值为 振荡周期1/12us; 状态周期1/6us; 机器周期1us; 指令周期1~4us; 补充概念 51 单片机有两组定时器/计数器因为既可以定时又可以计数故称之为定时器/计数器。定时器/计数器和单片机的 CPU 是相互独立的。定时器/计数器工作的过程是自动完成的不需要 CPU 的参与。51 单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加 1。 有了定时器/计数器之后可以增加单片机的效率一些简单的重复加 1 的 工作可以交给定时器/计数器处理。CPU 转而处理一些复杂的事情。同时可以实现精确定时作用。 51 单片机定时器原理 STC89C5X 单片机内有两个可编程的定时/计数器 T0、T1 和一个特殊功能定时器 T2。定时/计数器的实质是加 1 计数器16 位由高 8 位和低 8 位两个寄存器 THx 和 TLx 组成。它随着计数器的输入脉冲进行自加 1也就是每来一 个脉冲计数器就自动加 1当加到计数器为全 1 时再输入一个脉冲就使计数器回零且计数器的溢出使相应的中断标志位置 1向 CPU 发出中断请求定时/计数器中断允许时。如果定时/计数器工作于定时模式则表示定时时间已到 如果工作于计数模式则表示计数值已满。可见由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。 51 单片机定时/计数器结构 上图中的 T0 和 T1 引脚对应的是单片机 P3.4 和 P3.5 管脚。51 单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD 是定时/计数器的工作方式寄存器确定工作方式和功能TCON 是控制寄存器控制 T0、T1 的启动和停止及设置溢出标志。 定时器/计数器0/1 STC89C52系列单片机的定时器0和定时器1与传统8051的定时器完全兼容当在定时器1做波特率发生器时定时器0可以当两个8位定时器用。        STC89C52系列单片机内部设置的两个16位定时器/计数器TO和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器T0和T1在特殊功能寄存器TMOD中都有一控制位——C / T‾\overline{T}T 来选择T0或T1为定时器还是计数器。定时器/计数器的核心部件是一个加法也有减法的计数器其本质是对脉冲进行计数。只是计数脉冲来源不同如果计数脉冲来自系统时钟则为定时方式此时定时器/计数器每12个时钟或者每6个时钟得到一个计数脉冲计数值加1如果计数脉冲来自单片机外部引脚T0为P3.4T1为P3.5则为计数方式每来一个脉冲加1。 定时器/计数器0有4种工作模式        模式0(13位定时器/计数器),        模式1(16位定时器/计数器模式),        模式2(8位自动重装模式)        模式3(两个8位定时器/计数器)。 定时器/计数器1除模式3外其他工作模式与定时器/计数器0相同T1在模式3时无效停止计数。 定时器/计数器0和1的相关寄存器 控制寄存器 TCON为定时器/计数器T0、T1的控制寄存器同时也锁存T0、T1溢出中断源和外部请求中断源等TCON格式如下 工作模式寄存器 定时和计数功能由特殊功能寄存器TMOD的控制位C/T‾\overline{T}T进行选择TMOD寄存器的各位信息如下表所列。可以看出2个定时/计数器有4种操作模式通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和2都相同模式3不同各模式下的功能如下所述。 工作模式 通过对寄存器TMOD中的M1、M0的设置定时器/计数器0有4种不同的工作模式; 定时器/计数器1有3种不同的工作模式。 模式0(13位定时器/计数器) 将定时器x设置成模式0时类似8048定时器即8位计数器带32分频的预分频器(TLx的低5位用于分频计数2的5次方32)。下图所示为定时器/计数器x的模式0工作方式。此模式下定时器x配置为13位的计数器由TLx的低5位和THx的8位所构成。TLx低5位溢出向THx进位THx计数溢出置位TCON中的溢出标志位TFx。GATE0时如TRx1则定时器计数。GATE1时允许由外部输入INT1‾\overline{INT1}INT1控制定时器1INT0‾\overline{INT0}INT0控制定时器0这样可实现脉宽测量。TRx为TCON寄存器内的控制位TCON寄存器各位的具体功能描述见TCON寄存器各位的具体功能描述表。        当C/T‾\overline{T}T0时多路开关连接到系统时钟的分频输出Tx对时钟周期计数Tx工作在定时方式。当C/T‾\overline{T}T1时多路开关连接到外部脉冲输入即Tx工作在计数方式。        STC89C52系列单片机的定时器有两种计数速率一种是12T模式每12个时钟加1与传统8051单片机相同另外一种是6T模式每6个时钟加1速度是传统8051单片机的2倍。Tx的速率在烧录用户程序时在STC-ISP编程器中设置。 模式1(16位定时器/计数器) 模式1除了使用了THx及TLx全部16位外其他与模式0完全相同。即此模式下定时器/计数器0作为16位定时器/计数器如下图所示。        此模式下定时器配置为16位定时器/计数器由TLx的8位和THx的8位所构成。TLx的8位溢出向THx进位THx计数溢出置位TCON中的溢出标志位TFx。        当GATE0时如TRx1则定时器计数。GATE1时允许由外部输入INTx‾\overline{INTx}INTx控制定时器x这样可实现脉宽测量。TRx为TCON寄存器内的控制位TCON寄存器各位的具体功能描述见上节 TCON寄存器 的介绍。        当C/T‾\overline{T}T0时多路开关连接到系统时钟的分频输出Tx对时钟周期计数Tx工作在定时方式。当C/T‾\overline{T}T1时多路开关连接到外部脉冲输入即Tx工作在计数方式。        STC89C52系列单片机的定时器有两种计数速率一种是12T模式每12个时钟加1与传统8051单片机相同另外一种是6T模式每6个时钟加1速度是传统8051单片机的2倍。Tx的速率在烧录用户程序时在STC-ISP编程器中设置。 模式2(8位自动重装模式) 此模式下定时器 / 计数器x作为可自动重装载的 8 位计数器如下图所示        TLx的溢出不仅置位TFx 而且将THx内容重新装入TLx THx内容由软件预置重装时THx内容不变。 模式3(两个8位计数器) 对定时器1在模式3时定时器1停止计数效果与将TR1设置为0相同。        对定时器0此模式下定时器0的TL0及TH0作为2个独立的8位计数器。下图为模式3时的定时器0逻辑图。TL0占用定时器0的控制位C/T‾\overline{T}T、GATE、TR0、INT0及TF0。TH0限定为定时器功能计数器周期占用定时器1的TR1及TF1。此时TH0控制定时器1中断。        模式3是为了增加一个附加的8位定时器/计数器而提供的使单片机具有三个定时器/计数器。模式3 只适用于定时器/计数器0 定时器T1处于模式3时相当于TR10停止计数而T0可作为两个定时器用。 古老Intel 8051单片机定时器0/1的应用举例 8051系列单片机的定时器/计数器0或1是以不断加1进行计数的即属加1计数器因此就不能直接将实际的计数值作为计数初值送入计数寄存器THx、TLx中去而必须将实际计数值以282^828、2132^{13}213、2162^{16}216为模求补以其补码作为计数初值设置THx和TLx。        设实际计数值为x计数器长度为n (n8、13、16)则应装入计数器THx、TLx中的计数初值为2n−x2^n-x2n−x式中2n2^n2n为取模值。例如工作方式0的计数长度为13位则n13以2132^{13}213为模工作方式1的计数长度为16则n16以2162^{16}216为模等等。所以计数初值为 (x)补2n−x(x)_补2^{n} - x(x)补​2n−x。        对于定时模式是对机器周期计数而机器周期与选定的主频密切相关。因此需根据应用系统所选定的主频计算出机器周期值。现以主频6MHz为例则机器周期为 一个机器周期 12/12 /12/ 主振频率 12us/12 us/12us/ (6×106)(6×10^6)(6×106) 2us2us2us 实际定时时间 Tcx⋅TpTc x·TpTcx⋅Tp        式中TpTpTp为机器周期TcTcTc为所需定时时间xxx为所需计数次数。TpTpTp和TpTpTp一般为已知值在求出TpTpTp后即可求得所需计数值xxx再将xxx求补码即求得定时计数初值。即 (x)补2n−x(x)_补2^{n} - x(x)补​2n−x        例如设定时时间Tc5msTc 5msTc5ms机器周期Tp2μsTp 2μsTp2μs可求得定时计数次数               x5ms/2us2500x 5ms/2us 2500x5ms/2us2500 次        设选用工作方式1则n16则应设置的定时时间计数初值为 (x)补216−x65536−250063036(x)_补2^{16} - x65536-250063036(x)补​216−x65536−250063036还需将它分解成两个8位十六进制数分别求得低8位为3CH装入TLx高8位为F6H装入THx中。        工作方式0、1、2的最大计数次数分别为8192、65536和256。        对外部事件计数模式只需根据实际计数次数求补后变换成两个十六进制码即可。 定时器/计数器2 定时器2是一个16位定时/计数器。通过设置特殊功能寄存器T2CON中的C/T2‾\overline{T2}T2位可将其作为定时器或计数器特殊功能寄存器T2CON的描述如下所示 定时器/计数器2的相关寄存器 控制寄存器 工作模式寄存器 除了波特率发生器模式,T2CON不包括TR2位的设置TR2位需单独设置来启动定时器。如下表列出了T2作为定时器和计数器的具体设置方法。 1内部控制仅当定时器溢出时进行捕获和重装。 2外部控制当定时/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获和重装(定时器2用于波特率发生器模式时除外)。 工作模式 定时器2有4种操作模式自动重新装载递增或递减计数、捕获、和波特率发生器以及自动重新装载模式的衍生——可编程时钟输出模式。 前3种模式由T2CON中的位进行选择如下表所列 16位自动重装模式(递增/递减计数器) 16位自动重装模式中定时器2 可通过C/T2配置为定时器/计数器编程控制递增/递减计数。计数的方向是由DCEN递减计数使能位确定的DCEN位于T2MOD寄存器中T2MOD寄存器各位的功能描述如表3 所示。当DCEN0 时定时器2 默认为向上计数当DCEN1 时定时器2 可通过T2EX 确定递增或递减计数。图2 显示了当DCEN0 时定时器2 自动递增计数。在该模式中通过设置EXEN2位进行选择。如果EXEN20定时器2 递增计数到0FFFFH并在溢出后将TF2置位然后将RCAP2L和RCAP2H 中的16位值作为重新装载值装入定时器2。RCAP2L和RCAP2H的值是通过软件预设的。        如果EXEN2116位重新装载可通过溢出或T2EX从1 到 0 的负跳变实现。此负跳变同时EXF2置位。如果定时器2中断被使能则当TF2或EXF2置1时产生中断。在图3中DCEN1时定时器2可增或递减计数。此模式允许T2EX 控制计数的方向。当T2EX 置1 时定时器2 递增计数计数到0FFFFH后溢出并置位TF2还将产生中断如果中断被使能。定时器2的溢出将使RCAP2L 和RCAP2H中的16 位值作为重新装载值放入TL2和TH2。        当T2EX置零时将使定时器2递减计数。当TL2和TH2计数到等于RCAP2L和RCAP2H时定时器产生中断。 16位捕获模式 在捕获模式中通过T2CON中的EXEN2设置2个选项。如果EXEN20定时器2作为一个16位定时器或计数器由T2CON中C/T2位选择溢出时置位TF2定时器2溢出标志位。该位可用于产生中断通过使能IE寄存器中的定时器2中断使能位ET2。如果EXEN21与以上描述相同但增加了一个特性即外部输入T2EX由1变零时将定时器2中TL2和TH2的当前值各自捕获到RCAP2L和RCAP2H。另外T2EX的负跳变使T2CON中的EXF2置位EXF2也像TF2一样能够产生中断其向量与定时器2溢出中断地址相同定时器2中断服务程序通过查询TF2和EXF2来确定引起中断的事件捕获模式如下图所示。在该模式中TL2和TH2无重新装载值甚至当T2EX产生捕获事件时计数器仍以 T2EX 的负跳变或振荡频率的 1/1212T模式或1/66T模式计数。 串行口波特率发生器模式 寄存器T2CON 的位TCLK和或RCLK允许从定时器1或定时器2获得串行口发送和接收的波特率。当TCLK0时定时器1作为串行口发送波特率发生器当TCLK1时定时器2作为串行口发送波特率发生器。RCLK对串行口接收波特率有同样的作用。通过这2位串行口能得到不同的接收和发送波特率一个通过定时器1产生另一个通过定时器2产生。如图4所示为定时器2工作在波特率发生器模式。与自动重装模式相似当TH2溢出时波特率发生器模式使定时器2寄存器重新装载来自寄存器RCAP2H 和RCAP2L的16位的值寄存器RCAP2H和RCAP2L的值由软件预置。当工作于模式1和模式3时波特率由下面给出的公式所决定               模式 1 和模式 3 的波特率 定时器2溢出速率 / 16        定时器可配置成“定时”或“计数”方式在许多应用上定时器被设置在“定时”方式C/T20。当定时器2作为定时器时它的操作不同于波特率发生器。通常定时器2作为定时器它会在每个机器周期递增1/6 或1/12 振荡频率。当定时器2 作为波特率发生器时它在6 时钟模式下以振荡器频率递增12时钟模式时为1/12振荡频率。 这时的波特率公式如下        式中n166时钟模式或3212时钟模式[RCAP2HRCAP2L]是RCAP2H和RCAP2L的内容为16位无符号整数。        如图4所示定时器2是作为波特率发生器仅当寄存器T2CON中的RCLK和或TCLK1时定时器2作为波特率发生器才有效。注意TH2溢出并不置位TF2也不产生中断。这样当定时器2 作为波特率发生器时定时器2中断不必被禁止。如果EXEN2T2外部使能标志被置位在T2EX中由1 到0 的转换会置位EXF2T2 外部标志位但并不导致TH2TL2重新装载RCAP2HRCAP2L。        当定时器2用作波特率发生器时如果需要T2EX可用做附加的外部中断。当计时器工作在波特率发生器模式下则不要对TH2和TL2 进行读/ 写每隔一个状态时间fosc/2)或由T2 进入的异步信号定时器2 将加1。在此情况下对TH2 和TH1 进行读/ 写是不准确的可对RCAP2寄存器进行读但不要进行写否则将导致自动重装错误。当对定时器2或寄存器RCAP进行访问时应关闭定时器清零TR2。下表列出了常用的波特率和如何用定时器得到这些波特率。 波特率公式汇总 定时器2工作在波特率发生器模式外部时钟信号由T2脚进入这时的波特率公式如下               模式1和模式3的波特率 定时器2溢出速率 / 16        如果定时器2采用内部时钟信号则波特率公式如下        式中:n32(12时钟模式)或16(6 时钟模式),SYSclk 振荡器频率。自动重装值可由下式得到:               RCAP2H, RCAP2L 65536 -SYSclk / (n × 波特率) 可编程时钟输出模式 STC89C52系列单片机可设定定时/计数器2通过P1.0输出时钟。P1.0除作通用I/O口外还有两个功能可供选用用于定时器/计数器2的外部计数输入和定时/计数器2时钟信号输出。图5为时钟输出和外部事件计数方式示意图。        通过软件对T2CON.1位C/T2复位为0对T2MOD.1位T2OE置1就可将定时/计数器2选定为时钟信号发生器而T2CON.2位TR2控制时钟信号输出开始或结束TR2为启/停控制位. 由主振频率SYSclk和定时/计数器2定时、自动再装入方式的计数初值决定时钟信号的输出频率。其设置公式如下 n26时钟/机器周期 n412时钟/机器周期        从公式可见在主振频率SYSclk设定后时钟信号输出频率就取决于定时计数初值的设定。        在时钟输出模式下计数器回0 溢出不会产生中断请求。这种功能相当于定时/计数器2用作波特率发生器同时又可以作时钟发生器。但必须注意无论如何波特率发生器和时钟发生器不能单独确定各自不同的频率。原因是两者都用同一个陷阱寄存器RCAP2H、RCAP2L不可能出现两个计数初值。 示例程序 stdint.h见【51单片机快速入门指南】1基础知识和工程创建 配置源码 TIM.c #include REGX52.H #include TIM.h#if TIM_USE_STCsfr IPH 0xb7; #endifuint8_t TL0_Save 0, TH0_Save 0; uint8_t TL1_Save 0, TH1_Save 0; uint8_t TL2_Save 0, TH2_Save 0;void TIM0_Callback() interrupt 1 //定时器0中断函数 {TL0 TL0_Save;TH0 TH0_Save; }void TIM1_Callback() interrupt 3 //定时器1中断函数 {TL1 TL1_Save;TH1 TH1_Save; }void TIM2_Callback() interrupt 5 //定时器2中断函数 {TL2 TL2_Save;TH2 TH2_Save; if(TF2 1){TF2 0;}if(EXF2 1){EXF2 0;} }void Timer_Set_Period(uint8_t Timer_ID, uint8_t Timer_Mode, uint32_t CLK_Freq, uint16_t Period_us) {double x (double)CLK_Freq / 12 / 1000000 * Period_us;uint8_t TLx, THx;if(Timer_ID TIMER_2 || Timer_Mode TIMER_MODE_1){if(Timer_ID TIMER_2 Timer_Mode TIMER_MODE_3)x * 3;x 65536 - x;TLx (uint8_t)(x 0.5);THx ((uint16_t)x 0xFF00) 8;}else if(Timer_Mode TIMER_MODE_0){x 8192 - x;TLx (uint16_t)(x 0.5) 0x1F;THx (uint16_t)(x 0.5) 5;}else if(Timer_Mode TIMER_MODE_2 || Timer_Mode TIMER_MODE_3){x 256 - x;TLx (uint8_t)(x 0.5);THx (uint8_t)(x 0.5);}switch(Timer_ID){case TIMER_0:TL0_Save TLx;TH0_Save THx;TL0 TL0_Save; //设置计数初值TH0 TH0_Save;break;case TIMER_1:TL1_Save TLx;TH1_Save THx;TL1 TL1_Save; //设置计数初值TH1 TH1_Save;break;case TIMER_2:TL2_Save TLx;TH2_Save THx;RCAP2L TL2_Save; //设置计数初值RCAP2H TH2_Save;TL2 TL2_Save; TH2 TH2_Save; break;} }void Timer_Init(uint8_t Timer_ID, uint8_t Timer_Mode, bit Gate, bit Clock_Source, uint32_t CLK_Freq, uint16_t Period_us, uint8_t Priority) {Timer_Set_Period(Timer_ID, Timer_Mode, CLK_Freq, Period_us);switch(Timer_ID){case TIMER_0:TMOD 0xF0;TMOD | Timer_Mode; //设置工作模式TMOD | (uint8_t)Clock_Source 2; //设置时钟源TMOD | (uint8_t)Gate 3; //外部控制相关设置TL0 TL0_Save; //设置计数初值TH0 TH0_Save;TF0 0; //标志位清0TR0 1; //开始计数#if TIM_USE_STCIPH ~2; //设置中断优先级IPH | (2 Priority); //设置中断优先级#endifPT0 (1 Priority); //设置中断优先级ET0 1; //打开定时器0中断允许break;case TIMER_1:TMOD 0x0F;TMOD | (Timer_Mode 4); //设置工作模式TMOD | (uint8_t)Clock_Source 6; //设置时钟源TMOD | (uint8_t)Gate 7; //外部控制相关设置TL1 TL1_Save; //设置计数初值TH1 TH1_Save;TF1 0; //标志位清0TR1 1; //开始计数#if TIM_USE_STCIPH ~8; //设置中断优先级IPH | (2 Priority) 2; //设置中断优先级#endifPT1 (1 Priority); //设置中断优先级ET1 1; //打开定时器1中断允许break;case TIMER_2:T2MOD 0; //初始化模式寄存器T2CON 0; //初始化控制寄存器if(Timer_Mode TIMER_MODE_3) //设置工作模式T2MOD | 2;else{CP_RL2 Timer_Mode 1;TCLK (Timer_Mode 2) 1;RCLK (Timer_Mode 2) 1;}C_T2 Clock_Source; //设置时钟源EXEN2 Gate; //外部控制相关设置RCAP2L TL2_Save; //设置计数初值RCAP2H TH2_Save;TL2 TL2_Save; TH2 TH2_Save; TF2 0; //标志位清0TR2 1; //开始计数#if TIM_USE_STCIPH ~0x20; //设置中断优先级IPH | (2 Priority) 4; //设置中断优先级#endifPT2 (1 Priority); //设置中断优先级ET2 1; //打开定时器2中断允许break;}EA 1; //打开总中断 }TIM.h #ifndef TIM_H_ #define TIM_H_#include stdint.h//使用STC单片机的4级优先级 #define TIM_USE_STC 1#if TIM_USE_STC//STC单片机的4级优先级#define STC_TIM_Priority_Lowest 0#define STC_TIM_Priority_Lower 1#define STC_TIM_Priority_Higher 2#define STC_TIM_Priority_Highest 3#endif//传统51单片机的2级优先级 #define TIM_Priority_Low 0 #define TIM_Priority_High 1#define TIMER_0 0 #define TIMER_1 1 #define TIMER_2 2#define TIMER_MODE_0 0 #define TIMER_MODE_1 1 #define TIMER_MODE_2 2 #define TIMER_MODE_3 3#define GATE_DISABLE 0 #define GATE_ENABLE 1#define CLK_Internal 0 #define CLK_External 1void Timer_Init(uint8_t Timer_ID, uint8_t Timer_Mode, bit Gate, bit Clock_Source, uint32_t CLK_Freq, uint16_t Period_us, uint8_t Priority); void Timer_Set_Period(uint8_t Timer_ID, uint8_t Timer_Mode, uint32_t CLK_Freq, uint16_t Period_us);#endif定时器0中断、定时器1中断、定时器2中断示例 分别设置定时器0为13位计数、定时器1为16位计数、定时器2为16位计数模式周期均设为1000us中断优先级各不相同定时器0中断0.5s翻转一次P20定时器1中断1s翻转一次P21定时器2中断2s翻转一次P22。 main.c #include REGX52.H #include intrins.h #include stdint.h #include TIM.hvoid main(void) { Timer_Init(TIMER_0, TIMER_MODE_0, GATE_DISABLE, CLK_Internal, 11059200L, 1000, STC_TIM_Priority_Lowest);Timer_Init(TIMER_1, TIMER_MODE_1, GATE_DISABLE, CLK_Internal, 11059200L, 1000, STC_TIM_Priority_Lower);Timer_Init(TIMER_2, TIMER_MODE_0, GATE_DISABLE, CLK_Internal, 11059200L, 1000, STC_TIM_Priority_Higher);while(1){} }修改TIM.c中的中断服务函数 void TIM0_Callback() interrupt 1 //定时器0中断函数 {static uint16_t TIM0_Counter 0;TL0 TL0_Save;TH0 TH0_Save; TIM0_Counter;if(TIM0_Counter 500){TIM0_Counter 0;P2_0 !P2_0;} }void TIM1_Callback() interrupt 3 //定时器1中断函数 {static uint16_t TIM1_Counter 0;TL1 TL1_Save;TH1 TH1_Save; TIM1_Counter;if(TIM1_Counter 1000){TIM1_Counter 0;P2_1 !P2_1;} }void TIM2_Callback() interrupt 5 //定时器2中断函数 {static uint16_t TIM2_Counter 0;TL2 TL2_Save;TH2 TH2_Save; TIM2_Counter;if(TIM2_Counter 2000){TIM2_Counter 0;P2_2 !P2_2;}if(TF2 1){TF2 0;}if(EXF2 1){EXF2 0;} }现象 定时器2可编程时钟输出示例 将定时器2输出引脚P1.0配置成周期为1000us的脉冲。 main.c #include REGX52.H #include intrins.h #include stdint.h #include TIM.hvoid main(void) { Timer_Init(TIMER_2, TIMER_MODE_3, GATE_DISABLE, CLK_Internal, 11059200L, 1000, STC_TIM_Priority_Lowest);while(1){} }现象 P1.0上可测出周期为1000us的脉冲
http://www.yutouwan.com/news/491819/

相关文章:

  • 个人网站备案多少钱我的网站首页打不开
  • 网站建设类型上街网络推广
  • 做图书馆网站模板重庆网站建设平台
  • 玛伊网站做兼职加入要多少钱wordpress加会员中心
  • 优秀国外网站设计赏析wordpress 新闻资讯
  • 台州网站搜索优化网站建设常州麦策电商
  • 成品动漫和视频网站入口网站百度收录是什么意思
  • 网站做下cdn做网站需要多少钱 百度
  • 海口网络建站模板网站3d展示怎么做的
  • 公司做网站建设网站设计线框图
  • 网站清理通知哈尔滨seo推广
  • 外贸社交网站排名施工员证书查询网站
  • 网站建设与管理说课稿如何做vip视频网站
  • 东莞微信网站建设怎样宁德市公共资源交易中心
  • 做网站的步骤现在找个网站这么难的吗
  • 网站编程语言有哪些怎么修改wordpress绑定的域名
  • 电子商务网站建设培训小结长期做网站应该购买稳定的空间
  • 曲靖网站设计公司互联网营销师报名入口
  • 班级网站建设的内容大连学网站制作
  • 专业集团门户网站建设服务商织梦网站模板响应式
  • 网站备案 写共享可以吗建设网站赚的是什么钱
  • 常州公司建站模板有没有推广app的平台
  • 网站访问工具网站建设合同书下载
  • 石家庄市建设局质监站网站做网站导航cms
  • 景区门户网站建设大数据分析假发外贸网站模板
  • 如何给网站添加cnzz站长统计功能代码的常用办法百度招商加盟推广
  • 扬中市建设局网站wordpress萌主题
  • 赣州网站建设新闻一键wordpress 伪静态
  • 商用营销型网站建设优化建站百度搜索引擎优化的推广计划
  • 做网站怎么切片自助建站的软件