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

📄 main.c.bak

📁 PHILIPS的P89C669单片机调试的串口程序,可以在其他的51内核的单片机上使用
💻 BAK
字号:
#include "reg669.h"
#include "INTRINS.H"
//#include "LCD.h"

#define CLR_RI  (RI=0)
#define CLR_TI  (TI_0=0)
void serial_initial(void);    
void serial_Test(void);                            
unsigned char code ID[2][8]={ 0x28,0x1D,0x25,0x1D,0x00,0x00,0x00,0x80,
                              0x28,0x0e,0x9e,0x1c,0x00,0x00,0x00,0x32};
unsigned char currSensorNo=0;

sbit  DS18B20_DQ   =  P1^4;
sbit  RUN_LED =  P1^6;

/****************************************************************************
Function:send_byte
Parameter:count,SEND_Buf[]
Retrun:None
Description:向串口发送数据
*****************************************************************************/
void  send_byte(unsigned char count,unsigned char SEND_Buf[])
{  
unsigned char  i; 
	for(i=0;i<count;i++)
	{
		S0BUF=SEND_Buf[i];
		while(!TI_0);
		CLR_TI;
	}
}
/****************************************************************************
Function:Delay_ms
Parameter:Nms
Retrun:None
Description:延时N ms
*****************************************************************************/
void Delay_ms (unsigned int Nms )
{
unsigned char i;
	while(Nms--)
	for(i=0; i<125; i++) ;
}
/****************************************************************************
Function:Delay_Count
Parameter:Count
Retrun:None
Description:延时
*****************************************************************************/
void Delay_Count (unsigned char Count )
{
    while(Count>0) Count--;
}
/****************************************************************************
Function:tmreset
Parameter:None
Retrun:None
Description:start Reset Pulse
*****************************************************************************/
void tmreset(void)
{
    DS18B20_DQ=0;
    Delay_Count(103);

    DS18B20_DQ=1;
    	Delay_Count(4);
}
/****************************************************************************
Function:tmpre
Parameter:None
Retrun:None
Description:ACK
*****************************************************************************/
void tmpre(void)
{
    while(DS18B20_DQ);
    while(~DS18B20_DQ);
    Delay_Count(4);
}
/****************************************************************************
Function:tmrbit
Parameter:None
Retrun:None
Description:Read a bit from 1820
*****************************************************************************/
bit tmrbit(void)
{
    int i=0;
    bit dat;
    DS18B20_DQ=0;i++;
        DS18B20_DQ=1;i++;i++;
    dat = DS18B20_DQ;
        Delay_Count(8);
    return dat;
}
/****************************************************************************
Function:tmrbyte
Parameter:None
Retrun:None
Description:Read a byte from 1820
*****************************************************************************/
unsigned char tmrbyte(void)
{
unsigned char i,j,dat=0;

    for(i=1;i<=8;i++)
    {
        j=tmrbit();
        dat=(j<<7)|(dat>>1);
    }
    return dat;
}
/****************************************************************************
Function:tmwbyte
Parameter:dat
Retrun:None
Description:Write a byte from 1820
*****************************************************************************/
void tmwbyte(unsigned char dat)
{
    signed char   i=0;
    unsigned char j;
    bit testb;

    for(j=1;j<=8;j++)
    {
        testb=dat & 0x01;
        dat = dat>>1;
        if(testb)
        {
            DS18B20_DQ=0;
            i++;i++;
            DS18B20_DQ=1;
            	Delay_Count(8);
        }
        else
        {
            DS18B20_DQ=0;
            	Delay_Count(8);
            DS18B20_DQ=1;
            i++;i++;
        }
    }
}
/****************************************************************************
Function:tmstart
Parameter:void
Retrun:None
Description:send convert command to  1820
*****************************************************************************/
void tmstart(void)
{
unsigned char i;
	tmreset();
    tmpre();
    Delay_ms(1);
/*  tmwbyte(0xcc);*/
    tmwbyte(0x55);
    for(i=0;i<8;i++)
    	tmwbyte(ID[currSensorNo][i]);
    tmwbyte(0x44);
}

	/****************************************************************************
	Function:send_byte
	Parameter:Uc_Outbyte
	Retrun:None
	Description:向HD7279发送一个字节,包括指令,数据
	*****************************************************************************/
/*----------------------------------------------------
*   Read tempreature from  1820
*----------------------------------------------------*/
unsigned int tmrtemp_all(void)
{
unsigned char a,b;
unsigned int y3;
unsigned char i;

	tmreset();
    tmpre();
    Delay_ms(1);
    /*tmwbyte(0xcc);*/
    tmwbyte(0x55);
    for(i=0;i<8;i++)
    	tmwbyte(ID[currSensorNo][i]);
          
    tmwbyte(0xbe);
    a = tmrbyte();
    b = tmrbyte();
    y3 = ((unsigned int)b) << 8;
   

    return ((y3+a) & 0x7ff) ;
}


/****************************************************************************
Function:main
Parameter:none
Retrun:None
Description:主程序
*****************************************************************************/
void main(void)
{
unsigned char id[8]={1,2,3,4,5,6,7,8};

	serial_initial2();
	serial_Test();
	send_byte(8,id);
    for(;;)
    {
		RUN_LED=!RUN_LED;
/*    	Read_Id();*/
//		TX_C =!TX_C ;
		currSensorNo=(currSensorNo==1)?0:1;
//		Display_AllTemp();
      /*Change();*/
//		send(6,Digit);
		Delay_ms(1000);
         _nop_();
   }
}

⌨️ 快捷键说明

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