标题: 51单片机的脉冲控制器 [打印本页]

作者: xiaojuan    时间: 2014-10-15 22:47
标题: 51单片机的脉冲控制器
这个是在前面那个定时器的基础上改过来的。

脉冲控制器
   输出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;
}
}







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1