找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5344|回复: 1
打印 上一主题 下一主题
收起左侧

单片机定时器2(采用定时器2控制小灯亮灭)Proteus仿真+代码

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char
  3. #define uint  unsigned int

  4. uint time;
  5. sbit led=P1^0;
  6. /*************************延时程序*********************/
  7. void delay(uint count)                 //1ms延时
  8. {
  9.    uint x,y;
  10.    for(x=0;x<count;x++)
  11.    for(y=0;y<120;y++);
  12. }
  13. /*void delay(uint z)
  14. {
  15.         uint x,y;
  16.         for(x = z; x > 0; x--)
  17.                 for(y = 114; y > 0 ; y--);
  18. }
  19.         */

  20. void timer2_main()
  21. {
  22. //        T2MOD=0;  //配置定时器2控制寄存器,这里其实不用配置,T2CON上电默认就是0
  23. //        T2CON=0;  //配置定时器2工作模式寄存器,这里其实不用配置,T2MOD上电默认就是0
  24.         TH2=(65536-50000)/256;                        //定时器2赋初值
  25.         TL2=(65536-50000)%256;                        //50ms                                       
  26.         ET2=1;                        //开定时器2中断
  27.         EA=1;
  28.         TR2=1;                        //启动定时器2
  29. }
  30. /*
  31. void UART_init()
  32. {
  33.         TMOD = 0x20;          //T1工作模式2  8位自动重装
  34.         TH1 = 0xfd;
  35.         TL1 = 0xfd;         //比特率9600
  36.         TR1 = 1;                //启动T1定时器
  37.         SM0 = 0;
  38.         SM1 = 1;                 //串口工作方式1 10位异步
  39. //        REN = 1;                //串口允许接收
  40.         EA  = 1;                //开总中断
  41. //        ES  = 1;                //串口中断打开
  42. }
  43. void UART() //interrupt 4
  44. {
  45.                 SBUF = "你好";// 06 02 78;       
  46.                 while(!TI);
  47.                 TI = 0;
  48. }*/
  49. void main()
  50. {
  51.         timer2_main(); //定时器T2初始化
  52. //        UART_init(); //串口初始化
  53.         while(1){
  54. /*                if(SET==0)                                        //设定按键按下
  55.                 {
  56.                         delay(5);
  57.                         if(SET==0)
  58.                                 {                                 //延时去除抖动再次判断是否按下按键
  59.                                         UART();
  60.                                         while(!SET);
  61.                                 }
  62.                 }                */               
  63.         }                  
  64. }
  65. void timer2() interrupt 5
  66. {
  67.         TF2=0;        //!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零
  68.         time++;        
  69.         if(time==100)         //定时50ms×100=5000ms即5秒钟
  70.         {
  71.                 time=0;
  72.                 led=~led;
  73.         }
  74. }
复制代码

所有资料51hei提供下载:
定时器TOME2.zip (81.29 KB, 下载次数: 52)


评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:496131 发表于 2019-9-6 12:05 | 只看该作者
没有1602的程序呀


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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