广州大学单片机原理与接口技术实验计数器定时器实验
单片机定时器实验

实验三单片机内部定时器应用实验目的1、理解单片机内部定时器的工作原理及使用方法2、了解单片机定时中断程序的编写和调试方法3、掌握定时器的基本使用方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、单片机定时器的工原理MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。
它们即可用作定时器方式,又可用作计数器方式。
其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。
工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。
故系统晶振频率直接影响定时时间。
如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)×12=1us 加1。
工作于计数器方式时,对P3.4 或P3.5 管脚的负跳变(1→0)计数。
它在每个机器周期的S5P2 时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,计数器加1。
因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24。
特殊功能寄存器TMOD 用于定时器/计数器的方式控制。
高4 位用于设置T1,低4 位用于设置T0。
如图4-7所示。
图4-7 定时器模式控制字格式TCON 寄存器用于定时器的计数控制和中断标志。
如图4-8所示。
图4-8 定时控制寄存器数据格式编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。
(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。
2、用定时器编写一个秒计时器假设系统使用的晶振频率为12MH Z,即每个机器周期为1us。
如使用方式1,则定时时间最长是216×1us=65536us=65.536ms,小于1s。
单片机实验 实验三 定时器实验

T0控制
6
四、实验步骤
P1.0~P1.7分别接发光二极管L1~L8。
注:
1、编程前先在E盘目录下建一个文件夹,并取一个英名名 字,即名字中不能有汉字和数字。编完程序将其存于该目录 下。 2、做完实验将实验箱右上角的CPU板卸下,再关实验箱。 3、因用户实验程序区位于4000H-----5FFFH,在编写实验 程序时要注意,程序的起始地址应为4000H。
3
中断允许控制寄存器IE
D7 EA
D6
D5
D4 ES
D3 ET1
D2 EX1
D1 ET0
D0 EX0
0 禁止,1允许
4
定时/计数器控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 中断请求标志 启动定时/计数器
0 停止 1 启动
*
7
五、程序
ORG 0000H LJMP MAIN ORG 401BH LJMP INT ORG 4100H MOV SP, #70H MOV TMOD, #10H MOV IE, #88H ;定时器/计数器1中断程序入口地址
MAIN:
MOV MOV MOV MOV SETB
R2 , #10 A, #0FEH TH1, #3CH TL1, #0B0H TR1
;设置堆栈指针 ;设置计数器方式1 ;CPU中断开放标志位和定时器 ;1溢出中断允许位均置位 ;软件延时时间1s=10×0.1s ;将0FEH送入累加器A ;装入时间常数 ; 启动定时器T1
*
8
LOOP:
MOV P1, A LJMP LOOP CLR TR1 DJNZ R2, CZ MOV R2 , #10 RL A MOV TL1,#0B0H MOV TH1,#3CH SETB TR1 RETI END
广州大学单片机原理与接口技术实验串行通讯实验综述

广州大学学生实验报告mov LEDBuf+4, a实验现象:自发自收,本机RXD连本机TXD按下here键显示键码12按下RST键显示键码FF2串口助手和伟福互连连接情况如下:显示出串口助手上的信息六、实验结果及分析1、画出硬件连线示意图。
单机自发自收:key/LED_CS-------CS0本机RXD----------本机TXD 两台机互连:甲方乙方甲方key/LED_CS-------甲方CS0乙方key/LED_CS-------乙方CS02、说明程序的执行是否已实现程序设计的要求。
改进后的程序已实现了利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示的功能。
3、说明实验程序采用的是哪种串行通讯方式。
根据语句MOV SCON,#050H,可知使用的串行通讯方式是方式1,该方式波特率可变,由定时器一的预设值和SMOD位决定波特率,是常用的通信方式。
4、据实验系统的振荡器,计算实验程序的波特率。
实验系统的晶振为6Mhz,根据语句MOV TH1, #0F3HANL PCON,#07FHorl PCON,#80h波特率=(2^SMOD/32)*f/12/(2^8-X)其中f为晶振频率,X为定时器1预设值,6MHZ/16/12/13 约等于2403.8,想设定的波特率应该是2400,这是由于使用6MHZ的晶振造成的,如果使用11.0592MHZ的晶振,则设定常用波特率时不会出现误差,另外单片机波特率误差对2片同晶振同型号单片机之间通信不会有影响,例如本实验双机都是以2403.8的实际波特率在通信。
而波特率误差对计算机和单片机之间通信有影响,应为计算机波特率较准,软件设定为2400就为2400,而此时单片机的实际波特率依然是2403.8,所以会造成累积误差。
单片机中的定时器与计数器的原理与应用

单片机中的定时器与计数器的原理与应用在单片机中,定时器和计数器是两种常见的功能模块,它们在各种应用中都扮演着非常重要的角色。
本文将对单片机中定时器与计数器的原理和应用进行详细的介绍。
一、定时器的原理与应用定时器是单片机中的一种计时功能模块,它可以在一定的时间间隔内产生一个中断信号,用于控制各种时间相关的任务。
定时器一般由一个计数器和一个控制逻辑组成,计数器用于计数,控制逻辑用于设置计数器的初值、控制计数器的计数方式以及处理定时器中断等功能。
定时器在单片机中有各种不同的应用,例如用于控制LED的闪烁频率、控制蜂鸣器的鸣叫时间、测量外部信号的脉冲宽度等。
通过合理地设置定时器的初值和工作模式,可以实现各种复杂的定时功能。
二、计数器的原理与应用计数器是单片机中另一种常见的功能模块,它可以实现对外部信号的计数和测频等功能。
计数器一般由一个计数寄存器和一个控制逻辑组成,计数寄存器用于记录计数值,控制逻辑用于设置计数器的计数方式、清零计数器以及处理计数器溢出等功能。
计数器在单片机中也有广泛的应用,例如用于计算外部脉冲的频率、测量两个信号之间的时间间隔、实现车辆流量统计等。
通过合理地设置计数器的工作模式和计数方式,可以实现各种计数功能。
三、定时器与计数器的联合应用定时器和计数器在单片机中经常会联合应用,以实现更加复杂和精密的定时计数功能。
例如,可以使用定时器来生成一个固定时间间隔的中断信号,然后在中断服务程序中通过计数器来计数外部脉冲的个数,从而实现对外部脉冲的精确计数。
通过合理地运用定时器和计数器,可以实现各种高级的时间计数功能,使单片机在实际应用中发挥更大的作用。
综上所述,定时器和计数器是单片机中非常重要的功能模块,它们在各种应用中都有着广泛的应用。
合理地掌握定时器和计数器的原理和应用,可以为单片机的开发和应用带来极大的便利。
希望通过本文的介绍,读者能够更加深入地了解单片机中定时器与计数器的原理与应用。
广州大学单片机实验七(电子时钟)

广州大学学生实验报告开课实验室:电子楼503 2016年11月16,23日学院机械与电气工程学院年级、专业、班计机151姓名卢毅逊学号1507300004实验课程名称单片机原理与接口技术成绩实验项目名称试验七电子时钟实验指导老师彭凌西教师评语:一、实验目的掌握从题目构思到选型、硬件设计、硬件调试、软件设计和软件调试的单片机设计方法。
系统要求:1、能显示时、分、秒、日期,具备时间和日期调整功能;2、能设定两个以上的闹钟时间,闹钟时间到可声、光提示;3、自定义其它扩展功能。
二、实验内容以A VR单片机为核心,配合数码管、键盘等外部电路设计实现数字电子钟应用系统,能够长期、连续、可靠、稳定的工作。
要求:1、学生独立设计硬件电路,充分利用单片机学习板上资源上实现系统;2、学生独立完成软件设计并调试。
三、实验设备与平台1、实验设备:计算机(PC),AVR Mega128学习板,AVR下载/仿真器。
2、软件平台:ICCA VR C语言程序开发软件,AVR STUDIO软件调试平台。
四、涉及的知识点控制器的控制,LED数码管驱动,串行转并行的数据传送,扬声器驱动,按键处理等知识。
五、实验过程①设计概况;②硬件电路图(原理图与实物照片);★③软件流程图;★★★④源程序清单;⑤操作说明;⑥实验结果分析。
2、应用系统可演示。
2、自行设计一种LED灯的表现形式;(例如:LED灯从左到右逐个点灯,保持2~3秒,LED灯再从右到左逐个熄灭)3、写出扩展实验修改后的源程序清单六、实验报告体会【时分显示】由于闪烁太快,截图不能完全显示1259.【秒表】【年份】还是由于闪烁太快这里显示为2016【闹钟】为01:10#include<iom128v.h>#include<macros.h>Const unsigned char disp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e,0xff};unsigned char sec=0;unsigned char i_sec=0;unsigned status=1; //status的赋值可以选择最初始显示的是秒表日期还是时分unsigned char ledbuf[]={0xff,0xff,0xff,0xff};// 显示缓冲区,分别存放的是千位、百位、十位、个位的段码unsigned char //用于时间调整的变量a1=1,a2=1,a3=0,a0=0,b0=1,b1=2,b2=0,b3=0,c0=1,c1=2,c2=1,c3=9,d0=2,d1=0,d2=1,d3=6; void delay_ms( unsigned int x){ unsigned int i;unsigned int j;for( i=0;i<x;i++)for( j=0;j<1141;j++);}void sei(){SREG|=(1<<7);}void disp_init(void){ // 定时器1的初始化,CTC模式,8分频,中断周期5ms OCR1A = 4999; //100Hz=8MHz/(2*8*(1+OCR1A))TCCR1A = 0x00;TCCR1B = (1 << WGM12); //CTC模式TCCR1B |= (1 << CS11); //8分频TIMSK |= (1 << OCIE1A); //开比较匹配中断A}unsigned char key_read(void){unsigned char r,c,key;//获取列地址//PE4~PE7输出,低电平PORTE &= 0x0F;DDRE |= 0xF0;//PD4~PD7输入,使能上拉电阻PORTD |= 0xF0;DDRD &= 0x0F;delay_ms(1);//等待电平稳定c=PIND; //列码为PIND的高4位if ((c&0xf0)==0xf0) return 0; //列码全为1,无按键按下,返回键码0//获取行地址PORTE |= 0xF0;//PE4~PE7输入,使能上拉电阻DDRE &= 0x0F;PORTD &= 0x0F;//PD4~PD7输出,低电平DDRD |= 0xF0;delay_ms(1);//等待电平稳定r=PINE; //行码为PINE高4位//组成键码key=(r&0xF0)|(c>>4);return key;}// 中断服务程序的功能:刷新段码与位控制,用变量k实现轮流刷新的目的#pragma interrupt_handler ISR:13void ISR(){static unsigned char k=0; //显示刷新标志5ms per interrupti_sec=++i_sec;if(i_sec==25){ ++sec;i_sec=0; }k=(++k)%4;PORTC |= 0xCC; //关位选PORTA = ledbuf[k];//传送数据位switch(k){case 0: PORTC = ~(1<<7); break;//显示千位case 1: PORTC = ~(1<<6); break;//显示百位。
实验三单片机定时计数器应用实验(一)(学生用)

实验三单片机定时/计数器应用实验(一)一、实验目的(1)掌握定时/计数器的基本结构、工作原理和工作方式。
(2)掌握定时/计数器的使用和编程方法。
(3)进一步掌握中断处理程序的编写方法。
二、实验器材(1) HJ-C52开发板一块(2)计算机一台(3) Keil C51编程软件(4)数据下载线三、实验电路图2 电路图四、实验说明1、51单片机有。
两个16位内部定时器/计数器(T/C,Timer/ Counter)。
若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。
定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。
由于脉冲周期固定由计数值可以计算出时间,有定时功能。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
2、TMOD(1)M1M0工作方式控制位(2)C/T 定时器方式或计数器方式选择位若C/T=1时, 为计数器方式;C/T = 0时, 为定时器方式。
(3)GATE 定时器/计数器运行门控标志位当GATE=1时, T/C的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的T/C才被选通工作。
若GATE=0, T/C的启动仅受TR0 (或 TR1)控制,即置 1, T/C就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。
3、TCONTF0、TF1分别是定时器/计数器T0、 T1 的溢出中断标志位, 加法计数器计满溢出时置1, 申请中断, 在中断响应后自动复0。
TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。
TR1、TR0 分别是定时器/计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器/计数器才开始工作, 在系统复位时被清0。
定时计数器实验
实验四、定时/计数器实验一、实验目的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文件烧入单片机观察现象。
实验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)实验一 (2)实验二 (9)实验三 (11)实验四 (14)实验五 (17)实验六 (19)实验七 (21)实验八 (23)第三部分扩展实验实验九 (26)实验十 (30)实验十一 (35)第一部分绪论本指导书是根据《单片机原理与接口技术》课程实验教学大纲编写的,适用于机械电子工程专业。
一、本课程实验的作用与任务本课程的实践性较强,安排适当的上机可以帮助学生理解教学内容,锻炼动手能力和综合设计能力。
二、本课程实验的基础知识熟悉Keil软件的使用,学习过单片机原理与接口技术及有一定的电路常识。
三、本课程实验教学项目及其教学要求序号实验项目名称学时教学目标、要求1单片机程序设计集成开发环境应用22掌握实验环境的应用,熟练掌握软件的各项功能2 定时器/计数器程序设计实验22掌握定时器的几种工作模式,并应用各种模式进行定时3 数码管显示程序设计实验22会对数码管译码,会进行动态显示数据4 独立式键盘程序设计实验22会对独立键盘进行消抖动,会识别按键5 行列矩阵式键盘程序设计实验22会用扫描法识别行矩阵按键6 秒表显示实验22会运用定时、中断知识进行综合设计7 串口通信实验22会编程让单片机和串口进行通信8 步进电机实验22能控制步进电机正传和反转合计1 16第二部分基本实验指导实验一单片机C51程序设计集成开发环境应用一、实验目的1. 了解集成开发环境Keil Vision3文件管理的特点。
2. 学会使用开发环境新建文件、编辑、编译程序。
3. 掌握开发环境程序设计相关设置及其意义。
二、实验要求实现单片机P1连接的LED发光二极管实现流水灯功能。
三、实验原理1. 熟练操作开发环境。
2. 利用C51相关知识,编写简单程序,生成可执行文件。
3. 记录编译错误信息,总结错误原因,写出解决办法。
广工-单片机实验报告全部
广工-单片机实验报告全部实验一:开发软件使用与调试方法一.实验目的:学习KEIL 的使用方法,用Keil 开发工具编译C 源码、汇编源程序。
掌握单片机的编程及调试。
二.实验内容和要求:编写C语言程序,用Keil 将程序编译并生成HEX 文件调试程序。
通过并口通信线连接PC 与实验箱,用Easy 51Pro 把程序下载到AT89S51 观察实验箱LED 的变化。
三.实验要求程序代码:ORG 0000HAJMP M AINORG 0030HMAIN:MOV P2,#0FFHMOV A,#0FEHMOV P0,ALOOP: JB P2.0,LOOPACALL DELAY_100MSJB P2.0,LOOPRR AHRER: JNB P2.0,HRERMOV P0,AAJMP L OOPDELAY_100MS:MOV R6,#64HD22: MOV R5,#0F9HD21: DJNZ R5,D21DJNZ R6,D22RETEND四.实验心得:通过本次试验,熟悉了keil软件的使用。
初步掌握单片机的编程及调试实验二定时器和中断应用程序设计与调试一.实验目的:掌握单片机的定时器,中断功能系统的应用二.实验内容和要求:编写程序,用AT89C51的内部定时器/计数器T0的方式1产生周期为0.2秒的TTL脉冲(TCH和TCL 溢出的时候,产生一个中断),从P05输出。
计算如下:振荡器的频率f=6M=6000000,方式1计数器的长度为L=16.2的16次方即65536定时时间(溢出时间)t=0.1s定时常数TC=65536-6000000x0.1/12=65536-50000=15536,将15536转换成16进制为3CB0,TCH=3CH(高八位),TCL=B0H(低八位)。
三.实验主要仪器设备和材料:1 AMC51单片机综合开发系统一台 2.微机一台四.实验方法,步骤及结果测试1.开启ANC51实验装置,检查跳线,一般无需改动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广州大学学生实验报告
姓名 年级、专业、班 学号
实验课程名称 单片机原理与接口技术实验 成绩
实验项目名称 计数器/定时器实验 指导老
师
一、 实验目的
二、 实验原理
三、 使用仪器、材料
四、 实验步骤
五、 实验过程原始记录(数据、图表、计算等)
六、 实验结果及分析
一、实验目的
1、学习8051内部计数器的使用和编程方法。
2、进一步掌握中断处理程序的编程方法。
二、实验原理
一、定时器实验
实验连线
1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时
器。
2、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD
用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON
主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
3、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是
12个振荡器周期。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自
动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法
计算:
机器周期=12÷6MHZ=2uS
(256-定时常数)×2uS=100us
定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟.
4、在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关
键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
二、计数器实验:
定时器/计数器0按计数器模式和方式2工作,对P3.4(T0)引脚进行计数。按
动按钮,记数寄存器增加1记数,记满则与P1.0相连的发光二极管亮,留意按
动次数。
实验说明:
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才
能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证
电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频
率。
实验连线
三、使用仪器、材料
1、LAB6000 通用微控制器实验系统。
2、计算机,WAVE 集成调试软件。
3、连线若干。
四、实验步骤
1、连接系统,设置好仿真器和编译选项。
2、建立新程序和新项目,编译程序。
3、编译成功后进行调试,观察LED的闪烁。
4、对于实验一,可在中断程序中设置断点,在观察窗口中添加C100US和LEDBUF
观察项,并观察和记录下XDATA窗口和观察窗口中的数据变化。
五、实验过程原始记录
实验一程序
TICK EQU 10000 ; 10000 X 100US = 1S
T100US EQU 256-50 ; 100US时间常数(6M)
C100US EQU 30H ; 100US记数单元
LEDBUF EQU 0
LED EQU P1.0
连线 连接孔1 连接孔2
1 P1.0 L0
2 单脉冲输出 T0
P1.0 ·––––·LED0
·––––·T0
LJMP START
ORG 000BH ;中断程序入口
T0INT:
PUSH PSW
MOV A, C100US+1
JNZ GOON
DEC C100US
GOON:
DEC C100US+1
MOV A, C100US
ORL A, C100US+1
JNZ EXIT ; C100US 记数器不为0, 返回
MOV C100US, #HIGH(TICK)
MOV C100US+1, #LOW(TICK)
CPL LEDBUF ; C100US 记数器为0, 重置记数器
; 取反LED
EXIT:
POP PSW
RETI
START: ; 主程序入口
MOV TMOD, #02H ; 方式2, 定时器0
MOV TH0, #T100US ; 计算T/C的计数初值,并装载到TH
和TL
MOV TL0, #T100US
MOV IE, #10000010B ; EA=1, IT0 = 1
SETB TR0 ; 开始定时
CLR LEDBUF
CLR LED
MOV C100US, #HIGH(TICK)
MOV C100US+1, #LOW(TICK)
LOOP:
MOV C, LEDBUF
MOV LED, C
LJMP LOOP
END
注意其中 CALL指令为部分编译器特有,根据需要由汇编器自动转为 ACALL
或 LCALL。
实验效果观察:LED灯每隔一秒状态取反一次
灯亮:
实验二程序:
CLR P1.0
MOV TMOD, #00000110B ; 方式2,记数器0
MOV TH0, #0FBH
MOV TL0, #0FBH
SETB TR0 ; 开始记数
LOOP1:
JBC TF0, LOOP2
SJMP LOOP1
LOOP2:
SETB P1.0
NOP
END
实验现象:开始时的情况,L0灯没亮
开关按下5次后,L0灯亮,情况如下
六、实验结果及分析
1实验结论:
程序一实现LED灯定时状态取反。
程序二实现对外部高电平脉冲计数5次后点亮LED
定时器和计数器是单片机非常重要的功能,在实现控制过程难以被替代。
2实验报告要求问题
(1)讨论定时器/计数器0的四种方式的定时范围
定时范围和单片机晶振有关,为最大计数值*机器周期=(最大计数值*12)/
晶振频率,下面有几种模式的最大计数值
模式0 2^13=8192
模式1 2^16=65536
模式2 2^8=256
模式3 2^8=256
伟福系统采用的是6M晶振,因此模式0定时范围为到2us到16384us,模
式1为2us到131072us,模式2和模式3都为为2us到512us。
(2)实验体会(着重弄懂控制寄存器的位含义及中断的处理)
与定时器和计数器相关的控制寄存器主要有两个,一个是模式控制寄存器
TMOD,低四位从高到低分别是 GATE(用于决定定时器/计数器的启动是否受外部
中断请求信号的控制)、C/T(定时或计数功能选择位)、M1、M0(定时器/计数器
工作模式选择位,00为模式0,01为模式1,10为模式2,11位模式3)。低四位
用于定时器0,高四位排布和作用和低四位完全一致,用于控制定时器1。二是
工作控制寄存器TCON,从高到低位分别是TF1、TR1、TF0、TR0、IE1、IT1、IE0、
IT0,TRO(TR1)是定时器/计数器T0(T1)运行控制位,TF0(TF1)是定时器/计数
器T0(T1)溢出中断标志位。该位由硬件置位,并可作为查询标志由软件清零。IT0
(IT1)和IE0(IE1)分别为外部中断0(外部中断1)的触发类型选择位和边沿触
发中断请求标志位。
在实验二中语句MOV TMOD, #00000110B 低四位C/T=1,M1=1,其他为0
即使用了,定时器功能,定时器0,模式2。在使用定时器或者计数器前要设置
TMOD,确定要用的功能和模式。
中断的处理:在定时器或者计数器的中断溢出标志位为TO/T1,例如程序二
使用JBC TF0, LOOP2 语句老查询标志位来判断有无溢出,是否要运行溢出对
应的子程序,并把它软件清0,以防一次溢出多次运行子程序。