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

📄 main_frame.lst

📁 mega128平台下
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0067 4040      SBCI	R20,0
    0068 4040      SBCI	R20,0
FILE: D:\wsn\冷轧\program\main.c
(0016) /*
    0069 4040      SBCI	R20,0
(0017) * main_frame:
    006A 4040      SBCI	R20,0
(0018) *    init_device
    006B 4040      SBCI	R20,0
(0019) *         init_port
    006C 4040      SBCI	R20,0
(0020) *         init_led
    006D 4040      SBCI	R20,0
(0021) *         init_timer
    006E 0C0C      ADD	R0,R12
(0022) *         init_RF
    006F 0C0C      ADD	R0,R12
(0023) *         init_uart
    0070 0C0C      ADD	R0,R12
(0024) *    init_schedule
    0071 0C0C      ADD	R0,R12
(0025) *    start_myprogram
    0072 0C0C      ADD	R0,R12
    0073 4040      SBCI	R20,0
(0026) *    main_schedule
    0074 4040      SBCI	R20,0
    0075 4040      SBCI	R20,0
(0027) */
    0076 0940      SBC	R20,R0
    0077 0909      SBC	R16,R9
(0028) //ICC-AVR application builder : 2006-9-26 20:14:28
    0078 0909      SBC	R16,R9
    0079 0109      MOVW	R0,R18
    007A 0101      MOVW	R0,R2
(0029) // Target : M128
(0030) // Crystal: 7.3728Mhz
(0031) 
(0032) #include <iom128v.h>
(0033) #include <macros.h>
(0034) #include <stdio.h>
(0035) #include "../api/schedule.h"
    007B 0101      MOVW	R0,R2
(0036) #include "../api/cc1100.h"
    007C 0101      MOVW	R0,R2
    007D 0101      MOVW	R0,R2
(0037) #include "../api/led.h"
    007E 0101      MOVW	R0,R2
    007F 0101      MOVW	R0,R2
(0038) #include "../api/timer.h"
    0080 0101      MOVW	R0,R2
(0039) 
(0040) char a[4]={3,1,2,3};
    0081 0101      MOVW	R0,R2
    0082 0101      MOVW	R0,R2
(0041) 
    0083 4001      SBCI	R16,1
    0084 4040      SBCI	R20,0
(0042) unsigned char CC1100_sendDone()
    0085 4040      SBCI	R20,0
(0043) {
    0086 0A40      SBC	R4,R16
(0044)    led1Toggle();
    0087 0A0A      SBC	R0,R26
(0045) }
    0088 0A0A      SBC	R0,R26
    0089 020A      MULS	R16,R26
(0046) unsigned char CC1100_receive(unsigned char *msg)
    008A 0202      MULS	R16,R18
    008B 0202      MULS	R16,R18
(0047) {
(0048)    led1Toggle();
(0049) }
(0050) 
(0051) 
(0052) void port_init(void)
(0053) {
(0054)   //cc1100  
(0055)  /* IN     G1      o
(0056) 	GD0O   D1      i
    008C 0202      MULS	R16,R18
    008D 0202      MULS	R16,R18
    008E 0202      MULS	R16,R18
(0057) 	CSN    C2      o
(0058) 	SCLK   G0      o
(0059) 	OUT    C1      i
    0093 4002      SBCI	R16,2
FILE: D:\wsn\冷轧\program\schedule.c
(0021) #include <iom128v.h>
    0094 4040      SBCI	R20,0
(0022) #include <macros.h>
    0095 2040      AND	R4,R0
(0023) //#include "../api/schedule.h"
(0024) typedef struct {
(0025)   void (*tp) ();
(0026) } TOSH_sched_entry_T;
(0027) typedef unsigned char uint8_t;
    0096 0000      NOP
    0097 0000      NOP
(0028) enum {
(0029) 
(0030)   TOSH_MAX_TASKS = 8,
(0031)   TOSH_TASK_BITMASK = (TOSH_MAX_TASKS - 1)
(0032) };
(0033) 
(0034) volatile TOSH_sched_entry_T TOSH_queue[TOSH_MAX_TASKS];
    0098 0000      NOP
(0035) uint8_t TOSH_sched_full;
(0036) volatile uint8_t TOSH_sched_free;
(0037) 
(0038) uint8_t atomic_start(void)
(0039) {
    0099 0000      NOP
    009A 0000      NOP
    009B 0000      NOP
(0040)   uint8_t result = SREG;
(0041)   CLI();
(0042)   return result;
(0043) }
(0044) 
(0045) void atomic_end(uint8_t oldSreg)
(0046) {
(0047)   SREG=oldSreg;
(0048) }
    009C 0000      NOP
    009D 0000      NOP
    009E 0000      NOP
(0049) 
    009F 0000      NOP
    00A0 0000      NOP
(0050) 
    00A1 0000      NOP
    00A2 0000      NOP
(0051) /* These are provided in HPL.td */
    00A3 0000      NOP
    00A4 0000      NOP
    00A5 0000      NOP
    00A6 0000      NOP
    00A7 0000      NOP
    00A8 0000      NOP
    00A9 0000      NOP
    00AA 0000      NOP
    00AB 0000      NOP
    00AC 0000      NOP
    00AD 0000      NOP
    00AE 0000      NOP
    00AF 0000      NOP
    00B0 0000      NOP
    00B1 0000      NOP
    00B2 0000      NOP
    00B3 0000      NOP
    00B4 0000      NOP
    00B5 0000      NOP
    00B6 0000      NOP
    00B7 0000      NOP
    00B8 0000      NOP
    00B9 0000      NOP
_TOS_post:
  fInterruptFlags      --> R20
  tmp                  --> R10
  tp                   --> R22
    00BA 0000      NOP
    00BB 0000      NOP
    00BC 0000      NOP
(0052) void TOSH_wait()
(0053) {
(0054)   ;//asm volatile("nop");
(0055)   //asm volatile("nop");
(0056) }
(0057) 
(0058) void TOSH_sleep()
(0059) {
(0060)     //sbi(MCUCR, 5);
(0061)   //sbi(MCUCR, SE);
(0062)   //asm volatile ("sleep");
(0063) }
(0064) 
(0065) void sched_init(void)
(0066) {
(0067)   int i;
(0068)   TOSH_sched_free = 0;
    00BD 0000      NOP
    00BE 0000      NOP
(0069)   TOSH_sched_full = 0;
(0070)   for (i = 0; i < TOSH_MAX_TASKS; i++)
    00BF 0000      NOP
    00C0 0000      NOP
(0071)     TOSH_queue[i].tp = 0x0;
(0072) }
    00C1 0000      NOP
    00C2 0000      NOP
    00C3 0000      NOP
    00C4 0000      NOP
    00C5 0000      NOP
    00C6 0000      NOP
    00C7 0000      NOP
    00C8 0000      NOP
    00C9 0000      NOP
    00CA 0000      NOP
    00CB 0000      NOP
    00CC 0000      NOP
    00CD 0000      NOP
(0073) 
    00CE 0000      NOP
    00CF 0000      NOP
    00D0 0000      NOP
    00D1 0000      NOP
    00D2 0000      NOP
(0074) /*
    00D3 0000      NOP
    00D4 0000      NOP
    00D5 0000      NOP
    00D6 0102      MOVW	R0,R4
    00D7 00F4      NOP
    00D8 E042      LDI	R20,2
    00D9 B8E0      OUT	0x00,R14
    00DA 5DC0      SUBI	R28,0xD0
    00DB 0004      NOP
(0075)  * TOS_post (thread_pointer)
    00DC 0000      NOP
    00DD 1E00      ADC	R0,R16
(0076)  *  
(0077)  * Put the task pointer into the next free slot.
    00DE 2500      EOR	R16,R0
(0078)  * Return 1 if successful, 0 if there is no free slot.
(0079)  *
    00DF 0064      NOP
    00E0 C0C0      RJMP	0x01A1
(0080)  * This function uses a critical section to protect TOSH_sched_free.
(0081)  * As tasks can be posted in both interrupt and non-interrupt context,
    00E1 C0C0      RJMP	0x01A2
    00E2 C0C0      RJMP	0x01A3
    00E3 C0C0      RJMP	0x01A4
    00E4 7000      ANDI	R16,0
    00E5 0000      NOP
(0082)  * this is necessary.
(0083)  */
(0084) void TOS_post(void (*tp) ()) {
(0085)   uint8_t fInterruptFlags;
(0086)   uint8_t tmp;
(0087)   
(0088)   fInterruptFlags = atomic_start();
(0089) 
(0090)   tmp = TOSH_sched_free;
(0091)   
(0092)   if (TOSH_queue[tmp].tp == 0x0) {
(0093)     TOSH_sched_free = (tmp + 1) & TOSH_TASK_BITMASK;
(0094)     TOSH_queue[tmp].tp = tp;
(0095)     atomic_end(fInterruptFlags);
(0096)     //return 1;
(0097)   }
(0098)   else {	
    00E6 0000      NOP
    00E7 0100      MOVW	R0,R0
(0099)     atomic_end(fInterruptFlags);
    00E8 693C      ORI	R19,0x9C
    00E9 746E      ANDI	R22,0x4E
(0100)     //return 0;
    00EA 6765      ORI	R22,0x75
    00EB 7265      ANDI	R22,0x25
    00EC 6F20      ORI	R18,0xF0
    00ED 6C6E      ORI	R22,0xCE
    00EE 2079      AND	R7,R9
    00EF 7270      ANDI	R23,0x20
    00F0 6E69      ORI	R22,0xE9
    00F1 6674      ORI	R23,0x64
    00F2 202C      AND	R2,R12
(0101)   }
    00F3 6573      ORI	R23,0x53
    00F4 656C      ORI	R22,0x5C
    00F5 7463      ANDI	R22,0x43
(0102) }
(0103) 
    00F6 5020      SUBI	R18,0
    00F7 6F72      ORI	R23,0xF2
(0104) /*
    00F8 656A      ORI	R22,0x5A
    00F9 7463      ANDI	R22,0x43
    00FA 3E2D      CPI	R18,0xED
(0105)  * TOSH_schedule_task()
(0106)  *
(0107)  * Remove the task at the head of the queue and execute it, freeing
    00FB 704F      ANDI	R20,0xF
    00FC 6974      ORI	R23,0x94
    00FD 6E6F      ORI	R22,0xEF
    00FE 2D73      MOV	R23,R3
    00FF 543E      SUBI	R19,0x4E
    0100 7261      ANDI	R22,0x21
    0101 6567      ORI	R22,0x57
    0102 2C74      MOV	R7,R4
    0103 4622      SBCI	R18,0x62
    0104 2050      AND	R5,R0
    0105 7270      ANDI	R23,0x20
(0108)  * the queue entry. Return 1 if a task was executed, 0 if the queue
    0106 6E69      ORI	R22,0xE9
    0107 6674      ORI	R23,0x64
    0108 2022      TST	R2
    0109 6F74      ORI	R23,0xF4
    010A 7020      ANDI	R18,0
(0109)  * is empty.
    010B 6972      ORI	R23,0x92
    010C 746E      ANDI	R22,0x4E
(0110)  */
    010D 6620      ORI	R18,0x60
    010E 6F6C      ORI	R22,0xFC
    010F 7461      ANDI	R22,0x41
(0111) 
(0112) int TOSH_run_next_task ()
    0110 6E69      ORI	R22,0xE9
    0111 2067      AND	R6,R7
    0112 6F70      ORI	R23,0xF0
    0113 6E69      ORI	R22,0xE9
    0114 2074      AND	R7,R4
(0113) {
(0114)   uint8_t fInterruptFlags;
(0115)   uint8_t old_full;
(0116)   void (*func)(void);
    0115 756E      ANDI	R22,0x5E
    0116 626D      ORI	R22,0x2D
    0117 7265      ANDI	R22,0x25
    0118 3E73      CPI	R23,0xE3
(0117)   
(0118)   fInterruptFlags = atomic_start();
    0119 2800      OR	R0,R0
(0119)   old_full = TOSH_sched_full;
    011A 756E      ANDI	R22,0x5E
    011B 6C6C      ORI	R22,0xCC
(0120)   func = TOSH_queue[old_full].tp;
(0121)   if (func == 0x0)
(0122)   {
(0123)       atomic_end(fInterruptFlags);
(0124)       return 0;
(0125)   }
FILE: <library>
    011C 7020      ANDI	R18,0
    011D 7274      ANDI	R23,0x24
    011E 7020      ANDI	R18,0
    011F 7361      ANDI	R22,0x31
    0120 6573      ORI	R23,0x53
    0121 2964      OR	R22,R4
    0122 3000      CPI	R16,0
    0123 3231      CPI	R19,0x21
    0124 3433      CPI	R19,0x43
    0125 3635      CPI	R19,0x65
    0126 3837      CPI	R19,0x87
    0127 6139      ORI	R19,0x19
    0128 6362      ORI	R22,0x32
    0129 6564      ORI	R22,0x54
    012A 6766      ORI	R22,0x76
    012B 6968      ORI	R22,0x98
    012C 6B6A      ORI	R22,0xBA
    012D 6D6C      ORI	R22,0xDC
    012E 6F6E      ORI	R22,0xFE
    012F 7170      ANDI	R23,0x10
    0130 7372      ANDI	R23,0x32
    0131 7574      ANDI	R23,0x54
    0132 7776      ANDI	R23,0x76
    0133 7978      ANDI	R23,0x98
    0134 007A      NOP
    0135 3130      CPI	R19,0x10
    0136 3332      CPI	R19,0x32
    0137 3534      CPI	R19,0x54
    0138 3736      CPI	R19,0x76
    0139 3938      CPI	R19,0x98
    013A 6261      ORI	R22,0x21
    013B 6463      ORI	R22,0x43
    013C 6665      ORI	R22,0x65
    013D 6867      ORI	R22,0x87
    013E 6A69      ORI	R22,0xA9
    013F 6C6B      ORI	R22,0xCB
    0140 6E6D      ORI	R22,0xED
    0141 706F      ANDI	R22,0xF
    0142 7271      ANDI	R23,0x21
    0143 7473      ANDI	R23,0x43
    0144 7675      ANDI	R23,0x65
    0145 7877      ANDI	R23,0x87
    0146 7A79      ANDI	R23,0xA9
    0147 0000      NOP
__start:
__text_start:
    0148 EFCF      LDI	R28,0xFF
    0149 E1D0      LDI	R29,0x10
    014A BFCD      OUT	0x3D,R28
    014B BFDE      OUT	0x3E,R29
    014C 51C0      SUBI	R28,0x10
    014D 40D0      SBCI	R29,0
    014E EA0A      LDI	R16,0xAA
    014F 8308      STD	Y+0,R16
    0150 2400      CLR	R0
    0151 EEE3      LDI	R30,0xE3
    0152 E0F1      LDI	R31,1
    0153 E013      LDI	R17,3
    0154 31E0      CPI	R30,0x10
    0155 07F1      CPC	R31,R17
    0156 F011      BEQ	0x0159
    0157 9201      ST	R0,Z+
    0158 CFFB      RJMP	0x0154
    0159 8300      STD	Z+0,R16
    015A EAEC      LDI	R30,0xAC
    015B E0F1      LDI	R31,1
    015C E0A0      LDI	R26,0
    015D E0B1      LDI	R27,1
    015E E012      LDI	R17,2
    015F 38EF      CPI	R30,0x8F
    0160 07F1      CPC	R31,R17
    0161 F021      BEQ	0x0166
    0162 95C8      LPM
    0163 9631      ADIW	R30,1
    0164 920D      ST	R0,X+
    0165 CFF9      RJMP	0x015F
    0166 940E01D0  CALL	_main
_exit:
    0168 CFFF      RJMP	_exit
_port_init:
    0169 2422      CLR	R2
    016A BA2B      OUT	0x1B,R2
    016B BA2A      OUT	0x1A,R2
    016C BA28      OUT	0x18,R2
    016D BA27      OUT	0x17,R2
    016E BA25      OUT	0x15,R2
    016F E784      LDI	R24,0x74
    0170 BB84      OUT	0x14,R24
    0171 BA22      OUT	0x12,R2
    0172 BA21      OUT	0x11,R2

⌨️ 快捷键说明

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