实验5 定时计数器实验

合集下载

微机实验报告——定时器计数器

微机实验报告——定时器计数器

实验三8253定时器/计数器实验一、实验目的1.学会8253芯片与微机接口的原理和方法。

2.掌握8253定时器/计数器的工作原理和编程方法。

二、实验内容编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。

1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。

2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。

3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。

三、实验区域电路连接图CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元)四、程序框图8253方式控制字五、编程程序code segmentassumecs:codeorg 1000hstart:mov dx,43h /控制字地址/ mov al,00110100boutdx,almov dx,40h /计时器0地址/mov al,0F4houtdx,almov al,01h /计数器0写入初值01F4H/outdx,almov dx,43hmov al,01110110boutdx,almov dx,41h /计时器1地址/mov al,0E8houtdx,almov al,3h /计数器1写入初值03E8H/out dx,al /分两次赋值,先低八位0E8H,后高八位03H/jmp $ /8253自行控制led灯/code endsend start六、实验步骤1. 按连线图连接好,检查无误后打开实验箱电源。

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

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

单片机定时器计数器实验报告单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的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 $;。

定时器的设计实验报告

定时器的设计实验报告

定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。

本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。

2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。

其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。

2.2 设计步骤1. 确定定时器的时间基准。

时间基准可以选择外部脉冲输入或者由稳定的晶振产生。

2. 设计计数器的位数。

根据计时的范围确定计数器的位数,以保证计数范围的覆盖。

3. 计算计数器的计数速度。

根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。

4. 根据计数器的位数和计数速度,选择合适的计数器芯片。

5. 配置计数器芯片的工作模式和输入脉冲的触发方式。

6. 连接电路并验证设计是否符合要求。

2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。

在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。

3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。

由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。

然而,该设计存在一个缺点,即计数器位数的限制。

由于计数器位数的限制,导致定时的最大时间间隔受到了限制。

定时器计数器实验

定时器计数器实验
三、实验任务
本实验所用DAIS系列MCS—51单片机仿真实验系统的设单片机的晶振为11.0592MZ。完成对接在P1、P3端口的发光二极管闪亮控制程序的设计和调试。具体要求:
1.选择定时器T0为工作方式1,定时溢出时间为50ms,使P1口的8个发光二极管循环闪亮。
2.选择定时器T0和T1为工作方式0,T0定时溢出时间为50ms,使P3.0口的发光二极管每隔0.1S交替闪亮。T1定时溢出时间为25ms,使P3.1口的发光二极管每隔0.05S交替闪亮。
3.将TO定时器设定为工作方式2,使P1.0口的1个发光二极管每隔50ms交替闪亮。
四、实验预习要求
1.根据硬件电路原理图,分析LED发光二极管点亮的条件,画出实际接线图。
2.阅读教材中有关定时/计数器的内容,熟悉定时/计数器的基本结构和工作过程;计算50ms定时/计数器时间常数;根据实验任务设计出相应的调试程序。
MOV A.P1 ; 将端口P1中值读入A中
RL A ; A中二进制数循环左移
MOV P1,A ; 控制P1端口小灯状态
AJMP LOOP ;转LOOP再循环等待50ms
END ; 结束
五、实验设备 ’
计算机(已安装MCS—51单片机仿真软件),MCS—51单片机仿真实验系统。
六、思考题
定时器工作于方式l、方式2时,其一次溢出的最大定时时间是多少(设单片机的晶振为11.0592MHz)?
七、实验报告要求
1.整理好实验任务1~3中经MCS—51单片机仿真实验系统正确运行的程序。
MOV TH0,#06H ; 赋250 s初值
MOV R0,#200 ;预置定时控制值(250 s×200=50ms)

定时器计数器实验报告

定时器计数器实验报告

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

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

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

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

实验目的: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开发板连接到电脑,并下载程序到开发板中。

计数定时器应用实验

计数定时器应用实验
(2)实验电路及连线:
+5V
实验机内核
UAD7-UAD0
28
定时/计数器
D7-D0 OUT0 GATE0 CLK0 OUT1 GATE1 CLK1
R-MID
21 继电器
JD R-CLOSE
电源
GND
18
8088

统 单
228H UA0 UA1 CS8253
26 单色灯
8253
74LS240
26八位开关
PA
220H (4)实验记录
PB
222H
PC
224H
控制寄存器
226H
⑴计数值N=100,生产一箱产品需要_____________时间。

⑵ 执行程序后,L7-L0单色灯按____________码制规律变化。 ⑶ 下压暂停键,L7-L0=_____________ BL=________________
N
K7=1? Y 计 N7 N
关闭扬声
(3)实验电路及连线:
本实验7根接线:实验机内核230H与 CS8253连接;CLK0与153.8KHZ连接; GATE0与 +5V连接; OUT0与 SD连接; OUT1接在示波器CH1信号输入端。实验机 内核200H与 CS244连接;
实验机内核
UAD7-UAD0
UAD7-UAD0
28
定时/计数器
D7-D0 OUT0 GATE0 CLK0 OUT1 GATE1 CLK1
+5V
CH1 CH2
8088

示 波 器
8253
230H UA0 UA1

单 元
CS8253
A0 A1

定时计数器实验

定时计数器实验

实验四、定时/计数器实验一、实验目的1、学习51单片机内部定时计数器的使用和编程方法。

2、进一步掌握中断处理程序的编程方法。

二、实验内容1、定时器实验(1)基本部分:用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生反转。

(2)扩展部分:利用P1口控制发光二极管LED按照下面方式工作:a)从左到右奇数LED灯依次点亮;b)从右到左偶数LED灯依次点亮;c)按照以上步骤重复运行,要求灯亮的时间为1s,由定时器T1实现。

2、计数器实验8501内部定时计数T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。

将其数值按二进制数在P1口驱动LED灯上显示出来。

三、实验连线1、基础部分:JP8(P1)和JP1(LED)用8PIN排线连接起来。

计数器实验还需用杜邦线连接P3.5(JP9)与独立键(JP5).2、扩展部分:实验1的扩展部分选用P2口,即JP11(P2)和JP1(LED)用8PIN排线连接起来。

四、实验步骤与说明1、定时器实验(1)基本部分a)编写程序:由于系统的晶振是12MHZ,即机器周期为1微秒,选择定时器工作在方式1,设定定时时间为50ms,则要循环20次,计算其初值为(65536—50000/1)。

接着编写程序如下:#include<reg51.h>unsigned char i;void main(){P1=0;TMOD=0x01;EA=1; ET0=1; TR0=1;i=20;TH0=(65536-50000)/256; TL0=(65536-50000)%256;while(1);}void timer() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;i--;if(i==0){ P1=~P1;i=20;}}b)将程序烧入单片机内,观察现象。

(2)扩展部分按要求写出如下程序并烧入单片机,程序如下:#include<reg51.h>#include<intrins.h>unsigned char i=0;unsigned char sum;void main(){P2=0xfe;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;sum++;if(sum==20){sum=0;i++;if(i<4){P2=_crol_(P2,2);}if(i==4){P2=0x7f;}if((i>4) && (i<8)){P2=_cror_(P2,2);}if(i==8){P2=0xfe;i=0;}}}编译生成hex文件烧入单片机观察现象。

定时器计数器应用实验报告

定时器计数器应用实验报告

定时器计数器应用实验报告实验结果分析及讨论论1.实验中出现过的问题或错误、原因分析程序输入错误导致无法完全编译2.保证实验成功的关键问题保证代码输入正确以及操作正确。

弄清楚keil软件与proteus软件互相调试的原理,确保proteus软件的正常运行。

对实验自我评价价更加熟悉了keil软件和proteus软件操作,了解了定时器/计数器计数功能的使用方法。

教教师师评评阅阅1.学生实验动手能力(20分):□优秀(20~18)□较好(17~15)□合格(14~12)□不合格(11~0)2.实验报告内容(共60分)(1)实验目的、材料、原理、内容及步骤记录(20分):□正确、清晰、重点突出(20~18)□较正确、较清晰(17~15)□有少数错误(14~12)□有较多错误(11~0)(2)实验数据(现象)及结果记录、处理(20分):□清晰、正确(20~18)□较清晰、较正确(17~15)□合格(14~12)□不合格(11~0)(3)实验结果分析及讨论(20分):□结果详实、结论清晰、讨论合理(20~18)□结果正确、讨论适当(17~15)□合格(14~12)□不合格(11~0)3.学生遵循实验室规定及实验要求程度(20分):□好(20~18)□较好(17~15)□合格(14~12)□不合格(11~0)4.其它意见:教师签名:年月日课程名称单片机原理及应用实验成成绩实验名称定时器/计数器应用实验专专业电子信息科学与技术年级/班级学学号实验地点实验日期姓姓名实验类型□演示性□验证性☑综合性□设计性指导教师实实验验目目的的1.掌握定时器/计数器计数功能的使用方法。

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

3.掌握keil软件和proteus软件的使用方法。

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

实验仪器及耗材材1.THDPJ-3型单片机开发综合实验装置;2.PC;3.KeiluVision4仿真软件。

4.proteus8.0软件实实验验原原理理1.实验原理:要产生周期为2ms的方波,可以利用定时器在1ms时产生溢出,再通过软件方法使P2.0引脚的输出状态取反。

PLC定时计数器实验

PLC定时计数器实验

实验题目:定时计数器实验一、实验目的:1、学习定时器编程方法。

2、学习计数器编程方法。

二、实验仪器设备计算机一台、单片机在线系统一套(AY—MPU89S51E)三、实验电路:画出与实验内容有关的实验电路。

四、实验内容:1、T0做定时器,在P1.0输出一个周期为2秒的方波信号;2、T1做计数器,记录P1.0引脚上的脉冲个数;3、在数码管上显示脉冲个数;五、实验步骤:1、画出程序流程图。

3、程序输入到编程软件Keilc51中。

3、编译下载程序到系统实验板上的单片机中。

4、分析调试记录的内容和结果,找出程序中可能出错的地方,然后修改程序,继续调试、记录、分析,直到调试成功。

实验电路:程序流程图:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52……还有5个接于P2.2~P2.6程序代码:GEWEI EQU 21HSHIWEI EQU 22HBAIWEI EQU 23HSCANLED BIT 01HSCANLED1 BIT 02HORG 0000HAJMP MAINORG 000BHAJMP TIMERORG 0100HMAIN:MOV P1,#0FFHMOV SP,#5FHMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)MOV TH1,#00HMOV TL1,#00HMOV 30H,#00HMOV TMOD,#01100001BYN开始初始化T0做定时器,在P1.0输出一个周期为2秒的方波信号T1做计数器,记录P1.0引脚上的脉冲个数脉冲个数转换为BCD 码在数码管上显示显示完毕?结束SETB EASETB ET0MOV TCON,#01010000B LOOP: MOV A,TL1MOV B,#100DIV ABMOV BAIWEI,AMOV A,BCPL SCANLED1JB SCANLED1,S0MOV B,#10DIV ABMOV SHIWEI,AMOV GEWEI,BCPL SCANLEDJB SCANLED,S1AJMP S2S0:MOV P2,#01111111BMOV A,BAIWEIAJMP FINDS1:MOV P2,#10111111BMOV A,SHIWEIAJMP FINDS2:MOV P2,#11011111BMOV A,GEWEIAJMP FINDFIND: MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ALJMP LOOPTIMER:PUSH AccPUSH PSWINC 30HMOV A,30HCJNE A,#20,L1CPL P1.0MOV 30H,#00HL1:MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000)POP PSWPOP AccRETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90HEND。

定时器计数器实验

定时器计数器实验

一、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口相连。

实验3、定时器计数器实验

实验3、定时器计数器实验

实验三、定时器/计数器实验一、实验目的1、了解MCS-51单片机定时/计数器的基本结构、工作原理和工作方式。

2、掌握定时/计数器工作在定时器和计数器两种方式下的编程方法。

3、掌握数码管显示电路的驱动原理及编程方法。

二、实验内容1、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.7接到示波器显示该方波波形;用T1作计数器对从P3.6输出的方波进行计数,计数结果通过P1口输出到发光二极管显示。

(计算机仿真)2、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.6输出的方波接到P3.5口通过T1作计数器对该方波进行计数,计数值由LED显示,用存储示波器显示P3.7输出的方波。

(实验台验证)3、设计一个60秒计时器,秒计时结果用两位LED数码管显示。

(计算机仿真)4、选做:设置按键控制计时器的启、停及清零功能。

三、实验原理电路原理图如下,所需元件为:AT89C52、LED-YELLOW、7SEG-COM-CAT-GRN 当晶振为22.1184M时,一个机器周期为0.54251微秒,要实现500毫秒的定时,需要921659个机器周期,对于51单片机内部定时器来说,最大只能定时65536个机器周期,定时35.535毫秒,不能满足要求,为此必须借助软件循环进行扩展。

实现的方法是:用定时器中断定时10毫秒,再用软件扩展50倍即可得到500毫秒的定时。

当到达500毫秒时,对P3.7输出取反,可得到周期为1秒的方波。

选择模式1,每个10ms中断一次,设初值为X,根据下面公式,可求得X 的值。

(216-计数初值)*机器周期=定时时间36161010101184.2212)2(-⨯=⨯⨯-X 有关定时计数器的特殊功能寄存器,请参考课本。

选择模式1,每个10ms 中断一次,设初值为X ,根据下面公式,可求得X 的值。

实验五定时计数器

实验五定时计数器

实验五定时/计数器应用实验一、实验目的1、通过实验掌握定时/计数器工作原理;2、通过实验掌握定时/计数器中断的特殊功能寄存器设置;二、实验内容1、根据计数器应用电路图图1-7编写程序,将P3.0口置为低电平,矩阵按键中的K0和K4变为定时计数器T0和T1的输入端。

由P1口控制的八个LED,初始状态八个LED的状态为LED0→LED7逐个移位循环点亮(每一时刻只有一个点亮,循环方向不变);应用T0的计数功能,实现按下3次K0实现循环方向改变一次, 无论哪个LEDx正在被点亮,都从该位LEDx开始反向循环点亮。

2、在第1题的基础上增加K4和T1的功能,应用T1的计数功能实现按下4次K4实现循环方向改变一次,无论哪个LEDx正在被点亮,都从该位LEDx开始反向循环点亮。

3、根据定时计数器控制流水灯电路图图1-8编写程序,将动态显示模块的KH左列由上到下的第5、6两个插针用短路套短接(将P3.4和P3.5短接),设置T0为定时器在P3.4引脚产生一个周期为100毫秒的方波,设置T1为计数器,每十个下降沿产生一次中断。

由P1口控制的八个LED,初始状态八个LED的状态全灭,每产生一次T1计数中断,点亮一个ledx,方向为LED0→LED7(每一时刻只有一个点亮,循环方向不变),即一秒钟移动一次。

4、根据定时计数器控制动态显示电路图图1-9编写一个P0口控制段选信号和P2口的高四位控制位选信号的四位数码管动态显示程序,不使用延时程序,必须使用定时计数器的中断,显示内容“1234”。

5、自己编写程序,设计数码管动态显示和定时计数器的创意实验,可以增加连接线。

注意:调整适当的延时时间,不使用定时计数器中断不算完成。

图1-7 计数器应用电路图图1-8 定时计数器控制流水灯电路图图1-9 定时计数器控制动态显示电路图评分表第一个#include <REGX51.H> #define uint unsigned int#define uchar unsigned char sbit gnd=P3^0;uchar temp;uchar i,j;bit k=0;//////////////////////////////void delay_ms(uint t){uchar i;while(t--){for(i=0;i<110;i++){;;}}}///////////////////////////////void init(){TMOD=0x05;TH0=(65536-1)/256;TL0=(65536-1)%256;ET0=1;TR0=1;EA=1;gnd=0;}///////////////////////////////void INT0_1(void) interrupt 1 {if(T0==0){delay_ms(10);if(T0==0){j++;if(j==3){k=~k;j=0;}TH0=(65536-1)/256;TL0=(65536-1)%256;}}else{TH0=(65536-1)/256;TL0=(65536-1)%256;}}///////////////////////////////void main(){init();while(1){P1=0xff;if(k==0){temp=0x80;}if(k==1){temp=0x01;}for(i=0;i<8;i++){P1=~temp;if(k==0){temp=temp>>1;}if(k==1){temp=temp<<1;}delay_ms(500);}}}第二个#include <REGX51.H> #define uint unsigned int#define uchar unsigned char sbit gnd=P3^0;uchar temp;uchar i,j,l;bit k=0;//////////////////////////////void delay_ms(uint t){uchar i;while(t--){for(i=0;i<110;i++){;;}}}///////////////////////////////void init(){TMOD=0x55;TH0=(65536-1)/256;TL0=(65536-1)%256;TH1=(65536-1)/256;TL1=(65536-1)%256;ET1=1;TR1=1;ET0=1;TR0=1;EA=1;gnd=0;}///////////////////////////////void timer_0(void) interrupt 1 {if(T0==0){delay_ms(10);if(T0==0){j++;if(j==3){k=~k;j=0;}TH0=(65536-1)/256;TL0=(65536-1)%256;}}else{TH0=(65536-1)/256;TL0=(65536-1)%256;}}///////////////////////////////void timer_1(void) interrupt 3 {if(T1==0){delay_ms(10);if(T1==0){l++;if(l==4){k=~k;l=0;}TH1=(65536-1)/256;TL1=(65536-1)%256;}}else{TH1=(65536-1)/256;TL1=(65536-1)%256;}///////////////////////////////void main(){init();while(1){P1=0xff;if(k==0){temp=0x80;}if(k==1){temp=0x01;}for(i=0;i<8;i++){P1=~temp;if(k==0){temp=temp>>1;}if(k==1){temp=temp<<1;}delay_ms(500);}}}第三个#include <REGX51.H> #define uint unsigned int#define uchar unsigned char uchar temp,count;uchar i;///////////////////////////////void init(){TMOD=0x51;TH0=(65536-10000)/256;TL0=(65536-10000)%256; TH1=(65536-10)/256;TL1=(65536-10)%256;ET0=1;TR0=1;ET1=1;TR1=1;EA=1;///////////////////////////////void timer_0(void) interrupt 1{count++;TH0=(65536-10000)/256;TL0=(65536-10000)%256;if(count==5){T0=~T0;count=0;}}///////////////////////////////void timer_1(void) interrupt 3{uchar i;i++;TH1=(65536-10)/256;TL1=(65536-10)%256;P1=~temp;temp=temp<<1;if(i==8){temp=0x01;i=0;}}///////////////////////////////void main(){init();P1=0xff;temp=0x01;while(1);}第四个#include <REGX51.H>#define uint unsigned int#define uchar unsigned charuchar code duan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar code wei[]={0xef,0xdf,0xbf,0x7f};///////////////////////////////void init(){TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256;ET0=1;TR0=1;EA=1;}///////////////////////////////void timer_0(void) interrupt 1{uchar count;TH0=(65536-5000)/256;TL0=(65536-5000)%256;P0=duan[count+1];P2=wei[count];count++;if(count==4){count=0;}}///////////////////////////////void main(){init();while(1);}第五个#include <REGX51.H>#define uint unsigned int#define uchar unsigned charuchar code duan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar code wei[]={0xef,0xdf,0xbf,0x7f};uchar num[4];uchar sum;char sum1=60;uchar sec,min;uchar count,i;bit key0=0;bit key4=0;sbit gnd=P3^0;void Bcd(uint number);void key();///////////////////////////////void init(){TMOD=0x11;TH0=(65536-5000)/256;TL0=(65536-5000)%256; ET0=1;TR0=1;EA=1;gnd=0;}///////////////////////////////void key(){if(T0==0){while(T0==0);key0=~key0;}if(T1==0){while(T1==0);key4=~key4;}}///////////////////////////////void timer_0(void) interrupt 1 {TH0=(65536-5000)/256; TL0=(65536-5000)%256; key();if(key0==0){if(key4==0){count++;if(count==200){sec++;count=0;}if(sec==60)min++;sec=0;}if(min==60){min=0;}sum=min*100+sec;}else{;;}Bcd(sum);if(i==1){P0=(duan[num[i]]&0x7f);} else{P0=duan[num[i]];}P2=wei[i];i++;if(i==4){i=0;}}else{if(key4==0){count++;if(count==200){sum1--;count=0;if(sum1<0){sum1=60;}}}Bcd(sum1);if(i==1){P0=(duan[num[i]]&0x7f);} else{P0=duan[num[i]];}P2=wei[i];i++;if(i==4){i=0;}}///////////////////////////////void Bcd(uint number){num[0]=number/1000;num[1]=(number%1000)/100;num[2]=((number%1000)%100)/10; num[3]=((number%1000)%100)%10; }///////////////////////////////void main(){init();while(1);}。

定时器计数器应用实验

定时器计数器应用实验

单片机原理及应用实验报告实验五定时器/计数器应用实验一、实验目的1、学习8051内部定时器/计数器的使用方法和编程方法2、掌握定时器0作为中断源时的中断处理程序的编程方法二、实验原理8051单片机内部有两个16为可编程定时器/计数器:T0和T1。

16为是指它们都是有16个触发器构成,故最大计数模值为216-1。

可编程是指它们的工作方式由指令来设定,或者当计数器用,或者当定时器用,并且计数(定时)的范围也可以由指令来设置。

这种控制功能是通过定时器方式控制寄存器TMOD来完成的。

工作在定时方式时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟;工作在计数方式时,时钟脉冲(计数脉冲)由T0和T1(即P3.4和P3.5)输入。

定时器在计到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。

定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。

程序一:定时器/计数器0按定时模式和方式2工作,产生周期为1秒的方波,方波由P1.0口输出。

此程序用中断方式。

弄清IE寄存器的作用及矢量地址000BH 的含义。

1、内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100US中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷6MHZ=2US(256-定时常数)×2US=100US定时常数=206. 然后对100US中断次数计数10000次,就是1秒钟。

2、在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

3、实验电路及连线4、实验框图5、汇编语言源程序: TICK EQU 10000 ; 10000 X 100US = 1ST100US EQU 256-50 ; 100US 时间常数(6M)C100US EQU 30H ; 100US 记数单元LEDBUF EQU 0LED EQU P1.0LJMP STARTORG 000BH ;中断程序入口T0INT:PUSH PSWMOV A, C100US+1JNZ GOONDEC C100USGOON:DEC C100US+1MOV A, C100USORL A, C100US+1Y主程序框图 定时中断子程序框图开始 置T0中断工作方式 设置定时常数 设置初始状态位 设置秒计数值 定时中断入口保护现场 秒计数值减1重新设置秒计数值状态位取反 恢复现场中断返回 是否到1秒 是 否 中断允许 输出状态位 等待中断 连线 连接孔1 连接孔2 1 P1.0 L0JNZ EXIT ; C100US 记数器不为0, 返回MOV C100US, #HIGH(TICK)MOV C100US+1, #LOW(TICK)CPL LEDBUF ; C100US 记数器为0, 重置记数器; 取反LEDEXIT:POP PSWRETISTART: ; 主程序入口MOV TMOD, #02H ; 方式2, 定时器0MOV TH0, #T100US ; 计算T/C 的计数初值,并装载到TH 和TL MOV TL0, #T100USMOV IE, #10000010B ; EA=1, IT0 = 1SETB TR0 ; 开始定时CLR LEDBUFCLR LEDMOV C100US, #HIGH(TICK)MOV C100US+1, #LOW(TICK)LOOP:MOV C, LEDBUFMOV LED, CLJMP LOOPEND程序二:定时器/计数器0按计数器模式和方式2工作,对P3.4(T0)引脚进行计数。

单片机定时计数实训报告

单片机定时计数实训报告

一、实验目的1. 理解单片机定时计数器的工作原理和编程方法。

2. 掌握定时计数器在中断程序中的应用。

3. 培养动手实践能力和编程能力。

二、实验器材1. 单片机实验板2. 信号发生器3. 电脑4. 示波器5. 蜂鸣器6. LED灯三、实验原理单片机的定时计数器是单片机的重要组成部分,主要用于定时、计数和产生脉冲信号等功能。

本实验主要利用定时计数器T0进行定时,并通过中断程序实现计数功能。

四、实验内容1. 定时器T0初始化:设置定时器T0为模式1,并设置初值,使定时器每隔50ms 产生一次中断。

2. 定时器中断程序:在中断服务程序中,读取外部输入信号的脉冲数,并更新显示。

3. 计数器功能实现:通过外部中断,实现对外部信号的计数功能。

4. 蜂鸣器控制:当计数达到一定值时,通过单片机控制蜂鸣器发出声音。

5. LED灯控制:根据计数器的值,通过单片机控制LED灯的亮灭。

五、实验步骤1. 连接实验板,设置好单片机、信号发生器、蜂鸣器、LED灯等硬件设备。

2. 编写程序,实现定时器T0的初始化、定时器中断程序、计数器功能实现、蜂鸣器控制和LED灯控制等功能。

3. 烧录程序到单片机,观察实验结果。

4. 调整程序,使实验结果符合预期。

六、实验结果与分析1. 定时器T0初始化成功,每隔50ms产生一次中断。

2. 定时器中断程序正确读取外部输入信号的脉冲数,并更新显示。

3. 计数器功能实现,成功对外部信号进行计数。

4. 蜂鸣器控制,当计数达到一定值时,蜂鸣器发出声音。

5. LED灯控制,根据计数器的值,LED灯亮灭变化。

七、实验总结1. 通过本次实验,掌握了单片机定时计数器的工作原理和编程方法。

2. 熟悉了定时计数器在中断程序中的应用。

3. 培养了动手实践能力和编程能力。

4. 发现了实验过程中存在的问题,并进行了调整。

5. 对单片机定时计数器有了更深入的了解,为以后的学习和应用打下了基础。

八、实验拓展1. 改进实验程序,实现定时计数器的定时精度调整。

实验五TIM定时器实验

实验五TIM定时器实验

实验五 TIM定时器实验一、实验目的了解TIM定时器的原理与应用二、实验内容1.对TIM3定时器进行控制,使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁。

(特定频率产生)2.对周期进行设置,控制通用定时器3的2通道,实现1KHz的不同占空比波形,用于控制LED1亮度的明暗渐变。

(PWM脉冲宽度调制)三、实验仪器、设备计算机、开发板、keil软件四、软件程序设计1、频率产生控制LED闪烁实验根据任务要求,程序内容主要包括:①配置TIM3的通道2为输出比较模式(预分频系数设置为63),TIM3_CCR2=45000。

②在相应的TIM3定时器中断服务处理程序中根据定时器的值翻转输出电平。

以输出方波。

整个工程包含4类源文件:FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。

stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。

stm32f10x_USART.c ST公司的标准库,包含了关于对USART设置的函数。

stm32f10x_flash.c ST公司的标准库,包含了关于对flash设置的函数。

Misc.c ST公司的标准库,包含了关于中断设置的函数。

CM3—是关于CORETEX-M3平台的系统函数及定义App—main.c 例程的主函数。

App—tim.c 定时器3的设置。

App--stm32f10x_it.c 中断服务程序主函数如下://__________________________________________________________int main(void){/* System Clocks Configuration --72M*/RCC_Configuration();/* NVIC configuration *//*嵌套向量中断控制器说明了定时器3抢占优先级级别0(最多1位),和子优先级级别0(最多7位) */NVIC_Configuration();/*定时器3的初始化*/time_ini();while(1);}void time_ini(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* GPIOA Configuration: Channel 1 Output */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB5复用为TIM3的通道2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 , ENABLE);//TIM3局部复用功能开启在TIM3的局部复用开启时,PB5会被复用为TIM3_CH2/* Time Base configuration *//*-------------------------------------------------------------------TIM3CLK=72MHz 预分频系数Prescaler=63 经过分频定时器时钟为1.125MHz捕获/比较寄存器2 TIM3_CCR2= CCR2_Val2通道产生的更新频率是=1.125MHz/CCR2_Val=25Hz-------------------------------------------------------------------*/TIM3_TimeBaseStructure.TIM_Prescaler = 63; //预分频器TIM3_PSC=63TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器向上计数模式 TIM3_CR1[4]=0TIM3_TimeBaseStructure.TIM_Period =0xffff; //自动重装载寄存器TIM3_APRTIM3_TimeBaseStructure.TIM_ClockDivision = 0x0; //时钟分频因子 TIM3_CR1[9:8]=00TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseStructure); //写TIM3各寄存器参数TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle ; //TIM3_CCMR1[14:12]=011 翻转当TIM3_CCR2=TIM3_CNT时,翻转OC2REF的电平 TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输入/捕获2输出允许 OC2信号输出到对应的输出引脚PB5TIM3_OCInitStructure.TIM_Pulse =CCR2_Val; //若CC1通道配置为输出:CCR2是装入当前捕获/比较2 TIM3_CCR2寄存器的值(预装载值)。

实验五 定时计数器实验

实验五 定时计数器实验

实验五定时计数器实验
一、实验目的
1.掌握定时计数器的工作方式
2.掌握定时计数器的初值计算
3.掌握定时计数器做为中断时的使用方法
二、实验内容
1.晶振为12MHz时,利用定时计数器1的工作方式1实现P0
口8个LED灯的流水灯,流水灯形式自定义,每次灯亮持续
时间为1s。

2.晶振为6MHz时,利用定时计数器0的工作方式0实现P0
口8个LED灯的流水灯,流水灯形式自定义,每次灯亮持续
时间为1s。

3.晶振为6MHz时,利用定时计数器0的工作方式2实现P0
口8个LED灯的流水灯,流水灯形式自定义,每次灯亮持续
时间为1s。

4.晶振为6MHz时,利用定时计数器0的工作方式3实现P0.1
输出1kHz,P0.2输出500Hz的方波。

三、实验报告要求
导出各个实验的电路图,并附上各自对应程序。

定时计数器实验-单片机

定时计数器实验-单片机

单片机实验报告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,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。

PLC实验 定时器计数器实验

PLC实验 定时器计数器实验

实验二定时器、计数器实验一、目的要求1、了解和熟悉编程软件的使用方法。

2、了解写入和编辑用户程序的方法。

3、掌握定时器、计数器的使用。

二、实验设备台达可编程序控制器一台;PLC实验箱一台;装有WPL编程软件和开发软件的计算机一台;编程连接电缆一根。

三、实验内容1、实验原理定时器相当于继电器电路中的时间继电器,可在程序中作延时控制。

可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms、10ms、100ms等不同规格。

(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个设定值寄存器(字),一个当前值寄存器(字)。

设定值寄存器(字)存储编程时赋值的计时时间设定值。

当前值寄存器记录计时当前值。

这些寄存器为16位二进制存储器。

其最大值乘以定时器的计时单位值即是定时器的最大计时范围值。

定时器满足计时条件开始计时,当前值寄存器则开始计数,当当前值与设定值相等时定时器动作,常开触点接通,常闭触点断开,并通过程序作用于控制对象,达到时间控制的目的。

TMR为十六位定时器,当该指令执行时,其所指定的定时器线圈受电,定时器开始计时,当到达所指定的定时值(计时值≥设定值),其接点动作如下:CNT为十六位计数器,当该指令由Off→On执行,表示所指定的计数器线圈由失电→受电,则该计数器计数值加1,当计数到达所指定的定数值(计数值 = 设定值),其接点动作如下:当计数到达之后,若再有计数脉冲输入,其接点及计数值均保持不变,若要重新计数或作清除的动作,请利用RST指令。

编程使PLC输出Y0输出3秒的脉冲,PLC输入1对脉冲计数,计数值为10时,PLC输出Y1输出为1,第11个脉冲清零。

OUTPUT00OUTPUT012、示范梯形图3、接线方法:INPUT 00接 PO1INPUT 01接 PO2OUTPUT 01 接输出显示LED灯FL1四、实验步骤1、按实验要求对PLC编程,或运行PLC程序DVP2;2、下载实验程序,成功完成后,使PLC处于运行状态,RUN指示灯亮;3、按下PO1十次观察输出变化,LED灯亮;此时按下PO2,LED灯灭。

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

实验5 定时/计数器实验
(1)实验1现象:第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,……一直循环下去。

(2)实验程序注释
ORG 4000H 设置程序起始地址
LJMP START
ORG 401BH 设置中断端口
LJMP IT11 跳转到中断程序
ORG 4100H 设置主程序起始地址
START:MOV A,#05H 将5传送到累加器A
MOV R1,#03H 将3传送到R1
MOV R0,#0AH 将10传送到R0
ANL TMOD,#0FH
ORL TMOD,#10H 设置TMOD的初值
MOV TL1,#0AFH
MOV TH1,#3CH 设置计数初值
MOV IE,#88H 设置IE的值
SETB TR1 设置TR1的初值为1,启动定时器1的运行LOOP1:CJNE R0,#00H,DISP R0不等于0时转移到DISP
MOV R0,#0AH 将10传送到R0,实现定时
INC R1 R1加1,以在后面输出不同的显示码转换LED的闪亮模式
CJNE R1,#0BH,LOOP2 R1不等于11时转移到LOOP2(设置了10种显示模式)
MOV R1,#03H 将3传送到R1,重新设定R1的初值
LOOP2:MOV A,R1 将R1的值传送到累加器A
MOVC A,@A+PC 将(A+PC)单元的值传送到A,即将显示码传送到A
LJMP DISP 转移到DISP
DB 0FAH,0F5H,0AFH,5FH,0AAH,55H,00H,0FFH 显示码
DISP:MOV P1,A将A的值传送到P1口,即将显示码传送到P1口JMP LOOP1 转移到LOOP1,继续循环
IT11:CLR TR1 以下是中断程序,本行命令是将TR1设置为0,即关闭定时器R1 DEC R0 R0减1,实现定时
MOV TL1,#0AFH
MOV TH1,#3CH 设置计数器的初始值,以实现定时时间
SETB TR1 将TR1设置为1,即启动定时器R1
RETI 跳转回主程序
END
1、实验2
ORG 4000H
LJMP START
ORG 401BH
LJMP IT11
PORT EQU 0CFA8H
ORG 4100H
START:MOV TMOD,#60H
MOV TL1,#0FAH
MOV TH1,#0FAH
ORL IE,#88H
SETB TR1
MOV P1,#0FFH
LP:MOV P1,#10H
ACALL DEL1
CPL A
MOV DPTR,#PORT
MOVX @DPTR,A
AJMP LP
IT11:MOV A,#0FFH
MOV DPTR,#PORT
MOVX @DPTR,A
MOV R1,#50H
ACALL DEL1
MOV A,#00H
MOV DPTR,#PORT
MOVX @DPTR,A
RETI
DEL1:MOV R2,#200
DEL2:MOV R3,#126
DEL3:DJNZ R3,DEL3
DJNZ R2,DEL2
DJNZ R1,DEL1
MOV R1,#10
RET
现象:L5、L6不亮,持续5秒钟。

5秒后L5、L6又继续闪亮。

2、实验3程序
ORG 4000H
LJMP START
ORG 401BH
LJMP IT11
ORG 4100H
START:ANL TMOD,#0FH
ORL TMOD,#10H
MOV TL1,0AFH
MOV TH1,#3CH
MOV IE,#88H
SETB TR1
MOV A,#00H
MOV P1,A
MOV R1,#14H LOOP:CJNE R1,#00H,LOOP CPL A
MOV P1,A
MOV R1,#14H
LJMP LOOP
IT11:CLR TR1
DEC R1
MOV TL1,#0AFH
MOV TH1,#03CH
SETB TR1
RETI
END。

相关文档
最新文档