单片机实验之定时器计数器应用实验二.docx
《单片机实验之定时器计数器应用实验二.docx》由会员分享,可在线阅读,更多相关《单片机实验之定时器计数器应用实验二.docx(9页珍藏版)》请在冰豆网上搜索。
单片机实验之定时器计数器应用实验二
一、实验目的
1、掌握定时器/计数器计数功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、设计要求
1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P1.0口线上接示波器观察波形。
2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P1.0口线上接示波器观察波形。
三、电路原理图
6、实验总结
通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。
七、思考题
1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P1.1口线上接示波器观察波形。
答:
程序见程序清单。
4、实验程序流程框图和程序清单。
1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态。
汇编程序:
ORG 0000H
START:
LJMP MAIN
ORG 0100H
MAIN:
MOV IE, #00H
MOV TMOD, #60H
MOV TH1, #9CH
MOV TL1, #9CH
SETB TR1
LOOP:
JNB TF1, LOOP
CLR TF1
CPL P1.0
AJMP LOOP
END
C语言程序:
#include
sbit Y=P1^0;
voidmain()
{
EA=0;
ET1=0;
TMOD=0x60;
TH1=0x9C;
TL1=0x9C;
while
(1)
{
TR1=1;
while(!
TF1);
TF1=0;
Y=!
Y;
}
}
2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态。
汇编程序:
ORG 0000H
START:
LJMP MAIN
ORG 001BH
LJMP TTC1
ORG 0100H
MAIN:
MOV TMOD, #60H
MOV TH1, #38H
MOV TL1, #38H
SETB EA
SETB ET1
SETB TR1
HERE:
LJMP HERE
ORG 0200H
TTC1:
CPL P1.0
RETI
END
C语言程序:
#include
sbit Y=P1^0;
voidmain()
{
EA=1;
ET1=1;
TMOD=0x60;
TH1=0x38;
TL1=0x38;
TR1=1;
while
(1);
}
voidTTC1()interrupt3
{
Y=!
Y;
}
3、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对P1.0口线上波形进行计数,满50个,则取反P1.1口线状态。
汇编程序:
ORG 0000H
START:
LJMP MAIN
ORG 001BH
LJMP TTC1
ORG 0100H
MAIN:
MOV TMOD,#62H
MOV TH1, #0CEH
MOV TL1, #0CEH
MOV TH0, #9CH
MOV TL0, #9CH
MOV IE, #88H
SETB TR0
SETB TR1
LOOP1:
JNB TF0, LOOP1
CPL P1.0
CLR TF0
LJMP LOOP1
TTC1:
CPL P1.1
RETI
END
C语言程序:
#include
sbit Y0=P1^0;
sbit Y1=P1^1;
void main()
{
TMOD=0x62;
TH0=0x9C;
TL0=0x9C;
TH1=0xCE;
TL1=0xCE;
EA =1;
ET1=1;
ET0=0;
TCON=0x50;
while
(1)
{
while(!
TF0);
TF0=0;
Y0=!
Y0;
}
}
voidTTC1()interrupt3
{
Y1=!
Y1;
}
5、实验结果(波形图)。