- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                采用单片机内部定时器0计时,定时器1对外部脉冲计数
                      定时器/计数器中断实验
一、实验目的
1. 学习单片机内部定时计数器的使用和编程方法。
2. 进一步掌握中断处理程序的编程方法。
二、实验内容
1. 用cpu内部定时器T0中断方式计时,产生周期为2s,占空比为80%的脉冲波形,显示在P1.0口。
2. 用cpu内部计数器T1,按计数模式工作,对P1.0口输出的脉冲进行计数,并显示在P2口。
三、实验说明
编写程序需要注意的问题是:
1.系统晶振为6MHz,定时器初始化设置及中断初始化设置。
2、定时时间较长,需采用何种方式处理。
2.注意显示计数溢出时,该如何处理。
四、硬件设计
利用以下元件:AT89C52、RESPACK-8(200欧)、共极数码管7SEG-COM-
仿真图:
源程序:
		
		#includereg52.h
#define uchar unsigned char
#define uint unsigned int
uchar total = 40;	   //2000ms = 50ms*40
uchar part = 32;	   //高电平 占空比80%
uchar time;			   //定时器0计数
uchar count;		   //定时器1计数
sbit P1_0 = P1^0;	   //脉冲端口
uchar code leddata[]={ 
 
                0x3F,  //0
                0x06,  //1
                0x5B,  //2
                0x4F,  //3
                0x66,  //4
                0x6D,  //5
                0x7D,  //6
                0x07,  //7
                0x7F,  //8
                0x6F,  //9
                         };	   //共阴极数码管
void delay(uint z)
{
	uint x,y;
	for(x=z;x0;x--)
		for(y=114;y0;y--);	   //延迟1ms
}
void main()
{
	P0 = leddata[0]; 			//P0初始化
	TMOD = 0x61;				//定时器0计时 模式1
								//定时器1计数 模式2
	TH0 = (65536-25000)/256;
	TL0 = (65536-25000)%256;	//定时器0定时50ms
	TH1 = 256 - 1;
	TL1 = 256 - 1;				//定时器1对外部脉冲计数
	IP = 0x08;					//优先级
	EA = 1;						//开总中断
	ET0 = 1;					//开定时器0中断
	ET1 = 1;					//开定时器1中断	
	TR1 = 1;					
	TR0 = 1;
	while(1);
}
void in_in0() interrupt 1		//定时器0中断程序
{
	TH0 = (65536-25000)/256;	//重装初值
	TL0 = (65536-25000)%256;
	time++;
	if(time == part)
	P1_0 = 0;					//低电平
	else if(time == total)
	{
		time = 0;
		P1_0 = 1;				//高电平
	}		
}
void in_it1() interrupt 3		//定时器1中断程序
{
	count++;
	P0 = leddata[count];		//计数显示
	delay(5);
	if(count  9)
	{
		count = 0;
		P0 = leddata[0];
	}
}
                您可能关注的文档
最近下载
- 基于隐私保护的社会性别劳动分工信息共享底层协议与算法实现.pdf VIP
 - 根据多波束水深数据估算人工鱼礁空方量的方法.pdf VIP
 - 如何理解“作风建设永远在路上,永远没有休止符”?我们应如何加强作风建设? (3) .doc VIP
 - 2025年咨询工程师环保项目现金流量表的编制与环境效益量化专题试卷及解析.pdf VIP
 - 联通华盛终端连锁化运营项目-销售管理培训.pdf VIP
 - 临时用电验收要点:国标GB50194-2014.pdf VIP
 - 综合交通运输体系规划编制技术导则.pdf
 - 2025至2030中国铝合金压铸件行业投资策略及应用需求潜力研究报告.docx VIP
 - 医院重大事件请示报告制度.docx VIP
 - 金风25MW机组运行维护手册.pdf VIP
 
原创力文档
                        

文档评论(0)