📄 main.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 + -