




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、S 12 晶体振荡器 外部计数源 输入引脚 控制逻辑 TH(8) TL(8) TMOD TCON A B 图 5-1 定时/计数器结构框图 l例1、设单片机晶振频率为6MHZ,运用定时器1以方式0产生周期为500us的等宽正方波延续脉冲,并由P1.0输出,以查询方式完成。解:1、计算计数初值要产生500us的等宽正方波脉冲,只需在P1.0端以250us为周期交替输出高低电平即可实现,为此定时时间为250us。运用6MHZ晶振,那么一个机器周期为2us,方式0为13位计数构造,设初值为X,那么:213-X*12*1/6 =250得:X=8067,二进制数表示为:11111100 00011,十六
2、进制表示为,高8位为:0FCH,低5位为:03H。其中高8位装入TH1,即TH1 = 0FCH,低5位装入TL1, 即TL1 = 03H。2、TMOD存放器初始化 为把定时器/计数器设定为方式0,那么M1M0= 00 ;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运转控制,那么GATE =0。定时器/计数器T0不用,有关位设定为0,因此TMOD存放器初始化为00H。3、由定时器控制器TCON中的TR1位控制定时的启动和停顿,TR1=1启动 ,TR1=0停顿。4、运用查询就制止中断 IE=00Hl5、程序设计:l MOV TMOD ,#00H ; 设置T1为任务方式0l MOV TH
3、1 ,#0FCH ;设置计数初值l MOV TL1,#03Hl MOV IE ,#00H ;制止中断lSETB TR1 ;启动定时lLOOP: JBC TF1,LOOP1 ;查询计数溢出l AJMP LOOPlLOOP1:MOV TH1,#0FCH ;重新设置计数初值l MOV TL1,#03Hl CPL P1.0 ;输出取反l AJMP LOOP ;反复循环l例3、运用定时器0以任务方式2产生100us定时,在P1.0输出周期为200us的延续方波脉冲,知晶振频率fosc=6MHZ。解:1、计算计数初值 6MHZ晶振下,一个机器周期为2us,以TH0作重装载的预置存放器,TL0作8位计数器,
4、那么: 28-X*12*1/6=100 ,得X=206=11001110B=0CEH 把0CEH分别装入TH0和TL0中。2、TMOD初始化 为把定时器/计数器设定为方式2,那么M1M0=10;为实现定时功能,应使C/T=0;为实现定时器/计数器0的运转控制,那么GATE=0。定时器/计数器T1不用,有关位设定为0,因此TMOD存放器初始化为0000 0010,即:02H3、由定时器控制器TCON中的TR0位控制定时的启动和停顿,TR0=1启动 ,TR0=0停顿。4、运用中断方式,应开中断 EA 位和ET0位置“1l5、程序设计查询方式l MOV TMOD ,#02H ; 设置T0为任务方式2
5、l MOV TH0 ,#0CEH ;设置计数初值l MOV TL0,#0CEHl MOV IE ,#00H ;制止中断l SETB TR0 ;启动定时l LOOP: JBC TF0,LOOP1 ;查询计数溢出l AJMP LOOPlLOOP1:CPL P1.0 ;输出取反l AJMP LOOP ;反复循环l5、程序设计中断方式l MOV TMOD ,#02H ; 设置T0为任务方式2l MOV TH0 ,#0CEH ;设置计数初值l MOV TL0,#0CEHl SETB EA ;开中断l SETB ET0 ; 定时器1允许中断lLOOP: SETB TR0 ;启动定时lHERE: SJMP
6、$ ; 等待中断l AJMP LOOPl中断效力程序:l CPL P1.0 ;输出取反l RETI ;中断前往l设某用户系统中已运用了两个外部中断源,并置定时器T1任务在方式2,作串行口波特率发生器用。现要求再添加一个外部中断源,并由P1.0输出一个5KHz的方波。Fosc = 12MHz。l分析:l目的:1) 添加一个外部中断;l 2) 使P1.0输出一个方波。l条件:1两个外部中断源已被运用l 2定时器T1已用于串行口波特率发生器l因此:可利用定时/计数器T0,使之任务在方式3,l 1利用TL0扩展外部中断源l 2利用TH0作定时器运用,输出方波l l 设置初值:l 1) TL0 = 0F
7、FHl 2) 由于输出方波f = 5kHz,故方波周期为200us,用TH0产生100us的定时,故TH0的初值X = 256 (定时时间/机器周期)l = 256 - (100us*晶振频率/12l = 156l设定T0任务方式,TMOD,TCON.l程序:l MOV TMOD,#27H ;T0:方式3,计数方式l ;T1:方式2,定时方式l MOV TL0,#0FFH ;一旦加1,马上溢出,恳求中断l MOV TH0,#156 ;TH0初值l MOV TH1,#data ;根据波特率要求而定l MOV TL1, #datal MOV TCON,#55H ;01010101l MOV IE,
8、#9FH ;开放全部中断lTL0INT: MOV TL0,#0FFH ;TL0重新赋值l .l RETIlTH0INT: MOV TH0,#156 ;TH0重新赋值l CPL P1.0l RETI l低频信号发生器驱动程序l设计一个控制程序,使89c51的P1口输出8路低频方波脉冲,频率分别为100,50,25,20,10,5,2,1Hz。1. 计算定时器初值 运用T0,产生5ms的定时,假设晶振选12MHz,那么5ms相当于5000个机器周期,T0应任务在方式1,初值x为: x= 65536-5000=60536,用十六进制表示,那么x=0EC78H。 (留意TH,TL分开赋值-由于T0/T
9、1都是16位)2 . 设立8个计数器 对应于P1.0P1.7,设立8个计数器,初值分别为1,2,4,5,10,20,50,100,由T0的溢出中断效力程序对它们减“1计数,当减为0时恢复初值,并使相应的口引脚改动形状,这样就可以使P1口输出所要求的方波。l程序:l ORG 0lSTART: AJMP MAINl ORG 0BHlPTP0: MOV TL0,#78H ;T0中断效力程序l MOV TH0,#0ECHl CPL P1.0l DJNZ 31H, PF01 ;对各路时间计数器进展减1计数l MOV 31H,#2 ;计数器减为1,恢复计数初值l CPL P1.1 ;输出取反lPF01:
10、DJNZ 32H, PF02l MOV 32H, #4l CPL P1.2lPF02: DJNZ 33H, PF03l MOV 33H, #5l CPL P1.3PF03: DJNZ 34H, PF04 MOV 34H, #10 CPL P1.4PF04: DJNZ 35H, PF05 MOV 35H, #20 CPL P1.5PF05: DJNZ 36H, PF06 MOV 36H, #50 CPL P1.6PF06: DJNZ 37H, PF07 MOV 37H, #100 CPL P1.7PF07: RETIMAIN: MOV SP, #70H ;主程序栈指针初始化 MOV 31H, #
11、2 ;各路计数器置初值 MOV 32H, #4 MOV 33H, #5 MOV 34H, #10 MOV 35H, #20 MOV 36H, #50 MOV 37H, #100 MOV TMOD, #1 ;GATE = 0, C/T=0, M1M0 = 01 MOV TL0, #78H ;初值T0 MOV TH0, #0ECH MOV IE, #82H ;允许T0中断 SETB TR0 ;允许T0计数HERE: SJMP HERE ;以踏步表示CPU可以处置其他任务例例 利用定时器利用定时器T1的方式的方式2对外部信号计对外部信号计数,要求每计满数,要求每计满100次对次对P1.0端取反。端取
12、反。解:解:1计算计数初值计算计数初值X 100=28-X X=256-100=156=9CH 2方式字方式字 TMOD=0110*B=60H 3程序清单程序清单 ;用中断方式;用中断方式 ORG 0000HMAIN:MOV TMOD,#60H MOV TL1,#156 MOV TH1,#156 MOV IE,#88H SETB TR1 SJMP $ ORG 001BH CPL P1.0 RETI 例例 脉冲参数丈量脉冲参数丈量GATE功能的运用。功能的运用。 脉冲高电平计数长度值存于脉冲高电平计数长度值存于21H、20H中,中, 脉冲低电平长度存于脉冲低电平长度存于23H、22H中。中。 电
13、路衔接如以下图所示。电路衔接如以下图所示。解:解: 复习复习GATE的用法:的用法: GATE = 0时,时,TRi = 1,即可启动,即可启动Ti定时定时 / 计数计数 GATE = 1时,时,TRi = 1,且,且 =1,才启动定时,才启动定时 / 计数。计数。INTi89C510INT1INTP3.2P3.31被测信号被测信号21a3T0计数计数T1计数计数 ORG 0000H LJMP MAIN ORG 2000HMAIN:MOV TMOD,#99H ;T0、T1均任务在定时,均任务在定时, ;方式;方式1,GATE=1 MOV A,#00H ;T0、T1赋计数初值赋计数初值00H,
14、; 定时最长时间为定时最长时间为0000 65536 MOV TL0,A MOV TH0,A MOV TL1,A MOV TH1,A TEST0: JB P3.2,TEST0 ;检测能否到;检测能否到a点点 SETB TR0 ;到;到a点,点,TR0 = 1,做好取计时值预备。,做好取计时值预备。TEST1: JNB P3.2,TEST1 ;检测能否到;检测能否到1点点 SETB TR1 ;到;到1点点T0计时;计时;TR1 = 1,做好,做好T1计时预备。计时预备。TEST2:JB P3.2,TEST2 ;检测能否到;检测能否到2点点 CLR TR0 ;到;到2点,停顿点,停顿T0计时,计时
15、,T1开场计时。开场计时。 MOV 20H,TH0 ;保管;保管T0计时结果计时结果 MOV 21H,TL0TEST3:JB P3.3,TEST3 ;检测能否到;检测能否到3点点 CLR TR1 ;到;到3点,停顿点,停顿T1计数计数 MOV 22H,TH1 ;保管;保管T1计数结果计数结果 MOV 23H,TL1 LCALL DISP SJMP l80C51可以随时读写计数存放器可以随时读写计数存放器TLx和和THx (x为为0或或1) ,用于实时显示计数值等。,用于实时显示计数值等。l方法是:先读方法是:先读THx,后读,后读TLx,再重读,再重读THx,假设两次读得的,假设两次读得的TH
16、x值是一样的,值是一样的,那么可以确定读入的数据是正确的;假那么可以确定读入的数据是正确的;假设两次读得的设两次读得的THx值不一致,那么必需值不一致,那么必需重读。重读。 RDTIME:MOV A,TH0;读;读TH0MOV R0,TL0;读;读TL0并存入并存入R0CJNE A,TH0,RDTIME ;再读;再读TH0,与上次,与上次;读入的;读入的TH0比较,假设不等,重比较,假设不等,重读读MOV R1,A;存;存TH0在在R1中中RET1实时时钟实现的根本思想实时时钟实现的根本思想如何获得如何获得1 1秒的定时,可把定时时间定为秒的定时,可把定时时间定为100ms100ms,采用中断
17、方式,采用中断方式进展溢出次数的累计,计满进展溢出次数的累计,计满1010次,即得到秒计时。次,即得到秒计时。片内片内RAMRAM中规定中规定3 3个单元作为秒、分、时单元,详细安排如下:个单元作为秒、分、时单元,详细安排如下: 32H 32H:“秒单元秒单元 ;31H31H:“分单元;分单元;30H30H:“时单元时单元从秒到分,从分到时是经过软件累加并进展比较的方法来实现从秒到分,从分到时是经过软件累加并进展比较的方法来实现的。的。 时钟时钟 就是以秒、分、时为单位进展计时。用定时器与中断的结就是以秒、分、时为单位进展计时。用定时器与中断的结合运用。合运用。假定运用定时器T0,以任务方式1
18、进展100ms的定时。如fosc=6MHz,那么计数初值X为: (216X)12/(6 106 )=10010-3 s X=15536=3CB0H因此 : (TL0)=0B0H (TH0)=3CH 采用定时方式进展溢出次数的累计,计满10次即得到秒计时。 从秒到分和从分到时的计时是经过累计和数值比较实现的。 时钟显示即及显示缓冲区部分在这里略,可自行设计。 主程序MAIN的主要功能是进展定时器T1的初始化编程并启动T1,然后经过反复调用显示子程序,等待100ms定时中断的到来。其流程如 图所示。2程序流程及程序清单程序流程及程序清单设设T1为方式为方式1设中断次数设中断次数清计时单元清计时单元
19、开中断开中断启动启动T1调用显示子程序调用显示子程序等待定时中断等待定时中断 中断效力程序中断效力程序PITO的主要功能的主要功能进展计时操作。程序开场先判别计数溢出能否满了进展计时操作。程序开场先判别计数溢出能否满了10次,不满阐明还没到达最小计时单位次,不满阐明还没到达最小计时单位秒,中断秒,中断前往;如满前往;如满10次那么表示已到达最小计时单位次那么表示已到达最小计时单位秒,程序继续向下运转,进展计时操作。秒,程序继续向下运转,进展计时操作。 要求满要求满1秒那么秒那么“秒位秒位32H单元内容加单元内容加1,满,满60s那么那么“分位分位31H单元内容加单元内容加1,满,满60min那
20、么那么“时位时位30H单元内容加单元内容加1,满,满24h那么那么30H,31H,332H单元内容全部清单元内容全部清0。中断效力程序流程如以下。中断效力程序流程如以下图所示。图所示。维护现场赋计数初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢复现场前往入口入口NNNNYYYY图 中断效力程序流程图 源程序如下: ORG 0000H AJMP MAIN ; 上电,转向主程序 ORG 001BH ;T1的中断效力程序入口地址 AJMP SERVE ;转向中断效力程序 ORG 2000H ;主程序MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#10H ;设置T1任务于方式1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出兑摊位合同范本
- 别墅设计合同范例
- 个人门窗施工合同范本
- 乡村空房转让合同范本
- 第7课《敬业与乐业》教学设计 2024-2025学年统编版语文九年级上册
- 加盟金额写入合同范例
- 保本合同范本
- 切割加工项目合同范本
- 企业赞助活动合同范本
- 交技术合同范本
- 人力资源外包合同范本
- 2024年青岛职业技术学院高职单招语文历年参考题库含答案解析
- 第3课《列夫·托尔斯泰》课件-2024-2025学年统编版语文七年级下册
- TSDLPA 0001-2024 研究型病房建设和配置标准
- 《职业道德与法治》开学第一课(导言)(课件)-【中职专用】中职思想政治《职业道德与法治》高效课堂课件+教案(高教版2023·基础模块)
- (正式版)JBT 10437-2024 电线电缆用可交联聚乙烯绝缘料
- PI形式发票范文模板
- HP-DL380-Gen10-服务器用户手册
- 武汉市业主大会和业主委员会指导规则
- (完整)(公司诉讼和纠纷案件管理办法
- 《民法典之合同编》案例详细解读之合同内容PPT课件
评论
0/150
提交评论