📄 main.c
字号:
/*------------------------------------------------------
Function: Offline Downloader
Author: avenbbs(8785116@qq.com)
Version: 1.0
Date: 2008-10-1~2008-10-5
--------------------------------------------------------*/
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "main.h"
#include "common.h"
#include "usart.h"
#include "spi_soft.h"
//#include "AT45DB041D.h"
#include "AT45.h"
#include "xmodem.h"
#include "isp.h"
#include "command.h"
//定义波特率
#define BAUDRATE 19200
//计算波特率值
#define BAUD ((unsigned int)((F_CPU*10)/(16UL*BAUDRATE)-5)/10)
//检查波特率误差
//下面的定义在不同的C编译器之间可能会有差异
#define FreqTemp (16UL * BAUDRATE * (((F_CPU * 10) / (16 * BAUDRATE) + 5)/ 10))
#if ((FreqTemp * 50) > (51 * F_CPU) || (FreqTemp * 50) < (49 * F_CPU))
#error "BaudRate error > 2% ! Please check BaudRate and F_CPU value."
#endif
extern unsigned char buf[];
extern unsigned char fuse[2];
extern char fuse_ascii[9];
extern unsigned char chip_id[3];
extern unsigned char chip_id_ascii[9];
volatile unsigned char error_flag=0;
unsigned char section;
unsigned char keylock=0;
//-------------------------------------------------------
unsigned char hex2ascii(unsigned char data)
{
if ((data>=0) && (data<=9))return(data+0x30);
else if ((data>=10)&&(data<=15))return(data+0x37);
else return 1;
}
void hex2send(unsigned char data)
{
usart_tsmt(hex2ascii(data>>4));
usart_tsmt(hex2ascii(data&0x0f));
usart_tsmt(0x0d);
usart_tsmt(0x0a);
}
void led_alarm(void)
{
LED_1_OFF();
//static unsigned char keycnt=0;
LED_2_ON();
_delay_ms(100);
//if(KEY_PROG==0x00)error_flag=0;
LED_2_OFF();
_delay_ms(100);
if (KEY_PROG==0x00)
{
error_flag=0;
LED_2_ON();
keylock=0;
_delay_ms(300);
}
}
int main(void)
{
usart_init(BAUD);
spiSW_init();
isp_init();
LED_1_OFF();
LED_2_ON();
LED_PORT_INIT();
KEY_PORT_INIT();
sei();
for(int i=0;i<512;i++)buf[i]=0xff;
//DF_write_page(0);
//for(int i=0;i<512;i++)buf[i]=0x00;
//DF_read_page(0);
//for(int i=0;i<512;i++)usart_tsmt(buf[i]);
do
{
unsigned char keytmp;
static char keycnt=0;
if (keylock==0)
{
section=0;
if (KEY_1==0x00)section+=1;
if (KEY_2==0x00)section+=2;
if (KEY_3==0x00)section+=4;
if (KEY_4==0x00)section+=8;
//if (KEY_5==0x00)section+=16;
if(section>0)section-=1;
keytmp=KEY_PROG;
if ((keytmp==0x00)&&(keycnt++>15))
{
if (!error_flag)
{
//if(KEY_6==0x00)
// ;//xmodem_transmit();
//else
//{
com_process('p');
com_process('a');
com_process('l');
com_process(0x0d);
//for(int i=0;i<512;i++)usart_tsmt(buf[i]);
//}
}
keycnt=0;
}
_delay_ms(2);
}
if (error_flag)led_alarm();
//hex2send(DF_read_reg());
//_delay_ms(500);
}
while (1);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -