当前位置: 代码迷 >> 单片机 >> !C51新手各位大侠!
  详细解决方案

!C51新手各位大侠!

热度:69   发布时间:2016-04-28 15:32:16.0
求助!!C51新手求助各位大侠!!
引用
#include <reg52.h>
#include <stdio.h>
#include "ds1302.h"
#include "1602.h"
#include "i2c.h"
#include "delay.h"



#define AddWr 0x90;
#define AddRd 0x91;
#define LS 0xB0;
#define KeyPort P2;
void Init_Timer0();

sbit LS_1S=P3^0;
sbit LS_2S=P3^1;
sbit LS_3O=P3^2;
sbit LS_3C=P3^3;






bit ReadTimeFlag;
bit Autoblinds;
bit SetFlag;


sbit A1=P1^2; 
sbit B1=P1^3;
sbit C1=P1^4;
sbit D1=P1^5;

sbit DC1OUT = P1^6;
sbit DC2OUT = P1^7;

#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;};
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;};
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;};
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;};
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;};
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;};
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;};
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;};
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;};



extern bit ack;
unsigned char ReadADC(unsigned char Chl);
unsigned char temp1[16];
unsigned char time_buf2[16];


/*------------------------------------------------
        main function
------------------------------------------------*/
 main()
{

unsigned char Speed1;
unsigned int i;
unsigned char KeyScan(void);
unsigned char num;
unsigned char num1;
unsigned char PWN_ON;
LS_1S=1;
LS_2S=1;
LS_3O=1;
LS_3C=1;

LCD_Init(); 
DelayMs(20); 
LCD_Clear(); 
Init_Timer0(); 
Ds1302_Init(); 

Ds1302_Read_Time(); 
if((time_buf1[2]+time_buf1[7])==0)
 Ds1302_Write_Time();  

while (1)         //main cycle
  {
if(ReadTimeFlag==1) 
{
  ReadTimeFlag=0;  
  Ds1302_Read_Time();
  sprintf(temp1,"TIME %02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);
  LCD_Write_String(0,0,temp1);
  };


 if (LS_1S==0)
      goto SolarCheck;
       else
 PWN_ON=1;
DC1OUT=1;
  
  if (LS_2S==0)
  goto rev;
 
  if(Autoblinds==1)
 { 
 num=255-ReadADC(0);
  if (num>80)
     goto BlindC;
   else if (num<70)
     goto BlindO;
 };

 
num1=KeyScan();
 switch(num1)
       {
        case 1:Autoblinds=0;goto BlindC;
        case 2:Autoblinds=0;goto BlindO;
    case 3:time_buf1[4]++;if(time_buf1[4]==24)time_buf1[4]=0;    
              Ds1302_Write_Time();break; 
case 4:time_buf1[4]--;if(time_buf1[4]==255)time_buf1[4]=23;  
          Ds1302_Write_Time();break; 
  相关解决方案