⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 用89C2051实现的软PLC。PLC程序存在24C04,用按健输入程序
💻 C
字号:
#include "reg51.h"

bit Read_Test(unsigned char);
void delay(unsigned int);
void Led_Show(unsigned char,bit );
unsigned char Read_Key(unsigned char *,unsigned char *);
void Process(void);
bit I2c_Read(unsigned char,unsigned char);
bit I2c_Write(unsigned char,unsigned char);
unsigned char data intr[6];
unsigned char error = 0;
unsigned char old_data = 0,pc = 0,key;

void main()
{
//    unsigned char key;
//   unsigned char in_data = 0, old_data = 0, pc = 0,old_pc = 0;
    unsigned char in_data = 0;
	unsigned char old_pc = 0;
	bit b = 0,old_b = 0;
	                                           
    I2c_Read(pc,1);
	old_data = in_data = intr[0];
	Led_Show(in_data,0);
	while(1)
	{	
        key = Read_Key(&in_data,&pc);
		b = key & 0xf0 ? 1:0;

        switch (key){
		            case 0x00: if (old_data != in_data || old_b != b )
                               {  
                                   if (old_b != b)
                                   {
                                      I2c_Read(pc,1);
                                      in_data = intr[0];
                                    } 
							       old_b = b;
    					           old_data = in_data;
      							   Led_Show(in_data,0);
								}
								break;
                    case 0x01: Led_Show(in_data,0); break;
                    case 0x02: Led_Show(in_data,0); break;
					case 0x03: if (I2c_Write(pc,in_data) == 0)   // test Wri == 0
					           {  
							      pc += 1;
							      Led_Show(pc,1);
								  while(Read_Key(&key,&pc) == 03) ; 
							      old_b = 1;
								}
								else 
								    while(1)  Led_Show(0xee,1);
							   break;
					case 0x10: 
					case 0x11:
					case 0x12: if (old_pc != pc || old_b != b)
					           {
							      old_b = b;
				                  old_pc = pc;
								  Led_Show(pc,1);
								  I2c_Read(pc,1);
								  in_data = intr[0];
								}  
				                 break;
					case 0x13: Process();   // test  DA == 0 and Wri == 0
                    default: ;
                     }

	}
}

void delay(unsigned int count)
{
    unsigned int i;
	unsigned char j;
    for (i = 0;i < count;i++)
	    for (j = 0;j < 100;j++)
		  ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -