?? main.c
字號:
/*
* Copyright (c) 2006,北京航空航天大學(xué)光電研究所
* All rights reserved.
*
* 文件名稱:uart.h
* 文件標識:uart
* 摘 要:串口通訊的相關(guān)定義
*
* 當(dāng)前版本: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數(shù)據(jù)傳送位*/
#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) //當(dāng)前溫度為負數(shù)
{
if (((TLthreshA & 0x80) == 0x80) && (TempV < TLthreshA)) //2位補足瑪,負值時表示越大的數(shù)代表的溫度值越高
{
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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -