
一.实验目的与要求
本次实验的目的是通过实际应用题目练习,掌握单片机定时/计数器及中断的工作原理及应用方法,进一步加深对课堂上所讲理论的理解。
实验开始前要先认真阅读实验内容,了解题目的用途意义和所采用的电路及程序。反对无目的的盲目做实验的做法。
二、实验设备
Dais单片机仿真实验仪一台,计算机一台,导线若干条。
三、实验原理及线路
1、LED灯闪亮控制 把定时/计数器T0设定为内部中断定时器方式0,控制P1.0口输出周期为10ms的方波 。P1.0口接发光二极管(或用示波器观察波形),使其按周期性亮、灭显示间隔时间。电路接线如图1所示。
图1定时器T0设为定时方式0实验电路
机器晶振频率为6MHZ,试确定定时/计数器初值。根据T0工作于定时器方式0的要求,确定工作方式字TMOD的内容。
1>、定时器T0时间常数确定:
机器周期为:TP=12/晶振频率=12/6MHZ= 微秒
时间常数为:TC=T/TP=
计数初值为:X=
则其高8位为 H; 低5位为 H; 故TH0= H, TL0= H
2>、确定TMOD方式字:
| GATE1 | C/T1 | M1 | M0 | GATE0 | C/T0 | M1 | M0 |
若要产生周期为10ms的方波,只要每5ms将信号的幅值从0变到1或从1变到0即可,可采用取反指令CPL来实现。程序流程如图2所示。参考程序流程图图2编写相应程序。
N
图2 程序流程图
2、把定时/计数器T0设定为计数方式2,采用的电路接线如图3所示,用查讯方式,当SP微动开关按下5次后(即计数5个),使P1.0所接的发光二极管亮、灭一次(有时出现计数不准是因为机械开关抖动所造成)。修改计数次数再执行程序看结果。
图3 计数器接线图
3、把定时/计数器T1设定为定时方式1,采用电路接线如图4所示,P1口接八个发光二极管,从低位向高依次循环点亮。可根据图3流程图编程序。
图3 定时方式2流程图
图4 定时器1接线图
四、思考题(在实验报告中回答)
1、T0定时方式0工作时,加一计数器是多少位计数?
2、说明TMOD方式字各位的功能?
3、定时/计数器方式2是如何工作的?何为自动装入?
4、51单片有几个定时器/计数器,各是多少位?
五、参考程序
1 . LED灯闪亮控制(T0工作于内部中断的定时方器式0程序)
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT
MAIN:MOV TMOD,#00H
MOV R7,#0AH
MOV TH0,#0E0H ;0E0H为随意值
MOV TL0,#18H
SETB EA ; CPU开中断;
SETB ET0 ; 允许中断;
SETB TR0
SJMP $
INT: DJNZ R7,LOOP
CPL P1.0
MOV R7,#0AH
LOOP: MOV TH0,#0E0H ; 重新开中断;
MOV TL0,#18H
RETI
END
2、T0工作于计数方式0状态程序
ORG 0700H
MOV TMOD, #06H
MOV TH0, #0FBH
MOV TL0, #0FBH
MOV IE, #00H
SETB TR0
LOP1: JBC TF0,LOP2
SJMP LOP1
LOP2: CPL P1.0
SJMP LOP1
END
3、T1工作于定时器方式1状态
ORG 0600H
MOV P1,#0FEH ;P1口置初值
MOV TMOD, #10H ;设定时器1工作方式字
LOP1: MOV R7,#05H
LOP2: MOV TH1,#3CH
MOV TL1,#0B0H
MOV IE,#00H ;禁止中断
SETB TR1 ;启动定时T1工作
LOP3: JBC TF1,LOP4 ;判T1有无溢出,有则转,并清零; SJMP LOP3 ;无则等待。
LOP4: DJNZ R7,LOP2
MOV A,P1
RL A ;左移1位
MOV P1,A
SJMP LOP1
END
