资源描述:
《《片机定时器实验》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验三单片机内部定时器应用实验目的1、理解单片机内部定时器的工作原理及使用方法2、了解单片机定时中断程序的编写和调试方法3、掌握定时器的基本使用方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、单片机定时器的工原理MCS-51单片机内部有两个16位可编程的定时器/计数器T0和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0由TH0和TL0计数器构成;T1由TH1和TL1计数器构成。工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器
2、周期定时器加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-
3、7定时器模式控制字格式TCON寄存器用于定时器的计数控制和中断标志。如图4-8所示。图4-8定时控制寄存器数据格式编写程序控制这两个寄存器就可以控制定时器的运行方式。单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。1、用定时器编写一个秒计时器假设系统使
4、用的晶振频率为12MHZ,即每个机器周期为1us。如使用方式1,则定时时间最长是216×1us=65536us=65.536ms,小于1s。故必须设置一个软件计数单元,即假设定时器定时中断时间为50ms,则必须定时中断20次才达到1s并对秒计时单元加1,20即为软件计数次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。定时器中断服务程序中断返回保护现场恢复现场软件计数-1=0?秒计时器加1,转成显示数据并送显示YN主程序初始化中断控制器,定时器,软件初值,显示缓冲区启动定时器调用显示程序图4
5、-9定时器应用程序流程图实验内容1、单片机定时器秒计时器LEDCLKBITP3.4;LEDDINBITP2.3;LEDDATADATAP0;DSEGAT30Hdispbuf:ds8;显示缓冲区timetick:ds1second:ds1minute:ds1hour:ds1TIMECOUNTEQU50000CSEGat0000HSJMPMAINORG000BHLJMPP_T0ORG0030;中断服务程序P_T0:PUSHPSWPUSHACCPUSHDPHPUSHDPLMOVTH0,#(65535-
6、TIMECOUNT)/256MOVTL0,#(65535-TIMECOUNT)MOD256SETBRS0;后面所使用的R0~r7DJNZtimetick,P_T02MOVtimetick,#20INCsecond;cjnesecond,#60,P_T01;MOVSECOND,#0;incminute;P_T01:MOVA,secondMOVB,#100DIVABMOVR0,#dispbuf+2MOV@R0,ADECR0MOVA,BMOVB,#10DIVABMOV@R0,ADECR0MOV@R0,
7、BP_T02:CLRRS0POPDPLPOPDPHPOPACCPOPPSWRETIMAIN:movsp,#60hMOVdispbuf,#0MOVdispbuf+1,#0MOVdispbuf+2,#0MOVdispbuf+3,#0MOVdispbuf+4,#0MOVdispbuf+5,#0MOVdispbuf+6,#0MOVdispbuf+7,#0MOVTH0,#(65535-TIMECOUNT)/256;3CAFMOVTL0,#(65535-TIMECOUNT)MOD256;MOVTMOD,#0
8、1H;设定定时器的工作方式SETBET0;允许T0溢出中断SETBTR0;启动t0SETBEA;开启总中断MAIN1:ACALLDISPSJMPMAIN1DISP:MOVR6,#8MOVR0,#dispbufCLRLEDCLKCLRLEDDINNOPDISP1:SETBLEDCLKMOVA,@R0MOVDPTR,#LEDTABMOVCA,@A+DPTRMOVLEDDATA,A;MOVR7,#5ACALLDelayNmsINCR0SETBLEDDINCLRLEDCLKDJNZR6,DISP1RET