单片机内部定时器应用_第1页
单片机内部定时器应用_第2页
单片机内部定时器应用_第3页
单片机内部定时器应用_第4页
单片机内部定时器应用_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

武夷学院实验报告 课程名称: 单片机原理与应用技术 项目名称:单片机内部定时器应用 姓名 xxx 专业:电子信息工程 班级:(1)班 学号:20114081018 同组成员:xxx 实验日期:2013.12.7 一、 实验预习部分: 1实验目的: 1、理解单片机内部定时器的工作原理及使用方法 2、了解单片机定时中断程序的编写和调试方法 3、掌握定时器的基本使用方法 2实验原理: 1、 单片机定时器的工原理 MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器 方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构 成。 工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数, 即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振 频率为12MHZ ,则定时器每隔( 1/12MHZ)12=1us 加1。 工作于计数器方式时,对P3.4 或P3.5 管脚的负跳变(10)计数。它在每个机器周期的 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,则定时时间 最长是2 161us=65536us=65.536ms,小于1s 。故必须设置一个软件计数单元,即假设定时器 定时中断时间为50ms,则必须定时中断20次才达到1s并对秒计时单元加1,20即为软件计数 次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。 图 4-9 定时器应用程序流程图 3实验仪器: 单片机开发板、万利仿真机、稳压电源、计算机 4实验步骤及方法: (1) 、打开万利仿真机软件,点击项目管理新建项目 (2) 、单击文件新建另存为(如果用汇编格式选择用*。Asm,用 c 语言用*.c) 将程序输入; 原始程序如下: timetick: DS 1 timetick1: DS 1 second: DS 1 定时器中断服务程序 中断返回 保护现场 恢复现场 软件计数-1=0 ? 秒计时器加 1,转成显 示数据并送显示 Y N 主程序 初始化中断控制器, 定时器,软件初值, 显示缓冲区 启动定时器 调用显示程序 TIMECOUNT EQU 50000 ;定时器的初始值为 50 mS。 START: MOV timetick,#20 ;根据定时器初始值进行设置。 MOV TH0,#(65535-TIMECOUNT)/256 MOV TL0,#(65535-TIMECOUNT) MOD 256 MOV TMOD,#01H ;定时器 0 工作方式 1 SETB ET0 SETB EA SETB TR0 LCALL Disp SJMP $-3 ;定时器中断服务程序 P_T0: MOV TH0,#(65535-TIMECOUNT)/256 MOV TL0,#(65535-TIMECOUNT) MOD 256 PUSH PSW PUSH DPH PUSH DPL PUSH B PUSH A SETB RS0 ;选择第 1 组工作寄存器 DJNZ timetick,P_T01 MOV timetick,#20 ;根据定时器初始值进行设置。 INC second MOV A,second ;取出秒单元,转换后送显示 MOV B,#100 DIV AB MOV R0,#dispbuf+4 ;显示位置位于右边 3 个数码管 MOV R0,A INC R0 MOV A,B MOV B,#10 DIV AB MOV R0,A INC R0 MOV R0,B P_T01: POP A POP B POP DPL POP DPH POP PSW RETI (3) 、连接开发板,检查设备是否插入。 (4) 、项目管理中导入工程文件 (5) 、编译下载程序到系统实验上的单片机中 (6)、进行全速运行 (7)记录实验现象 (8)退出软件,关闭电脑 5、注意事项 1: (1) 、在完成程序的输入以后要将文件进行保存 (2) 、如果用汇编语言文件保存的时候后缀为.ASM C 语言的话后缀为.C (3) 、对比 c 语言和汇编语言的相同点和不同点,用两个语言完成程序编译和修改 (4) 、实验前做好实验准备工作,做好实验前的预习,理解实验原理 (5) 、实验中认真观察实验现象,记录修改程序后的实验现象,实验后要收拾实验仪器,关闭电源 和电脑,放好桌椅 实验预习成绩(百分制)_ 实验指导教师签字:_ 二、 实验过程记录部分: 实验过程记录: (1)打开软件,选择项目管理,新建项目 (2)文件新建另存为(如果用汇编后缀选择用*。Asm,用 c 语言用*.c) (3)输入源程序,添加文件 (4)编译,检查错误 (5)全速运行 2实验现象及原始数据记录 2: 实验结果与讨论: 1数据处理及实验结果分析: 写入程序编译,运行,观察到数码管可以正常显示时间从时分秒一一显示出来,可以顺利实现 时钟信号的进位功能,可以设置时钟最大值,和时钟功能完全一致,满足最初的设计目标。 2实验改进、心得体会及思考题 3: 实验操作成绩(百分制)_ 实验指导教师签字:_ 通过对本次单片机内部定时器应用试验,我加深了对单片机内部定时器的工作原理和使 用方法的了解,以及单片机定时中断程序的编写进一步熟悉了调试方法掌握定时器的基本使 用方法,同时对倒计时也有了初步了解。 思考题 (1)在实验程序基础上编写一个 24 小时计时时钟。 答:程序如下: #include #include #define uchar unsigned char sbit clk=P34; sbit din=P23; uchar led1=2,3,10,5,9,10,5,9; uchar code led=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd; uchar h=23,m=59,s=59,tt=0; void delayms(int n) uchar i; for (i=0;in;i+); void exter0() interrupt 1/定时器 0 中断 TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt+; if(tt=20) tt=0; s+; if(s=60) s=0; m+; if(m=60) m=0; h+; if(h=24) h=0; led10=h/10; led11=h%10; led13=m/10; led14=m%10; led16=s/10; led17=s%10; main() uchar i,j,k; TMOD=0x01;/设 置定时器 0 为工作方式 1 EA=1;/开总中断 ET0=1;/开定时器 0 中断 TR0=1;/启动定时器 0 while(1) din=0; j=7; for(i=0;i8;i+) clk=1; clk=0; di

温馨提示

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

评论

0/150

提交评论