资源描述
一、实验目的和要求
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 "reg52.h"
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 <reg52.h>
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
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 <reg52.h>
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;
}
七、实验结果
展开阅读全文