📄 main._c
字号:
/****************************************Copyright (c)**************************************************
** 杭 州 鑫 高 科 技 有 限 公 司
** 开 发 部
** http://www.hzxingao.com
** 文 件 名: main.c
** 最后修改日期: 2005年05月11日
** 描 述:
** 版 本: V1.0
** 主 控 芯 片:M16 晶振频率:7.3728MHZ, 波特率19200
**********************************************************************************************************/
#include <iom16v.h>
#include <macros.h>
#include "define.h"
#include "function.h"
#include "para.h"
#define F_CPU 7372800
void USART_Init( unsigned int baud )
{
unsigned int tmp;
/* 设置波特率*/
tmp= F_CPU/baud/16-1;
UBRRH = (unsigned char)(tmp>>8);
UBRRL = (unsigned char)tmp;
/* 接收器与发送器使能*/
UCSRB = (1<<RXEN)|(1<<TXEN);
/* 设置帧格式: 8 个数据位, 2 个停止位*/
UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
}
// 数据发送【发送5 到8 位数据位的帧】
void USART_Transmit( unsigned char data )
{
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1<<UDRE)) )
;
/* 将数据放入缓冲器,发送数据 */
UDR = data;
}
void delay(void)
{
unsigned char i;
for(i=255;i!=0;i--)
delayUs(255);
}
WORD i;
void main()
{
unsigned char temp=0;
port_init();
USART_Init(9600); //波特率9600 初始化串口
USART_Transmit('O');
USART_Transmit('K');
while(1)
{
USART_Transmit(0x0d); //发送一个回车
USART_Transmit(0x0a); //发送一个换行
i=resetDS18B20();
i=readTempDS18B20();
if(i&(1<<3)) //判断倒数第四位是1还是0
{
temp=i>>4+1;
}
else
{
temp=i>>4;
}
USART_Transmit(temp);
delay();
}
}
/*
假设你只要精确到1度
换算温度用很简单的方法就可以处理:
首先判断是正温度还是负温度
然后判断倒数第四位是1还是0
如果是1且温度为正,那么 温度=x>>4+1;
如果是1且温度为负,那么 温度=x>>4-1;
如果是0,温度=x>>4;
这样的操作可以节省很多的flah空间。
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -