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

📄 incorporatecap.h

📁 基于AVR单片机+凌特公司的ltc1412cg的TEm测控程序代码
💻 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 + -