微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机的脉冲控制器

51单片机的脉冲控制器

时间:11-24 来源:互联网 点击:
这个是在前面那个定时器的基础上改过来的。

脉冲控制器

输出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;

}

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top