我写的市电、发电机组供电自动转换控制柜单片机程序

这是一个使用AT89X51单片机编写的控制程序,用于处理市电和发电机组供电的自动转换。程序中包含了中断处理函数,用于在市电和发电机组供电同时存在时切断所有输出,并在发电机组停止后接通市电。此外,还有紧急停机功能和时间显示功能。通过对不同中断和状态的判断,实现了电力供应的智能管理。
摘要由CSDN通过智能技术生成
#include <AT89X51.H>
#include <absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define COM8155 XBYTE[0xfdf8]                     //8155命令口地址
#define PA8155 XBYTE[0xfdf9]                      //8155口A地址
#define PB8155 XBYTE[0xfdfa]                      //8155口B地址
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
bit me_flag=0;
bit de_flag=0;
bit urs_flag=0;
bit flag_8155=0;
unsigned int idata num=0;
unsigned int t=50000;
uchar ml,mh,hh,hl;                                //hh hl:mh ml
uchar code x[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0,1,2,3,...,9
//--------------------------------------------------------------------------------------------
void TimeToScrn(uchar idata hhmm,uchar idata sel) //8155时间处理子函数
{
 PA8155=sel;
 PB8155=x[hhmm];
 _nop_();_nop_();_nop_();
}
//--------------------------------------------------------------------------------------------
void Interrupt_0() interrupt 0 using 1            //外部中断0子函数--市电和发电机组同时有电
{
 P1=(P1&0xe0)|0x1f;                               //切断所有可能输出
 while(t--);t=50000; while(t--);t=50000;          //延时200ms
 //-------------------------------------------------------------------------------------------
 while(p17==0)
  {
   P1=(P1|0x04)&0xe4;                             //接通市电, 停机组,直到机组停机成功
   while(t--);t=50000; while(t--); t=50000;       //延时200ms
  }
 TR0=0;                                  
 P1=(P1|0x07)&0xe7;                               //保持市电接通状态
 me_flag=1;
 de_flag=0;
 //-------------------------------------------------------------------------------------------
 p21=1;                                           //8155停止工作
 flag_8155=0;
 P2=(P2&0x1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值