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

📄 main._c

📁 一个关于AVR单片机的例程
💻 _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 + -