单片机计数器实验二单片机计数器实验二.pdf

单片机计数器实验二单片机计数器实验二.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机计数器实验二单片机计数器实验二

杭州电子科技大学单片机技术与应用实验报告 第 一 页 共 五 页 单片机技术与应用 实验报告 实验名称: 定时器实验 班 级:学 号:姓 名: 吕琳涛 指导老师: 谷雨 2013年 5月 6日 杭州电子科技大学单片机技术与应用实验报告 第 二 页 共 五 页 1. 实验要求 由 8031 内部定时器 1,按方式 1 工作,即作为 16 位定时器使用 每 0.05 秒钟 T1 溢出中断一次。P1 口的 P1.0-P1.7 分别接八个发光 二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟 L0, L2 亮,第二秒钟 L1,L3 亮,第三秒钟 L4,L6 亮,第四秒钟 L5,L7 亮,第五秒 L0,L2,L4,L6 亮,第六秒钟 L1,L3,L5,L7 亮,第 七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L0,L2 亮,然后 L1,L3 亮......一直循环下去。 2. 实验目的 1.学习 8031 内部计数器的使用和编程方法。 2.进一步掌握中断处理程序的编程方法。 3. 程序说明: (1)说明程序基本结构,包括程序中各部分的功能。 主程序是对题目中八种情况的进行顺序上的调整与控制。作为程序中 的主心骨,对于计数器的工作方式进行了选取。我们选取了计数器的工作 方式 1,也就是 16 位的计数器。然后我们对 TL1,TH1 进行了赋初值。利 用 15535/256 和 15535%256 对其赋值。 对于八种情况的编写,我们用了 swith(case)语句,通过对 shijian 这个变量在时间上的累加对八种情况依次选取。 程序中对一秒钟的获取是通过中断来实现的,也就是说对于单片机的 溢出中断 50ms 我们进行 20 次的累加(我们用的是 c 语言 if循环语句)来 获取一秒钟。 至此,程序编写完成,放入软件中进行编译和下载。 杭州电子科技大学单片机技术与应用实验报告 第 三 页 共 五 页 2. 上机调试说明 将程序编写成功后,我们就上机进行调试。 上机调试中,难免遇到一些 c 语言的基本语法错误,比如没有加上“;” 等等。我们通过编译过程中软件反馈给我们错误所处的行数进行程序的更 改,以求达到 0 error 的结果。 下载成功后,点击开始按钮,在单片机的实验板上我们可以清楚地看 到随着时间灯依次的亮灭。实验结束。 3. 写出源程序清单及执行结果。 源程序: 杭州电子科技大学单片机技术与应用实验报告 第 四 页 共 五 页 #include REG51.H unsigned char shijian=0; unsigned char time=0; main() { EA=1; //开总中断 TMOD=0x10; //设置定时器 1工作方式为 1 TL1=15535%256; //对定时器 1低 8位赋值 TH1=15535/256; //对定时器 1高 8位赋值 ET1=1; //开定时器 1中断 TR1=1; //启动定时器 1 while(1) { switch(shijian) { case 0:P1=0xfa;break; //第 1秒点亮 L1,L3 case 1:P1=0xf5;break; //第 2秒点亮 L2,L4 case 2:P1=0xaf;break; //第 3秒点亮 L5,L7 case 3:P1=0x5f;break; //第 4秒点亮 L6,L8 case 4:P1=0xaa;break; //第 5秒点亮 L1,L3,L5,L7 case 5:P1=0x55;break; //第 6秒点亮 L2,L4,L6,L8 case 6:P1=0x00;break; //第 7秒 8个灯全点亮 case 7:P1=0xff;break; //第 8秒 8个灯全灭 } } } void fun() interrupt 3 { TL1=15535%256; //对定时器 1低 8位赋值 TH1=15535/256; //对定时器 1高 8位赋值 if(time19)time++; //一秒钟定时 else { time=0; if(shijian7)shijian++; else shijian=0; } } 4. 心得体会 我们已经学习了基本的理论,同时也要联系实验来加强我们对知 识的巩固。同时也认识到 c 语言在编程中的重要性,所以我们要复习 一下我们曾经学过的 c 语言,以便在以后的实验中避免一些低级的错 误。 杭州电子科技大学单片机技术与应用实验报告 第 五 页 共 五 页

您可能关注的文档

文档评论(0)

zyongwxiaj8 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档