ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:21.22KB ,
资源ID:5583492      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5583492.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(整理8STC15F2K60S2单片机的定时器计数器例题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

整理8STC15F2K60S2单片机的定时器计数器例题.docx

1、整理8STC15F2K60S2单片机的定时器计数器例题 第8章STC15F2K60S2单片机的定时/计数器例题例8.1 用T1方式0实现定时,在P1.0引脚输出周期为10mS的方波。解: 根据题意,采用T1方式0进行定时,因此,(TMOD)=00H。因为方波周期是10mS,因此T1的定时时间应为5mS,每5mS时间到就对P1.0取反,就可实现在P1.0引脚输出周期为10mS的方波。系统采用12M晶振,分频系数为12,即定时脉钟周期为1S,则T1的初值为:X = M -计数值= 65536 - 5000 = = 60536 =EC78H即:TH1 = ECH,TL1 = 78H。 (1)查询方式

2、实现:ORG 0000H MOV TMOD,#00H ;设T1为方式0定时模式MOV TH1,#0ECH ;置5mS定时的初值 MOV TL1,#78H SETB TR1 ;启动T1Check_TF1: JBC TF1,Timer1_Overflow ;查询计数溢出 SJMP Check_TF1 ;未到5mS继续计数Timer1_Overflow: CPL P1.0 ;对P1.0取反输出 SJMP Check_TF1 ;未到1s继续循环 END (2)中断方式实现: ORG 0000H LJMP MAIN ;上电复位后,转MAIN ORG 001BH LJMP Timer1_ISR ;T1中断

3、响应后,转 Timer1_ISR ORG 0100H MAIN: MOV TMOD,#00H ;设T1为方式0定时模式 MOV TH1,#0ECH ;置5mS定时的初值 MOV TL1,#78H SETB ET1 SETB EA ;开放中断 SETB TR1 ;启动T1 SJMP $ ;原地踏步,模拟主程序 Timer1_ISR: CPL P1.0 ;对P1.0取反输出 RETI ;中断返回,回到主程序执行 SJMP $ END 例8.2 用定时计数器扩展外部中断。解:当实际应用系统中有两个以上的外部中断源,而片内定时计数器未使用时,可利用定时计数器来扩展外部中断源。扩展方法是,将定时计数器设

4、置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加1后便产生定时计数器溢出中断。因此,可把定时计数器的外部计数引脚作为扩展中断源的中断输入端。设采用T1实现,采用工作方2,即TH1、TL1的初值均为FFH,T1中断开放,即T1引脚(P3.5)为扩展外部中断的中断请求信号输入端,触发方式为下降沿触发。其初始化程序(中断方式)如下:ORG 0000H LJMP MAIN ;上电复位后,转MAIN ORG 001BH LJMP EX_ISR ;T1中断响应后,转 EX_ISR ORG 0100H MAIN: MOV TMOD,#

5、60H ;设T1为方式1计模式 MOV TH1,#0FFH MOV TL1,#0FFH SETB ET1 SETB EA ;开放中断 SETB TR1 ;启动T1 ;主程序其它指令 EX_ISR: ;扩展外部中断的中断服务程序 RETI END思考:试将例8.2的功能用T0或T1的方式0实现。例8.3 使信号灯循环点亮,首先按从左至右轮流点亮,再按从右至左轮流点亮,每个信号灯点亮的时间间隔为1秒。要求用单片机定时/计数器定时实现。 解:硬件电路比较简单,采用P1口输出驱动电平,低电平有效。电路如图8.7所示。 图8.7 流水灯显示电路系统采用12M晶振,分频系数为12,即定时时钟周期为1S;采

6、用定时器T1方式0定时50mS,用R3做50ms计数单元,20次50mS定时即为1S,故R3的初始值为20。 汇编语言参考程序如下: 1)查询方式实现ORG 0000HLOOP: MOV R2,#07H ;设置左移的次数 MOV A,#0FEH ;设置信号灯的显示(左移)的起始状态值Left_Shift: MOV P1,A ;送显示控制信号 LCALL DELAY ;利用软件与定时器,实现1s定时 RL A ; 改变信号灯显示状态,左移 DJNZ R2,Left_Shift ;判断左移流程是否结束,若结束,转入右移控制 MOV A,#7FH ;设置信号灯的显示(右移)的起始状态值,可省略 MO

7、V R2,#07H ;设置右移的次数Right_Shift: MO P1,A ;送显示控制信号 RR A ; 改变信号灯显示状态,右移 LCALL DELAY ;利用软件与定时器,实现1s定时 DJNZ R2,Right_Shift ;判断左移流程是否结束,若结束,又重新开始 SJMP LOOPDELAY: MOV R3,#20 ;置50ms计数循环初值 MOV TMOD,#00H ;设定时器1为方式1 MOV TH1,#3CH ;置定时器初值 MOV TL1,#0B0H SETB TR1 ;启动T1Check_TF1: JBC TF1,Timer1_Overflow ;查询计数溢出 SJMP

8、 Check_TF1 ;未到50ms继续计数Timer1_Overflow: DJNZ R3,Check_TF1 ;未到1s继续循环 CLR TR1 ;关闭T1 RET ;返回主程序 END2)中断方式实现ORG 0000H LJMP MAINORG 001BHLJMP Timer1_ISRMAIN: MOV R3,#20 ;置50ms计数循环初值MOV TMOD,#00H ;设定时器1为方式1 MOV TH1,#3CH ;置50ms定时器初值MOV TL1,#0B0H MOV R2,#07H ;设置左移的次数 MOV P1,#0FEH ;设置信号灯的显示(左移)的起始状态值 MOV A,#0

9、FEH ;设置信号灯的显示(左移)的起始状态值 CLR 00H ;设置左、右移标志位,为0左移,为1右移SETB ET1 SETB EA SETP TR1 ;启动T1定时器 SJMP $ ;原地踏步,模拟主程序Timer1_ISR: DJNZ R3,Exit_Timer1_ISR ;定时时间到,执行移位,否则中断结束 MOV R3, #20 JB 00H, Right_Shift ;判断左、右移控制 RL A ;左移控制 MOV P1, A DJNZ R2,Exit_Timer1_ISR ;判断左移流程是否结束,若结束,转入右移控制SETB 00H ;置位左、右移控制标志 MOV R2, #0

10、7H ;重新设置移位次数 SJMP Exit_Timer1_ISRRight_Shift: RR A ;右移控制 MOV P1, A DJNZ R2,Exit_Timer1_ISR ;判断左移流程是否结束,若结束,转入右移控制CLR 00H ;清0左、右移控制标志 MOV R2, #07H ;重新设置移位次数Exit_Timer1_ISR: RETI END C51参考程序如下: 1)查询方式实现 #include /包含52标准文件头#include /包含循环左移、右移子函数#define uchar unsigned char#define uint unsigned intuchar

11、LED = 0xfe;/*-利用T1实现定时的子函数-*/void DELAY(void) /延时函数 1S uint i = 0;TMOD = 0x00; /T1工作模式1 TH1 = 0x3c; TL1 = 0xb0; TR1 = 1; while(i20) if(TF1=1) /查询T1溢出标志 TF1 = 0; i+; /*-循环左移子函数-*/void Left_Shift(void) P1 = LED; DELAY(); /延时一秒 LED = _crol_(LED,1); /循环左移一位/*-循环右移子函数-*/void Right_Shift(void) LED = _cror

12、_(LED,1); /循环右移一位 P1 = LED; DELAY(); /延时一秒/*-主函数-*/void main(void) uchar j; while(1) for(j=0;j7;j+) Left_Shif (); for(j=0;j7;j+) Right_Shift (); 2)中断方式实现#include /包含52标准文件头#include /包含循环左移、右移子函数#define uchar unsigned char#define uint unsigned char/*-定义全局变量-*/uchar LED = 0xfe;uchar i = 0;uchar t = 0;

13、/*-T1初始化子函数-*/void Timer1_init(void) TMOD = 0x00; /T1工作模式1 TH1 = 0x3c; TL1 = 0xb0; ET1 = 1; EA = 1; TR1 = 1;/*-LED循环显示子函数-*/void Shift(void) P1 = LED; t+; if(t=7) LED = _crol_(LED,1); /循环左移一位 else if(t15) LED = _cror_(LED,1); /循环右移一位 else t = 0;/*-T1中断服务子函数-*/void Timer1_int(void) interrupt 3 using

14、1 /定时T1中断服务程序 i+; f(i=20) i = 0; Shift (); /*-主函数-*/void main(void) /主函数 Timer1_init(); /T1初始化 while(1) ; 例8.4 连续输入5个单次脉冲使单片机控制的LED灯状态翻转一次。要求用单片机定时/计数器计数功能实现实现。 解:采用T1实现,硬件如图8.8所示。 图8.8 信号灯的计数控制 采用T1的方式2的计数方式,初始值设置为FBH,当输入5个脉冲时,即溢出标志TF1,通过查询TF1或中断方式判断TF1标志,进而对P1.0LED灯进行控制。 汇编语言参考程序如下 : 1)查询方式实现ORG 0

15、000H MOV TMOD, #60H ;设定定时器1模式2,计数功能 MOV TH1, #0FBH MOV TL1, #0FBH ;设置计数器初值(2565) SETB TR1 ;启动计数Check_TF1: JBC TF1, Timer1_Overflow ;查询是否计数溢出 AJMP Check_TF1 Timer1_Overflow: CPL P1.0 ;当统计5个脉冲,LED灯状态翻转 AJMP Check_TF1 END 2)中断方式实现 ORG 0000H AJMP MAIN ORG 001BH AJMP Timer1_ISRMAIN: MOV TMOD, #60H ;设定定时器

16、1模式2,计数功能 MOV TH1, #0FBH MOV TL1, #0FBH ;设置计数器初值(2565)SETB ET1 SETB EA SETB TR1 ;启动计数 SJMP $Timer1_ISR: CPL P1.0 ;当统计5个脉冲,LED灯状态翻转 RETI END C51参考程序如下: 1)查询方式实现#includesbit led = P10;void timer_initial(void) TMOD = 0x60; /设定定时器1模式2,计数功能 TH1 = 0xfb; /5个脉冲以后溢出 TL1 = 0xfb; TR1 = 1; /开始计数器 void main(void

17、) timer_initial();while(1) while(TF1=0); TF1 = 0;Led = led; /不断查询是否溢出,没有溢出,就等待溢出了;溢出了, /清空溢出标志,led取反 2)中断方式实现#include #define uchar unsigned char#define uint unsigned charsbit LED = P10;/*-T1初始化子函数-*/void Timer1_init(void) TMOD = 0x60; /1设定定时器1模式2,计数功能 TH1 = 0xfb; /设置计数器初值(计满溢出值5) TL1 = 0xfb; ET1 =

18、1; EA = 1; TR1 = 1; /启动计数/*-T1中断服务子函数-*/void Timer1_int(void) interrupt 3 using 1 /定时计数T1中断服务程序 LED = LED;/*-主函数-*/void main(void) /主函数 Timer1_init(); /定时T1初始化 while(1) ; 思考:用方式0实现。 例8.5 利用单片机定时器/计数器设计一个秒表,由P1口连接LED灯,采用BCD码显示,发光二极管亮表示1,暗则表示0,计满100s后从头开始,依次循环。利用一只按键控制秒表的启、停。利用复位键,返回初始工作状态。 解: 选用P1口作输

19、出端,控制8只发光二极管显示,设发光二极管的驱动是低电平亮,高电平灭。P3.5接秒表的启、停按键。采用T0的方式0作定时器,12M晶振,分频系数为12,即定时时钟周期为1S汇编语言参考程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP Timer0_ISQMAIN: MOV TMOD,#00H ;T0方式1定时 MOV TH0,#3CH ;重新置T0 50ms定时的初值 MOV TL0,#0B0HSETB ET0 SETB EA MOV R3,#14H ;置50ms计数循环初值(1s/50ms) MOV A, #00H ;计数显示初始化 CPL A ;满足低电平驱动

20、要求 MOV P1,A CPL A ;恢复秒表计数值Check_Start_Button: JNB P3.5, Start CLR TR0 SJMP Check_Start_ButtonStart: SETB TR0 SJMP Check_Start_ButtonTimer0_ISQ: DJNZ R3,Exit_Timer0_ISQ ADD A, #01 ;秒表加1 DA A ;十进制调整 CPL A ;满足低电平驱动要求 MOV P1,A CPL A ;恢复秒表计数值 MOV R3, #14H Exit_Timer0_ISQ: RETI ENDC51参考程序如下:include /包含52标

21、准文件头#define uchar unsigned char#define uint unsigned charuchar dat=0; /定义BCD计数单元(范围:099)uchar i; /定义循环变量sbit key=P35; /定义按键/*-T0初始化子函数-*/void Timer0_init(void) TMOD = 0X00; /T0方式1 TH0 = (65535-50000)/256; /赋初始值,50ms TL0 = (65535-50000)%256; /赋初始值 ET0=1; EA=1;/*-T0中断服务子函数-*/void Timer0_int(void) inte

22、rrupt 1 using 1 /T0中断服务子程序 i+; if(i=20) /i=20时,计时1S i = 0; dat+; f(dat=100) /计时到100S时,又从0开始 dat0; /*-启动子函数-*/void Start(void) /启动定时函数 if(key=0) /判断按键按下 TR0=1; /开始计时 else TR0=0; /*-BCD码转换子函数-*/uchar BCD(uchar BCDat) /BCD转换 uchar x; x = (BCDat/10)*10+BCDat%10; return(x);/*-主函数-*/void main(void) Timer0

23、_init(); /T0初始化 while(1) Start(); / 启动定时 P1 = (BCD(dat); /送LED显示例8.6 编程在P3.0、P3.5、P3.4引脚上分别输出115.2KHZ、51.2KHZ、38.4KHZ的时钟信号。解:设系统时钟频率为12 KHZ,T0、T1工作在方式2定时状态,且工作在无分频模式,即各定时器的定时脉冲频率等于时钟频率,即(T0x12)(T1x12)(T2x12)1;各根据前面可编程时钟输出频率的计算公式,计算各定时器的定时初始值:(T2H)=FFH,(T2L)=CCH,(TH0)=(TL0)=8BH,( TH1)=(TL1)=64H(1)汇编语

24、言参考程序T2H EQU D6HT2L EQU D7HAUXR EQU 8EH INT_CLKO EQU 8FH ORG 0000HMOV TMOD,#22H ;T0、T1工作方式2定时状态 ORL AUXR,80H ;T0工作在无分频模式 ORL AUXR,40H ;T1工作在无分频模式 ORL AUXR,04H ;T2工作在无分频模式 MOV T2H,#0FFH ;设置BRT定时器的初始值MOV T2L,#0CCH MOV TH0,#139 ;设置T0定时器的初始值 MOV TL0,#139 MOV TH1,#100 ;设置T1定时器的初始值 MOV TL1,#100 ORL INT_CL

25、KO,07H ;允许CLKOUT0、CLKOUT1、CLKOUT2时钟输出 SETB TR0 ;启动T0 SETB TR1 ;启动T1 ORL AUXR,#10H ;启动T2 SJMP $ (2)C51参考程序includesfr INT_CLKO = 0x8F;sfr AUXR = 0x8E;sfr T2H = 0XD6;sfr T2L = 0Xd7;main()(3)公众对规划实施所产生的环境影响的意见;TMOD = 0x22;AUXR = (AUXR|0x80); /T0工作在无分频模式(四)环境价值评价方法AUXR = (AUXR|0x40) ; /T1工作在无分频模式(3)旅行费用法AUXR = (AUXR|0x04) ; /T2工作在无分频模式T2H = 0xFF; /给T2、T0、T1定时器设置初值T2L = 0xCC;发现规划环境影响报告书质量存在重大问题的,审查时应当提出对环境影响报告书进行修改并重新审查的意见。TH0 = 139;环境影响经济损益分析一般按以下四个步骤进行:TL0 = 139;TH1 = 100;TL1 = 100;INT_CLKO (WAKE_CLKO|0x07); /允许T0、T1、T2输出时钟信号4.选择评价方法TR0 = 1; /启动T01.建设项目环境影响评价文件的报批TR1 =

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1