C51(AT89C52)同济大学出版社《单片机原理及应用》(魏鸿磊)第六章第11题答案

原题题目:

11.设系统时钟频率为12MHz,利用定时器T1中断,控制P2.1引脚和P2.2引脚分别输出频率为1000Hz和10Hz的方波

解:由题意,时钟频率为12MHz即一个机器周期为1us,需要使用定时器T1,这里选用方式1

1000Hz即一个方波周期T1=0.001s(1ms),半个周期为0.5ms=500us

10Hz即一个方波周期T2=0.1s(100ms),半个周期为50ms=50000us

取最小时间单位,那么TH1和TL1的值分别为:

TH1=(65536-500)/256

TL1=(65536-500)%256

则有如下程序:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit MHz=P2^1;
sbit TenHz=P2^2;
uint counter=0;
void main()
{
	TMOD=0x10;//定时器T1做16位计数器使用
	TH1=(65536-500)/256;//置初值
	TL1=(65536-500)%256;
	EA=1;//开放中断
	ET1=1;//允许T1中断
	TR1=1;//启动T1,开始计数
	MHz=TenHz=1;
	while(1);
}
void T1_inter()interrupt 3
{
	counter++;
	MHz=~MHz;
	if(counter%99==0)
	{
		TenHz=~TenHz;
		counter=0;	
	}
	TH1=(65536-500)/256;//重装初值
	TL1=(65536-500)%256;
}

个人解题思路,且已在个人的开发板上验证结果,不喜勿喷。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值