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

📄 main.lis

📁 mega128平台下
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
                        .even
 0000           _port_init::
 0000           ; /*
 0000           ; * main_frame:
 0000           ; *    init_device
 0000           ; *         init_port
 0000           ; *         init_led
 0000           ; *         init_timer
 0000           ; *         init_RF
 0000           ; *         init_uart
 0000           ; *    init_schedule
 0000           ; *    start_myprogram
 0000           ; *    main_schedule
 0000           ; */
 0000           ; //ICC-AVR application builder : 2006-9-26 20:14:28
 0000           ; // Target : M128
 0000           ; // Crystal: 7.3728Mhz
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; #include "../api/schedule.h"
 0000           ; #include "../api/cc1100.h"
 0000           ; #include "../api/led.h"
 0000           ; #include "../api/timer.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000           ;   //cc1100  
 0000           ;  /* IN     G1      o
 0000           ; 	GD0O   D1      i
 0000           ; 	CSN    C2      o
 0000           ; 	SCLK   G0      o
 0000           ; 	OUT    C1      i
 0000           ;  */
 0000           ;  //led
 0000           ;  /* led0   C4      o
 0000           ;     led1   C5      o
 0000           ; 	led2   C6      o
 0000           ;  */
 0000           ;  
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004           ;  DDRA  = 0x00;
 0004 2ABA              out 0x1a,R2
 0006           ;  PORTB = 0x00;
 0006 28BA              out 0x18,R2
 0008           ;  DDRB  = 0x00;
 0008 27BA              out 0x17,R2
 000A           ;  PORTC = 0x00; //m103 output only
 000A 25BA              out 0x15,R2
 000C           ;  DDRC  = 0x74;
 000C 84E7              ldi R24,116
 000E 84BB              out 0x14,R24
 0010           ;  PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012           ;  DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014           ;  PORTE = 0x00;
 0014 23B8              out 0x3,R2
 0016           ;  DDRE  = 0x00;
 0016 22B8              out 0x2,R2
 0018           ;  PORTF = 0x00;
 0018 20926200          sts 98,R2
 001C           ;  DDRF  = 0x00;
 001C 20926100          sts 97,R2
 0020           ;  PORTG = 0x00;
 0020 20926500          sts 101,R2
 0024           ;  DDRG  = 0x03;
 0024 83E0              ldi R24,3
 0026 80936400          sts 100,R24
 002A           L1:
 002A                   .dbline 0 ; func end
 002A 0895              ret
                        .even
 002C           _uart0_init::
 002C           ; }
 002C           ; 
 002C           ; 
 002C           ; 
 002C           ; //UART0 initialize
 002C           ; // desired baud rate: 57600
 002C           ; // actual: baud rate:57600 (0.0%)
 002C           ; // char size: 8 bit
 002C           ; // parity: Disabled
 002C           ; void uart0_init(void)
 002C           ; {
 002C           ;  UCSR0B = 0x00; //disable while setting baud rate
 002C 2224              clr R2
 002E 2AB8              out 0xa,R2
 0030           ;  UCSR0A = 0x00;
 0030 2BB8              out 0xb,R2
 0032           ;  UCSR0C = 0x06;
 0032 86E0              ldi R24,6
 0034 80939500          sts 149,R24
 0038           ;  UBRR0L = 0x07; //set baud rate lo
 0038 87E0              ldi R24,7
 003A 89B9              out 0x9,R24
 003C           ;  UBRR0H = 0x00; //set baud rate hi
 003C 20929000          sts 144,R2
 0040           ;  UCSR0B = 0x18;
 0040 88E1              ldi R24,24
 0042 8AB9              out 0xa,R24
 0044           L2:
 0044                   .dbline 0 ; func end
 0044 0895              ret
                        .even
 0046           _init_devices::
 0046           ; }
 0046           ; 
 0046           ; //call this routine to initialize all peripherals
 0046           ; void init_devices(void)
 0046           ; {
 0046           ; 
 0046           ;  //stop errant interrupts until set up
 0046           ;  CLI(); //disable all interrupts
 0046 F894              cli
 0048           ;  XDIV  = 0x00; //xtal divider
 0048 2224              clr R2
 004A 2CBE              out 0x3c,R2
 004C           ;  XMCRA = 0x00; //external memory
 004C 20926D00          sts 109,R2
 0050           ;  port_init();                //端口初始化
 0050 D7DF              xcall _port_init
 0052           ;  led_init();                 //所有灯灭
 0052 0E940000          xcall _led_init
 0056           ;  T0_init();
 0056 0E940000          xcall _T0_init
 005A           ;  T2_init();
 005A 0E940000          xcall _T2_init
 005E           ;  T1_init();
 005E 0E940000          xcall _T1_init
 0062           ;  T3_init();
 0062 0E940000          xcall _T3_init
 0066           ;  CC1100_init();              //RF初始化
 0066 0E940000          xcall _CC1100_init
 006A           ;  uart0_init();               //串口初始化
 006A E0DF              xcall _uart0_init
 006C           ;  
 006C           ;  MCUCR = 0x00;
 006C 2224              clr R2
 006E 25BE              out 0x35,R2
 0070           ;  EICRA = 0x00; //extended ext ints
 0070 20926A00          sts 106,R2
 0074           ;  EICRB = 0x00; //extended ext ints
 0074 2ABE              out 0x3a,R2
 0076           ;  EIMSK = 0x00;
 0076 29BE              out 0x39,R2
 0078           ;  TIMSK = 0x00; //timer interrupt sources
 0078 27BE              out 0x37,R2
 007A           ;  ETIMSK = 0x00; //extended timer interrupt sources
 007A 20927D00          sts 125,R2
 007E           ;  SEI(); //re-enable interrupts
 007E 7894              sei
 0080           L3:
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082           ;              i -> R20,R21
 0082           ;           xtal -> R22,R23
                        .even
 0082           _delay_1ms::
 0082 0E940000          xcall push_gset2
 0086 B801              movw R22,R16
 0088           ;  //all peripherals are now initialized
 0088           ; }
 0088           ; 
 0088           ; void delay_1ms(unsigned int xtal)
 0088           ; {
 0088           ;  unsigned int i;
 0088           ;  for(i=1;i<(unsigned int)(xtal*143-2);i++)
 0088 41E0              ldi R20,1
 008A 50E0              ldi R21,0
 008C 02C0              xjmp L8
 008E           L5:
 008E           L6:
 008E 4F5F              subi R20,255  ; offset = 1
 0090 5F4F              sbci R21,255
 0092           L8:
 0092 0FE8              ldi R16,143
 0094 10E0              ldi R17,0
 0096 9B01              movw R18,R22
 0098 0E940000          xcall empy16s
 009C C801              movw R24,R16
 009E 0297              sbiw R24,2
 00A0 4817              cp R20,R24
 00A2 5907              cpc R21,R25
 00A4 A0F3              brlo L5
 00A6           L4:
 00A6 0E940000          xcall pop_gset2
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC           ;              i -> R20,R21
 00AC           ;              n -> R22,R23
                        .even
 00AC           _delay_x::
 00AC 0E940000          xcall push_gset2
 00B0 B801              movw R22,R16
 00B2           ;  ;
 00B2           ;  }
 00B2           ; 
 00B2           ; void delay_x(unsigned int n)
 00B2           ; {
 00B2           ;  unsigned int i=0;
 00B2 4427              clr R20
 00B4 5527              clr R21
 00B6           ;  for(i=0;i<n;i++)
 00B6 05C0              xjmp L13
 00B8           L10:
 00B8 07E0              ldi R16,7
 00BA 10E0              ldi R17,0
 00BC E2DF              xcall _delay_1ms
 00BE           L11:
 00BE 4F5F              subi R20,255  ; offset = 1
 00C0 5F4F              sbci R21,255
 00C2           L13:
 00C2 4617              cp R20,R22
 00C4 5707              cpc R21,R23
 00C6 C0F3              brlo L10
 00C8           L9:
 00C8 0E940000          xcall pop_gset2
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE           ;           temp -> <dead>
                        .even
 00CE           _main::
 00CE           ;  delay_1ms(7);
 00CE           ;  }
 00CE           ; 
 00CE           ; extern unsigned char T_p_node;
 00CE           ; extern unsigned int T;
 00CE           ; extern unsigned char node_num;
 00CE           ; extern unsigned char LOCAL_GID;
 00CE           ; extern sleep_flag;
 00CE           ; void main() 
 00CE           ;   {
 00CE           ;     int temp;
 00CE           ; 	T_p_node = (T/node_num*2);
 00CE 20910000          lds R18,_node_num
 00D2 3327              clr R19
 00D4 00910000          lds R16,_T
 00D8 10910100          lds R17,_T+1
 00DC 0E940000          xcall div16u
 00E0 9801              movw R18,R16
 00E2 02E0              ldi R16,2
 00E4 10E0              ldi R17,0
 00E6 0E940000          xcall empy16s
 00EA 00930000          sts _T_p_node,R16
 00EE           ;     init_devices();
 00EE ABDF              xcall _init_devices
 00F0           ;       CC1100_change_channr(LOCAL_GID*2-1+0xa);
 00F0 20900000          lds R2,_LOCAL_GID
 00F4 82E0              ldi R24,2
 00F6 829D              mul R24,R2
 00F8 002D              mov R16,R0
 00FA 0150              subi R16,1
 00FC 065F              subi R16,246    ; addi 10
 00FE 0E940000          xcall _CC1100_change_channr
 0102           ;     sleep_flag =0;
 0102 2224              clr R2
 0104 3324              clr R3
 0106 30920100          sts _sleep_flag+1,R3
 010A 20920000          sts _sleep_flag,R2
 010E           ;       
 010E           ;       sched_init();
 010E 0E940000          xcall _sched_init
 0112           ;    
 0112           ;       CC1100_setInterrupt(0x01);  //RF接收状态
 0112 01E0              ldi R16,1
 0114 0E940000          xcall _CC1100_setInterrupt
 0118           ;     //CC1100_sleep();
 0118           ;     /*my program*/
 0118           ;     PowerEnable();
 0118 0E940000          xcall _PowerEnable
 011C 02C0              xjmp L16
 011E           L15:
 011E 0E940000          xcall _run_task
 0122           L16:
 0122           ; 	//start_T1(0,2000);
 0122           ; 	
 0122           ; 	/*while(1)
 0122           ; 	{
 0122           ; 	 MCUCR = 0x30;
 0122           ;      //asm("sleep");
 0122           ; 	//MCUCR =0x0;
 0122           ; 	led1Toggle();
 0122           ; 	}
 0122           ; 	while(1) ;
 0122           ; 	*/
 0122           ; 	//while(1);
 0122           ; 	//start_T3(1,24000);
 0122           ; 	//start_T0(1,1000);
 0122           ; 	//start_T2(1,5000);
 0122           ; 	//printf("begin\n");
 0122           ; 	/*
 0122           ; 	while(1){
 0122           ; 	   temp = get_tmp();
 0122           ; 	   printf("tmp is %d",temp);
 0122           ; 	   delay_x(1000);
 0122           ; 	}
 0122           ; 	*/
 0122           ; 	
 0122           ; 	/*my program end*/
 0122           ; 	
 0122           ; 	/*schedule*/
 0122           ; 	while(1) 
 0122 FDCF              xjmp L15
 0124           X0:
 0124           L14:
 0124                   .dbline 0 ; func end
 0124 0895              ret

⌨️ 快捷键说明

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