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

📄 main.c

📁 mega128平台下
💻 C
字号:
/*
* main_frame:
*    init_device
*         init_port
*         init_led
*         init_timer
*         init_RF
*         init_uart
*    init_schedule
*    start_myprogram
*    main_schedule
*/
//ICC-AVR application builder : 2006-9-26 20:14:28
// Target : M128
// Crystal: 7.3728Mhz

#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
#include "../api/schedule.h"
#include "../api/cc1100.h"
#include "../api/led.h"
#include "../api/timer.h"






void port_init(void)
{
  //cc1100  
 /* IN     G1      o
	GD0O   D1      i
	CSN    C2      o
	SCLK   G0      o
	OUT    C1      i
 */
 //led
 /* led0   C4      o
    led1   C5      o
	led2   C6      o
 */
 
 PORTA = 0x00;
 DDRA  = 0x00;
 PORTB = 0x00;
 DDRB  = 0x00;
 PORTC = 0x00; //m103 output only
 DDRC  = 0x74;
 PORTD = 0x00;
 DDRD  = 0x00;
 PORTE = 0x00;
 DDRE  = 0x00;
 PORTF = 0x00;
 DDRF  = 0x00;
 PORTG = 0x00;
 DDRG  = 0x03;
}



//UART0 initialize
// desired baud rate: 57600
// actual: baud rate:57600 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
 UCSR0B = 0x00; //disable while setting baud rate
 UCSR0A = 0x00;
 UCSR0C = 0x06;
 UBRR0L = 0x07; //set baud rate lo
 UBRR0H = 0x00; //set baud rate hi
 UCSR0B = 0x18;
}

//call this routine to initialize all peripherals
void init_devices(void)
{

 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 XDIV  = 0x00; //xtal divider
 XMCRA = 0x00; //external memory
 port_init();                //端口初始化
 led_init();                 //所有灯灭
 T0_init();
 T2_init();
 T1_init();
 T3_init();
 CC1100_init();              //RF初始化
 uart0_init();               //串口初始化
 
 MCUCR = 0x00;
 EICRA = 0x00; //extended ext ints
 EICRB = 0x00; //extended ext ints
 EIMSK = 0x00;
 TIMSK = 0x00; //timer interrupt sources
 ETIMSK = 0x00; //extended timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}

void delay_1ms(unsigned int xtal)
{
 unsigned int i;
 for(i=1;i<(unsigned int)(xtal*143-2);i++)
 ;
 }

void delay_x(unsigned int n)
{
 unsigned int i=0;
 for(i=0;i<n;i++)
 delay_1ms(7);
 }

extern unsigned char T_p_node;
extern unsigned int T;
extern unsigned char node_num;
extern unsigned char LOCAL_GID;
extern sleep_flag;
void main() 
  {
    int temp;
	T_p_node = (T/node_num*2);
    init_devices();
	CC1100_change_channr(LOCAL_GID*2-1+0xa);
    sleep_flag =0;
	
	sched_init();
   
	CC1100_setInterrupt(0x01);  //RF接收状态
    //CC1100_sleep();
    /*my program*/
    PowerEnable();
	//start_T1(0,2000);
	
	/*while(1)
	{
	 MCUCR = 0x30;
     //asm("sleep");
	//MCUCR =0x0;
	led1Toggle();
	}
	while(1) ;
	*/
	//while(1);
	//start_T3(1,24000);
	//start_T0(1,1000);
	//start_T2(1,5000);
	//printf("begin\n");
	/*
	while(1){
	   temp = get_tmp();
	   printf("tmp is %d",temp);
	   delay_x(1000);
	}
	*/
	
	/*my program end*/
	
	/*schedule*/
	while(1) 
    {
      run_task();
    }
	
  }

 

⌨️ 快捷键说明

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