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 + -
显示快捷键?