main.c

来自「在uvision2开发平台下用C51语言开发」· C语言 代码 · 共 162 行

C
162
字号
/*
* Copyright (c) 2006,北京航空航天大学光电研究所
* All rights reserved.
* 
* 文件名称:uart.h
* 文件标识:uart
* 摘    要:串口通讯的相关定义
* 
* 当前版本:1.0
* 作    者:jyduan
* 完成日期:2006年3月日
*
* 取代版本: 
* 原作者  :
* 完成日期:
*/


#include "REGX52.H"                  //这里我用的是REGX52.H,我的keil版本没有AT89S52.H,编译好后生成的hex文件下载总提示有错,您用
#include "intrins.h"
//#include "lcd.h"
#include "IIC_C51.h"
#include "uart.h"

#define    uchar        unsigned char
#define    KEY1         P3_5
#define    IICByte      2
#define    FTRJ8519     0xA2
#define    SDA          P2_0            /*模拟I2C数据传送位*/
#define    SCL          P2_1            /*模拟I2C时钟控制位*/

#define    TRUE         1
#define    FALSE        0

#define    TEMPMSB      96
#define    TEMPLSB      97
#define    TEMPHMSB      0
#define    TEMPHLSB      1
#define    TEMPLMSB      2
#define    TEMPLLSB      3

#define    VCCMSB       98
#define    VCCLSB       99
#define    VCCHMSB       8
#define    VCCHLSB       9
#define    VCCLMSB      10
#define    VCCLLSB      11

#define    TxMSB       102
#define    TxLSB       103
#define    TxHMSB       24
#define    TxHLSB       25
#define    TxLMSB       26
#define    TxLLSB       27

#define    RxMSB       104
#define    RxLSB       105
#define    RxHMSB       32
#define    RxHLSB       33
#define    RxLMSB       34
#define    RxLLSB       35


#define       KEY0        P3_4            
#define       KEY1        P3_5 
#define       KEY2        P2_1 
#define       KEY3        P2_2 
#define       ALARMLED    P3_7
#define       WARNLED     P3_2


void Delay(uchar timecount);
uchar ReadKey(void);

main()
{
	uchar j,k;
    uchar sffMonth[3];
    uchar IICDataBuf;
    
	unsigned int TempV, THthreshA, TLthreshA;    

    init_uart(1200);
    
    IRcvStr(FTRJ8519, 0x60, sffMonth, IICByte);
    printsn("sffTemp = %x \n", sffMonth);
    TempV = ((sffMonth[0] << 8) & 0xff00) | sffMonth[1];

    IRcvStr(FTRJ8519, 0x00, sffMonth, IICByte);
    printsn("sffTempAlarmHigh = %x \n", sffMonth);
    THthreshA = ((sffMonth[0] << 8) & 0xff00) | sffMonth[1];
 
    IRcvStr(FTRJ8519, 0x02, sffMonth, IICByte);
    printsn("sffTempAlarmLow = %x \n", sffMonth);
    TLthreshA = ((sffMonth[0] << 8) & 0xff00) | sffMonth[1]; 

    if ((TempV & 0x80) == 0x80)                             //当前温度为负数
	{
	    if (((TLthreshA & 0x80) == 0x80) && (TempV < TLthreshA))   //2位补足玛,负值时表示越大的数代表的温度值越高
	    {
	        ALARMLED = 1;           //报警灯亮
	    }

	    if ((TLthreshA & 0x80) != 0x80)
		{
		    ALARMLED = 1;           //报警灯亮	
	    }
	    else if ((((TLthreshA & 0x80) != 0x80) && (TempV < TLthreshA)) || (TempV > THthreshA))
	    {
	        ALARMLED = 1;           //报警灯亮 
	    }
	}      
	
	IICDataBuf = 0x62;
	while (1)
	{
         
        ISendStr(FTRJ8519, 0X00, &IICDataBuf, 1);
		IRcvStr(FTRJ8519, 0x00, sffMonth, IICByte);
        printsn("sffTempAlarmHigh = %x \n", sffMonth);
//          printsn("sffTemp = %x \n", "012345");
	       if (IRcvStr(FTRJ8519, 0xb9, sffMonth, IICByte) == 0)
	       {
	          printu("ERROR!\n");      
	       }
           else
		   {
		      printu(sffMonth);
		   }        
//		   printuf("j = %x\n", j);

//		}
//		printuf("i = %x\n", i);
	}
 
}


void Delay(uchar timecount)
{
	uchar  j;
	for(j=0; j<timecount; j++)
	{
	   _nop_();
	}
} 


unsigned char ReadKey(void)
{
	unsigned char tem;
    tem=0;
   
    if (KEY1 == 0)	
	{  
	    Delay(1000);
	    while (KEY1 ==0);
		tem = 0x01;
	}
	return  tem;
}

⌨️ 快捷键说明

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