试编写程序,采用单片机定时器T0工作方式0下,从P1.0输出周期为3ms的方波信号,已知单片机的晶振为12MHZ

不是P1.0,是P2.1
2024-12-26 03:37:17
推荐回答(4个)
回答1:

#include

#define uchar unsigned char

sbit OUT=P2^1;

void InitTimer0( )

{

TMOD = 0x01;

TH0 = (65536-1500)/256;

TL0= (65536-1500)%256; //1.5ms中断一次

EA = 1;

ET0 = 1;

TR0 = 1;

}

void main( )

{

InitTimer0();

while(1);

}

void Timer1Interrupt( ) interrupt 1

{

TH1 = (65536-1500)/256;

TL1 = (65536-1500)%256;

OUT= !OUT;

}

硬件特征

(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。

(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。

(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。

(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。

以上内容参考:百度百科-单片机

回答2:

#include
#define uchar unsigned char
sbit OUT=P2^1;
void InitTimer0( )
{
TMOD = 0x01;
TH0 = (65536-1500)/256;
TL0= (65536-1500)%256; //1.5ms中断一次
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main( )
{
InitTimer0();
while(1);
}
void Timer1Interrupt( ) interrupt 1
{
TH1 = (65536-1500)/256;
TL1 = (65536-1500)%256;
OUT= !OUT;
}

回答3:

1计算时间常数:
定时时间=方波周期/2=3毫秒/2=1.5毫秒=1500微秒
工作在方式可以选择方式0 为13位的定时器 选择定时器T0定时 已知单片机的晶振为12MHZ

定时时间 t=(2的13次方-X)12/(12×1000000)=(8192-x)×1微秒

X=8192-1500=1A24H
2 参考程序
#include
#define uchar unsigned char
sbit OUT=P2^1;
void InitTimer0( )
{
TH0 = (8192-1500)/256;
TL0= (8192-1500)%256; //1.5ms中断一次
OUT= !OUT;
}
void main( )
{
TMOD = 0x01;
TH0 = (8192-1500)/256;
TL0= (8192-1500)%256; //1.5ms中断一次
EA = 1;
ET0 = 1;
TR0 = 1;
while(1);
}

回答4:

不给你程序,这么简单的,自己解决吧。