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