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

📄 macclock.lst

📁 adhoc信息节点程序源代码(点对多点)——for atmega128
💻 LST
字号:
   1               		.file	"macClock.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  75               	.global	ClockStart
  77               	ClockStart:
   1:macClock.c    **** /*
   2:macClock.c    **** ****************************************************************************  
   3:macClock.c    **** *                        
   4:macClock.c    **** *              宁波中科集成电路设计中心  版权所有 Copyright 2005
   5:macClock.c    **** *
   6:macClock.c    **** *文件名:  macClock.c
   7:macClock.c    **** *程序员:  xp
   8:macClock.c    **** *主要内容:mac时钟源
   9:macClock.c    **** *完成日期:2005.6.10
  10:macClock.c    **** ****************************************************************************
  11:macClock.c    **** */
  12:macClock.c    **** 
  13:macClock.c    **** #include "macClock.h"
  14:macClock.c    **** #include "os.h"
  15:macClock.c    **** #include "led.h"
  16:macClock.c    **** #include "mac.h"
  17:macClock.c    **** #include "app.h"
  18:macClock.c    **** #include <inttypes.h>
  19:macClock.c    **** #include <avr/io.h>
  20:macClock.c    **** #include <avr/interrupt.h>
  21:macClock.c    **** #include <avr/signal.h>
  22:macClock.c    **** 
  23:macClock.c    **** 
  24:macClock.c    **** #define SCALE_1ms 1
  25:macClock.c    **** #define INTERVAL_1ms 7650  // 7650
  26:macClock.c    **** 
  27:macClock.c    **** uint8_t timerTick;
  28:macClock.c    **** uint8_t timerInterval;
  29:macClock.c    **** 
  30:macClock.c    **** void ClockStart(void)
  31:macClock.c    **** {
  79               	.LM1:
  80               	/* prologue: frame size=0 */
  81               	/* prologue end (size=0) */
  32:macClock.c    ****     uint8_t intEnabled, scale = SCALE_1ms;
  33:macClock.c    **** 	uint16_t interval = INTERVAL_1ms;
  34:macClock.c    **** 	scale |= 0x8;
  35:macClock.c    **** 	cbi(TIMSK, OCIE1A);						// 关比较器A的输出中断
  83               	.LM2:
  84 0000 87B7      		in r24,87-0x20
  85 0002 8F7E      		andi r24,lo8(-17)
  86 0004 87BF      		out 87-0x20,r24
  36:macClock.c    **** 	intEnabled = bit_is_set(SREG, 7);
  88               	.LM3:
  89 0006 2FB7      		in r18,95-0x20
  90 0008 2078      		andi r18,lo8(-128)
  37:macClock.c    **** 	cli();									// 访问寄存器前先关中断
  92               	.LM4:
  93               	/* #APP */
  94 000a F894      		cli
  38:macClock.c    **** 	outw(TCNT1L, 0);						// 清空寄存器
  96               	.LM5:
  97               	/* #NOAPP */
  98 000c 1DBC      		out (76)+1-0x20,__zero_reg__
  99 000e 1CBC      		out 76-0x20,__zero_reg__
  39:macClock.c    **** 	outw(OCR1AL, interval);					// 设置比较匹配寄存器
 101               	.LM6:
 102 0010 82EE      		ldi r24,lo8(7650)
 103 0012 9DE1      		ldi r25,hi8(7650)
 104 0014 9BBD      		out (74)+1-0x20,r25
 105 0016 8ABD      		out 74-0x20,r24
  40:macClock.c    **** 	if (intEnabled) 
 107               	.LM7:
 108 0018 2223      		tst r18
 109 001a 09F0      		breq .L2
  41:macClock.c    **** 		sei();
 111               	.LM8:
 112               	/* #APP */
 113 001c 7894      		sei
 114               	/* #NOAPP */
 115               	.L2:
  42:macClock.c    **** 	outp(scale, TCCR1B);					// 设置为8分频
 117               	.LM9:
 118 001e 89E0      		ldi r24,lo8(9)
 119 0020 8EBD      		out 78-0x20,r24
  43:macClock.c    **** 	sbi(TIMSK, OCIE1A);						// 开中断
 121               	.LM10:
 122 0022 87B7      		in r24,87-0x20
 123 0024 8061      		ori r24,lo8(16)
 124 0026 87BF      		out 87-0x20,r24
  44:macClock.c    **** 	
  45:macClock.c    **** 	timerTick = 0;
 126               	.LM11:
 127 0028 1092 0000 		sts timerTick,__zero_reg__
  46:macClock.c    **** 	timerInterval = 0;
 129               	.LM12:
 130 002c 1092 0000 		sts timerInterval,__zero_reg__
 131               	/* epilogue: frame size=0 */
 132 0030 0895      		ret
 133               	/* epilogue end (size=1) */
 134               	/* function ClockStart size 27 (26) */
 140               	.global	ClockSet
 142               	ClockSet:
  47:macClock.c    **** }
  48:macClock.c    **** 
  49:macClock.c    **** void ClockSet(uint8_t interval)
  50:macClock.c    **** {
 144               	.LM13:
 145               	/* prologue: frame size=0 */
 146               	/* prologue end (size=0) */
  51:macClock.c    **** 	timerInterval = interval;
 148               	.LM14:
 149 0032 8093 0000 		sts timerInterval,r24
 150               	/* epilogue: frame size=0 */
 151 0036 0895      		ret
 152               	/* epilogue end (size=1) */
 153               	/* function ClockSet size 3 (2) */
 156               	.global	__vector_12
 158               	__vector_12:
  52:macClock.c    **** }
  53:macClock.c    **** 
  54:macClock.c    **** INTERRUPT(SIG_OUTPUT_COMPARE1A)				// 中断服务程序
  55:macClock.c    **** {
 160               	.LM15:
 161               	/* prologue: frame size=0 */
 162 0038 7894      		sei
 163 003a 1F92      		push __zero_reg__
 164 003c 0F92      		push __tmp_reg__
 165 003e 0FB6      		in __tmp_reg__,__SREG__
 166 0040 0F92      		push __tmp_reg__
 167 0042 1124      		clr __zero_reg__
 168 0044 2F93      		push r18
 169 0046 3F93      		push r19
 170 0048 4F93      		push r20
 171 004a 5F93      		push r21
 172 004c 6F93      		push r22
 173 004e 7F93      		push r23
 174 0050 8F93      		push r24
 175 0052 9F93      		push r25
 176 0054 AF93      		push r26
 177 0056 BF93      		push r27
 178 0058 EF93      		push r30
 179 005a FF93      		push r31
 180               	/* prologue end (size=18) */
  56:macClock.c    ****     MACClockFire();
 182               	.LM16:
 183 005c 0E94 0000 		call MACClockFire
  57:macClock.c    **** 	if (timerInterval != 0)
 185               	.LM17:
 186 0060 9091 0000 		lds r25,timerInterval
 187 0064 9923      		tst r25
 188 0066 59F0      		breq .L4
  58:macClock.c    **** 	{
  59:macClock.c    **** 		timerTick++;
 190               	.LM18:
 191 0068 8091 0000 		lds r24,timerTick
 192 006c 8F5F      		subi r24,lo8(-(1))
 193 006e 8093 0000 		sts timerTick,r24
  60:macClock.c    **** 		if (timerTick == timerInterval)
 195               	.LM19:
 196 0072 8917      		cp r24,r25
 197 0074 21F4      		brne .L4
  61:macClock.c    **** 		{
  62:macClock.c    **** 			timerTick = 0;
 199               	.LM20:
 200 0076 1092 0000 		sts timerTick,__zero_reg__
  63:macClock.c    **** 			LLCTimerFired();// 调用应用接口;
 202               	.LM21:
 203 007a 0E94 0000 		call LLCTimerFired
 204               	.L4:
 205               	/* epilogue: frame size=0 */
 206 007e FF91      		pop r31
 207 0080 EF91      		pop r30
 208 0082 BF91      		pop r27
 209 0084 AF91      		pop r26
 210 0086 9F91      		pop r25
 211 0088 8F91      		pop r24
 212 008a 7F91      		pop r23
 213 008c 6F91      		pop r22
 214 008e 5F91      		pop r21
 215 0090 4F91      		pop r20
 216 0092 3F91      		pop r19
 217 0094 2F91      		pop r18
 218 0096 0F90      		pop __tmp_reg__
 219 0098 0FBE      		out __SREG__,__tmp_reg__
 220 009a 0F90      		pop __tmp_reg__
 221 009c 1F90      		pop __zero_reg__
 222 009e 1895      		reti
 223               	/* epilogue end (size=17) */
 224               	/* function __vector_12 size 52 (17) */
 228               	.global	TimeStampGetTime32
 230               	TimeStampGetTime32:
  64:macClock.c    **** 		}
  65:macClock.c    **** 	}
  66:macClock.c    **** }
  67:macClock.c    **** 
  68:macClock.c    **** void TimeStampGetTime32(uint32_t *timePtr)	// 得到当前时钟计数器中的值,用于时间戳
  69:macClock.c    **** {
 232               	.LM22:
 233               	/* prologue: frame size=0 */
 234               	/* prologue end (size=0) */
 235 00a0 FC01      		movw r30,r24
  70:macClock.c    **** 	uint8_t intEnabled = bit_is_set(SREG, 7);
 237               	.LM23:
 238 00a2 2FB7      		in r18,95-0x20
 239 00a4 2078      		andi r18,lo8(-128)
  71:macClock.c    **** 	cli();     
 241               	.LM24:
 242               	/* #APP */
 243 00a6 F894      		cli
  72:macClock.c    **** 	*timePtr = (uint32_t)inw(TCNT1L);		// 读TCNT1
 245               	.LM25:
 246               	/* #NOAPP */
 247 00a8 8CB5      		in r24,76-0x20
 248 00aa 9DB5      		in r25,(76)+1-0x20
 249 00ac AA27      		clr r26
 250 00ae BB27      		clr r27
 251 00b0 8083      		st Z,r24
 252 00b2 9183      		std Z+1,r25
 253 00b4 A283      		std Z+2,r26
 254 00b6 B383      		std Z+3,r27
  73:macClock.c    **** 	if (intEnabled) sei();
 256               	.LM26:
 257 00b8 2223      		tst r18
 258 00ba 09F0      		breq .L7
 260               	.LM27:
 261               	/* #APP */
 262 00bc 7894      		sei
 263               	/* #NOAPP */
 264               	.L7:
 265 00be 0895      		ret
 266               	/* epilogue: frame size=0 */
 267 00c0 0895      		ret
 268               	/* epilogue end (size=1) */
 269               	/* function TimeStampGetTime32 size 19 (18) */
 271               		.comm timerTick,1,1
 272               		.comm timerInterval,1,1
 275               		.text
 277               	Letext:
 278               	/* File "macClock.c": code  101 = 0x0065 (  63), prologues  18, epilogues  20 */
DEFINED SYMBOLS
                            *ABS*:00000000 macClock.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:77     .text:00000000 ClockStart
                            *COM*:00000001 timerTick
                            *COM*:00000001 timerInterval
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:142    .text:00000032 ClockSet
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:158    .text:00000038 __vector_12
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:230    .text:000000a0 TimeStampGetTime32
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:277    .text:000000c2 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
MACClockFire
LLCTimerFired

⌨️ 快捷键说明

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