单片机定时器试验_第1页
单片机定时器试验_第2页
单片机定时器试验_第3页
单片机定时器试验_第4页
单片机定时器试验_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实验三 单片机内部定时器应用实验目的1、理解单片机内部定时器的工作原理及使用方法2、了解单片机定时中断程序的编写和调试方法3、掌握定时器的基本使用方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、单片机定时器的工原理MCS-51单片机内部有两个16位可编程的定时器/计数器T0和T1。它们即可用作定时 器方式,又可用作计数器方式。其中T0由TH0和TL0计数器构成;T1由TH1和TL1计数器构成。工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加 1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振 频率为12MHZ,则定时

2、器每隔(1/12MHZ ) X 12=1us加1。计数1/24。T1 ,低4位用工作于计数器方式时,对 P3.4或P3.5管脚的负跳变(10)计数。它在每个机器周期 的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时, 器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的如图4-7所示。特殊功能寄存器TMOD用于定时器/计数器的方式控制。高4位用于设置 于设置T0oTMODD7D6 D5 D4D3D2DI DOGATEC/TMlM0GATECTMlMO T1方式控制 TO方式控制pTCONTCONTF1TR1TFOTROIE1IT1IEOno图4

3、-7定时器模式控制字格式寄存器用于定时器的计数控制和中断标志。如图4-8所示。D7 D6 D5 D4 D3 D2 DI DOV用于外部中断图4-8定时控制寄存器数据格式编写程序控制这两个寄存器就可以控制定时器的运行方式。单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控 制位置1; (2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对 TR0或TR1置1。 (4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,贝U 必须对溢出中断标志位 TF0或TF1进行判断。2、用定时器编写一个秒计时器假设系统使用的晶振频率为 12MHz,即每

4、个机器周期为1us。如使用方式1,则定时时间 最长是216x 1us=65536us=65.536ms,小于Is。故必须设置一个软件计数单元, 即假设定时器 定时中断时间为50ms,则必须定时中断20次才达到Is并对秒计时单元加1, 20即为软件计数 次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。图4-9定时器应用程序流程图实验内容1、单片机定时器秒计时器LEDCLK BIT P3.4;LEDDIN BIT P2.3;LEDDATA DATA P0;DSEG AT 30Hdispbuf: ds 8;显示缓冲区timetick: ds 1second:ds1minute:ds1hour:

5、ds1TIMECOUNT EQU 50000CSEG at 0000Hsjmp mainORG 000BHLJMP P_T0ORG 0030;中断服务程序P_T0:PUSH PSWPUSH ACCPUSH DPHPUSH DPLMOV TH0,#(65535-TIMECOUNT)/256MOV TL0,#(65535-TIMECOUNT)MOD 256SETB RS0;后面所使用的 R0r7DJNZ timetick,P_T02MOV timetick,#20INC second; cjne second,#60,P_T01; MOV SECOND,#0; inc minute;P_T01:

6、MOV A,secondMOV B,#100DIV ABMOV R0,#dispbuf+2MOV R0,ADEC R0MOV A,BMOV B,#10DIV ABMOV R0,ADEC R0MOV R0,BP_T02: CLR RS0POP DPLPOP DPHPOP ACCPOP PSWRETIMAIN:mov sp,#60hMOV dispbuf,#0MOV dispbuf+1,#0MOV dispbuf+2,#0MOV dispbuf+3,#0MOV dispbuf+4,#0MOV dispbuf+5,#0MOV dispbuf+6,#0MOV dispbuf+7,#0MOV TH0,#

7、(65535-TIMECOUNT)/256;3CAFMOV TL0,#(65535-TIMECOUNT)MOD 256;MOV TMOD,#01H;设定定时器的工作方式SETB ET0;允许T0溢出中断SETB TR0;启动 t0SETB EA;开启总中断MAIN1:ACALL DISPSJMP MAIN1DISP:MOV R6,#8MOV R0,#dispbufCLR LEDCLKCLR LEDDINNOPDISP1: SETB LEDCLKMOV A,R0MOV DPTR,#LEDTABMOVC A,A+DPTRMOV LEDDATA,A;MOV R7,#5ACALL DelayNmsIN

8、C R0SETB LEDDINCLR LEDCLKDJNZ R6,DISP1RET;大延时DelayNms:D1: ACALL Delay1msDJNZ R7,D1RET;延时子程序Delay1ms:push 07mov R7,#250delay1:NOPNOPDJNZ R7,delay1POP 07RETLEDTAB:DB 03H,9FH,25H,0DH;0,1,2,3DB 99H,49H,41H,1FH;4,5,6,7DB 01H,09H,11H,0C1H;8,9,A,BDB 63H,85H,61H,71H;C,D,E,FEND2、修改上面的程序,设计一个 N秒倒计时器(N为学号后两位)。

9、倒计时时间到后,重新 开始计时。LEDCLK BIT P3.4;LEDDIN BIT P2.3;LEDDATA DATA P0;DSEG AT 30Hdispbuf: ds 8;显示缓冲区timetick: ds 1second:ds1minute:ds1hour:ds1TIMECOUNT EQU 50000CSEG at 0000HSJMP MAINORG 000BHLJMP P_T0ORG 0030H;中断服务程序P_T0:PUSH PSWPUSH ACCPUSH DPHPUSH DPLMOV TH0,#(65535-TIMECOUNT)/256MOV TL0,#(65535-TIMECO

10、UNT)MOD 256SETB RS0;后面所使用的 R0r7DJNZ timetick,P_T01MOV timetick,#20dec secondMOV A,secondCJNE A,#00,P_T01MOV SECOND,#33P_T01: MOV A,secondMOV B,#100DIV ABMOV R0,#dispbuf+2MOV R0,ADEC R0MOV A,BMOV B,#10DIV ABMOV R0,ADEC R0MOV R0,BCLR RS0POP DPLPOP DPHPOP ACCPOP PSWRETIMAIN:mov sp,#60hMOV dispbuf,#0MOV

11、 dispbuf+1,#0MOV dispbuf+2,#0MOV dispbuf+3,#0MOV dispbuf+4,#0MOV dispbuf+5,#0MOV dispbuf+6,#0MOV dispbuf+7,#0mov timetick,#20mov second,#33MOV TH0,#(65535-TIMECOUNT)/256;3CAFMOV TL0,#(65535-TIMECOUNT)MOD 256;MOV TMOD,#01HSETB ET0;允许T0溢出中断SETB TR0;启动 t0SETB EA;开启总中断MAIN1:ACALL DISPSJMP MAIN1DISP:MOV

12、R6,#8MOV R0,#dispbufCLR LEDCLKCLR LEDDINNOPDISP1: SETB LEDCLKMOV A,R0MOV DPTR,#LEDTABMOVC A,A+DPTRMOV LEDDATA,A;MOV R7,#5ACALL DelayNmsINC R0SETB LEDDINCLR LEDCLKDJNZ R6,DISP1RET;大延时DelayNms:D1: ACALL DelaylmsDJNZ R7,D1RET; 延时子程序Delaylms:push 07mov R7,#250delay1:NOPNOPDJNZ R7,delay1POP 07RETLEDTAB:D

13、B 03H,9FH,25H,0DH;0,1,2,3DB 99H,49H,41H,1FH;4,5,6,7DB 01H,09H,11H,0C1H;8,9,A,BDB 63H,85H,61H,71H;C,D,E,FEND思考题1、在实验程序基础上编写一个24小时计时时钟。LEDCLK BIT P3.4;LEDDIN BIT P2.3;LEDDATA DATA P0;DSEG AT 30Hdispbuf: ds 8;显示缓冲区timetick: ds 1second:ds1minute:ds1hour:ds1TIMECOUNT EQU 50000CSEG at 0000HSJMP MAINORG 00

14、0BHLJMP P_T0ORG 0030H;中断服务程序P_T0:PUSH PSWPUSH ACCPUSH DPHPUSH DPLMOV TH0,#(65535-TIMECOUNT)/256MOV TL0,#(65535-TIMECOUNT)MOD 256SETB RS0;后面所使用的 R0r7DJNZ timetick,P_T02MOV timetick,#20INC secondMOV A,secondCJNE A,#60,P_T01;秒MOV SECOND,#。inc minute;MOV A,minute ;分CJNE A,#60,P-T01INC HOUR ;时MOV A,HOURC

15、JNE A,#12,P-T01MOV HOUR,#0P_T01: MOV A,secondMOV B,#100DIV ABMOV R0,#dispbuf+2MOV R0,ADEC R0MOV A,BMOV B,#10DIV ABMOV R0,ADEC R0MOV R0,BP_T02: CLR RS0POP DPLPOP DPHPOP ACCPOP PSWRETIMAIN:mov sp,#60hMOV dispbuf,#0MOV dispbuf+1,#0MOV dispbuf+2,#0MOV dispbuf+3,#0MOV dispbuf+4,#0MOV dispbuf+5,#0MOV disp

16、buf+6,#0MOV dispbuf+7,#0MOV TH0,#(65535-TIMECOUNT)/256;3CAFMOV TL0,#(65535-TIMECOUNT)MOD 256;MOV TMOD,#01H;设定定时器的工作方式SETB ET0;允许T0溢出中断SETB TR0;启动 t0SETB EA;开启总中断MAIN1:ACALL DISPSJMP MAIN1DISP:MOV R6,#8MOV R0,#dispbufCLR LEDCLKCLR LEDDINNOPDISP1: SETB LEDCLKMOV A,R0MOV DPTR,#LEDTABMOVC A,A+DPTRMOV LEDDATA,A;MOV R7,#5ACALL DelayNmsINC R0SETB LEDDINCLR LEDCLKDJNZ R6,DISP1RET;大延时DelayNms:D1: ACALL Delay1msDJNZ R7,D1RET;延时子程序Delay1ms:push 07mov

温馨提示

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

最新文档

评论

0/150

提交评论