51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。

51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。,第1张

#include<reg52.h>

#include <intrins.h>

#define uint unsigned int

sbit a=P1^4//a继简敬电器控制端

sbit b=P2^3//b继电器控制端

sbit c=P2^5//c继电器控制端

sbit d=P2^7//d继电器控制端

uint t

void Init_t0(void) //定时器初始化

{

TMOD=0x01 //定时器0工作于方式1,16位定时器

TH0=0x4CTL0=0x00 //定时时间50ms

ET0=1 //允许定蚂信时器0中断

TR0=1 //定时器0启动

}

void time0_server_(void)interrupt 1 //定时器0中断函数

{

TH0=0x4CTL0=0x00 //定时时间50ms

t++ //t每50ms加1

}

void main() //主函数

{

Init_t0()

a=0 //初始化,所有继电器释放

b=0//

c=0//

d=0//

t = 0 //计时器从0开始计时

EA = 1 //开启总中断

while(1) /闷咐轮/循环

{

switch(t) //以t为参数的分支程序,t每50ms加1

{

case 0: //如果t=0(最初2秒),继电器a吸合,其他释放

a = 1

b = c = d = 0

break

case 40: //如果t=40(第二个2秒),继电器b吸合,其他释放

b = 1

a = c = d = 0

break

case 80: //如果t=80(第三个2秒),继电器c吸合,其他释放

c = 1

a = b = d = 0

break

case 120: //如果t=120(第四个2秒),继电器d吸合,其他释放

d = 1

a = b = c = 0

break

case 160: //如果t=160(第四个2秒结束),t=0,重复最初2秒情况

t=0

break

default: //如果t与上述数字都不想等,啥也不做,免得干扰继电器状态

break

}

}

}

#include<reg51.h>

#define uchar unsigned char

uchar times

sibt jdq=P1^4

sbit fmq=P1^5

void t0isr() interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

times++

if(times>=200)

{

jdq=~jdq

fmq=~jdq

}

}

main()

{

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

ET0=1

EA=1

jdq=0

fmq=0

while(1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12308041.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存