单片机试验之定时器计数器应用试验二

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求

1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、电路原理图

六、实验总结

通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。

七、思考题

1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。

答:程序见程序清单。

. . . .

四、实验程序流程框图和程序清单。

1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计

满100个脉冲,则取反P1.0口线状态。

开始汇编程序开始 ORG 0000H

START: LJMP MAIN TMO初始化 ORG 0100H

初始TMOD 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

语言程序:计数溢出#include 等待中断sbit

Y=P1^0;

Y void main()

清计数溢出标志{

EA=0;

ET1=0;

口线取反P1.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;

void main()

{

EA=1;

ET1=1;

TMOD=0x60;

TH1=0x38;

TL1=0x38;

开始 TR1=1;

while(1);

}

初始TMOD void TTC1() interrupt 3 {

Y=!Y;

计数初值初始化}

开始口线,在P1.0 3、利用定时器0微秒的连续方上产生周期为200口

线上 P1.0波,利用定时器1,对中断初始化输出取反个,则取反50波形

进行计数,满口线状态。P1.1 汇编程序:中断返回0启动定时器

ORG 0000H START: LJMP MAIN 001BH ORG TTC1 LJMP ORG 0100H

1启动计数器 MAIN: MOV TMOD, #62H MOV TH1, #0CEH MOV

TL1, #0CEH MOV TH0, #9CH N MOV TL0, #9CH 定时时间到

MOV IE, #88H SETB TR0 Y SETB TR1

LOOP1: JNB TF0, LOOP1 清计数溢出标志 CPL P1.0

. . . .

口线取反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; } }

void TTC1()interrupt 3 {

Y1=!Y1; }

五、实验结果(波形图)。

相关文档
最新文档