找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机的脉冲控制器

[复制链接]
跳转到指定楼层
楼主
ID:51090 发表于 2014-10-15 22:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个是在前面那个定时器的基础上改过来的。

脉冲控制器
   输出4个脉冲,输出方式:
   先输出P0 50ms,停止100ms后,输出P1 50ms,停止100ms后。。。
   P3输出完成后,停止10秒,之后循环
   由于时间比较规整,可以在中断里判断输出:
   第一个到时,输出P0,   第二个到时,关闭P0   第三个到时,无动作
   第四个到时,输出P1,   第五个到时,关闭P1   第六个到时,无动作
   第七个到时,输出P2,   第八个到时,关闭P2   第九个到时,无动作
   第十个到时,输出P3,   第11个到时,关闭P3   
   休息200个周期,第211个到时,复位i

   case i=1,4,7,10,输出;    2,5,8,11,关闭所有输出

   50ms,晶振为11.0592,初值为0x4C00

#include "reg51.h"

sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
char i = 0;

void main()
{
    TMOD = 0x11; //T0方式1
    TL0  = 0x0; //TL0的初值
    TH0  = 0x4C; //TH0的初值
    ET0  = 1; //定时器1的中断允许
    EA   = 1; //开中断
    TF0  = 0;
    TR0  = 1;  
    while(1);
}

void Int_T0() interrupt 1 using 2
{
    TL0 = 0x00; //重新装入初值
    TH0 = 0x4C;
i++;

switch (i)
{
case 1: P0_0 = 0; break;
case 2: P0_0 = 1; break;
case 4: P0_1 = 0; break;
case 5: P0_1 = 1; break;
case 7: P0_2 = 0; break;
case 8: P0_2 = 1; break;
case 10: P0_3 = 0; break;
case 11: P0_3 = 1; break;
case 211: i = 0; break;
}
}


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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