📄 main._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秒溢出
* 版本: H-S-02
* 测试说明: 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 + -