📄 incorporatecap.h
字号:
//ICC-AVR application builder : 2005-3-28 9:42:52
// Target : 8515
// Crystal: 4.0000Mhz
#include <io8515v.h>
#include <macros.h>
/*****系统串行通信位操作*****/
#define bi_preset re_flag|=0x01
#define bi_preclr re_flag&=~0x01
#define bi_datset re_flag|=0x02
#define bi_datclr re_flag&=~0x02
#define bi_codset re_flag|=0x04
#define bi_codclr re_flag&=~0x04
#define bi_cheset re_flag|=0x08
#define bi_checlr re_flag&=~0x08
#define bi_endset re_flag|=0x10
#define bi_endclr re_flag&=~0x10
#define ref_hpre 0x01
#define ref_npre 0x00
#define ref_hdat 0x03
#define ref_ndat 0x00
#define ref_hcod 0x07
#define ref_ncod 0x00
#define ref_hche 0x0f
#define ref_nche 0x00
#define ref_hend 0x1f
#define ref_nend 0x00
#define ref_chan 0x55
#define ref_ncha 0x00
#define op_capprechar 0xaa //cap->os
#define op_osprechar 0xbb //os->cap
#define op_endchar 0xff
typedef struct _filesys
{
unsigned int data[500];
}filesys;
typedef struct _filen
{
unsigned char line;
unsigned char num;
unsigned char title;
}filen;
//declare memory mapped variables
extern signed char AFIFO1;
extern signed char AFIFO2;
extern signed char A573;
extern unsigned int cdata[500];
extern unsigned int sdata[500];
extern filesys file[32];
extern filen filename[32];
extern unsigned char strings[8];
extern unsigned char strings[8];
extern unsigned char strtom[11];
extern unsigned char redata[11];
extern unsigned char saveda[11];
extern unsigned char cureda[7],offtda[11];
extern unsigned char re_num,re_temp,re_flag,re_data,re_change;
/****memmaster system memory****/
/*
extern unsigned char mem[16416];
extern unsigned char mem1[20512];
extern unsigned char command[64];
extern unsigned char response[64];
extern unsigned char commanddata[2048];
extern unsigned char responsedata[16384];
extern unsigned char reserve[1856];
extern unsigned char systemcode[2];
*/
//define mappings
void mapping_init(void)
{
asm(
".area memory(abs)\n"
".org 0x029e\n"
" _filename:: .blkb 32\n"
".org 0x02fe\n"
" _file:: .blkw 32\n"
".org 0x8000\n"
" _strings:: .blkb 8\n"
".org 0x800a\n"
" _strtom:: .blkb 11\n"
".org 0x801a\n"
" _redata:: .blkb 11\n"
".org 0x802a\n"
" _saveda:: .blkb 11\n"
".org 0x803a\n"
" _cureda:: .blkb 7\n"
".org 0x8043\n"
" _offtda:: .blkb 11\n"
".org 0x8100\n"
" _cdata:: .blkw 500\n"
".org 0x8600\n"
" _sdata:: .blkw 500\n"
".org 0xA000\n"
" _AFIFO1:: .blkb 1\n"
".org 0xC000\n"
" _AFIFO2:: .blkb 1\n"
".org 0xE000\n"
" _A573:: .blkb 1\n"
/*
".org 0x0000\n"
" _mem:: .blkb 16416\n"
".org 0x4020\n"
" _mem1:: .blkb 20512\n"
".org 0x9040\n"
" _command:: .blkb 64\n"
".org 0x9080\n"
" _response:: .blkb 64\n"
".org 0x90C0\n"
" _commanddata:: .blkb 2048\n"
".org 0x98C0\n"
" _responsedata:: .blkb 16384\n"
".org 0xD8C0\n"
" _reserve:: .blkb 1856\n"
".org 0xFFFE\n"
" _systemcode:: .blkb 2\n"
*/
".text\n"
);
}
//UART0 initialisation
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
void uart0_init(void)
{
UCR = 0x00; //disable while setting baud rate
UBRR = 0x19; //set baud rate
UCR = 0x98; //enable
}
#pragma interrupt_handler uart0_rx_isr:10
void uart0_rx_isr(void)
{
//uart has received a character in UDR
re_temp=UDR;
if(re_flag==ref_npre)
goto receive_pre;
if(re_flag==ref_hpre)
goto receive_data;
if(re_flag==ref_hdat)
goto receive_code;
if(re_flag==ref_hcod)
goto receive_end;
else
goto receive_error;
receive_pre:
if(re_temp!=op_osprechar)
goto receive_error;
if(re_num<0x02)
{
re_num++;
}
else
{
bi_preset;
re_num=0;
}
goto receive_over;
receive_data:
if(re_num<9)
{
redata[re_num]=re_temp;
re_num++;
}
else
{
redata[re_num]=re_temp;
bi_datset;
re_num=0;
}
goto receive_over;
receive_code:
redata[10]=re_temp;
bi_codset;
goto receive_over;
receive_end:
if(re_temp==op_endchar)
bi_endset;
else
goto receive_error;
for(re_num=0;re_num<11;re_num++)
{
saveda[re_num]=redata[re_num];
}
re_change=ref_chan;
receive_error:
re_num=0;
re_flag=0;
receive_over:
;
}
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x00;
PORTB = 0xFF;
DDRB = 0xF7;
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x30;
}
//call this routine to initialise all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
mapping_init();
port_init();
timer1_init();
uart0_init();
MCUCR = 0xC0;
GIMSK = 0x00;
TIMSK = 0x00;
SEI(); //re-enable interrupts
//all peripherals are now initialised
}
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0x00; //setup
TCNT1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;//0x02;
OCR1BH = 0x00;
OCR1BL = 0x00;//0x02;
TCCR1A = 0x00;
// TCCR1B = 0x01; //start Timer
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -