单片机试验之定时器计数器应用试验二

合集下载

【报告】单片机定时器计数器实验报告

【报告】单片机定时器计数器实验报告

【关键字】报告单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。

㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台MCS—51实验板一台PC机一台电源一台信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。

㈣实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。

2. 计数脉冲由信号发生器输入(从T0端接入)。

3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址;设置T1做定时器,T0做计数器,都于方式1工作;装入中断次数;装入计数值低8位;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断SETB EA ;允许CPU中断SJMP $;等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0MOV P1.7,C ;保护现场;装入计数值低8位;装入计数值高8位,50ms;允许T1中断;未到1s,继续计时;1s到重新开始;显示计数器T0的值;读计数器当前值;将计数值转为十进制;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中;将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器T0清零MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。

单片机实验报告

单片机实验报告

单片机实验报告学院:姓名:学号:指导老师:目录第一章实验内容、目的及要求 (2)一、内容 (2)二、目的及要求 (3)第二章实验 (3)实验一数字量输入输出实验 (3)实验二定时器/计数器实验 (4)实验三A/D、D/A转换实验 (11)实验四串行通信设计 (20)第三章实验体会 (28)第一章实验内容、目的及要求一、内容实验一数字量输入输出实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。

实验二定时器/计数器实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。

提高部分:定时器控制LED灯由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

编写程序模拟时序控制装置。

开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。

实验三A/D、D/A转换实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。

提高部分:(要求:Proteus环境下完成)小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

实验四串行通讯实验阅读、调试C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。

(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成)利用单片机实验系统,实现与PC机通讯。

功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

中断与定时器和计数器实验

中断与定时器和计数器实验

中断与定时器和计数器实验一、实验目的:1.掌握单片机的中断的原理、中断的设置,掌握中断的处理及应用2.掌握单片机的定时器/计数器的工作原理和工作方式,学会使用定时器/计数器二、实验内容:(一)、定时器/计数器应用程序设计实验1.计数功能:用定时器1方式2计数,每计数满100次,将P1.0取反。

(在仿真时,为方便观察现象,将TL1和TH1赋初值为0xfd,每按下按键一次计数器加1,这样3次就能看到仿真结果。

)分析:外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。

方式2有自动重装初值的功能,初始化后不必再置初值。

将T1设为定时方式2,GATE=0,C/T=1,M1M0=10,T0不使用,可为任意方式,只要不使其进入方式3即可,一般取0。

TMOD=60H。

定时器初值为X=82-100=156=9CH,TH1=TL1=9CH。

(1)硬件设计硬件设计如图所示(2)C源程序#include "reg51.h" sbit P1_0=P1^0;void main(){TMOD=0x60;TH1=0xfd;TL1=0xfd;TR1=1;ET1=1;while(1){if(TF1==1){P1_0=~P1_0;TF1=0;}}}(3)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

(二)中断应用程序设计实验2.中断定时使用定时器定时,每隔10s使与P0、P1、P2和P3端口连接的发光二极管闪烁10次,设P0、P1、P2和P3端口低电平灯亮,反之灯灭。

分析:中断源T0入口地址000BH;当T0溢出时,TF0为1发出中断申请,条件满足CPU响应,进入中断处理程序。

主程序中要进行中断设置和定时器初始化,中断服务程序中安排灯闪烁;TL0的初值为0xB0,TH0的初值为0x3C,执行200次,则完成10s定时。

定时器计数器实验报告

定时器计数器实验报告

定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。

在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。

计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。

在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。

实验目的:1. 学习定时器和计数器的基本原理及应用。

2. 熟悉定时器和计数器在单片机中的编程方法。

3. 掌握通过定时器和计数器实现延时和计数功能的方法。

实验器材:1. STM32F103C8T6开发板2. ST-LINK V2下载器3. 电脑实验内容:一、实验1:使用定时器和计数器实现延时功能1. 在Keil C中新建一个工程,并编写以下程序代码:```#include "stm32f10x.h"void TIM2_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode _Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);}void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearFlag(TIM2, TIM_FLAG_Update);GPIO_WriteBit(GPIOB,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)));}}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);TIM2_Int_Init(9999,7199);while (1);}```2. 将STM32开发板连接到电脑,并下载程序到开发板中。

单片机实习报告定时器

单片机实习报告定时器

单片机实习报告——定时器一、实习目的通过本次单片机实习,使我对单片机的工作原理和应用有更深入的了解,特别是定时器的工作原理和编程方法。

同时,培养我动手实践能力和团队协作能力,提高我在实际工程中的应用能力。

二、实习内容本次实习主要分为两个部分:定时器的原理学习和定时器的应用实践。

在原理学习部分,我通过阅读相关资料和教材,对定时器的工作原理、工作模式和编程方法有了深入的了解。

在应用实践部分,我参与了团队的项目,通过实际操作,对定时器的应用有了更直观的认识。

三、实习过程1. 定时器原理学习在定时器原理学习部分,我首先了解了定时器的基本概念,定时器是一种能够根据设定的时间间隔产生中断的硬件设备。

然后,我学习了定时器的工作原理,包括定时器的工作模式、计数器、控制寄存器等。

最后,我掌握了定时器的编程方法,通过编写程序实现定时器的定时功能。

2. 定时器应用实践在定时器应用实践部分,我参与了团队的项目。

我们选择了一个简单的应用场景,利用定时器实现一个周期性的信号输出。

我负责编写定时器的程序,设置定时器的工作模式和计数器值,实现定时器的定时功能。

同时,我还参与了团队的讨论,提出了改进意见和解决方案。

四、实习收获通过本次实习,我对定时器的工作原理和编程方法有了更深入的了解,掌握了定时器的应用方法。

同时,我在实际操作中培养了动手实践能力,提高了团队协作能力。

此外,我还学会了如何查阅相关资料和教材,提高了自己的自学能力。

五、实习总结本次实习让我对单片机的定时器功能有了更深入的了解,通过实际操作,使我对定时器的应用有了更直观的认识。

同时,本次实习培养了我的团队协作能力和动手实践能力,提高了我在实际工程中的应用能力。

在今后的学习和工作中,我将继续努力,不断提高自己的技能水平,为我国的电子科技事业做出贡献。

实验二 三菱plc定时器、计数器实验

实验二   三菱plc定时器、计数器实验

教 2、实验操作能力及完成情况:(好、 较好、 一般、 较差、 很差 );占 30%
师 3、实验结果记录及分析:(正确、 比较正确、 一般、 较差、 很差);占 30%
批 4、报告工整度:(好、 较好、 一般、 较差、 很差);占 10%
阅 评定等级(或分数):[
]

月日
实验步骤: 输入/输出波形:
C0 当前值 Y0 实验结果:
指令表:
2、 定时器指令实验 梯形图:
指令表:
实验步骤:
输入/输出波形: X0 T0 T1 Y0
3、 定时器/计数器实验 梯形图:
实验结果: 指令表:
实验步骤:
输入/输出波形: X0 X1 Y0 Y1
实验结果:



பைடு நூலகம்
月日
1、实验态度(含预习):(认真、 较认真、 一般、 较差、 很差 );占 30%
实验报告
姓名
学号
班级
指导教师
组别
同组人
实验室
实验名称实验二 定时器、计数器实验 时间
一、实验目的 1、 熟悉和掌握计数器指令的应用; 2、 熟悉和掌握定时器指令的应用; 3、 熟悉掌握计数器/定时器内部时基脉冲参数的设置。
二、实验设备 1、 每组 PLC-2 型可编程控制器实验台 1 套; 2、 PC 机 1 台,内装编程软件 FXGP-WIN; 3、 编程电缆 1 根、连接导线若干。
三、实验原理 1、 计数器指令
指令、名称
功能
电路表示和可用元件
OUT 输出 RST 复位
计数器线圈驱动 —| |———( C )K——— 输出触点的复位
—| |———[ RST C ]—— 当前值的清零

实验2--AT89C51单片机定时

实验2--AT89C51单片机定时

实验2 INT0中断与AT89C51单片机定时/计数器应用技术仿真实验一、实验目的1. 学习外部中断技术的基本使用方法。

2. 学习中断处理程序的编程方法。

3. 初步了解C51芯片来驱动动态数码管计数原理。

二、实验器材计算机,windows7旗舰版,keil uVision4,,所需元件清单有:AT89C51,普通电容,电解电容,晶体振荡器,电阻,数码管排阻及按键。

三、实验原理MCS-51是一个多中断源的单片机,以8051为例,有三类共五个中断源,分别是外部中断两个,定时器中断两个和串行中断一个(其中断控制字在后面实验中详细讲到)。

外部中断是由外部原因引起的,共有两个中断源,既外部中断0和外部中断1。

它们的中断请求信号分别由引脚()和()引入;外部中断请求信号有两种,既低电平有效方式和脉冲后沿负跳有效方式。

、中断开放和屏蔽-IE寄存器其作用是用来对各中断源进行开放或屏蔽的控制,各位定义如下:?EA—中断允许总控制位EA=0 中断总禁止,禁止所有中断。

EA=1 中断总允许。

EX0(EX1)-- 外部中断允许控制位EX0(EX1)=0 禁止外中断。

EX0(EX1)=1 允许外中断。

ET0(ET1)-- 定时/计数中断允许控制位ET0(ET1)=0 禁止定时/计数中断。

ET0(ET1)=1 允许定时/计数中断。

ES –串行中断允许控制位ES=0 禁止串行中断。

ES=1允许串行中断。

中断优先级控制寄存器(IP)|地址为B8H,位地址为BFH-B8H,各位定义如下:"PT0—定时中断0优先级设定位PX1--外部中断1优先级设定位PT1—定时中断1优先级设定位PS—串行中断优先级设定位为0的位优先级为低;为1的位优先级为高;中断优先级是为中断嵌套服务的,MCS-51中断优先级的控制原则是:(1)低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。

51单片机定时器计数器汇编实验报告

51单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。

2、掌握定时器/计数器的原理及编程方法。

二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。

若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。

方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。

四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。

设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。

二进制表示为:00010101 10100000B。

十六进制为:高八位(15H),低八位(A0H)。

2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。

单片机定时器与计数器的工作原理及应用

单片机定时器与计数器的工作原理及应用

单片机定时器与计数器的工作原理及应用摘要:单片机作为现代电子设备中广泛采用的一种集成电路,其内部包含了丰富的功能模块,其中定时器和计数器被广泛应用于各种领域。

本文将介绍单片机定时器和计数器的工作原理及应用,包括定时器的基本原理、工作模式和参数配置,以及计数器的工作原理和常见应用场景。

希望通过本文的阐述,读者能够深入了解单片机定时器和计数器的基本原理和应用,为电子系统设计提供参考。

引言:单片机作为嵌入式系统中的核心部件,承担着控制和处理各种信号的重要任务。

定时器和计数器作为单片机的重要功能模块,为实现各种实时控制任务提供了有效的工具。

定时器可以生成一定时间间隔的定时信号,而计数器则可以对外部事件的频率进行计数,实现时间测量和计数控制等功能。

一、定时器的工作原理单片机中的定时器通常为计数器加上一定逻辑控制电路构成。

定时器的基本工作原理是通过控制计数器的计数速度和计数值来实现不同时间间隔的输出信号。

当定时器触发时,计数器开始计数,当计数值达到预设值时,定时器产生一个输出信号,然后重新开始计数。

定时器通常由以下几个部分组成:1.计数器:定时器的核心部件是计数器,计数器可以通过内部振荡器或外部输入信号进行计数。

通常情况下,计数器是一个二进制计数器,它可以按照1、2、4、8等倍数进行计数。

2.预设值:定时器的预设值决定了定时器的时间间隔。

当计数器达到预设值时,定时器会产生一个输出脉冲。

3.控制逻辑电路:控制逻辑电路用于控制计数器的启动、停止和重置等操作。

通常情况下,控制逻辑电路由一系列的触发器和逻辑门组成。

二、定时器的工作模式定时器可以根据实际需求在不同的工作模式下运行,常见的工作模式有以下几种:1.定时工作模式:在定时工作模式下,定时器按照设定的时间间隔进行计数,并在计数值达到预设值时产生一个输出脉冲。

这种模式常用于周期性任务的触发和时间测量。

2.计数工作模式:在计数工作模式下,定时器通过外部输入信号进行计数,可以测量外部事件的频率。

定时计数器实验报告

定时计数器实验报告

实验3.3.1 定时/计数器实验一、实验目的1、了解MCS-51单片机定时/计数器的工作原理与工作方式;2、掌握定时/计数器T0和T1在定时器和计数器两中方式下的编程;3、学习定时/计数器T2的可编程时钟输出功能;4、掌握使用Proteus进行单片机系统仿真的方法。

二、实验内容1、使用定时器T0与定时器T1进行定时,在P1.0和P1.1引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。

2、将定时/计数器1设定为计数方式,每次计数到10在P1.0引脚上取反一次,观察发光二极管的状态变化。

3、定时器2可以作为时钟发生器使用,并在P1.0引脚上输出占空比为50%的方波。

编程定时器2,使用示波器测量输出时钟,测量时钟周期。

三、实验环境PC机一台,Proteus仿真软件、KEIL uVision2软件一套四、硬件电路接线图说明:SW1打到上边触点时用于实验内容1和内容3,SW1打到下边触点时与KK1一起用于实验内容2。

内容1内容2 内容3内容1:#include"sst89x5x4.h" sbit wave1=P1^0; sbit wave2=P1^1; void main(){TMOD=0x11;TH0=0x0F8;TL0=0x00;TH1=0x0F8;TL1=0;TR0=1;TR1=1;while(1){if(TF0==1){TH0=0x0F8;TL0=0x00;wave1=~wave1;TF0=0;}else if(TF1==1) {TH1=0x0F8;TL1=0;wave2=~wave2;TF1=0;}}}内容2:#include"sst89x5x4.h" sbit P10=P1^0;void main(){TMOD=0x60;TH1=0xF6;TL1=0xF6;TR1=1;for(;;){while(TF1==0);P10=~P10;TF1=0;}}内容3:#include"sst89x5x4.H"void main(){RCAP2H=0xFF;RCAP2L=0x00;T2MOD=0x02;T2CON=0x04;while(1);}七、实验步骤1、打开Proteus,画好硬件电路图并保存;2、打开KEIL uVision2,建立工程并按程序清单编写好源程序,编译连接;3、将Proteus和KEIL uVision2连接调试,验证电路和程序的功能。

单片机原理及应用实践论文

单片机原理及应用实践论文

单片机原理及应用实践论文成员:李浩 0811*******倪丹军0811******* 徐倩0811*******实验一 I/O口测试程序将ledP04 和ledP05 分别定义给P0.4 和P0.5,用1和0分别表示灯的亮灭,通过程序改变灯的电平值变换再延时最终得到实验现象为P0.4和P0.5引脚连接的51RXD和51TXD交替闪烁。

实验二定时器与PCA(1)、程序中将定时器2的高低8位字节重定义成一个16位的变量,每50ms 产生一次中断,并使LED(P0.4 位)状态翻转,从而使得相应LED 灯每100ms 产生一次闪烁。

改变程序,由定时器产生100ms重载,开启相应中断,使LED 每隔500ms 产生一次翻转,从而得到每1s产生一次闪烁。

(2)、程序中通过设定PCA定时器/计数器参数,根据公式修改占空比,使得PWM占空比逐渐增大到100%,随后改变方向减小到0%,以此变化反复循环.实验现象是波形来回缩进放大往返。

实验三 DAC与ADC的配置410的DAC0是电流模式的,需接上一个电阻(3K)使输出得到电压,然后就可以测量对应端口(P0.0口)的电压值。

ADC0实验则是将DAC0实验的输出电压值通过杜邦线引到其输入脚(P0.1)进行测试,通过在keil中设断点观察测量值,再进行比较。

实验四 SMBUS总线操作实验中采用虚拟时序完成IIC 总线操作,并对AT24C02 实现成功读写,实验现象是test_data输入8个字节,在keil的观察窗口中可以看到save_buf存入当页的8个字节, save_buf2存入前一页,当页及后一页24个字节。

实验五液晶显示程序中分字符显示和图片显示两个部分,其中图片是通过取模获取点阵,字符显示在显示位置是根据字符长度设置的。

字符显示,我们可以在液晶屏幕上看到“臣亮言先帝创业未,半而中道崩殂今天,下三分益州疲敝此,诚危急存亡之秋也”四句话;图片显示,我们可以在液晶屏幕上看到一个樱桃小丸子的头像图案。

定时器计数器实验

定时器计数器实验

一、AT89C51实验目的:
1.有两个定时/计数器,本试验中,将T1作为定时器用,定时50ms,T0作为计数器用,被计数的外部输入脉冲信号从单片机的P3.4接入,最大计数值为0ffffh。

单片机将在每50ms内对脉冲计数并送数码管实时显示,并利用T1定时从P3.7口输出周期为200ms占空比50%的方波。

2.用PROTEUS设计、仿真基于AT89C51单片机的脉冲计数与定时。

3.学会使用VSM虚拟示波器和计数/定时器
二、PROTEUS电路设计
本设计的电路原理图如图所示,这个设计都在ISIS平台中进行。

1.从PROTEUS库中选取元器件
①at89c51.bus:单片机
②7SEG-BCD-GRN:七段带译码BCD绿色数码管,
③button:按键
2.虚拟测试仪器
①vsm虚拟计数/定时器
单击工具栏,再在对象选择器中选中COUNTER TIMER(计数/计时器),打开其属性编辑况,单击运行模式下的下拉菜单如图,可以选择计数、频率、计时模式。

当前设置为计数模式。

②vsm虚拟示波器
单击工具栏,再在对象选择器中选中OSCILLOSCOPE,将P3.7与C信道连接。

三、原程序设计、生成目标代码文件
1.流程图
主程序流程
2.程序代码设计
四、proteus仿真
五、思考题
修改程序实现1S内对脉冲计数并送四位数码管实时显示,最大计数值为0ffffh,将COUNTER TIMER 属性设为频率,利用工具栏中的激励源DCLOCK作为脉冲输入源与p3.4口相连。

单片机原理及应用实验---定时器

单片机原理及应用实验---定时器

; 启动T0 ; 开T0中断
单片机原理及应用实验
MOV 70H,#10H ;中断次数计数 (65536*16=1048576μs≈1s) MOV R0,#LED0 CLR A LOOP: MOV @R0,A ;显示缓冲区清零 INC R0 CJNE R0,#LED7+1,LOOP DISP: LCALL DISPLAY ;调显示子程序, 开始显示8个0 SJMP DISP ;循环调用
单片机原理及应用实验
定时器实验(电子秒表)
河南师范大学物理与信息工程学院
单片机原理及应用实验
一、实验目的
进一步学习51单片机内部计数器的使用和 编程方法 进一步掌握中断程序的处理方法 了解键盘显示接口的工作原理
单片机原理及应用实验
二、实验内容
利用定时器定时,使七段数码管输出计时值
单片机原理及应用实验
单片机原理及应用实验
本实验中用定时器T0产生1秒钟基本时间单 位,本系统fosc=12MHz,当定时器T0工作 在方式1(16位)时,最大定时时间为 216*1μs=65536μs 再利用软件记数,当T0中断16次时,所用时 间为 65536*16=1048576μs≈1s
单片机原理及应用实验
单片机原理及应用实验

DB 7FH DB 6FH DB 77H DB 7CH DB 39H DB 5EH DB 79H DB 71H
;8 ;9 ;A ;B ;C ;D ;E ;F
单片机原理及应用实验

DB 00H DB 40H DB 76H DB 73H DB 3EH DB 67H DB 38H DB 50H
单片机原理及应用实验
ORG 1000H DISPLAY: MOV DPTR,#0FF89H ;显示子程序 MOV A,#90H ;8279写显示缓冲区 命令 MOVX @DPTR,A MOV R0,#8H MOV R1,#LED0 DLOOP: MOV A,@R1 MOV DPTR,#DISPTAB ;查表, 得到七段字型码

实验二 单片机定时器计数器编程

实验二  单片机定时器计数器编程

实验二单片机定时器/计数器编程一、实验目的1、掌握单片机定时器/计数器的工作方式;2、掌握单片机定时器/计数器的编程方法。

二、实验内容1、学习单片机定时器/计数器的工作方式、初始化以及应用等;2、利用单片机定时器/计数器编写程序驱动开发板上的LED灯按一定规律工作。

基本要求:利用定时器1控制LEDB闪烁,闪烁频率为2Hz。

提高要求:读懂教材定时器/计数器的应用实例4和5,在实验室开发板上采用分模块设计的方法编程实现以下两个任务之一:1、控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。

2、将教材例5对P1.0和P1.1的控制,改为对LEDB和LEDG的控制,时序不变。

三、实验设备1、STC单片机开发板;2、PC机以及串口线。

四、实验分析及关键代码(1)利用定时器1控制LEDB闪烁,闪烁频率为2Hz。

实验分析:控制LEDB闪烁,频率为2Hz,即0.5s。

解决思路:定时器工作方式选0x01,计数器初值为(65536-50000),循环10次即为0.5s。

代码如下:#include<reg51.h>#define uchar unsigned char sbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=!A;i=0;}}}}(2)控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。

解决思路:设置两个循环,计数器初值设为(65536-50000),亮灯循环10次,灭灯循环40次。

代码如下:#include<reg51.h>#define uchar unsigned charsbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=1;}if(i==50){A=0;i=0;}}}}五、实验总结对软件及计数器的操作及代码不太熟悉,多次查询课本及上网查找资料后懂得计数器工作方式及计数操作,其他问题迎刃而解。

定时器计数器应用实验二

定时器计数器应用实验二

一、实验目的1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、实验程序流程图和程序清单程序一、ORG 0000HLJMP MAINMAIN: MOV TMOD, #06HMOV TH0, #9CHMOV TL0, #9CHSETB TR0HERE: JNB TF0, HERECPL P1.0CLR TF0LJMP HEREEND程序二、ORG 0000HLJMP MAINORG 000BHLJMP ITPOMAIN: MOV SP, #2FHMOV TMOD, #06HMOV TH0, #38HMOV TL0, #38HMOV IE, #82HSETB TR0 开始计数器初始化开定时器0TF0=1?P1.0取反TF0清零结束Y开始计数器、中断初始化开定时器0等待结束ITPO P1.0取反返回HERE: LJMP HEREITPO: CPL P1.0RETIEND四、实验仿真图五、实验结果图图一(查询、输入为100us输出为20ms)图二(中断、输入为100us输出为40ms)六、实验心得本次实验室利用定时计数器的功能,分别利用查询法和中断法实现,在本次实验中产生的方波的周期为毫秒级别,所以看不出误差,和上一个实验比较,可以看出误差只存在微妙级,当产生较大周期的方波时,误差几乎为0.七、思考题1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。

实验三(一)(二)定时器与计数器功能认识与应用、扩展

实验三(一)(二)定时器与计数器功能认识与应用、扩展

实验三 定时器/计数器实验(一)一、实验目的通过实验了解定时器和计数器的不同应用。

进一步掌握定时器和计数器的编程和调试的方法。

二、实验内容要求学生自行设计并调试程序(教师可适当提示)1、自复位接通延时定时器电路(一个机器周期脉冲发生器电路)提示:先思考下面三个电路,根据定时器的刷新方式分析它们能否正常工作?不能工作的程序应如何修改?为了确保在每次定时器达到预置值时,自复位定时器的输出都能够接通一个程序扫描周期,用一个常闭触点来代替定时器位作为定时器的使能输入。

但一个程序扫描周期的脉冲过窄,在状态表中无法监视,为解决这种状况,可使用比较指令“LDW >= T33,+40”控制PLC 的某个输出点,再用状态图监视。

(思考:若想形成自复位计数器电路应如何编程?)知识回顾:定时器的刷新方式: 1ms 定时器每隔1ms 刷新一次与扫描周期和程序处理无关即采用中断刷新方式。

因此当扫描周期较长时,在一个周期内可能被多次刷新,其当前值在一个扫描周期内不一定保持一致。

10ms 定时器则由系统在每个扫描周期开始自动刷新。

由于每个扫描周期内只刷新一次,故而每次程序处理期间,其当前值为常数。

100ms 定时器则在该定时器指令执行时刷新。

下一条执行的指令,即可使用刷新后的结果,非常符合正常的思路,使用方便可靠。

但应当注意,如果该定时器的指令不是每个周期都执行,定时器就不能及时刷新,可能导致出错。

使用定时器本身的常闭触点作定时器的使能输入。

定时器的状态位置1时,依靠本身的常闭触点的断开使定时器复位,并重新开始定时,进行循环工作。

采用不同时基标准的定时器时,会有不同的运行结果,具体分析如下:(1)T32为1ms 时基定时器,每隔1ms 定时器刷新一次当前值,CPU 当前值若恰好在处理常闭触点和常开触点之间被刷新,Q0.0可以接通一个扫描周期,但这种情况出现的几率很小,一般情况下,不会正好在这时刷新。

若在执行其他指令时,定时时间到,1ms 的定时刷新,使定时器输出状态位置位,常闭触点打开,当前值复位,定时器输出状态位立即复位,所以输出线圈Q0.0一般不会通电。

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案课程教案课程名称:单片机技术实验任课教师:王韧所属院部:电气与信息工程学院教学班级:自动化1201~02、电气1201~02教学时间:2022—2022学年第二学期湖南工学院课程基本信息湖南工学院教案用纸实验一数据传送实验一、本次实验主要内容1、Keil软件的使用方法和调试。

2、存储器之间数据传送的方法和循环程序设计。

3、MCS-51系列单片机堆栈的使用。

二、实验目的与要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。

2、掌握单片机的存储器体系结构。

3、熟悉Keil软件的功能和使用方法。

4、掌握单片机应用程序的调试方法。

三、实验重点难点MOV、MOV某指令的用法特点。

四、实验方法和手段讲授、演示、操作、仿真、提问。

五、作业与习题布置写出实验报告。

P1湖南工学院教案用纸一、实验内容或原理1、实现单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送。

2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。

二、设计要求1、编写程序将00H~0FH16个数据分别送到单片机内部RAM30H~3FH单元中。

2、编写程序将片内RAM30H~3FH的内容传送至片内RAM40~4FH单元中。

3、编写程序将片内RAM40H~4FH单元中的内容传送到外部RAM4800H~480FH单元中。

4、编写程序将片外4800H~480FH单元内容送到外部RAM5800H~580FH单元中。

5、编写程序将片外RAM5800H~580FH单元内容传送回片内RAM50H~5FH单元中。

三、实验报告要求1、实验目的和要求。

2、设计要求。

3、实验程序流程框图和程序清单。

4、实验总结。

5、思考题。

四、思考题1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?传送指令中的助记符MOV,MOV某,MOVC各适用于访问哪个存储器空间?P2湖南工学院教案用纸实验后记:P3湖南工学院教案用纸实验二单片机并行I/O口的应用实验一、本次实验主要内容1、利用单片机并行I/O口控制流水灯。

单片机中的定时器和计数器

单片机中的定时器和计数器

单片机中的定时器和计数器单片机作为一种嵌入式系统的核心部件,在各个领域都发挥着重要的作用。

其中,定时器和计数器作为单片机中常用的功能模块,被广泛应用于各种实际场景中。

本文将介绍单片机中的定时器和计数器的原理、使用方法以及在实际应用中的一些典型案例。

一、定时器的原理和使用方法定时器是单片机中常见的一个功能模块,它可以用来产生一定时间间隔的中断信号,以实现对时间的计量和控制。

定时器一般由一个计数器和一组控制寄存器组成。

具体来说,定时器根据计数器的累加值来判断时间是否到达设定的阈值,并在时间到达时产生中断信号。

在单片机中,定时器的使用方法如下:1. 设置定时器的工作模式:包括工作在定时模式还是计数模式,以及选择时钟源等。

2. 设置定时器的阈值:即需要计时的时间间隔。

3. 启动定时器:通过控制寄存器来启动定时器的运行。

4. 等待定时器中断:当定时器计数器的累加值达到设定的阈值时,会产生中断信号,可以通过中断服务函数来进行相应的处理。

二、计数器的原理和使用方法计数器是单片机中另一个常见的功能模块,它主要用于记录一个事件的发生次数。

计数器一般由一个计数寄存器和一组控制寄存器组成。

计数器可以通过外部信号的输入来触发计数,并且可以根据需要进行计数器的清零、暂停和启动操作。

在单片机中,计数器的使用方法如下:1. 设置计数器的工作模式:包括工作在计数上升沿触发模式还是计数下降沿触发模式,以及选择计数方向等。

2. 设置计数器的初始值:即计数器开始计数的初始值。

3. 启动计数器:通过控制寄存器来启动计数器的运行。

4. 根据需要进行清零、暂停和启动操作:可以通过控制寄存器来实现计数器的清零、暂停和启动操作。

三、定时器和计数器的应用案例1. 蜂鸣器定时器控制:通过定时器模块产生一定频率的方波信号,控制蜂鸣器的鸣叫时间和静默时间,实现声音的产生和控制。

2. LED呼吸灯控制:通过定时器模块和计数器模块配合使用,控制LED的亮度实现呼吸灯效果。

51单片机定时器(二)

51单片机定时器(二)

51单⽚机定时器(⼆)书接上回,下⾯是定时器的其他⼯作⽅式。

⼀、⼯作⽅式1:(还是拿t0做说明)定时/ 计数器的⼯作⽅式1⾃⼰经验是⽤的⽐较多的,它的结构图如下:TH0的⼋位和TL0的⼋位构成⼀个16位定时/计数器,可以定时时间最长在⼯作⽅式1下,计数器的计数值范围是:1—65536(216)当为定时⼯作⽅式1时,定时时间的计算公式为:(216—计数初值)╳晶振周期╳12或(216—计数初值)╳机器周期其时间单位与晶振周期或机器周期相同。

如果单⽚机的晶振选为6.000MHz,则最⼩定时时间为:[213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)(216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

⼯作⽅式1的使⽤,和⽅式0完全⼀样,不必赘⾔。

⼆、⼯作⽅式2⼯作⽅式2的结构图如下:从图中可以看出来,计数寄存器变成了⼀个——TL0,⼯作⽅式2下多了⼀个重装载寄存器,也就是原来的TH0。

在⼯作⽅式2下,如果TL0中的数据溢出,那么原先存储在TH0中的数据就会⾃动的装载到TL0中去,这是由单⽚机的硬件实现的,这样我们就不⽤在⼿动给定时器赋初值,⽽且硬件重装载不会耽误时间,所以⼯作⽅式2的计时是最准确的。

但是就是这样⼀来的计数结构只有8位,计数值有限,最⼤只能到255。

所以这种⼯作⽅式很适合于那些重复计数的应⽤场合。

例如我们可以通过这样的计数⽅式产⽣中断,从⽽产⽣⼀个固定频率的脉冲。

也可以当作串⾏数据通信的波特率发送器使⽤。

⼯作⽅式2下的其他使⽤和⼯作⽅式0,1相同。

三、⼯作⽅式3之前的3种⼯作⽅式中,定时器t0和t1的⼯作⽅式完全相同,⽽在⼯作⽅式3中终于有了个性的发挥不在相同了。

下⾯是⼯作⽅式3情况下t0的结构图。

可以看出,t0被分成了2个定时器,每个⼋位,定时/计数器0的TL0拆成的定时器和之前⽅式0,1⼀样,不过TH0拆成的就“因霸”了,它把原先定时器1的溢出标志位给占⽤了,⽽且还不受GATE门控的控制,这样以来,如果定时器0的TH0构成的8位定时器在使⽤,定定时器1就憋屈了,没有溢出位使⽤。

定时计数器实验-单片机

定时计数器实验-单片机

单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。

二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。

它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。

T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。

作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。

计数的最高频率一般为振荡频率的1/24。

定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。

TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。

因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。

TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:GATE:门控位。

GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的
1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求
1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、电路原理图
六、实验总结
通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。

七、思考题
1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。

答:程序见程序清单。

. . . .
四、实验程序流程框图和程序清单。

1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计
满100个脉冲,则取反P1.0口线状态。

开始汇编程序开始 ORG 0000H
START: LJMP MAIN TMO初始化 ORG 0100H
初始TMOD MAIN: MOV IE, #00H
MOV TMOD, #60H计数初值初始计数初值初始化MOV TH1, #9CH
MOV TL1, #9CH
SETB TR1
中断初始中断初始化LOOP: JNB TF1, LOOP
CLR TF1
CPL P1.0
启动定时器 AJMP LOOP 启动计数器 END
语言程序:计数溢出#include <reg52.h>等待中断sbit
Y=P1^0;
Y void main()
清计数溢出标志{
EA=0;
ET1=0;
口线取反P1.0 TMOD=0x60;
TH1=0x9C;
TL1=0x9C;
while(1)
{
TR1=1;
while(!TF1);
TF1=0;
Y=!Y;
}
}
计数器以中断方式工作,对外部连续周期性脉冲信号进行计数,/ 2、定时器每
计满200个脉冲,则取反P1.0口线状态。

汇编程序: ORG 0000H
START: LJMP MAIN
ORG 001BH
LJMP TTC1
ORG 0100H
MAIN: MOV TMOD, #60H
. . . . MOV TH1, #38H
MOV TL1, #38H
SETB EA
SETB ET1
SETB TR1
HERE: LJMP HERE
ORG 0200H
TTC1: CPL P1.0
RETI
END
C语言程序:
#include <reg52.h>
sbit Y=P1^0;
void main()
{
EA=1;
ET1=1;
TMOD=0x60;
TH1=0x38;
TL1=0x38;
开始 TR1=1;
while(1);
}
初始TMOD void TTC1() interrupt 3 {
Y=!Y;
计数初值初始化}
开始口线,在P1.0 3、利用定时器0微秒的连续方上产生周期为200口
线上 P1.0波,利用定时器1,对中断初始化输出取反个,则取反50波形
进行计数,满口线状态。

P1.1 汇编程序:中断返回0启动定时器
ORG 0000H START: LJMP MAIN 001BH ORG TTC1 LJMP ORG 0100H
1启动计数器 MAIN: MOV TMOD, #62H MOV TH1, #0CEH MOV
TL1, #0CEH MOV TH0, #9CH N MOV TL0, #9CH 定时时间到
MOV IE, #88H SETB TR0 Y SETB TR1
LOOP1: JNB TF0, LOOP1 清计数溢出标志 CPL P1.0
. . . .
口线取反P1.0.
CLR TF0 LJMP LOOP1 TTC1: CPL P1.1 RETI END C语言程序: #include <reg52.h> sbit Y0=P1^0; sbit Y1=P1^1;
void main() {
TMOD=0x62;
TH0 =0x9C; TL0 =0x9C;
TH1 =0xCE;
TL1 =0xCE;
EA =1; ET1 =1; ET0 =0; TCON=0x50; while(1) {
while(!TF0);
TF0=0; Y0=!Y0; } }
void TTC1()interrupt 3 {
Y1=!Y1; }
五、实验结果(波形图)。

开始
输出取反
中断返
回 . .
. .
. . . .。

相关文档
最新文档