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

📄 main.c

📁 基于单片机的短信报警机
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
#include <eeprom.h>
#include "uart.h"
#include "define.h"
#include "led.h"

#include "uartnews.h"
#include "timetask.h"

/* 工程名称:        呼死你
 * 日期:   	    06-04-26
 * 最后修改日期:   06-04-26
 * 芯片类型:		ATmega 8L
 * 晶体:			7.3728MHZ
 * 熔丝位:         8F9F
 * 锁定位:			00E8
 * 看门狗:         安全极别2-常开	2.1秒溢出  
 * 版本:			
 * 测试说明:       06-04-26测试

	   
/**************************************************
*原型:void open(void)
*功能:判断是初次上电,触发开机
*参数:无
*返回:无
*日期:04-12-7
**************************************************/
//定义开机脚
#define OPENBIT  7
#define RESTKEY	 3
void open(void)
{
   SET_BIT(PORTD,OPENBIT);
  
   delay_ms(2000);

   CLR_BIT(PORTD,OPENBIT);   //开平触低 
}
/**************************************************
*原型:void port_init(void)
*功能:端口初始化
*参数:无
*返回:无
**************************************************/
void port_init(void)
{
    PORTC = 0X0F;    //PC0-PC38870输入,与按键共用,
	DDRC = 0X20;
	
	PORTB = 0X00;
	DDRB = 0X3F;    //PB0-PB2,PB5输出控制,PB3话筒开关,PB4提示声,PB5警声
	
	DDRD = 0XF6;    //PD0,PD2-AUDIO,PD3输入
	PORTD = NULL;  
	
	RED_LED;//红灯亮
}
/**************************************************
*原型:void watchdog_init(void)
*功能:dog初始化
*参数:无
*返回:无
**************************************************/
void watchdog_init(void)
{
 WDR(); //清dog
 WDTCR = ( (1<<WDCE) | (1<<WDE) );
 WDTCR = 0x0F; //2.1秒复位
}
/**************************************************
*原型:void watchdog_task(void)
*功能:判断是否dog复位,如不是触发手机开机
*参数:无
*返回:无
**************************************************/
void watchdog_task(void)
{
 if(!GET_BIT(MCUCSR , WDRF))//是否dog复位
 			 open(); 	
 }				 

/**************************************************
*原型:void init_devices(void)
*功能:初始化
*参数:无
*返回:无
**************************************************/
void init_devices(void)
{   
    watchdog_init(); //设置WDT
    port_init();     //I/O口定义    
	timer1_init();  
	InitUART( 23 );   //19.2 to 7.3728M
	Time.Sec = timesec;//定时器赋初值
	TIMSK = 0X04;//开T1定时
	_SEI();	
 }
/*******************************************/
void main( void )
	{
	 delay_ms(100);
	 init_devices();          //系统初始化
     watchdog_task();         //判 断是否WDT溢出
    
	 WorkCount = LINE;

	 while ( 1 )
		{ 
		 WDR();
		 if(Time.Bz) 		
		 			 		 Time1Task();
		 if(DealTxUartBz)     //处理发送缓冲区
		 			         DealTx();
		 if(DealRxUartBz)	 //处理串口接收缓冲区 
		 					 DealRxBuf(UART_RXHEAD);
		 
		}
	}
/* #endif */

⌨️ 快捷键说明

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