定时器计数器应用实验二 下载本文

内容发布更新时间 : 2024/5/22 9:48:38星期一 下面是文章的全部内容请认真阅读。

一、实验目的和要求

1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理

1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波 。

2、利用单片机的定时器/计数器以中断方式计数外

部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波 。 三、设计要求

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

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

六、编程

汇编

ORG 0000H START: LJMP MAIN ORG 0100H MAIN: CLR EA CLR ET1 MOV TMOD, #20H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CPL P1.0 CLR TF1 LJMP LOOP END C语言 #include \ sbit P10=P1^0; void main() { TMOD=0x20; TR1=1; for(;;) { TH1=0X9C; TL1=0X9C; do { }

while(!TF1); P10=!P10; TF1=0;

} } 汇编

ORG 0000H

START: LJMP MAIN ORG 000BH LJMP TTC0 ORG 0100H

MAIN: MOV TMOD, #06H MOV TH0, #38H MOV TL0, #38H SETB EA SETB ET0 SETB TR0

HERE: LJMP HERE TTC0: CPL P1.0 RETI END

C语言

#include sbit P10=P1^0; void main() {

EA=1; ET1=1;

TMOD=0x60; TH1=0x38; TL1=0x38; TR1=1;

while(1); }

void TTC1() interrupt 3 {

P10=!P10; }

汇编 ORG 0000H START: LJMP MAIN ORG 001BH