540 likes | 681 Views
第 11 章 Intel51 微计算机定时器 / 计数器应用. 定时器 T/ 计数器 C 接口的工作原理 定时器 T/ 计数器 C 接口应用设计. 定时器 T/ 计数器 C 接口的工作原理. 定时器 T/ 计数器 C 逻辑电路 定时器 T/ 计数器 C 接口可操作寄存器的定义 定时器 T/ 计数器 C 接口可编程寄存器的编址 计数器的 4 种工作模式 CPU 对定时器 T/ 计数器 C 接口的管理. 定时器 T/ 计数器 C 逻辑电路. 计数器及具体控制电路图. T/C 接口内部控制逻辑电路真值表. T/C 接口可操作寄存器的定义.
E N D
第11章 Intel51微计算机定时器/计数器应用 定时器T/计数器C接口的工作原理 定时器T/计数器C接口应用设计
定时器T/计数器C接口的工作原理 定时器T/计数器C逻辑电路 定时器T/计数器C接口可操作寄存器的定义 定时器T/计数器C接口可编程寄存器的编址 计数器的4种工作模式 CPU对定时器T/计数器C接口的管理
T/C接口可操作寄存器的定义 定时器/计数器控制寄存器TCON TRi(i=0、1)=1 开始计数 TF i(i=0、1)=1 溢出
T/C接口可操作寄存器的定义 计数器工作模式管理寄存器TMOD GATE = 1 由外中断输入控制启动 C/T = 1 计数 M1、M0 工作模式
T/C接口可操作寄存器的定义 计数器TH和TL的读/写操作
CPU对T/C接口的管理 1.定时器/计数器独立应用 (1)设置模式寄存器TMOD (2)设置TL和TH,TL=00H,TH=00H (3)启动计数 (4)在达到规定的时间后停止计数器计数 2.定时器/计数器与中断连动应用 (1)设置模式寄存器TMOD (2)设置计数器TL和TH的计数初始值 (3)开放中断 (4)启动计数
定时器T/计数器C接口应用设计 计数器应用设计 定时器应用设计
计数器应用设计 1.在确定的时间间隔中记录外部输入脉冲个数
计数器应用设计 TMOD_W EQU 00001101B ;GATE0 = 1 计数器T0启动受控于INT0 ;C/T0 = 1 计数方式 ;M1 = 0 ,M0 = 1 计数器T0工作在模式1 I_COUNT EQU 00H C_LED EQU P2 DEL_LEN EQU 10H ORG 0000H LJMP START ORG 0030H START: LCALL INIT
计数器应用设计 MLOOP: MOV A ,#10H LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY MOV A ,TH0 PUSH A SWAP A ANL A ,#0FH LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY POP A ANL A ,#0FH LCALL DISP
计数器应用设计 MOV R5 ,#DEL_LEN LCALL DELAY MOV A ,TL0 PUSH A SWAP A ANL A ,#0FH LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY POP A ANL A ,#0FH LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY SJMP MLOOP
计数器应用设计 INIT: MOV TMOD ,#TMOD_W MOV TH0 ,#I_COUNT MOV TL0 ,#I_COUNT SETB TR0 RET DELAY: MOV R7 ,#00H MOV R6 ,#00H LOOP: DJNZ R7 ,LOOP DJNZ R6 ,LOOP DJNZ R5 ,LOOP RET
计数器应用设计 DISP: MOV DPTR,#WTAB MOVC A ,@A+DPTR MOV C_LED ,A RET WTAB: DB 0C0H,0F9H,0A4H,0B0H DB 099H,092H,082H,0F8H DB 080H,090H,088H,083H DB 0C6H,0A1H,086H,08EH DB 07FH END
计数器应用设计 2.计数器与中断连动管理十字路口交通灯
计数器应用设计 TMOD_W EQU 00000101B ;GATE0 = 0 计数器T0启动只受控于TR0 ;C/T0 = 1 计数方式 ;M1 = 0 ,M0 = 1 计数器T0工作在模式1 I_TH0 EQU 0FFH I_TL0 EQU 0FEH A_LAMP EQU P2 SN_G EQU 10011001B EW_G EQU 01100110B DEL_LEN EQU 10H ORG 0000H LJMP START ORG 000BH LJMP T0_S ORG 0030H START: LCALL INIT MLOOP: MOV A_LAMP ,#SN_G SJMP MLOOP
计数器应用设计 INIT: MOV TMOD ,#TMOD_W MOV TH0 ,#I_TH0 MOV TL0 ,#I_TL0 SETB ET0 SETB EA SETB TR0 RET DELAY: MOV R7 ,#00H MOV R6 ,#00H LOOP: DJNZ R7 ,LOOP DJNZ R6 ,LOOP DJNZ R5 ,LOOP RET
计数器应用设计 T0_S: CLR EA MOV A_LAMP ,#EW_G MOV R5 ,#DEL_LEN LCALL DELAY MOV TH0 ,#I_TH0 MOV TL0 ,#I_TL0 SETB EA RETI END
定时器应用设计 1.测量外部正脉冲的宽度
定时器应用设计 TMOD_W EQU 00001001B ;GATE0 = 1 计数器T0启动受控于INT0 ;C/T0 = 0 定时方式 ;M1 = 0 ,M0 = 1 计数器T0工作在模式1 I_COUNT EQU 00H PULSE BIT P3.2 C_LED EQU P2 DEL_LEN EQU 10H ORG 0000H LJMP START ORG 0030H START: LCALL INIT WAIT1: JNB PULSE ,WAIT1 WAIT2: JB PULSE ,WAIT2
定时器应用设计 MOV A ,TH0 PUSH A SWAP A ANL A ,#0FH LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY POP A ANL A ,#0FH LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY MOV A ,TL0 PUSH A SWAP A ANL A ,#0FH LCALL DISP
定时器应用设计 MOV R5 ,#DEL_LEN LCALL DELAY POP A ANL A ,#0FH LCALL DISP MOV R5 ,#DEL_LEN LCALL DELAY SJMP START INIT: MOV TMOD ,#TMOD_W MOV TH0 ,#I_COUNT MOV TL0 ,#I_COUNT SETB TR0 RET
定时器应用设计 DELAY: MOV R7 ,#00H MOV R6 ,#00H LOOP: DJNZ R7 ,LOOP DJNZ R6 ,LOOP DJNZ R5 ,LOOP RET DISP: MOV DPTR,#WTAB MOVC A ,@A+DPTR MOV C_LED ,A RET WTAB: DB 0C0H,0F9H,0A4H,0B0H DB 099H,092H,082H,0F8H DB 080H,090H,088H,083H DB 0C6H,0A1H,086H,08EH END
定时器应用设计 CPU执行测量脉冲宽度程序的过程
定时器应用设计 2.定时器替代软件延时程序
定时器应用设计 TMOD_W EQU 00000001B ;GATE0 = 0 计数器T0启动只受控于TR0 ;C/T0 = 0 定时方式 ;M1 = 0 ,M0 = 1 计数器T0工作在模式1 I_TH0 EQU 03CH I_TL0 EQU 0B0H A_TIME EQU 40 A_LAMP EQU P2 EW_G EQU 01100110B ORG 0000H LJMP START ORG 000BH LJMP T0_S ORG 0030H START: LCALL INIT MLOOP: SJMP MLOOP
定时器应用设计 INIT: MOV A_LAMP ,#EW_G MOV R0 ,#0 MOV TMOD ,#TMOD_W MOV TH0 ,#I_TH0 MOV TL0 ,#I_TL0 SETB ET0 SETB EA SETB TR0 RET
定时器应用设计 T0_S: INC R0 CJNE R0 ,#A_TIME ,EXIT MOV R0 ,#0 XRL A_LAMP ,#0FFH EXIT: MOV TH0 ,#I_TH0 MOV TL0 ,#I_TL0 RETI END
定时器应用设计 fosc=12MHz (TH)(TL) = 216 –50000s 12MHz / 12 = 15536 =(3C)(B0) 完成40次定时 =延时2秒
定时器应用设计 3.演奏音乐程序设计
2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 2.5ms 用定时器产生音调 产生200HZ的音频信号 200HZ音频的变化周期为1/200秒=5ms 当P1.0的高电平或低电平的持续时间为2.5ms时 发出200HZ的音调
乐曲中的数据 音符:对应确定的频率 音符的发音——音频脉冲,算出音频的周期(1/频率),周期除以2(半周期)定时器计时半周期时间,当计时到将输出脉冲的I/O(P1.0)反相 发声持续时间——控制一个音符输出的时间 节拍——的延时是由曲调决定的,相对固定
乐曲程序设计 每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表(DPTR)程序依次取出,产生音符并控制节奏,实现演奏效果。 结束符和体止符分别用代码00H和FFH表示,若查表结果为00H,表示停止乐曲;若查表结果为FFH,产生相应的停顿(休止符)效果。 一个定时器控制音符,一个定时器控制节拍。
乐曲程序 Speaker BIT P1.0 ;输出脉冲 Index EQU 70H ;存放演奏音符数据(与DPTR结合)指针(索引值) TINT_C EQU 71H ;存放节拍定时数值 Note_L EQU 72H ;存放音符数据 Note_H EQU 73H IC_TMP EQU 74H ;临时中断计数器值 N_TEMP EQU 75H T10msH EQU 0EFH ;10毫秒延时参数(节拍定时) T10msL EQU 0D8H
乐曲程序 ORG 0H LJMP START ORG 000BH ;T0 中断入口地址 LJMP Time0 ;音符输出 ORG 001BH ;T1 中断入口地址 LJMP Time1 ;节拍定时 ORG 30H START: MOV Index,#0H MOV TMOD,#11H ;设定时器0和1为16 位定时 MOV TH1,#T10msH MOV TL1,#T10msL SETB ET0 SETB ET1
乐曲程序 GETD: CLR EA ;关中断 MOV IC_TMP,#0H ;临时中断计数器清零 MOV A,Index ;取索引值 MOV DPTR,#N_DEL ;取定时节拍数据 MOVC A,@A+DPTR JZ START MOV TINT_C,A ;存定时节拍数据 MOV A,Index MOV DPTR,#NOTET ;取音符数据 MOVC A,@A+DPTR CJNE A,#0FFH,OUTSPK SETB Speaker CLR TR0 JMP LOOP