找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4815|回复: 0
收起左侧

单片机定时+计数程序设计实验 (含代码仿真实验文档)

[复制链接]
ID:750954 发表于 2020-5-22 16:24 | 显示全部楼层 |阅读模式
  • 实验目的
  • 熟悉定时/计数器的定时和计数功能;
  • 掌握定时器及相关中断的初始化编程方法;
  • 掌握定时及中断程序的设计方法。

  • 实验内容
1、初始化两个定时器一个定时 10mS,一个计数,2 个都开中断,定时时间到中断服              务程序中控制引脚将脉冲输出到另一个定时计数器的外部计数引脚,同时重新加载初              值。用于计 数的定时器的中断服务程序控制 LED 闪烁。

2、使用 2 个按键调节用于计数的定时器的初值和其中断服务程序中的重新加载的初              值 以控制 LED 闪烁的速度,一个键用于加快闪烁速度,一个键用于降低闪烁速度。


  • 实验电路
  • 实验过程记录(包括程序和调试过程)
  • 程序代码
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit LED = P2^0;
  4. sbit MaiChong = P3^5;
  5. sbit KEY1 = P3^2;
  6. sbit KEY2 = P3^3;
  7. void delay(unsigned int i)
  8. {
  9.                 unsigned char j;
  10.                 while(i--);
  11.                 for(j = 0;j<125;j++);
  12. }
  13. void Timer1Init()
  14. {
  15.                 TMOD |= 0X10;
  16.                 TH1 = (65536-10000)/256;
  17.                 TL1 = (65536-10000)%256;
  18.                 EA = 1;
  19.                 ET1 = 1;
  20.                 TR1 = 1;
  21. }
  22. void Timer1ISR() interrupt 3
  23. {
  24.                 TH1 = (65536-10000)/256;
  25.                 TL1 = (65536-10000)%256;
  26.                 MaiChong = 0;
  27.                 _nop_();
  28.                 MaiChong = 1;
  29. }
  30. void Timer0Init()
  31. {
  32.                 TMOD |= 0x06;
  33.                 TH0 = 256-50;
  34.                 TL0 = 256-50;
  35.                 EA = 1;
  36.                 ET0 = 1;
  37.                 TR0 = 1;
  38. }
  39. void Timer0ISR() interrupt 1
  40. {
  41.                 LED = ~LED;
  42. }
  43. void Int0_INT()
  44. {
  45.                 EA = 1;
  46.                 EX0 = 1;
  47.                 IT0 = 1;
  48. }
  49. void Int0_ISR() interrupt 0
  50. {
  51.                 if(KEY1 == 0)
  52.                 {
  53.                                 delay(10);
  54.                                 if(KEY1        == 0)
  55.                                 {
  56.                                                 TH0 = TH0+10;
  57.                                                 TL0 = TL0+10;
  58.                                                 if(TH0 >= 256)
  59.                                                 {
  60.                                                                 TH0 = 255;
  61.                                                                 TL0 = 255;
  62.                                                 }
  63.                                 }
  64.                 }
  65. }
  66. void Int1_INT()
  67. {
  68.                 EA = 1;
  69.                 EX1 = 1;
  70.                 IT1 = 1;
  71. }
  72. void Int1_ISR() interrupt 2
  73. {
  74.                 if(KEY2 == 0)
  75.                 {
  76.                                 delay(10);
  77.                                 if(KEY2        == 0)
  78.                                 {
  79.                                                 TH0 = TH0-10;
  80.                                                 TL0 = TL0-10;
  81.                                                 if(TH0 <= 0)
  82.                                                 {
  83.                                                                 TH0 = 0;
  84.                                                                 TL0 = 0;
  85.                                                 }
  86.                                 }
  87.                 }
  88. }
  89. void main()
  90. {
  91.                 Timer1Init();
  92.                 Timer0Init();
  93.                 Int0_INT();
  94.                 Int1_INT();
  95.                 while(1);
  96. }
复制代码


  • 调试运行过程

  • 输入代码并且编译生成hex文件

  • 打开仿真软件连好实验电路图

  • 给单片机烧写hex文件然后运行仿真程序
  • 实验结果及分析
1、实验仿真结果(截图或拍照)                 
2、实验结果分析(针对实验结果文字分析)         
试验成功,按下上方的K1按键,LED的闪烁速度加快,按下下方的K2按键,LED的闪烁速度变慢。
在实验过程中,在第一次连接电路图的时候忘记链接了P3.5的脉冲接口导致实验一直失败。

下面的压缩包里有仿真文件和文档:
定时加计数.rar (766.3 KB, 下载次数: 13)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表